<?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>101674</bug_id>
          
          <creation_ts>2012-11-08 17:31:55 -0800</creation_ts>
          <short_desc>[WebKit2] Need API in UIProcess to enable loading of custom protocols</short_desc>
          <delta_ts>2012-12-10 17:44:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>beidson</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>762367</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-11-08 17:31:55 -0800</bug_when>
    <thetext>[WebKit2] Need API in UIProcess to enable loading of custom protocols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762387</commentid>
    <comment_count>1</comment_count>
      <attachid>173163</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-11-08 18:02:17 -0800</bug_when>
    <thetext>Created attachment 173163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766052</commentid>
    <comment_count>2</comment_count>
      <attachid>173163</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-13 14:20:33 -0800</bug_when>
    <thetext>Comment on attachment 173163
Patch

This is a large patch.  I&apos;m not sure if I&apos;ve meaningfully reviewed it.  The description of the approach seems great and I&apos;m glad I don&apos;t have to ask how you tested..  Could WKCustomProtocol and WKCustomProtocolLoader be in separate files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766164</commentid>
    <comment_count>3</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-11-13 16:31:12 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 173163 [details])
Could WKCustomProtocol and WKCustomProtocolLoader be in separate files?

They could be. I chose not to put them in separate files since they felt like implementation details of the CustomProtocolManager and CustomProtocolManagerProxy and had no use outside of those contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766211</commentid>
    <comment_count>4</comment_count>
      <attachid>174034</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-11-13 17:18:16 -0800</bug_when>
    <thetext>Created attachment 174034
Patch

rebase to tip of tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766215</commentid>
    <comment_count>5</comment_count>
      <attachid>174034</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-13 17:26:10 -0800</bug_when>
    <thetext>Comment on attachment 174034
Patch

Attachment 174034 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14837051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766227</commentid>
    <comment_count>6</comment_count>
      <attachid>174034</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-13 17:32:39 -0800</bug_when>
    <thetext>Comment on attachment 174034
Patch

Attachment 174034 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14824497</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766249</commentid>
    <comment_count>7</comment_count>
      <attachid>174034</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-13 17:53:15 -0800</bug_when>
    <thetext>Comment on attachment 174034
Patch

Attachment 174034 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14828221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766270</commentid>
    <comment_count>8</comment_count>
      <attachid>174045</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-11-13 18:10:12 -0800</bug_when>
    <thetext>Created attachment 174045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766310</commentid>
    <comment_count>9</comment_count>
      <attachid>174045</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-11-13 19:04:30 -0800</bug_when>
    <thetext>Comment on attachment 174045
Patch

Andy assured me on IRC he&apos;d split those classes into their own files before landing.

I&apos;ve taken a slightly more detailed look.  As long as EWS signs off, so do I.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767371</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-11-14 15:30:09 -0800</bug_when>
    <thetext>Committed r134681: &lt;http://trac.webkit.org/changeset/134681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787752</commentid>
    <comment_count>11</comment_count>
      <attachid>174045</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-10 15:09:36 -0800</bug_when>
    <thetext>Comment on attachment 174045
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:135
&gt; +    m_customSchemeRegisteredObserver = [[NSNotificationCenter defaultCenter] addObserverForName:WebKit::SchemeForCustomProtocolRegisteredNotificationName object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) {

This code is run for every new WebProcess, so we end up registering a ton of listeners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787894</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-12-10 17:44:32 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 174045 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174045&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:135
&gt; &gt; +    m_customSchemeRegisteredObserver = [[NSNotificationCenter defaultCenter] addObserverForName:WebKit::SchemeForCustomProtocolRegisteredNotificationName object:nil queue:[NSOperationQueue currentQueue] usingBlock:^(NSNotification *notification) {
&gt; 
&gt; This code is run for every new WebProcess, so we end up registering a ton of listeners.

Oops, good catch. I&apos;ll fix to only register it once per WebContext.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173163</attachid>
            <date>2012-11-08 18:02:17 -0800</date>
            <delta_ts>2012-11-13 17:18:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101674-20121108180026.patch</filename>
            <type>text/plain</type>
            <size>81136</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzg1OWE0ODhjY2RmYmEx
NGIzOTRkMGVlOTFkYTQ0OTRiMTVjZmEzOS4uYTEzYTU0OWU1NmU2ZjNkZTE0NjBmMDYwZDY4N2Uw
MWU1NWM5YTkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMi0xMS0wOCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYktpdDJdIE5lZWQgQVBJ
IGluIFVJUHJvY2VzcyB0byBlbmFibGUgbG9hZGluZyBvZiBjdXN0b20gcHJvdG9jb2xzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2NzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgY2xpZW50
cyBvZiBXZWJLaXQyIHRvIGltcGxlbWVudCBOU1VSTFByb3RvY29sIHN1YmNsYXNzZXMgdG8KKyAg
ICAgICAgY29udHJvbCB0aGUgbG9hZGluZyBvZiByZXNvdXJjZXMgd2l0aCBzY2hlbWVzIHRoYXQg
V2ViS2l0MiBjYW5ub3QKKyAgICAgICAgaGFuZGxlIG5hdGl2ZWx5LiBTaW5jZSBsb2FkaW5nIGhh
cHBlbnMgaW4gYSBkaWZmZXJlbnQgcHJvY2Vzcywgd2UKKyAgICAgICAgYWNjb21wbGlzaCB0aGlz
IGJ5IHJlZ2lzdGVyaW5nIGEgZ2xvYmFsIE5TVVJMUHJvdG9jb2wgaW4gdGhlIHdlYgorICAgICAg
ICBwcm9jZXNzIGFuZCBwcm94eWluZyBOU1VSTFByb3RvY29sIGFuZCBOU1VSTFByb3RvY29sQ2xp
ZW50IGNhbGxzIHRvCisgICAgICAgIHRoZSBjbGllbnQncyBOU1VSTFByb3RvY29sIGluIHRoZSBV
SSBwcm9jZXNzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZGVkIG5ldyAu
bWVzc2FnZXMuaW4gZmlsZXMuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6IEFk
ZGVkIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBzY2hlbWVzLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoK1tXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpdKToKKyAg
ICAgICAgQWRkZWQgYSBjbGFzcyBtZXRob2Qgd2hlcmUgYSBjbGllbnQgY2FuIHJlZ2lzdGVyIGEg
c2NoZW1lIHRoYXQgaXQgc3VwcG9ydHMuCisgICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgIEFk
ZGVkIGEgY2xhc3MgbWV0aG9kIHdoZXJlIGEgY2xpZW50IGNhbiB1bnJlZ2lzdGVyIGEgc2NoZW1l
IHRoYXQgaXQgbm8gbG9uZ2VyIHN1cHBvcnRzLgorICAgICAgICAoK1tXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgY3VzdG9tU2NoZW1lc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFj
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eU1hYy5tbTogQWRkZWQuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gTlNVUkxDb25uZWN0
aW9uRGVsZWdhdGUgdGhhdCBwcm94aWVzIG1lc3NhZ2VzIHRvIHRoZQorICAgICAgICBlcXVpdmFs
ZW50IE5TVVJMUHJvdG9jb2xDbGllbnQgaW4gdGhlIHdlYiBwcm9jZXNzOgorICAgICAgICAoLVtX
S0N1c3RvbVByb3RvY29sTG9hZGVyIGluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6
Y3VzdG9tUHJvdG9jb2xJRDpyZXF1ZXN0OmNvbm5lY3Rpb246XSk6CisgICAgICAgICgtW1dLQ3Vz
dG9tUHJvdG9jb2xMb2FkZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29s
TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV0tDdXN0
b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uOndpbGxDYWNoZVJlc3BvbnNlOl0pOgorICAgICAg
ICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNl
Ol0pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVj
ZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgY29ubmVjdGlv
bjp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV0tDdXN0
b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKToKKworICAgICAg
ICBJbXBsZW1lbnRlZCBhIHByb3h5IHRoYXQgcmVjaWV2ZXMgLXN0YXJ0TG9hZGluZyBhbmQgLXN0
b3BMb2FkaW5nCisgICAgICAgIG1lc3NhZ2VzIGZyb20gdGhlIE5TVVJMUHJvdG9jb2wgaW4gdGhl
IHdlYiBwcm9jZXNzIGFuZCBzdGFydHMgYW4KKyAgICAgICAgTlNVUkxDb25uZWN0aW9uIGluIHRo
ZSBVSSBwcm9jZXNzLCB3aGljaCB3aWxsIGluc3RhbnRpYXRlIHRoZSBjbGllbnQncyBOU1VSTFBy
b3RvY29sOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Lmg6IERlY2xhcmVkIHN0cmluZ3MgdGhhdCBzdG9yZSBuYW1lcyBv
ZgorICAgICAgICBOU05vdGlmaWNhdGlvbnMgdXNlZCBmb3Igc2NoZW1lIHJlZ2lzdHJhdGlvbiBp
biB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKTogRm9y
d2FyZGVkIG1lc3NhZ2VzIHRvIHRoZQorICAgICAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogQWRkZWQgdGhlIGN1cnJlbnRseQorICAg
ICAgICByZWdpc3RlcmVkIHNjaGVtZXMgdG8gdGhlIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgYW5kIHJlZ2lzdGVyCisgICAgICAgIE5TTm90aWZpY2F0aW9uIG9ic2VydmVycyBmb3IgbmV3
IHNjaGVtZSByZWdpc3RyYXRpb24gdGhhdCBmb3J3YXJkcyB0bworICAgICAgICB0aGUgY29udGV4
dCdzIHdlYiBwcm9jZXNzZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYktpdDJQcmVmaXguaDogRW5hYmxlZCB0aGUgQ1VTVE9NX1BS
T1RPQ09MUyBtYWNybyBmb3IgdGhlIE1hYy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdl
ci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGdlbmVyYXRlQ3VzdG9tUHJvdG9jb2xJRCk6IEdlbmVyYXRlIGEgcGVyLVdlYlByb2Nlc3Mg
dW5pcXVlIElELgorCisgICAgICAgIEltcGxlbWVudGVkIGEgZ2xvYmFsIE5TVVJMUHJvdG9jb2wg
dGhhdCBjbGFpbXMgdG8gc3VwcG9ydCBhbGwgc2NoZW1lcworICAgICAgICByZWdpc3RlcmVkIGlu
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIE5TVVJMQ29ubmVjdGlvbiBjYWxscyAtc3RhcnRMb2FkaW5n
CisgICAgICAgIGFuZCAtc3RvcExvYWRpbmcsIHdlIGZvcndhcmQgdGhlc2UgbWVzc2FnZXMgdG8g
dGhlIGNsaWVudCdzIE5TVVJMUHJvdG9jb2wKKyAgICAgICAgaW4gdGhlIFVJIHByb2Nlc3M6Cisg
ICAgICAgICgrW1dLQ3VzdG9tUHJvdG9jb2wgY2FuSW5pdFdpdGhSZXF1ZXN0Ol0pOgorICAgICAg
ICAoK1tXS0N1c3RvbVByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0Ol0pOgorICAg
ICAgICAoK1tXS0N1c3RvbVByb3RvY29sIHJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVl
c3Q6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2wgaW5pdFdpdGhSZXF1ZXN0OmNhY2hl
ZFJlc3BvbnNlOmNsaWVudDpdKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbCBzdGFydExv
YWRpbmddKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbCBzdG9wTG9hZGluZ10pOgorCisg
ICAgICAgIEltcGxlbWVudGVkIGEgbWFuYWdlciB0aGF0IHJlY2VpdmVzIE5TVVJMQ29ubmVjdGlv
bkRlbGVnYXRlIG1lc3NhZ2VzCisgICAgICAgIGZvcndhcmRlZCBmcm9tIHRoZSBVSSBwcm9jZXNz
IGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgZ2xvYmFsIE5TVVJMUHJvdG9jb2wncyBOU1VSTFByb3Rv
Y29sQ2xpZW50OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJDdXN0
b21Qcm90b2NvbENsYXNzKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjphZGRDdXN0b21Qcm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlcjo6cmVtb3ZlQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnByb3RvY29sRm9ySUQpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBGb3J3YXJkZWQgbWVzc2FnZXMgdG8gdGhlCisgICAgICAg
IHNoYXJlZCBDdXN0b21Qcm90b2NvbE1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBSZWdpc3RlciBhCisgICAgICAg
IHNjaGVtZSByZWNlaXZlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBVbnJlZ2lzdGVy
IGEKKyAgICAgICAgc2NoZW1lIHJlY2VpdmVkIGZyb20gdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOiBEZWNsYXJlZCBtZXNzYWdlcyBmb3IgcGFzc2luZworICAgICAgICBz
dXBwb3J0ZWQgc2NoZW1lcyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRoZSB3ZWIgcHJvY2Vzcy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogUmVnaXN0ZXIgdGhl
CisgICAgICAgIHNjaGVtZXMgY29udGFpbmVkIGluIHRoZSBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLgorCiAyMDEyLTExLTA2ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNv
bT4KIAogICAgICAgICBbV0syXSBXcm9uZyBzY3JvbGwgcG9zaXRpb24gd2hlbiBnb2luZyBiYWNr
IGluIGhpc3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDAzZDcyNjlkNzM0
OGI5NGZiMDJmOTVjOTlhMmQ0NDJiZThiMWQwMGUuLmU0MGQwNjdkMTEzNjBiN2I4N2Q1N2ZjYTY1
MjMyNGIzYTMwNGNmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzcsNiAr
MzcsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvS2V5VmFsdWVTdG9y
YWdlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFDYWNoZSBcCiAgICAgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL05ldHdvcmsgXAorICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKICAgICAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCkBAIC00Niw2ICs0Nyw3IEBAIFZQQVRIID0g
XAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9E
b3dubG9hZHMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL05ldHdvcmsgXAorICAgICQoV2Vi
S2l0MikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwKICAgICAkKFdlYktpdDIp
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9QbHVn
aW5zIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9TaGFyZWRXb3JrZXJzIFwKQEAgLTUzLDYg
KzU1LDggQEAgVlBBVEggPSBcCiAKIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlciBcCisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyIFwKKyAgICBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSBcCiAgICAgRHJhd2luZ0FyZWEgXAogICAgIERyYXdpbmdBcmVh
UHJveHkgXAogICAgIERvd25sb2FkUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZUlELmgKaW5kZXggZGQzZmNiMGM5MzAxODBjOWNiNGYzN2YzMWEwNmNjMjY0
OTcxODA1YS4uZTIyZjlkNjI3MWZhMjNlZDM4MzNkYWZjMjM4YTcyZTA1ZmRkOGE4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCkBAIC0xMjUsNiArMTI1
LDE0IEBAIGVudW0gTWVzc2FnZUNsYXNzIHsKIAogICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgdGhl
IHNoYXJlZCB3b3JrZXIgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2Vzcy4KICAgICBNZXNzYWdlQ2xh
c3NTaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksCisgICAgCisjaWYgRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCisgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyB0byBhIHdlYiBw
cm9jZXNzIChzb29uIHRoZSBuZXR3b3JrIHByb2Nlc3MpLgorICAgIE1lc3NhZ2VDbGFzc0N1c3Rv
bVByb3RvY29sTWFuYWdlciwKKworICAgIC8vIE1lc3NhZ2VzIHNlbnQgYnkgYSB3ZWIgcHJvY2Vz
cyAoc29vbiB0aGUgbmV0d29yayBwcm9jZXNzKSB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICBNZXNz
YWdlQ2xhc3NDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSwKKyNlbmRpZgogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBNZXNzYWdlS2luZFRyYWl0cyB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5k
ZXggNTYzODNmNzQ5NmJiN2JmOTcwMmYyZTc1MjNmN2E1YWQ0NTI0ZGI0ZC4uM2E2MTU1ZWNhOTY5
NDA2M2Y0NTcxYTA1ZjcxOTJlODczZmQxZDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNzMsNiArNzMs
OSBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1Jl
Z2lzdGVyZWRBc05vQWNjZXNzOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRB
c0Rpc3BsYXlJc29sYXRlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXND
T1JTRW5hYmxlZDsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBlbmNvZGVyIDw8
IHVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOworI2VuZGlmCiAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKGNhY2hlTW9kZWwpOwogICAgIGVuY29kZXIgPDwgc2hvdWxkVHJhY2tW
aXNpdGVkTGlua3M7CiAgICAgZW5jb2RlciA8PCBzaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENv
ZGVQYXRoOwpAQCAtMTU4LDYgKzE2MSwxMCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy51
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShw
YXJhbWV0ZXJzLmNhY2hlTW9kZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCBkZTVmOWYzMmY1NzBlNjA3MWNlMzA0NTU2OGY1NThhNGM5ZWZiZWEzLi5hZDFiMmUw
N2M1ZWIxZTY2OTZkNTEzNWJiNzNiNDI4YTliODM1NWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTcyLDYgKzcy
LDkgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFZlY3RvcjxT
dHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzczsKICAgICBWZWN0b3I8U3RyaW5n
PiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxheUlzb2xhdGVkOwogICAgIFZlY3RvcjxTdHJp
bmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKKyNpZiBFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKKyAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1
c3RvbVByb3RvY29sczsKKyNlbmRpZgogCiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsOwogICAg
IGJvb2wgc2hvdWxkVHJhY2tWaXNpdGVkTGlua3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5o
CmluZGV4IGMwNTNhZTY2NDQzYjdkZGEyMTllMDdiZTc4NGQxYmQzOWU2YTc5OTIuLjA3YmI5YThk
MjJlOTlhNGExNDEzYjVmMzhkYWMyNDVkNDlkOTVkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlci5oCkBAIC00Miw2ICs0Miw5IEBAIFdLX0VYUE9SVAogCiAjcHJhZ21hIG1hcmsgTG9hZGlu
ZwogCisrICh2b2lkKXJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6KE5TU3RyaW5nICop
c2NoZW1lOworKyAodm9pZCl1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6KE5TU3Ry
aW5nICopc2NoZW1lOworCiAvKiBMb2FkIGEgcmVxdWVzdC4gVGhpcyBpcyBvbmx5IHZhbGlkIGZv
ciByZXF1ZXN0cyBvZiBub24tZmlsZTogVVJMcy4gUGFzc2luZyBhCiAgICBmaWxlOiBVUkwgd2ls
bCB0aHJvdyBhbiBleGNlcHRpb24uICovCiAtICh2b2lkKWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDJkNGE5NDQw
MDEyZjAxYzVmOTZkYzM0ZTc1MzIxNmZhYzUyZjRiOGYuLjg2MDRkZTg3NjE3MGQ3MThkODJlYWIx
NDhlNzg2MWU3NTk1MmZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTM2
LDYgKzM2LDcgQEAKICNpbXBvcnQgIldLVVJMQ0YuaCIKICNpbXBvcnQgIldLVVJMUmVxdWVzdC5o
IgogI2ltcG9ydCAiV0tVUkxSZXF1ZXN0TlMuaCIKKyNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUuaCIKQEAgLTEwMyw2ICsxMDQsMjAgQEAgc3RhdGljIGlubGluZSBOU1VSTCAqYXV0
b3JlbGVhc2VkKFdLVVJMUmVmIHVybCkKIAogI3ByYWdtYSBtYXJrIExvYWRpbmcKIAorKyAodm9p
ZClyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZQorewor
ICAgIE5TU3RyaW5nICpsb3dlcmNhc2VTY2hlbWUgPSBbc2NoZW1lIGxvd2VyY2FzZVN0cmluZ107
CisgICAgW1tXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgY3VzdG9tU2NoZW1lc10gYWRkT2Jq
ZWN0Omxvd2VyY2FzZVNjaGVtZV07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJLaXQ6OlNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Omxvd2VyY2FzZVNjaGVtZV07Cit9
CisKKysgKHZvaWQpdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAq
KXNjaGVtZQoreworICAgIE5TU3RyaW5nICpsb3dlcmNhc2VTY2hlbWUgPSBbc2NoZW1lIGxvd2Vy
Y2FzZVN0cmluZ107CisgICAgW1tXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgY3VzdG9tU2No
ZW1lc10gcmVtb3ZlT2JqZWN0Omxvd2VyY2FzZVNjaGVtZV07CisgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJLaXQ6OlNjaGVt
ZUZvckN1c3RvbVByb3RvY29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bG93
ZXJjYXNlU2NoZW1lXTsKK30KKwogLSAodm9pZClsb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdAogewogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVxdWVzdFJlZj4gd2tSZXF1ZXN0ID0g
YWRvcHRXSyhXS1VSTFJlcXVlc3RDcmVhdGVXaXRoTlNVUkxSZXF1ZXN0KHJlcXVlc3QpKTsKQEAg
LTQwMyw0ICs0MTgsMTAgQEAgc3RhdGljIHZvaWQgc2V0VXBQYWdlTG9hZGVyQ2xpZW50KFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0LAogICAgIHJldHVybiBzZWxm
OwogfQogCisrIChOU011dGFibGVTZXQgKiljdXN0b21TY2hlbWVzCit7CisgICAgc3RhdGljIE5T
TXV0YWJsZVNldCAqY3VzdG9tU2NoZW1lcyA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsK
KyAgICByZXR1cm4gY3VzdG9tU2NoZW1lczsKK30KKyAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcklu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oCmluZGV4IGI5NDUyYWRmYzFjM2M3YjUxMGQwNGFhNTMy
ODNkNWNmNWU3MGE1ODEuLmQxZDIwYWQwNDNhNTBmMmUyMThlM2IxMWJiNzk5ZTNiM2E3Mzg4ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlckludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaApAQCAtMjksNSAr
MjksNiBAQAogCiAvKiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIGFzc29jaWF0ZSB2
aWV3LiAqLwogLSAoaWQpX2luaXRXaXRoUGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VSZWY7CisrIChO
U011dGFibGVTZXQgKiljdXN0b21TY2hlbWVzOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiYTk1Nzdm
MjhhZThiNmExNzdmZmFmNjFmYjkzNzgxODZjZWE1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eV9oCisjZGVmaW5lIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5X2gKKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjaW5jbHVkZSAiTWVz
c2FnZUlELmgiCisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CitPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xM
b2FkZXI7CisjZW5kaWYKKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsK
K2NsYXNzIE1lc3NhZ2VEZWNvZGVyOworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CisKK2Ns
YXNzIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eShXZWJQcm9jZXNzUHJveHkqKTsKKworICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICB2b2lkIHN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOworCitwcml2
YXRlOgorICAgIHZvaWQgZGlkUmVjZWl2ZUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpOworCisgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3dlYlByb2Nlc3NQcm94eTsK
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJldGFp
blB0cjxXS0N1c3RvbVByb3RvY29sTG9hZGVyPiA+IExvYWRlck1hcDsKKyAgICBMb2FkZXJNYXAg
bV9sb2FkZXJNYXA7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKKyNlbmRpZiAvLyBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FlZjBlMGU3
OTI4NmI4ZGVhOWFiMWQ2Zjg2NTQxYWMwYjU5OTRlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykK
KworbWVzc2FnZXMgLT4gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgeworICAgIFN0YXJ0TG9h
ZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCkKKyAgICBTdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQorfQor
CisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YzRhYTAzZjM2NjgzOGM4NjExZjAzYTU1MGE0YzgyZWU1M2FmNjNkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQpAQCAtMCwwICsxLDE1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuaCIKKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjaW1w
b3J0ICJDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdl
cy5oIgorI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5
LmgiCisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgorCit1c2luZyBuYW1lc3BhY2UgQ29yZUlQQzsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGludGVyZmFjZSBX
S0N1c3RvbVByb3RvY29sTG9hZGVyIDogTlNPYmplY3QgPE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRl
PiB7CitAcHJpdmF0ZQorICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiBfY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk7CisgICAgdWludDY0X3QgX2N1c3RvbVByb3RvY29sSUQ7CisgICAg
UmVmUHRyPENvbm5lY3Rpb24+IF9jb25uZWN0aW9uOworICAgIE5TVVJMQ2FjaGVTdG9yYWdlUG9s
aWN5IF9zdG9yYWdlUG9saWN5OworICAgIE5TVVJMQ29ubmVjdGlvbiAqX3VybENvbm5lY3Rpb247
Cit9CistIChpZClpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSopY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJvdG9j
b2xJRDoodWludDY0X3QpY3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5lY3Rpb24gKiljb25uZWN0aW9uOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV0tDdXN0b21Qcm90b2NvbExvYWRlcgorCistIChpZClpbml0V2l0aEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OihDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSopY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkgY3VzdG9tUHJvdG9jb2xJRDoodWludDY0X3QpY3VzdG9tUHJv
dG9jb2xJRCByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbm5lY3Rpb246KENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkpOworICAgIEFTU0VSVChyZXF1ZXN0KTsKKyAgICBBU1NFUlQoY29ubmVjdGlv
bik7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5ID0gY3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk7CisgICAgX2N1c3RvbVByb3RvY29sSUQgPSBjdXN0b21Qcm90b2NvbElEOworICAg
IF9jb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKyAgICBfc3RvcmFnZVBvbGljeSA9IE5TVVJMQ2Fj
aGVTdG9yYWdlTm90QWxsb3dlZDsKKyAgICBfdXJsQ29ubmVjdGlvbiA9IFtbTlNVUkxDb25uZWN0
aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBkZWxlZ2F0ZTpzZWxmIHN0YXJ0SW1t
ZWRpYXRlbHk6WUVTXTsKKyAgICAKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFs
bG9jCit7CisgICAgX2Nvbm5lY3Rpb24uY2xlYXIoKTsKKyAgICBbX3VybENvbm5lY3Rpb24gY2Fu
Y2VsXTsKKyAgICBbX3VybENvbm5lY3Rpb24gcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2Nd
OworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24g
ZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgUmVzb3VyY2VFcnJvciBj
b3JlRXJyb3IoZXJyb3IpOworICAgIF9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVF
cnJvciksIDApOworICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmco
X2N1c3RvbVByb3RvY29sSUQpOworfQorCistIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVj
dGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsQ2FjaGVSZXNwb25zZTooTlND
YWNoZWRVUkxSZXNwb25zZSAqKWNhY2hlZFJlc3BvbnNlCit7CisgICAgQVNTRVJUKF9zdG9yYWdl
UG9saWN5ID09IE5TVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZCk7CisgICAgX3N0b3JhZ2VQb2xp
Y3kgPSBbY2FjaGVkUmVzcG9uc2Ugc3RvcmFnZVBvbGljeV07CisgICAgcmV0dXJuIGNhY2hlZFJl
c3BvbnNlOworfQorCistICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAg
ICBSZXNvdXJjZVJlc3BvbnNlIGNvcmVSZXNwb25zZShyZXNwb25zZSk7CisgICAgX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3Bv
bnNlKF9jdXN0b21Qcm90b2NvbElELCBjb3JlUmVzcG9uc2UsIF9zdG9yYWdlUG9saWN5KSwgMCk7
Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBk
aWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YQoreworICAgIENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UgY29yZURhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtk
YXRhIGxlbmd0aF0pOworICAgIF9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKF9jdXN0b21Qcm90b2NvbElELCBjb3JlRGF0YSksIDAp
OworfQorCistIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVj
dFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQoreworICAgIHJldHVy
biByZXF1ZXN0OworfQorCistICh2b2lkKWNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOihOU1VS
TENvbm5lY3Rpb24gKiljb25uZWN0aW9uCit7CisgICAgX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmluaXNoTG9hZGluZyhfY3VzdG9tUHJvdG9j
b2xJRCksIDApOworICAgIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS0+c3RvcExvYWRpbmco
X2N1c3RvbVByb3RvY29sSUQpOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoV2Vi
UHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkpCisgICAgOiBtX3dlYlByb2Nlc3NQcm94eSh3
ZWJQcm9jZXNzUHJveHkpCit7CisgICAgQVNTRVJUKG1fd2ViUHJvY2Vzc1Byb3h5KTsKK30KKwor
dm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit7CisgICAgZGlkUmVjZWl2ZUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29k
ZXIpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjb3JlUmVx
dWVzdCkKK3sKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBjb3JlUmVxdWVzdC5uc1VSTFJl
cXVlc3QoKTsKKyAgICBpZiAoIXJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIFdLQ3Vz
dG9tUHJvdG9jb2xMb2FkZXIgKmxvYWRlciA9IFtbV0tDdXN0b21Qcm90b2NvbExvYWRlciBhbGxv
Y10gaW5pdFdpdGhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTp0aGlzIGN1c3RvbVByb3RvY29s
SUQ6Y3VzdG9tUHJvdG9jb2xJRCByZXF1ZXN0OnJlcXVlc3QgY29ubmVjdGlvbjptX3dlYlByb2Nl
c3NQcm94eS0+Y29ubmVjdGlvbigpXTsKKyAgICBBU1NFUlQobG9hZGVyKTsKKyAgICBBU1NFUlQo
IW1fbG9hZGVyTWFwLmNvbnRhaW5zKGN1c3RvbVByb3RvY29sSUQpKTsKKyAgICBtX2xvYWRlck1h
cC5hZGQoY3VzdG9tUHJvdG9jb2xJRCwgbG9hZGVyKTsKKyAgICBbbG9hZGVyIHJlbGVhc2VdOwor
fQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElEKQoreworICAgIG1fbG9hZGVyTWFwLnJlbW92ZShjdXN0b21Qcm90
b2NvbElEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
Q1VTVE9NX1BST1RPQ09MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4
IDBkNDQ0NTRiYWI2M2E2MTYzYjM2MzZmODYxYTM1YjQ3ZWIwMzQ0OGYuLmExNWZjYzJiN2ZkYTc3
MWJlYWIyY2Y1ZmM3ZmE1MWFjM2JhOWY1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaApAQCAtNzcsNiArNzcsMTEgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM7CiAgICAgCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxXS0RpY3Rpb25hcnlSZWY+IERp
Y3Rpb25hcnlDYWxsYmFjazsKIAorI2lmIFBMQVRGT1JNKE1BQykKK2V4dGVybiBOU1N0cmluZyAq
U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZTsKK2V4dGVy
biBOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmljYXRp
b25OYW1lOworI2VuZGlmCisKIGNsYXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJT2JqZWN0LCBw
cml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDb250ZXh0OwpAQCAtMzc5LDYgKzM4NCw4IEBAIHByaXZh
dGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gbV9lbmhh
bmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBtX2N1
c3RvbVNjaGVtZVJlZ2lzdGVyZWRPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBt
X2N1c3RvbVNjaGVtZVVucmVnaXN0ZXJlZE9ic2VydmVyOwogI2VuZGlmCiAKICAgICBTdHJpbmcg
bV9vdmVycmlkZURhdGFiYXNlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlOGEzOWJkMmJjMWFjM2Q4OWYwNmNiM2Q1MjJkOWNm
YjhhMmUwODkyLi43ZTdhMThhNjE2MmY2ZjBmODY0MjFkZDE2N2Q5MGE5MjNlZjZjYmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTMsNiAr
OTMsOSBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShQYXNzUmVmUHRyPFdlYkNv
bnRleHQ+IGNvbnRleHQpCiAgICAgOiBtX3Jlc3BvbnNpdmVuZXNzVGltZXIodGhpcykKICAgICAs
IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5k
Ym94RXh0ZW5zaW9uKGZhbHNlKQorI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgICwg
bV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSh0aGlzKQorI2VuZGlmCiB7CiAgICAgY29ubmVj
dCgpOwogfQpAQCAtNDIzLDYgKzQyNiwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAg
aWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eT4oKSkgeworICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGRlY29kZXIuZGVz
dGluYXRpb25JRCgpOwogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTAxMjBlZjVhNzVlYjEx
NmU3MTJmMTNiNzAwOGJlYWY1OWJlY2JlZi4uNzBlNzRmNjRkNmU2MTQxMjFkYTYyZjlkNzk3ZmY3
NjFmMDZkZTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJQcm9jZXNzUHJveHlfaAogI2RlZmluZSBX
ZWJQcm9jZXNzUHJveHlfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGx1
Z2luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCkBAIC0yMTMsNiAr
MjE0LDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4g
bV9wYWdlTWFwOwogICAgIFdlYkZyYW1lUHJveHlNYXAgbV9mcmFtZU1hcDsKICAgICBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtTWFwIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKKyAgICAKKyNpZiBF
TkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBt
X2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
CmluZGV4IDAwYzAyY2QwMmQxY2M1Njg2M2ExNTk4ZjNiZDkxMDJlM2Q1ZTY4ZDkuLmFjYzg3ODVh
OWNmZDYwODViMDI1ZDMzNGQyZmFiY2UxMTYxMmEyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTI2LDggKzI2LDEwIEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKIAorI2ltcG9ydCAiV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVy
ZmFjZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9y
dCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CkBAIC01Miw2ICs1NCw5IEBAIE5TU3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3Rv
cnlEZWZhdWx0c0tleSA9IEAiV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3Rl
cmVkTm90aWZpY2F0aW9uTmFtZSA9IEAiV2ViS2l0U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdp
c3RlcmVkTm90aWZpY2F0aW9uIjsKK05TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVu
cmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUgPSBAIldlYktpdFNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9uIjsKKwogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewogICAgIE5TU3RyaW5nICphcHBOYW1lID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXTsKQEAgLTExOCw2ICsxMjMsMjIgQEAg
dm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIAogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxl
SWRlbnRpZmllciA9IFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZp
ZXJdKTsKICAgICAKKyAgICBOU0FycmF5ICpzY2hlbWVzID0gW1tXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgY3VzdG9tU2NoZW1lc10gYWxsT2JqZWN0c107CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBbc2NoZW1lcyBjb3VudF07ICsraSkKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hl
bWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoW3NjaGVtZXMgb2JqZWN0QXRJ
bmRleDppXSk7CisgICAgCisgICAgbV9jdXN0b21TY2hlbWVSZWdpc3RlcmVkT2JzZXJ2ZXIgPSBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpX
ZWJLaXQ6OlNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUg
b2JqZWN0Om5pbCBxdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxv
Y2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7CisgICAgICAgIE5TU3RyaW5nICpz
Y2hlbWUgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07CisgICAgICAgIEFTU0VSVChbc2NoZW1lIGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wo
c2NoZW1lKSk7CisgICAgfV07CisgICAgCisgICAgbV9jdXN0b21TY2hlbWVVbnJlZ2lzdGVyZWRP
YnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2
ZXJGb3JOYW1lOldlYktpdDo6U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3Rp
ZmljYXRpb25OYW1lIG9iamVjdDpuaWwgcXVldWU6W05TT3BlcmF0aW9uUXVldWUgY3VycmVudFF1
ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeworICAgICAg
ICBOU1N0cmluZyAqc2NoZW1lID0gW25vdGlmaWNhdGlvbiBvYmplY3RdOworICAgICAgICBBU1NF
UlQoW3NjaGVtZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVbnJlZ2lzdGVyU2NoZW1lRm9y
Q3VzdG9tUHJvdG9jb2woc2NoZW1lKSk7CisgICAgfV07CisgICAgCiAgICAgLy8gTGlzdGVuIGZv
ciBlbmhhbmNlZCBhY2Nlc3NpYmlsaXR5IGNoYW5nZXMgYW5kIHByb3BhZ2F0ZSB0aGVtIHRvIHRo
ZSBXZWJQcm9jZXNzLgogICAgIG1fZW5oYW5jZWRBY2Nlc3NpYmlsaXR5T2JzZXJ2ZXIgPSBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpXZWJL
aXRBcHBsaWNhdGlvbkRpZENoYW5nZUFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VO
b3RpZmljYXRpb24gb2JqZWN0Om5pbCBxdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBjdXJyZW50UXVl
dWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90ZSkgewogICAgICAgICBzZXRFbmhh
bmNlZEFjY2Vzc2liaWxpdHkoW1tbbm90ZSB1c2VySW5mb10gb2JqZWN0Rm9yS2V5OkAiQVhFbmhh
bmNlZFVzZXJJbnRlcmZhY2UiXSBib29sVmFsdWVdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MDdhOTMzNjIyOTBlNGQ4YmE2
NjQ0ZmZmN2I2OTYzMGQ5ZTM2ODc4Li41NWJiZDFhN2U1ZWE5MGY0ODcxMTIyZmZkZTFkZTVmMTRi
YWJjMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNjksNiArMjY5LDE0IEBACiAJCTI5NTAxNzI0MTYyQTQ1MDQwMDRBOUQ3
MSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTUwMTcyMzE2
MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NkJEODVCMTUwMTlC
QzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCAqLzsgfTsKIAkJMjk2QkQ4NUUxNTAxOUJD
MzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NkJEODVDMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdV
dGlsaXRpZXMubW0gKi87IH07CisJCTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg0RjU3QTE2NEI5MTVGMDA0QkMwQzYgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQky
OTg0RjU3RDE2NEI5MTVGMDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4
NEY1N0IxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2Fn
ZXMuaCAqLzsgfTsKKwkJMjk4NEY1ODExNjRCOUJCRDAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mjk4NEY1ODAxNjRCOUJCRDAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5oICovOyB9
OworCQkyOTg0RjU4MzE2NEI5QkQ5MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4NEY1
ODIxNjRCOUJEOTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbSAqLzsgfTsK
KwkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMjk4NEY1ODkxNjRCQTA5NTAwNEJDMEM2IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg0RjU4NzE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCAqLzsgfTsKKwkJMjlBRDMwOTMxNjRCNEM1RDAwNzJERUE5
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFEMzA5MjE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaCAqLzsgfTsKKwkJMjlBRDMwOTYxNjRCNEM5MzAwNzJERUE5
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBRDMwOTUxNjRCNEM5MzAwNzJERUE5IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tICovOyB9OwogCQkyOUNENTVBQTEyOEUyOTRG
MDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1
IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaCAqLzsgfTsKIAkJMjlDRDU1QUIxMjhF
Mjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNENTVBOTEyOEUyOTRGMDAx
MzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSAqLzsgfTsKIAkJMjlENTVE
RjExNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDU1REVG
MTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CkBAIC0xNDQ1LDYgKzE0NTMsMTYgQEAKIAkJMjk1MDE3MjMxNjJBNDUwNDAwNEE5RDcx
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTZCRDg1QjE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyOTZCRDg1QzE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0
aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVXRp
bGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTg0RjU3QTE2NEI5MTVG
MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyOTg0RjU3QjE2NEI5MTVGMDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5
ODRGNTgwMTY0QjlCQkQwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg7IHBhdGgg
PSBOZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk4NEY1ODIxNjRCOUJEOTAwNEJDMEM2IC8qIEN1c3Rv
bVByb3RvY29sTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbTsgcGF0aCA9IE5ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTI5ODRGNTg0MTY0QjlFRDkwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2Nv
bE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyOTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1
c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyOTg0RjU4NzE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyTWVzc2FnZXMuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QUQzMDkyMTY0QjRDNUQwMDcyREVBOSAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOyBwYXRoID0gQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTI5QUQzMDk1MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xzL21hYy9D
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjlBRDMwOTcxNjRCNEUyMTAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluOyBwYXRoID0gQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0Q1NUE5MTI4RTI5
NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlENTVERUUxNjFCRjg3ODAwMzFB
MkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlBhZ2VHcm91cFBy
b3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkxMiw2ICsy
OTMwLDQyIEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJMjk4NEY1N0UxNjRCOUI1NjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29scyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMjk4NEY1N0YxNjRCOUI1
RDAwNEJDMEM2IC8qIG1hYyAqLywKKwkJCQkyOTg0RjU4MDE2NEI5QkJEMDA0QkMwQzYgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmggKi8sCisJCQkJMjk4NEY1ODQxNjRCOUVEOTAwNEJDMEM2IC8q
IEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQluYW1lID0g
Q3VzdG9tUHJvdG9jb2xzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMjk4
NEY1N0YxNjRCOUI1RDAwNEJDMEM2IC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJMjk4NEY1ODIxNjRCOUJEOTAwNEJDMEM2IC8qIEN1c3RvbVBy
b3RvY29sTWFuYWdlck1hYy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gbWFjOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMjlBRDMwOTExNjRCNEMxMDAwNzJERUE5IC8qIEN1
c3RvbVByb3RvY29scyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMjlBRDMwOTQxNjRCNEM4MzAwNzJERUE5IC8qIG1hYyAqLywKKwkJCQkyOUFEMzA5MjE2
NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCAqLywKKwkJCQky
OUFEMzA5NzE2NEI0RTIxMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4gKi8sCisJCQkpOworCQkJbmFtZSA9IEN1c3RvbVByb3RvY29sczsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTI5QUQzMDk0MTY0QjRDODMwMDcyREVBOSAvKiBt
YWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTI5QUQz
MDk1MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSAq
LywKKwkJCSk7CisJCQluYW1lID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJMzEwOTk5NzQxNDZDOEFBODAwMjlERUI5IC8qIE5vdGlmaWNhdGlvbnMgKFVzZXIpICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI5OTYsNiArMzA1
MCw3IEBACiAJCTUxMDVCMEQyMTYyRjdBNUUwMEUyNzcwOSAvKiBOZXR3b3JrICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyOTg0RjU3RTE2NEI5QjU2MDA0
QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xzICovLAogCQkJCTUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcw
OSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTUxMDVCMEQ1MTYyRjdB
N0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUZCMDkw
MjE2M0EzQjFDMDBFQzMyNEEgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
ICovLApAQCAtMzA0Miw2ICszMDk3LDcgQEAKIAkJNTEwQ0M3RTcxNjEzOEU3MjAwRDAzRUQzIC8q
IE5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTI5QUQzMDkxMTY0QjRDMTAwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbHMgKi8sCiAJCQkJNTE2
MzE5OTMxNjI4OTgwRTAwRTIyRjAwIC8qIG1hYyAqLywKIAkJCQk1MTA1QjBEQjE2MkY3RTlEMDBF
Mjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmNwcCAqLywKIAkJCQk1MTA1QjBEQzE2MkY3
RTlEMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmggKi8sCkBAIC00MDk2LDYgKzQx
NTIsMTAgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxMkY1OEEwMTJBODgzQUQwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMkY1
OEExMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICov
LAorCQkJCTI5ODRGNTg2MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTI5ODRGNTg3MTY0QkEwOTUwMDRCQzBDNiAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovLAorCQkJCTI5ODRGNTdBMTY0QjkxNUYw
MDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCisJCQkJMjk4NEY1N0IxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQlFMTk2N0UzNTE1MEFCNUQ1MDBDNzMxNjkgLyogY29t
LmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNzLnNiICovLAogCQkJCUUxOTY3RTM3MTUwQUI1RTIw
MEM3MzE2OSAvKiBjb20uYXBwbGUuV2ViUHJvY2Vzcy5zYiAqLywKIAkJCQkxQUI3RDYxNzEyODhC
OUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC00
ODI0LDYgKzQ4ODQsMTAgQEAKIAkJCQlFMUI3ODQ3MTE2M0YyNDY5MDAwN0I2OTIgLyogUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QURFMTY0ODU5ODQw
MDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5QUQzMDkzMTY0QjRDNUQwMDcyREVBOSAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjk4NEY1N0Qx
NjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTI5ODRGNTgxMTY0QjlCQkQwMDRCQzBDNiAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5ODRGNTg5MTY0QkEwOTUwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC01
NzU2LDYgKzU4MjAsMTAgQEAKIAkJCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1
Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUREMTY0ODU5
ODQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBQjE2QUUxMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBRDMwOTYxNjRCNEM5MzAwNzJERUE5
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
Mjk4NEY1N0MxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5ODRGNTgzMTY0QjlCRDkwMDRC
QzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQky
OTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0MlByZWZpeC5oIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCmluZGV4IDA2NzNl
Yzg2ZDczOWEzYTU2YjkwYjVkMDNkOTU1N2ZlYzczYzA3OTQuLjBkNGRjN2M4NmQwOGU5MjM5ZjNl
MDJkNDNiYjM2MGM4Y2ZhMTQ1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQ
cmVmaXguaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKQEAgLTQ0LDYgKzQ0
LDggQEAKIAogI2RlZmluZSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIgMQogCisjZGVmaW5lIEVOQUJM
RV9DVVNUT01fUFJPVE9DT0xTIDEKKwogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YjI0NTNhODdjMzBhYWZkMzBiNDMzMDIzODZmNjZmNmVhNjc3NzU5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0
b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDdXN0b21Qcm90b2NvbE1hbmFnZXJfaAorI2RlZmluZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJf
aAorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNsdWRlICJNZXNzYWdlSUQu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sOworI2Vu
ZGlmCisKKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2NsYXNzIERh
dGFSZWZlcmVuY2U7CitjbGFzcyBNZXNzYWdlRGVjb2RlcjsKK30gLy8gbmFtZXNwYWNlIENvcmVJ
UEMKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJl
c291cmNlUmVzcG9uc2U7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEN1c3RvbVByb3RvY29sTWFuYWdlcik7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyJiBzaGFyZWQoKTsKKyAgICAKKyAgICB2b2lkIHJlZ2lzdGVyU2No
ZW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZShjb25zdCBTdHJp
bmcmKTsKKyAgICBib29sIHN1cHBvcnRzU2NoZW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJv
cih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSk7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckN1c3RvbVByb3RvY29sQ2xhc3MoKTsKKyAgICB2b2lk
IGFkZEN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKik7CisgICAgdm9pZCByZW1vdmVD
dXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICopOworI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKCkgeyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIAorICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHR5cGVk
ZWYgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+ID4gQ3VzdG9t
UHJvdG9jb2xNYXA7CisgICAgQ3VzdG9tUHJvdG9jb2xNYXAgbV9jdXN0b21Qcm90b2NvbE1hcDsK
KyAgICBXS0N1c3RvbVByb3RvY29sICpwcm90b2NvbEZvcklEKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQpOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjZW5kaWYgLy8gQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThlZmQ4Mzg5MTY1N2JmODc2MTNkOGJiZGFj
YmE2YTFlMWE4ZjBjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCittZXNzYWdlcyAtPiBDdXN0b21Q
cm90b2NvbE1hbmFnZXIgeworICAgIERpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBEaWRMb2FkRGF0YSh1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCisg
ICAgRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkK
KyAgICBEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29s
TWFuYWdlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTA2
ZDE1Y2EzM2U3MzY5YmVkZjFiOGI2NTVjOGJkMWRjMmYyN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKKwor
I2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvS1VSTC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMg
dWludDY0X3QgZ2VuZXJhdGVDdXN0b21Qcm90b2NvbElEKCkKK3sKKyAgICBzdGF0aWMgdWludDY0
X3QgdW5pcXVlQ3VzdG9tUHJvdG9jb2xJRCA9IDA7CisgICAgcmV0dXJuICsrdW5pcXVlQ3VzdG9t
UHJvdG9jb2xJRDsKK30KKworQGludGVyZmFjZSBXS0N1c3RvbVByb3RvY29sIDogTlNVUkxQcm90
b2NvbCB7Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0N1c3RvbVByb3RvY29sCisK
K0BzeW50aGVzaXplIGN1c3RvbVByb3RvY29sSUQgPSBfY3VzdG9tUHJvdG9jb2xJRDsKKworKyAo
Qk9PTCljYW5Jbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICBy
ZXR1cm4gV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnNoYXJlZCgpLnN1cHBvcnRzU2No
ZW1lKFtbW3JlcXVlc3QgVVJMXSBzY2hlbWVdIGxvd2VyY2FzZVN0cmluZ10pOworfQorCisrIChO
U1VSTFJlcXVlc3QgKiljYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdAoreworICAgIHJldHVybiByZXF1ZXN0OworfQorCisrIChCT09MKXJlcXVlc3RJc0Nh
Y2hlRXF1aXZhbGVudDooTlNVUkxSZXF1ZXN0ICopYSB0b1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KWIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKGlkKWluaXRXaXRoUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCBjYWNoZWRSZXNwb25zZTooTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNh
Y2hlZFJlc3BvbnNlIGNsaWVudDooaWQ8TlNVUkxQcm90b2NvbENsaWVudD4pY2xpZW50Cit7Cisg
ICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBjYWNoZWRSZXNwb25zZTpj
YWNoZWRSZXNwb25zZSBjbGllbnQ6Y2xpZW50XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgCisgICAgX2N1c3RvbVByb3RvY29sSUQgPSBnZW5lcmF0ZUN1c3RvbVBy
b3RvY29sSUQoKTsKKyAgICBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6c2hhcmVkKCku
YWRkQ3VzdG9tUHJvdG9jb2woc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
c3RhcnRMb2FkaW5nCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6U3RhcnRMb2FkaW5nKHNl
bGYuY3VzdG9tUHJvdG9jb2xJRCwgW3NlbGYgcmVxdWVzdF0pLCAwKTsKK30KKworLSAodm9pZClz
dG9wTG9hZGluZworeworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0b3BMb2FkaW5nKHNlbGYu
Y3VzdG9tUHJvdG9jb2xJRCksIDApOworICAgIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpzaGFyZWQoKS5yZW1vdmVDdXN0b21Qcm90b2NvbChzZWxmKTsKK30KKworQGVuZAorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyJiBDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OnNoYXJlZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDdXN0b21Qcm90b2Nv
bE1hbmFnZXIsIGN1c3RvbVByb3RvY29sTWFuYWdlciwgKCkpOworICAgIHJldHVybiBjdXN0b21Q
cm90b2NvbE1hbmFnZXI7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3Rl
ckN1c3RvbVByb3RvY29sQ2xhc3MoKQoreworICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xh
c3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKK30KKyAgICAKK3ZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjphZGRDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICpjdXN0b21Qcm90
b2NvbCkKK3sKKyAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2wpOworICAgIG1fY3VzdG9tUHJvdG9j
b2xNYXAuYWRkKGN1c3RvbVByb3RvY29sLmN1c3RvbVByb3RvY29sSUQsIGN1c3RvbVByb3RvY29s
KTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZUN1c3RvbVByb3RvY29s
KFdLQ3VzdG9tUHJvdG9jb2wgKmN1c3RvbVByb3RvY29sKQoreworICAgIEFTU0VSVChjdXN0b21Q
cm90b2NvbCk7CisgICAgbV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2wu
Y3VzdG9tUHJvdG9jb2xJRCk7Cit9CisgICAgCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6
cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgbV9yZWdpc3RlcmVk
U2NoZW1lcy5hZGQoc2NoZW1lKTsKK30KKyAgICAKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Ojp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIG1fcmVnaXN0
ZXJlZFNjaGVtZXMucmVtb3ZlKHNjaGVtZSk7Cit9CisKK2Jvb2wgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpzdXBwb3J0c1NjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICByZXR1cm4g
bV9yZWdpc3RlcmVkU2NoZW1lcy5jb250YWlucyhzY2hlbWUpOworfQorCit2b2lkIEN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCit7CisgICAgZGlkUmVjZWl2ZUN1c3RvbVByb3RvY29sTWFuYWdlck1l
c3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKK30KKwordm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgV0tDdXN0b21Q
cm90b2NvbCAqcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOworICAg
IGlmICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBbW3Byb3RvY29sIGNs
aWVudF0gVVJMUHJvdG9jb2w6cHJvdG9jb2wgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9y
KCldOworICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKHByb3RvY29sKTsKK30KKwordm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgV0tDdXN0b21Qcm90
b2NvbCAqcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOworICAgIGlm
ICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBbW3Byb3RvY29sIGNsaWVu
dF0gVVJMUHJvdG9jb2w6cHJvdG9jb2wgZGlkTG9hZERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVz
Oih2b2lkKilkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldXTsKK30KKwordm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdWludDMy
X3QgY2FjaGVTdG9yYWdlUG9saWN5KQoreworICAgIFdLQ3VzdG9tUHJvdG9jb2wgKnByb3RvY29s
ID0gcHJvdG9jb2xGb3JJRChjdXN0b21Qcm90b2NvbElEKTsKKyAgICBpZiAoIXByb3RvY29sKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29s
OnByb3RvY29sIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgY2Fj
aGVTdG9yYWdlUG9saWN5OnN0YXRpY19jYXN0PE5TVVJMQ2FjaGVTdG9yYWdlUG9saWN5PihjYWNo
ZVN0b3JhZ2VQb2xpY3kpXTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZp
bmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBXS0N1c3RvbVBy
b3RvY29sICpwcm90b2NvbCA9IHByb3RvY29sRm9ySUQoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAg
aWYgKCFwcm90b2NvbCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFtbcHJvdG9jb2wgY2xp
ZW50XSBVUkxQcm90b2NvbERpZEZpbmlzaExvYWRpbmc6cHJvdG9jb2xdOworICAgIHJlbW92ZUN1
c3RvbVByb3RvY29sKHByb3RvY29sKTsKK30KKworV0tDdXN0b21Qcm90b2NvbCAqQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjpwcm90b2NvbEZvcklEKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCit7
CisgICAgQ3VzdG9tUHJvdG9jb2xNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jdXN0b21Qcm90
b2NvbE1hcC5maW5kKGN1c3RvbVByb3RvY29sSUQpOworICAgIGlmIChpdCA9PSBtX2N1c3RvbVBy
b3RvY29sTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIEFTU0VSVChp
dC0+dmFsdWUpOworICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2MGZlNzMxYjllMzZhYmQwN2Rm
ZWI3NmQ0MTdjOGJiZjdiYjFmN2E2Li5iNGYxMGI3MWVmYTc3NjU1OWExNjAxMDg0NWNlZTFhMTUy
NjE4ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9h
ZE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKQEAgLTcwNyw2ICs3MDgsMTMgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBDb3JlSVBDOjpNZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyNpZiBFTkFC
TEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3Nh
Z2VDbGFzc0N1c3RvbVByb3RvY29sTWFuYWdlcj4oKSkgeworICAgICAgICBDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OnNoYXJlZCgpLmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJ
RCwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICht
ZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViUGFnZUdyb3VwUHJveHk+KCkpIHsK
ICAgICAgICAgdWludDY0X3QgcGFnZUdyb3VwSUQgPSBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKTsK
ICAgICAgICAgaWYgKCFwYWdlR3JvdXBJRCkKQEAgLTExMzksNCArMTE0NywxNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OmRpZEdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgVgogfQogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAor
I2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQordm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNj
aGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFdURjo6U3RyaW5nJiBzY2hlbWUpCit7CisgICAg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzaGFyZWQoKS5yZWdpc3RlclNjaGVtZShzY2hlbWUpOwor
fQorCit2b2lkIFdlYlByb2Nlc3M6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChj
b25zdCBXVEY6OlN0cmluZyYgc2NoZW1lKQoreworICAgIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6
c2hhcmVkKCkudW5yZWdpc3RlclNjaGVtZShzY2hlbWUpOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAw
YjNjMGZiOTk4ZDQ3MWRkMjlkZjczZmQzYjY4OWRiZGY0MThjN2NmLi45MzI0OGIwODQ3ZDUzNjYz
NzA1ZWFlNDhjYTg1OGYxOTUzYTA3NTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtMzA0LDYgKzMwNCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkR2V0UGx1
Z2lucyhDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKENVU1RPTV9Q
Uk9UT0NPTFMpCisgICAgdm9pZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9j
b2woY29uc3QgV1RGOjpTdHJpbmcmKTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rp
b25Ub1VJUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwogICAgIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZl
ck1hcCBtX21lc3NhZ2VSZWNlaXZlck1hcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDJjYzFlNjI4MDQ2MzI4MTMxMTQwNThm
YWNiZWExNTAwNTczNWNjMjQuLjg4N2ZiYzBlZTA2NmM2ZDYyMDQzNDFmNDliNjRlYmQzNjdjZWQ3
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTk3LDQgKzk3LDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgU2Vj
SXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0OjpTZWNJdGVtUmVzcG9uc2VE
YXRhIHJlc3BvbnNlKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCiAgICAgU2VjS2V5Y2hhaW5J
dGVtUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXQ6OlNlY0tleWNoYWluSXRlbVJl
c3BvbnNlRGF0YSByZXNwb25zZSkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2VuZGlmCisK
KyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBSZWdpc3RlclNjaGVtZUZvckN1c3Rv
bVByb3RvY29sKFdURjo6U3RyaW5nIG5hbWUpCisgICAgVW5yZWdpc3RlclNjaGVtZUZvckN1c3Rv
bVByb3RvY29sKFdURjo6U3RyaW5nIG5hbWUpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCmluZGV4IDAwMWRlYjRjOGZmNWU4MDc2
MDcxNTc0ZTQ0MTZhZjYyZjM2YzZkOTAuLjgwZDNlNDhhMWEyYjhmY2ExZTI2MDZhNTBiM2JhMDZj
NjU1ZmIyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlBy
b2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJQcm9jZXNzLmgiCiAKKyNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogI2ltcG9y
dCAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRj
aGVyLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3IuaCIKQEAgLTI5MSw2ICsyOTIsMTEgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMKICAgICAvLyBubyB3aW5kb3cgaW4gV0syLCBOU0FwcGxpY2F0
aW9uIG5lZWRzIHRvIHVzZSB0aGUgZm9jdXNlZCBwYWdlJ3MgZm9jdXNlZCBlbGVtZW50LgogICAg
IE1ldGhvZCBtZXRob2RUb1BhdGNoID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoW05TQXBwbGlj
YXRpb24gY2xhc3NdLCBAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQpKTsK
ICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9QYXRjaCwgKElNUClOU0FwcGxp
Y2F0aW9uQWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQpOworICAgIAorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVBy
b3RvY29scy5zaXplKCk7ICsraSkKKyAgICAgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzaGFy
ZWQoKS5yZWdpc3RlclNjaGVtZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3Vz
dG9tUHJvdG9jb2xzW2ldKTsKKyAgICAKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lz
dGVyQ3VzdG9tUHJvdG9jb2xDbGFzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxp
emVTaGltKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAzNmM5NWI5NmRhYzg2Y2MzMzQ5MTgyNzkzN2EyM2U4NWEzYzI1M2RkLi4xMTg4MzMyNGI1
M2RjZWRmMzYzNzQyY2VjMGNhMzZiZjA3NmY1ZGE4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTEtMDggIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXQyXSBOZWVkIEFQ
SSBpbiBVSVByb2Nlc3MgdG8gZW5hYmxlIGxvYWRpbmcgb2YgY3VzdG9tIHByb3RvY29scworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjc0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0
ZXN0IHRoYXQgaW1wbGVtZW50cyBhIGN1c3RvbSBwcm90b2NvbCBhbmQgYXR0ZW1wdHMgdG8gbG9h
ZAorICAgICAgICB0aGF0IHNjaGVtZSBpbiBhIFdlYlZpZXcuIFRoZSB0ZXN0IHBhc3NlcyBvbmx5
IGlmIGRpZEZpbmlzaExvYWRGb3JGcmFtZTogZmlyZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW06IEFk
ZGVkLgorICAgICAgICAoK1tUZXN0UHJvdG9jb2wgY2FuSW5pdFdpdGhSZXF1ZXN0Ol0pOgorICAg
ICAgICAoK1tUZXN0UHJvdG9jb2wgY2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6XSk6CisgICAg
ICAgICgrW1Rlc3RQcm90b2NvbCByZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6dG9SZXF1ZXN0Ol0p
OgorICAgICAgICAoLVtUZXN0UHJvdG9jb2wgc3RhcnRMb2FkaW5nXSk6CisgICAgICAgICgtW1Rl
c3RQcm90b2NvbCBzdG9wTG9hZGluZ10pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mk9iakMvVXNlckNvbnRlbnRUZXN0Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
bWFjL1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50
ZXJuYWwuaC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3NpbmdDb250ZXh0
TG9hZERlbGVnYXRlLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oLgorICAgICAgICAoLVtU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpd
KToKKyAgICAgICAgKC1bVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBicm93c2luZ0Nv
bnRleHRDb250cm9sbGVyRGlkRmluaXNoTG9hZDpdKToKKwogMjAxMi0xMS0wNiAgVG9tbXkgV2lk
ZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIE1lZGlh
U3RyZWFtIEFQSTogUmVtb3ZlIHRoZSB2YWxncmluZCBpc3N1ZSB3aXRoIE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGMyNTZiNDdkZjBk
ZWQxNDJmNWY5YzUyZjFmOTdhYjU0ZmZjMjg5Ni4uMjQ5ZmM0YWE2NWQ5NjJhZmYxYTQzN2Q4YjM0
ZTI3OGU3ODk3YTg2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyLDYgKzMyLDggQEAK
IAkJMjZGMUI0NDQxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkYxQjQ0MjE1Q0E0MzRGMDBE
MUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCAqLzsgfTsKIAkJMjZGMUI0NDUxNUNBNDM0RjAwRDFF
NEJGIC8qIFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZGMUI0NDMxNUNBNDM0RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwICov
OyB9OwogCQkyOTQzQkU4NjE2MURGRUI4MDA5OTlFM0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk0M0JFODQxNjFE
RkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50VGVzdC5tbSAqLzsgfTsKKwkJMjlBQjhBQTExNjRD
NzM1ODAwRDQ5QkVDIC8qIEN1c3RvbVByb3RvY29sc1Rlc3QubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFCOEE5RjE2NEM3MzU4MDBENDlCRUMgLyog
Q3VzdG9tUHJvdG9jb2xzVGVzdC5tbSAqLzsgfTsKKwkJMjlBQjhBQTQxNjRDN0E5MzAwRDQ5QkVD
IC8qIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFCOEFBMjE2NEM3QTkzMDBENDlCRUMgLyog
VGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMzMzQjlDRTIxMjc3
RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMg
LyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLzsgfTsKIAkJMzNCRTVBRjUxMzdCNUE2QzAw
NzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTVBRjQxMzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNl
TW92ZUFmdGVyQ3Jhc2guY3BwICovOyB9OwogCQkzM0JFNUFGOTEzN0I1QUFFMDA3MDU4MTMgLyog
TW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92
ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTI3NCw2ICsyNzYsOSBAQAogCQkyNkYx
QjQ0MjE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEF0b21pY1N0cmluZy5jcHA7IHBhdGggPSBXVEYvQXRvbWlj
U3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjZGMUI0NDMxNUNBNDM0
RjAwRDFFNEJGIC8qIFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU3RyaW5nSW1wbC5jcHA7IHBhdGggPSBXVEYvU3RyaW5nSW1wbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2Vy
Q29udGVudFRlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBV
c2VyQ29udGVudFRlc3QubW07IHBhdGggPSBXZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QUI4QTlGMTY0QzczNTgwMEQ0OUJFQyAv
KiBDdXN0b21Qcm90b2NvbHNUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbTsgcGF0aCA9IFdlYktpdDJPYmpDL0N1c3Rv
bVByb3RvY29sc1Rlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QUI4QUEy
MTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdEJyb3dzaW5nQ29udGV4
dExvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBQjhBQTMx
NjRDN0E5MzAwRDQ5QkVDIC8qIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNCOUNFMTEyNzdGMjMxMDBG
RUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMzQkU1QUY0MTM3QjVBNkMwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRl
ckNyYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vdXNlTW92
ZUFmdGVyQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0JFNUFGODEz
N0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQxLDYgKzU0Niw3IEBACiAJCUJD
M0M0QzZGMTQ1NzVCMUQwMDI1RkI2MiAvKiBXZWJLaXQyIE9iamVjdGl2ZS1DICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyOUFCOEE5RjE2NEM3MzU4MDBE
NDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSAqLywKIAkJCQkyOTQzQkU4NDE2MURGRUI4
MDA5OTlFM0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tICovLAogCQkJCUJDM0M0QzdEMTQ1ODdBQTYw
MDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbSAqLywKIAkJCQlCQzNDNEM3
MDE0NTc1QjZBMDAyNUZCNjIgLyogV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0Lm1t
ICovLApAQCAtNzExLDYgKzcxNyw4IEBACiAJCQkJQkM5MDk1NUMxMjU1NDhBQTAwMDgzNzU2IC8q
IFBsYXRmb3JtV2ViVmlld01hYy5tbSAqLywKIAkJCQlDMDgxMjI0MzEzRkMxOUVDMDBEQzM5QUUg
LyogU3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93LmggKi8sCiAJCQkJQzA4MTIyNDQx
M0ZDMTlFQzAwREMzOUFFIC8qIFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdy5tICov
LAorCQkJCTI5QUI4QUEzMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlLmggKi8sCisJCQkJMjlBQjhBQTIxNjRDN0E5MzAwRDQ5QkVDIC8qIFRlc3RCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gKi8sCiAJCQkJQzA4NTg3QkUxM0ZFOTU2QzAwMUVG
NEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5oICovLAogCQkJCUMwODU4N0JEMTNGRTk1NkMwMDFF
RjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rlc3QubW0gKi8sCiAJCQkpOwpAQCAtMTAxNiw2ICsxMDI0
LDggQEAKIAkJCQk0RjREMkMwRTE2MjZGRTI3MDAzMjBGRTEgLyogTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzhFNjQ3MzE2MzI2NDZEMDBCNkM2NzYg
LyogSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUy
MTdFQ0QxNjQwQTU0QTAwNTI5ODhCIC8qIFZNSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTI5QUI4QUExMTY0QzczNTgwMEQ0OUJFQyAvKiBDdXN0b21Qcm90b2NvbHNUZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJMjlBQjhBQTQxNjRDN0E5MzAwRDQ5QkVDIC8qIFRlc3RCcm93c2lu
Z0NvbnRleHRMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVz
dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNDU0ZjNmMzgxMGM3ZjI5NDQyODQ5OTMwMzNkYzhlNjFhOTE3ZTg3
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2Jq
Qy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCIK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XZWJL
aXQyLmg+CisKK3N0YXRpYyBOU1N0cmluZyAqdGVzdFNjaGVtZSA9IEAidGVzdCI7CitzdGF0aWMg
TlNTdHJpbmcgKnRlc3RIb3N0ID0gQCJ0ZXN0IjsKK3N0YXRpYyBib29sIHRlc3RGaW5pc2hlZCA9
IGZhbHNlOworCitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbCA6IE5TVVJMUHJvdG9jb2wgeworfQor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sCisKKysgKEJPT0wpY2FuSW5pdFdp
dGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0Cit7CisgICAgcmV0dXJuIFtbW3JlcXVl
c3QgVVJMXSBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6dGVzdFNjaGVtZV0gPT0gTlNP
cmRlcmVkU2FtZTsKK30KKworKyAoTlNVUkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZvclJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICByZXR1cm4gcmVxdWVzdDsKK30K
KworKyAoQk9PTClyZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVzdCAqKWEgdG9S
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiliCit7CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lk
KXN0YXJ0TG9hZGluZworeworICAgIEVYUEVDVF9UUlVFKFtbW1tzZWxmIHJlcXVlc3RdIFVSTF0g
c2NoZW1lXSBpc0VxdWFsVG9TdHJpbmc6dGVzdFNjaGVtZV0pOworICAgIEVYUEVDVF9UUlVFKFtb
W1tzZWxmIHJlcXVlc3RdIFVSTF0gaG9zdF0gaXNFcXVhbFRvU3RyaW5nOnRlc3RIb3N0XSk7Cisg
ICAgCisgICAgTlNEYXRhICpkYXRhID0gW0AiPGJvZHk+UEFTUzwvYm9keT4iIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ107CisgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UgPSBbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltbc2VsZiByZXF1ZXN0XSBV
UkxdIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6W2RhdGEgbGVu
Z3RoXSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF07CisgICAgW1tzZWxmIGNsaWVudF0gVVJMUHJvdG9j
b2w6c2VsZiBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UgY2FjaGVTdG9yYWdlUG9saWN5Ok5T
VVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZF07CisgICAgW1tzZWxmIGNsaWVudF0gVVJMUHJvdG9j
b2w6c2VsZiBkaWRMb2FkRGF0YTpkYXRhXTsKKyAgICBbW3NlbGYgY2xpZW50XSBVUkxQcm90b2Nv
bERpZEZpbmlzaExvYWRpbmc6c2VsZl07CisgICAgW3Jlc3BvbnNlIHJlbGVhc2VdOworfQorCist
ICh2b2lkKXN0b3BMb2FkaW5nCit7Cit9CisKK0BlbmQKKworVEVTVChXZWJLaXQyQ3VzdG9tUHJv
dG9jb2xzVGVzdCwgQ3VzdG9tUHJvdG9jb2xVc2VkKQoreworICAgIFtOU1VSTFByb3RvY29sIHJl
Z2lzdGVyQ2xhc3M6W1Rlc3RQcm90b2NvbCBjbGFzc11dOworICAgIFtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDp0ZXN0U2NoZW1lXTsK
KworICAgIFdLUHJvY2Vzc0dyb3VwICpwcm9jZXNzR3JvdXAgPSBbW1dLUHJvY2Vzc0dyb3VwIGFs
bG9jXSBpbml0XTsKKyAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwICpicm93c2luZ0NvbnRleHRH
cm91cCA9IFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVy
OkAiVGVzdElkZW50aWZpZXIiXTsKKyAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpw
cm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOwor
ICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVz
dEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25M
b2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgdGVz
dEZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBbd2tWaWV3LmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOi8vJUAiLCB0ZXN0
U2NoZW1lLCB0ZXN0SG9zdF1dXV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1VzZXJDb250ZW50VGVzdC5t
bQppbmRleCBkODdhZDVlZDU5NDY4NzRmYjUyZDk4ZjlkNTE4Nzg2ODA3YjQyOWNlLi4wMjU4OTYz
NzMwYjhkOWQ5NDdmNDdlNWVkOTQ1NGViODg5ZjU4ZDAxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1VzZXJDb250ZW50VGVzdC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1VzZXJDb250ZW50VGVzdC5tbQpAQCAt
MjcsNiArMjcsNyBAQAogI2ltcG9ydCAiVGVzdC5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgorI2ltcG9ydCAiVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oIgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQyL1dLU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg+CkBAIC00Miw0MCArNDMsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogZ3JlZW5JblJH
QiA9ICJyZ2IoMCwgMTI4LCAwKSI7CiBzdGF0aWMgY29uc3QgY2hhciogcmVkSW5SR0IgPSAicmdi
KDI1NSwgMCwgMCkiOwogc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJTY3JpcHRUZXN0UHJvcGVydHkg
PSAid2luZG93Ll91c2VyU2NyaXB0SW5zdGFsbGVkIjsKIAotdHlwZWRlZiB2b2lkICheT25Mb2Fk
QmxvY2spKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKTsKLQotQGludGVyZmFjZSBVc2Vy
Q29udGVudFRlc3RMb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8V0tCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGU+Ci17Ci0gICAgT25Mb2FkQmxvY2sgX29uTG9hZEJsb2NrOwotfQotCi1AcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgT25Mb2FkQmxvY2sgb25Mb2FkQmxvY2s7Ci0KLS0gKGlkKWlu
aXRXaXRoQmxvY2tUb1J1bk9uTG9hZDooT25Mb2FkQmxvY2spYmxvY2s7Ci0KLUBlbmQKLQotQGlt
cGxlbWVudGF0aW9uIFVzZXJDb250ZW50VGVzdExvYWREZWxlZ2F0ZQotCi1Ac3ludGhlc2l6ZSBv
bkxvYWRCbG9jayA9IF9vbkxvYWRCbG9jazsKLQotLSAoaWQpaW5pdFdpdGhCbG9ja1RvUnVuT25M
b2FkOihPbkxvYWRCbG9jaylibG9jawotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHNlbGYub25Mb2FkQmxvY2sgPSBibG9j
azsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9s
bGVyRGlkRmluaXNoTG9hZDooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyCi17
Ci0gICAgaWYgKF9vbkxvYWRCbG9jaykKLSAgICAgICAgX29uTG9hZEJsb2NrKHNlbmRlcik7Ci19
Ci0KLUBlbmQKLQogbmFtZXNwYWNlIHsKICAgICBjbGFzcyBXZWJLaXQyVXNlckNvbnRlbnRUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgcHVibGljOgpAQCAtMTQzLDcgKzExMCw3
IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5bGVTaGVldEJlZm9y
ZUNyZWF0aW5nVmlldykKICAgICAKICAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpw
cm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOwog
ICAgIFdLU3RyaW5nUmVmIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KTsKLSAgICB3a1ZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1VzZXJDb250ZW50VGVzdExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKKyAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAq
c2VuZGVyKSB7CiAgICAgICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKHdrVmll
dy5wYWdlUmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVyeSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAg
ICAgIGV4cGVjdFNjcmlwdFZhbHVlSXNTdHJpbmcoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBncmVl
bkluUkdCKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CkBAIC0xNjIsNyArMTI5
LDcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0
ZXJDcmVhdGluZ1ZpZXcpCiAgICAgCiAgICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6
cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsK
ICAgICBXS1N0cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tVc2VyQ29udGVudFRlc3RMb2FkRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
KnNlbmRlcikgewogICAgICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYih3a1Zp
ZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAgICAg
ICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZ3Jl
ZW5JblJHQik7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwpAQCAtMTg0LDcgKzE1
MSw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBSZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMpCiAgICAgCiAgICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dy
b3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKICAgICBXS1N0
cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tVc2VyQ29udGVudFRlc3RMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciAqc2VuZGVyKSB7CisgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERl
bGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikg
ewogICAgICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYih3a1ZpZXcucGFnZVJl
ZiwgYmFja2dyb3VuZENvbG9yUXVlcnksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAgICAgICAgICBleHBl
Y3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgcmVkSW5SR0IpOwog
ICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKQEAgLTIwNiw3ICsxNzMsNyBAQCBURVNU
X0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclNjcmlwdEJlZm9yZUNyZWF0aW5nVmll
dykKICAgICAKICAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAg
YnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOwogICAgIFdLU3RyaW5n
UmVmIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KTsKLSAgICB3a1ZpZXcuYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1VzZXJDb250ZW50VGVzdExvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpzZW5kZXIpIHsKKyAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5s
b2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2Vu
ZGVyKSB7CiAgICAgICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKHdrVmlldy5w
YWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewogICAg
ICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc0Jvb2xlYW4oc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCB0cnVlKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CkBAIC0yMjUsNyArMTky
LDcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTY3JpcHRBZnRlckNy
ZWF0aW5nVmlldykKICAgICAKICAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9j
ZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOwogICAg
IFdLU3RyaW5nUmVmIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KTsKLSAgICB3a1ZpZXcuYnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1VzZXJDb250ZW50VGVzdExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciAqc2VuZGVyKSB7CiAgICAgICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9i
KHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFs
aXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJv
cikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc0Jvb2xlYW4oc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CkBAIC0y
NDcsNyArMjE0LDcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIFJlbW92ZUFsbFVz
ZXJTY3JpcHRzKQogICAgIAogICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nl
c3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cF07CiAgICAg
V0tTdHJpbmdSZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93
c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVXNlckNvbnRlbnRUZXN0TG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250
cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICpzZW5kZXIpIHsKICAgICAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2Io
d2tWaWV3LnBhZ2VSZWYsIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcsIF4oV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9y
KSB7CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzVW5kZWZpbmVkKHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSk7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0
ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiM2QwMDY4N2M0NWY5M2UwNWU3Mjk5YTQzOTFlOTJjYTZmYzgx
OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3Np
bmdDb250ZXh0TG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgPFdlYktpdDIvV2ViS2l0Mi5oPgorCit0eXBlZGVmIHZvaWQgKF5PbkxvYWRCbG9jayko
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopOworCitAaW50ZXJmYWNlIFRlc3RCcm93c2lu
Z0NvbnRleHRMb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8V0tCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGU+IHsKK30KKworQHByb3BlcnR5KG5vbmF0b21pYywgY29weSkgT25Mb2FkQmxvY2sgb25M
b2FkQmxvY2s7CisKKy0gKGlkKWluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDooT25Mb2FkQmxvY2sp
YmxvY2s7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YzhjZWY5NDM4
M2EzMWNkMDFjZjViZTM1NTllYWI5ODgyNzE2YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oIgorCitAaW1wbGVtZW50YXRpb24gVGVz
dEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZQorCitAc3ludGhlc2l6ZSBvbkxvYWRCbG9jayA9
IF9vbkxvYWRCbG9jazsKKworLSAoaWQpaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOihPbkxvYWRC
bG9jaylibG9jaworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIAorICAgIHNlbGYub25Mb2FkQmxvY2sgPSBibG9jazsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkRmluaXNo
TG9hZDooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyCit7CisgICAgaWYgKF9v
bkxvYWRCbG9jaykKKyAgICAgICAgX29uTG9hZEJsb2NrKHNlbmRlcik7Cit9CisKK0BlbmQKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174034</attachid>
            <date>2012-11-13 17:18:16 -0800</date>
            <delta_ts>2012-11-13 18:10:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101674-20121113171616.patch</filename>
            <type>text/plain</type>
            <size>80918</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTI5MmQ3YWRkMzZlNzg0
ODFiNjZmYWY5NTg5N2VlNjYyZjY3NzVlZi4uNTM0MmVhNTkyMTk0ZjRmMDNiYWFmMGFiMDIzZTVk
ZGY2YzVkYjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMi0xMS0wOCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYktpdDJdIE5lZWQgQVBJ
IGluIFVJUHJvY2VzcyB0byBlbmFibGUgbG9hZGluZyBvZiBjdXN0b20gcHJvdG9jb2xzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2NzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgY2xpZW50
cyBvZiBXZWJLaXQyIHRvIGltcGxlbWVudCBOU1VSTFByb3RvY29sIHN1YmNsYXNzZXMgdG8KKyAg
ICAgICAgY29udHJvbCB0aGUgbG9hZGluZyBvZiByZXNvdXJjZXMgd2l0aCBzY2hlbWVzIHRoYXQg
V2ViS2l0MiBjYW5ub3QKKyAgICAgICAgaGFuZGxlIG5hdGl2ZWx5LiBTaW5jZSBsb2FkaW5nIGhh
cHBlbnMgaW4gYSBkaWZmZXJlbnQgcHJvY2Vzcywgd2UKKyAgICAgICAgYWNjb21wbGlzaCB0aGlz
IGJ5IHJlZ2lzdGVyaW5nIGEgZ2xvYmFsIE5TVVJMUHJvdG9jb2wgaW4gdGhlIHdlYgorICAgICAg
ICBwcm9jZXNzIGFuZCBwcm94eWluZyBOU1VSTFByb3RvY29sIGFuZCBOU1VSTFByb3RvY29sQ2xp
ZW50IGNhbGxzIHRvCisgICAgICAgIHRoZSBjbGllbnQncyBOU1VSTFByb3RvY29sIGluIHRoZSBV
SSBwcm9jZXNzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZGVkIG5ldyAu
bWVzc2FnZXMuaW4gZmlsZXMuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6IEFk
ZGVkIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBzY2hlbWVzLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoK1tXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpdKToKKyAg
ICAgICAgQWRkZWQgYSBjbGFzcyBtZXRob2Qgd2hlcmUgYSBjbGllbnQgY2FuIHJlZ2lzdGVyIGEg
c2NoZW1lIHRoYXQgaXQgc3VwcG9ydHMuCisgICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgIEFk
ZGVkIGEgY2xhc3MgbWV0aG9kIHdoZXJlIGEgY2xpZW50IGNhbiB1bnJlZ2lzdGVyIGEgc2NoZW1l
IHRoYXQgaXQgbm8gbG9uZ2VyIHN1cHBvcnRzLgorICAgICAgICAoK1tXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgY3VzdG9tU2NoZW1lc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFj
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eU1hYy5tbTogQWRkZWQuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gTlNVUkxDb25uZWN0
aW9uRGVsZWdhdGUgdGhhdCBwcm94aWVzIG1lc3NhZ2VzIHRvIHRoZQorICAgICAgICBlcXVpdmFs
ZW50IE5TVVJMUHJvdG9jb2xDbGllbnQgaW4gdGhlIHdlYiBwcm9jZXNzOgorICAgICAgICAoLVtX
S0N1c3RvbVByb3RvY29sTG9hZGVyIGluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6
Y3VzdG9tUHJvdG9jb2xJRDpyZXF1ZXN0OmNvbm5lY3Rpb246XSk6CisgICAgICAgICgtW1dLQ3Vz
dG9tUHJvdG9jb2xMb2FkZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29s
TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV0tDdXN0
b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uOndpbGxDYWNoZVJlc3BvbnNlOl0pOgorICAgICAg
ICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNl
Ol0pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVj
ZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgY29ubmVjdGlv
bjp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV0tDdXN0
b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKToKKworICAgICAg
ICBJbXBsZW1lbnRlZCBhIHByb3h5IHRoYXQgcmVjaWV2ZXMgLXN0YXJ0TG9hZGluZyBhbmQgLXN0
b3BMb2FkaW5nCisgICAgICAgIG1lc3NhZ2VzIGZyb20gdGhlIE5TVVJMUHJvdG9jb2wgaW4gdGhl
IHdlYiBwcm9jZXNzIGFuZCBzdGFydHMgYW4KKyAgICAgICAgTlNVUkxDb25uZWN0aW9uIGluIHRo
ZSBVSSBwcm9jZXNzLCB3aGljaCB3aWxsIGluc3RhbnRpYXRlIHRoZSBjbGllbnQncyBOU1VSTFBy
b3RvY29sOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Lmg6IERlY2xhcmVkIHN0cmluZ3MgdGhhdCBzdG9yZSBuYW1lcyBv
ZgorICAgICAgICBOU05vdGlmaWNhdGlvbnMgdXNlZCBmb3Igc2NoZW1lIHJlZ2lzdHJhdGlvbiBp
biB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKTogRm9y
d2FyZGVkIG1lc3NhZ2VzIHRvIHRoZQorICAgICAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogQWRkZWQgdGhlIGN1cnJlbnRseQorICAg
ICAgICByZWdpc3RlcmVkIHNjaGVtZXMgdG8gdGhlIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgYW5kIHJlZ2lzdGVyCisgICAgICAgIE5TTm90aWZpY2F0aW9uIG9ic2VydmVycyBmb3IgbmV3
IHNjaGVtZSByZWdpc3RyYXRpb24gdGhhdCBmb3J3YXJkcyB0bworICAgICAgICB0aGUgY29udGV4
dCdzIHdlYiBwcm9jZXNzZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYktpdDJQcmVmaXguaDogRW5hYmxlZCB0aGUgQ1VTVE9NX1BS
T1RPQ09MUyBtYWNybyBmb3IgdGhlIE1hYy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdl
ci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGdlbmVyYXRlQ3VzdG9tUHJvdG9jb2xJRCk6IEdlbmVyYXRlIGEgcGVyLVdlYlByb2Nlc3Mg
dW5pcXVlIElELgorCisgICAgICAgIEltcGxlbWVudGVkIGEgZ2xvYmFsIE5TVVJMUHJvdG9jb2wg
dGhhdCBjbGFpbXMgdG8gc3VwcG9ydCBhbGwgc2NoZW1lcworICAgICAgICByZWdpc3RlcmVkIGlu
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIE5TVVJMQ29ubmVjdGlvbiBjYWxscyAtc3RhcnRMb2FkaW5n
CisgICAgICAgIGFuZCAtc3RvcExvYWRpbmcsIHdlIGZvcndhcmQgdGhlc2UgbWVzc2FnZXMgdG8g
dGhlIGNsaWVudCdzIE5TVVJMUHJvdG9jb2wKKyAgICAgICAgaW4gdGhlIFVJIHByb2Nlc3M6Cisg
ICAgICAgICgrW1dLQ3VzdG9tUHJvdG9jb2wgY2FuSW5pdFdpdGhSZXF1ZXN0Ol0pOgorICAgICAg
ICAoK1tXS0N1c3RvbVByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0Ol0pOgorICAg
ICAgICAoK1tXS0N1c3RvbVByb3RvY29sIHJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVl
c3Q6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2wgaW5pdFdpdGhSZXF1ZXN0OmNhY2hl
ZFJlc3BvbnNlOmNsaWVudDpdKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbCBzdGFydExv
YWRpbmddKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbCBzdG9wTG9hZGluZ10pOgorCisg
ICAgICAgIEltcGxlbWVudGVkIGEgbWFuYWdlciB0aGF0IHJlY2VpdmVzIE5TVVJMQ29ubmVjdGlv
bkRlbGVnYXRlIG1lc3NhZ2VzCisgICAgICAgIGZvcndhcmRlZCBmcm9tIHRoZSBVSSBwcm9jZXNz
IGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgZ2xvYmFsIE5TVVJMUHJvdG9jb2wncyBOU1VSTFByb3Rv
Y29sQ2xpZW50OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJDdXN0
b21Qcm90b2NvbENsYXNzKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjphZGRDdXN0b21Qcm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlcjo6cmVtb3ZlQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnByb3RvY29sRm9ySUQpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBGb3J3YXJkZWQgbWVzc2FnZXMgdG8gdGhlCisgICAgICAg
IHNoYXJlZCBDdXN0b21Qcm90b2NvbE1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBSZWdpc3RlciBhCisgICAgICAg
IHNjaGVtZSByZWNlaXZlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBVbnJlZ2lzdGVy
IGEKKyAgICAgICAgc2NoZW1lIHJlY2VpdmVkIGZyb20gdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOiBEZWNsYXJlZCBtZXNzYWdlcyBmb3IgcGFzc2luZworICAgICAgICBz
dXBwb3J0ZWQgc2NoZW1lcyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRoZSB3ZWIgcHJvY2Vzcy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogUmVnaXN0ZXIgdGhl
CisgICAgICAgIHNjaGVtZXMgY29udGFpbmVkIGluIHRoZSBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLgorCiAyMDEyLTExLTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3RlR3JhcGhpY3NMYXllciBkZXN0cnVjdG9yIHNob3VsZCBjYWxs
IEdyYXBoaWNzTGF5ZXI6OndpbGxCZURlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggNDY2YTUzOGY0NDQ2OWExOWI1MTFiMDQwNjFkZjkzMTZiNDEzOWQ3Ny4uZGQ3OWY4
ZTZmMzU0NTIwZTNhYjhkYjEwZTZhMDU5MTE4NDMyN2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC0zNyw2ICszNyw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9NZWRp
YUNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0d29yayBcCisgICAgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwKICAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1Bs
dWdpbnMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlIFwKQEAgLTQ2
LDYgKzQ3LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MgXAogICAgICQo
V2ViS2l0MikvVUlQcm9jZXNzL0Rvd25sb2FkcyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3Mv
TmV0d29yayBcCisgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogICAgICQoV2Vi
S2l0MikvVUlQcm9jZXNzL1BsdWdpbnMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1NoYXJl
ZFdvcmtlcnMgXApAQCAtNTQsNiArNTYsOCBAQCBWUEFUSCA9IFwKIAogTUVTU0FHRV9SRUNFSVZF
UlMgPSBcCiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKKyAgICBDdXN0b21Qcm90b2NvbE1h
bmFnZXIgXAorICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IFwKICAgICBEcmF3aW5nQXJl
YSBcCiAgICAgRHJhd2luZ0FyZWFQcm94eSBcCiAgICAgRG93bmxvYWRQcm94eSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAppbmRleCAwMTQ4NmQ2MzM4Y2I5
NWE2ZDI1OTFmM2Y5MTc5Zjc1ZDA0YjZmYWRiLi40N2ZkZjAxZTg0NTc3ODA0Y2RkNGM5YzQ3ODRm
NmJkYWM2NzRkNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L01lc3NhZ2VJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2Fn
ZUlELmgKQEAgLTEyNiw2ICsxMjYsMTQgQEAgZW51bSBNZXNzYWdlQ2xhc3MgewogCiAgICAgLy8g
TWVzc2FnZXMgc2VudCBieSB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHRvIHRoZSBVSSBwcm9j
ZXNzLgogICAgIE1lc3NhZ2VDbGFzc1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwKKyAgICAKKyNp
ZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICAvLyBNZXNzYWdlcyBzZW50IGJ5IHRoZSBV
SSBwcm9jZXNzIHRvIGEgd2ViIHByb2Nlc3MgKHNvb24gdGhlIG5ldHdvcmsgcHJvY2VzcykuCisg
ICAgTWVzc2FnZUNsYXNzQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLAorCisgICAgLy8gTWVzc2FnZXMg
c2VudCBieSBhIHdlYiBwcm9jZXNzIChzb29uIHRoZSBuZXR3b3JrIHByb2Nlc3MpIHRvIHRoZSBV
SSBwcm9jZXNzLgorICAgIE1lc3NhZ2VDbGFzc0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LAor
I2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IE1lc3NhZ2VLaW5kVHJhaXRz
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCA1NjM4M2Y3NDk2YmI3YmY5NzAyZjJlNzUyM2Y3YTVhZDQ1
MjRkYjRkLi4zYTYxNTVlY2E5Njk0MDYzZjQ1NzFhMDVmNzE5MmU4NzNmZDFkNDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCkBAIC03Myw2ICs3Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgZW5j
b2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3M7CiAgICAgZW5jb2RlciA8PCB1
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxheUlzb2xhdGVkOwogICAgIGVuY29kZXIgPDwgdXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkOworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9D
T0xTKQorICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHM7CisjZW5kaWYKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsKICAgICBlbmNvZGVyIDw8IHNob3VsZEFs
d2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGg7CkBAIC0xNTgsNiArMTYxLDEwIEBAIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgV2ViCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3Vz
dG9tUHJvdG9jb2xzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGVFbnVtKHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFRyYWNr
VmlzaXRlZExpbmtzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGRlNWY5ZjMyZjU3MGU2MDcxY2UzMDQ1NTY4ZjU1
OGE0YzllZmJlYTMuLmFkMWIyZTA3YzVlYjFlNjY5NmQ1MTM1YmI3M2I0MjhhOWI4MzU1YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtNzIsNiArNzIsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNz
OwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNwbGF5SXNvbGF0
ZWQ7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVk
OworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIFZlY3RvcjxTdHJpbmc+IHVybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOworI2VuZGlmCiAKICAgICBDYWNoZU1v
ZGVsIGNhY2hlTW9kZWw7CiAgICAgYm9vbCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLmgKaW5kZXggYzA1M2FlNjY0NDNiN2RkYTIxOWUwN2JlNzg0ZDFi
ZDM5ZTZhNzk5Mi4uMDdiYjlhOGQyMmU5OWE0YTE0MTNiNWYzOGRhYzI0NWQ0OWQ5NWQ5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmgKQEAgLTQyLDYgKzQyLDkgQEAgV0tfRVhQT1JUCiAK
ICNwcmFnbWEgbWFyayBMb2FkaW5nCiAKKysgKHZvaWQpcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbDooTlNTdHJpbmcgKilzY2hlbWU7CisrICh2b2lkKXVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbDooTlNTdHJpbmcgKilzY2hlbWU7CisKIC8qIExvYWQgYSByZXF1ZXN0LiBU
aGlzIGlzIG9ubHkgdmFsaWQgZm9yIHJlcXVlc3RzIG9mIG5vbi1maWxlOiBVUkxzLiBQYXNzaW5n
IGEKICAgIGZpbGU6IFVSTCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4gKi8KIC0gKHZvaWQpbG9h
ZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubW0KaW5kZXggMmQ0YTk0NDAwMTJmMDFjNWY5NmRjMzRlNzUzMjE2ZmFjNTJmNGI4Zi4uODYw
NGRlODc2MTcwZDcxOGQ4MmVhYjE0OGU3ODYxZTc1OTUyZmMyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV0tVUkxDRi5oIgogI2lt
cG9ydCAiV0tVUkxSZXF1ZXN0LmgiCiAjaW1wb3J0ICJXS1VSTFJlcXVlc3ROUy5oIgorI2ltcG9y
dCAiV2ViQ29udGV4dC5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0ICJX
S0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oIgpAQCAtMTAzLDYgKzEwNCwyMCBAQCBzdGF0
aWMgaW5saW5lIE5TVVJMICphdXRvcmVsZWFzZWQoV0tVUkxSZWYgdXJsKQogCiAjcHJhZ21hIG1h
cmsgTG9hZGluZwogCisrICh2b2lkKXJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6KE5T
U3RyaW5nICopc2NoZW1lCit7CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZVNjaGVtZSA9IFtzY2hl
bWUgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICBbW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBj
dXN0b21TY2hlbWVzXSBhZGRPYmplY3Q6bG93ZXJjYXNlU2NoZW1lXTsKKyAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYktpdDo6
U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6
bG93ZXJjYXNlU2NoZW1lXTsKK30KKworKyAodm9pZCl1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9t
UHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lCit7CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZVNj
aGVtZSA9IFtzY2hlbWUgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICBbW1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciBjdXN0b21TY2hlbWVzXSByZW1vdmVPYmplY3Q6bG93ZXJjYXNlU2NoZW1lXTsK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOldlYktpdDo6U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmlj
YXRpb25OYW1lIG9iamVjdDpsb3dlcmNhc2VTY2hlbWVdOworfQorCiAtICh2b2lkKWxvYWRSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZXF1
ZXN0UmVmPiB3a1JlcXVlc3QgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhOU1VSTFJl
cXVlc3QocmVxdWVzdCkpOwpAQCAtNDAzLDQgKzQxOCwxMCBAQCBzdGF0aWMgdm9pZCBzZXRVcFBh
Z2VMb2FkZXJDbGllbnQoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRl
eHQsCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKysgKE5TTXV0YWJsZVNldCAqKWN1c3RvbVNjaGVt
ZXMKK3sKKyAgICBzdGF0aWMgTlNNdXRhYmxlU2V0ICpjdXN0b21TY2hlbWVzID0gW1tOU011dGFi
bGVTZXQgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBjdXN0b21TY2hlbWVzOworfQorIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgKaW5kZXggYjk0NTJh
ZGZjMWMzYzdiNTEwZDA0YWE1MzI4M2Q1Y2Y1ZTcwYTU4MS4uZDFkMjBhZDA0M2E1MGYyZTIxOGUz
YjExYmI3OTllM2IzYTczODg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJ
bnRlcm5hbC5oCkBAIC0yOSw1ICsyOSw2IEBACiAKIC8qIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIGZyb20gYXNzb2NpYXRlIHZpZXcuICovCiAtIChpZClfaW5pdFdpdGhQYWdlUmVmOihXS1Bh
Z2VSZWYpcGFnZVJlZjsKKysgKE5TTXV0YWJsZVNldCAqKWN1c3RvbVNjaGVtZXM7CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWJhOTU3N2YyOGFlOGI2YTE3N2ZmYWY2MWZiOTM3ODE4NmNlYTVhMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5X2gKKyNkZWZpbmUg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlfaAorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NP
TFMpCisKKyNpbmNsdWRlICJNZXNzYWdlSUQuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNfQ0xB
U1MgV0tDdXN0b21Qcm90b2NvbExvYWRlcjsKKyNlbmRpZgorCituYW1lc3BhY2UgQ29yZUlQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgTWVzc2FnZURlY29kZXI7Cit9IC8vIG5hbWVzcGFj
ZSBDb3JlSVBDCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlByb2Nlc3NQcm94eTsKKworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQ
cm94eSopOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZv
aWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBkaWRSZWNlaXZlQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICBXZWJQcm9jZXNzUHJveHkq
IG1fd2ViUHJvY2Vzc1Byb3h5OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHR5cGVkZWYgSGFz
aE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI+ID4gTG9hZGVy
TWFwOworICAgIExvYWRlck1hcCBtX2xvYWRlck1hcDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2Vu
ZGlmIC8vIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YWVmMGUwZTc5Mjg2YjhkZWE5YWIxZDZmODY1NDFhYzBiNTk5NGViCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShDVVNUT01fUFJPVE9DT0xTKQorCittZXNzYWdlcyAtPiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSB7CisgICAgU3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5TWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNGFhMDNmMzY2ODM4Yzg2MTFmMDNhNTUwYTRj
ODJlZTUzYWY2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFj
Lm1tCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisKKyNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIkN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1w
b3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBDb3JlSVBDOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitAaW50ZXJmYWNlIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgOiBOU09iamVjdCA8TlNV
UkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkqIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKKyAgICB1aW50NjRfdCBfY3Vz
dG9tUHJvdG9jb2xJRDsKKyAgICBSZWZQdHI8Q29ubmVjdGlvbj4gX2Nvbm5lY3Rpb247CisgICAg
TlNVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgX3N0b3JhZ2VQb2xpY3k7CisgICAgTlNVUkxDb25uZWN0
aW9uICpfdXJsQ29ubmVjdGlvbjsKK30KKy0gKGlkKWluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6KEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiljdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSBjdXN0b21Qcm90b2NvbElEOih1aW50NjRfdCljdXN0b21Qcm90b2NvbElEIHJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29ubmVjdGlvbjooQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0N1c3RvbVByb3RvY29sTG9hZGVyCisK
Ky0gKGlkKWluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6KEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5KiljdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBjdXN0b21Qcm90b2NvbElE
Oih1aW50NjRfdCljdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QgY29ubmVjdGlvbjooQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFT
U0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CisgICAgQVNTRVJUKHJlcXVlc3QpOwor
ICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKyAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkg
PSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKKyAgICBfY3VzdG9tUHJvdG9jb2xJRCA9IGN1
c3RvbVByb3RvY29sSUQ7CisgICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICAgIF9zdG9y
YWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOworICAgIF91cmxDb25uZWN0
aW9uID0gW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0IGRl
bGVnYXRlOnNlbGYgc3RhcnRJbW1lZGlhdGVseTpZRVNdOworICAgIAorICAgIHJldHVybiBzZWxm
OworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29ubmVjdGlvbi5jbGVhcigpOworICAg
IFtfdXJsQ29ubmVjdGlvbiBjYW5jZWxdOworICAgIFtfdXJsQ29ubmVjdGlvbiByZWxlYXNlXTsK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sK
KyAgICBSZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7CisgICAgX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3Vz
dG9tUHJvdG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5LT5zdG9wTG9hZGluZyhfY3VzdG9tUHJvdG9jb2xJRCk7Cit9CisKKy0gKE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdp
bGxDYWNoZVJlc3BvbnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopY2FjaGVkUmVzcG9uc2UKK3sK
KyAgICBBU1NFUlQoX3N0b3JhZ2VQb2xpY3kgPT0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2Vk
KTsKKyAgICBfc3RvcmFnZVBvbGljeSA9IFtjYWNoZWRSZXNwb25zZSBzdG9yYWdlUG9saWN5XTsK
KyAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2U7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNV
UkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9u
c2UgKilyZXNwb25zZQoreworICAgIFJlc291cmNlUmVzcG9uc2UgY29yZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVSZXNwb25zZSwg
X3N0b3JhZ2VQb2xpY3kpLCAwKTsKK30KKworLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAg
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZSBjb3JlRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoX2N1c3RvbVByb3Rv
Y29sSUQsIGNvcmVEYXRhKSwgMCk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJl
c3BvbnNlCit7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbkRp
ZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KK3sKKyAgICBfY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGaW5pc2hM
b2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5LT5zdG9wTG9hZGluZyhfY3VzdG9tUHJvdG9jb2xJRCk7Cit9CisKK0BlbmQKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eShXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKKyAgICA6
IG1fd2ViUHJvY2Vzc1Byb3h5KHdlYlByb2Nlc3NQcm94eSkKK3sKKyAgICBBU1NFUlQobV93ZWJQ
cm9jZXNzUHJveHkpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpN
ZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBkaWRSZWNlaXZlQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rp
b24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHk6OnN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQoreworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpOworICAgIGlmICghcmVxdWVzdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV0tDdXN0b21Qcm90b2NvbExvYWRlciAqbG9hZGVyID0gW1tXS0N1c3Rv
bVByb3RvY29sTG9hZGVyIGFsbG9jXSBpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
OnRoaXMgY3VzdG9tUHJvdG9jb2xJRDpjdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6cmVxdWVzdCBj
b25uZWN0aW9uOm1fd2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCldOworICAgIEFTU0VSVChs
b2FkZXIpOworICAgIEFTU0VSVCghbV9sb2FkZXJNYXAuY29udGFpbnMoY3VzdG9tUHJvdG9jb2xJ
RCkpOworICAgIG1fbG9hZGVyTWFwLmFkZChjdXN0b21Qcm90b2NvbElELCBsb2FkZXIpOworICAg
IFtsb2FkZXIgcmVsZWFzZV07Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6
OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCit7CisgICAgbV9sb2FkZXJN
YXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmgKaW5kZXggNWVjZjBiOTJkMWEzZjYzZWZhNGU2YmFmMzkxMWM3ZGYxNmRi
ZjAzOS4uZDFlZjE5NDFkYmFlNTFlMjkxZTQyYjM2YzFmMzBjYTQxMzFmMDU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC03NCw2ICs3NCwxMSBAQCBzdHJ1Y3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PFdLRGljdGlvbmFyeVJlZj4gRGljdGlvbmFyeUNhbGxiYWNrOwogCisjaWYgUExBVEZPUk0oTUFD
KQorZXh0ZXJuIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3Rp
ZmljYXRpb25OYW1lOworZXh0ZXJuIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVu
cmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWU7CisjZW5kaWYKKwogY2xhc3MgV2ViQ29udGV4dCA6
IHB1YmxpYyBBUElPYmplY3QsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNvbnRleHQ7CkBAIC0z
ODEsNiArMzg2LDggQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5Q
dHI8Q0ZUeXBlUmVmPiBtX2VuaGFuY2VkQWNjZXNzaWJpbGl0eU9ic2VydmVyOworICAgIFJldGFp
blB0cjxDRlR5cGVSZWY+IG1fY3VzdG9tU2NoZW1lUmVnaXN0ZXJlZE9ic2VydmVyOworICAgIFJl
dGFpblB0cjxDRlR5cGVSZWY+IG1fY3VzdG9tU2NoZW1lVW5yZWdpc3RlcmVkT2JzZXJ2ZXI7CiAj
ZW5kaWYKIAogICAgIFN0cmluZyBtX292ZXJyaWRlRGF0YWJhc2VEaXJlY3Rvcnk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGVlZDViY2ZjOGY4
MWMwMWE4MGRiZDkyYjkxNmJiOGZlZWRjN2IzMzguLmFkMzE2YjcyMTNmYTA2MjIzMzk0YjllOGYx
Mzc1NjI3ZGU0Zjg2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCkBAIC05Myw2ICs5Myw5IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1By
b3h5KFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gY29udGV4dCkKICAgICA6IG1fcmVzcG9uc2l2ZW5l
c3NUaW1lcih0aGlzKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX21heUhhdmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oZmFsc2UpCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KHRoaXMpCisj
ZW5kaWYKIHsKICAgICBjb25uZWN0KCk7CiB9CkBAIC00MzYsNiArNDM5LDEzIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ1VT
VE9NX1BST1RPQ09MUykKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFz
c0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5PigpKSB7CisgICAgICAgIG1fY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBk
ZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgdWludDY0X3Qg
cGFnZUlEID0gZGVjb2Rlci5kZXN0aW5hdGlvbklEKCk7CiAgICAgaWYgKCFwYWdlSUQpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApp
bmRleCBjM2VhYjYwYjQwYTg3MDlhNDY4YmYwZDFhMTFhMGVkYjBlZmIxMjdjLi5hZDQ0NmI1Yzdk
YWMwNTFmMjExOTRkZmI3MjVjZjRlOTU3ZDA5Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYlByb2Nl
c3NQcm94eV9oCiAjZGVmaW5lIFdlYlByb2Nlc3NQcm94eV9oCiAKKyNpbmNsdWRlICJDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQbHVnaW5J
bmZvU3RvcmUuaCIKQEAgLTIxOSw2ICsyMjAsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBXZWJQYWdlUHJveHkqPiBtX3BhZ2VNYXA7CiAgICAgV2ViRnJhbWVQcm94eU1hcCBt
X2ZyYW1lTWFwOwogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXAgbV9iYWNrRm9yd2FyZExp
c3RJdGVtTWFwOworICAgIAorI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7CisjZW5k
aWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNYWMubW0KaW5kZXggMTFiNzVjOWQwNTYwZjg2OGRkNmM1NTJiZWY4
ODlmOGFkZTkwMjZkZS4uNWJhMTYxYjRkZTQwNzE3NjhmZGRlOTJiZTZlMDVhYzc2Njk3NDllOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAt
MjksNiArMjksNyBAQAogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0
ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2hhcmVkV29ya2VyUHJvY2Vzc01h
bmFnZXIuaCIKKyNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgi
CiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAt
NTYsNiArNTcsOSBAQCBOU1N0cmluZyAqV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNL
ZXkgPSBAIldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorTlNTdHJpbmcgKlNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlmaWNh
dGlvbk5hbWUgPSBAIldlYktpdFNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlm
aWNhdGlvbiI7CitOU1N0cmluZyAqU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWRO
b3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVucmVnaXN0
ZXJlZE5vdGlmaWNhdGlvbiI7CisKIGJvb2wgV2ViQ29udGV4dDo6c19hcHBsaWNhdGlvbklzT2Nj
bHVkZWQgPSBmYWxzZTsKIAogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKQpAQCAtMTI0LDYgKzEyOCwyMiBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogCiAg
ICAgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nKFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwogICAgIAorICAgIE5TQXJyYXkgKnNj
aGVtZXMgPSBbW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBjdXN0b21TY2hlbWVzXSBhbGxP
YmplY3RzXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFtzY2hlbWVzIGNvdW50XTsgKytp
KQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9j
b2xzLmFwcGVuZChbc2NoZW1lcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAKKyAgICBtX2N1c3Rv
bVNjaGVtZVJlZ2lzdGVyZWRPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOldlYktpdDo6U2NoZW1lRm9yQ3VzdG9tUHJvdG9j
b2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsIHF1ZXVlOltOU09wZXJhdGlv
blF1ZXVlIGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmlj
YXRpb24pIHsKKyAgICAgICAgTlNTdHJpbmcgKnNjaGVtZSA9IFtub3RpZmljYXRpb24gb2JqZWN0
XTsKKyAgICAgICAgQVNTRVJUKFtzY2hlbWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSk7CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpKTsKKyAgICB9XTsKKyAgICAKKyAg
ICBtX2N1c3RvbVNjaGVtZVVucmVnaXN0ZXJlZE9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6V2ViS2l0OjpTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbFVucmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbCBxdWV1
ZTpbTlNPcGVyYXRpb25RdWV1ZSBjdXJyZW50UXVldWVdIHVzaW5nQmxvY2s6XihOU05vdGlmaWNh
dGlvbiAqbm90aWZpY2F0aW9uKSB7CisgICAgICAgIE5TU3RyaW5nICpzY2hlbWUgPSBbbm90aWZp
Y2F0aW9uIG9iamVjdF07CisgICAgICAgIEFTU0VSVChbc2NoZW1lIGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pOworICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpKTsKKyAg
ICB9XTsKKyAgICAKICAgICAvLyBMaXN0ZW4gZm9yIGVuaGFuY2VkIGFjY2Vzc2liaWxpdHkgY2hh
bmdlcyBhbmQgcHJvcGFnYXRlIHRoZW0gdG8gdGhlIFdlYlByb2Nlc3MuCiAgICAgbV9lbmhhbmNl
ZEFjY2Vzc2liaWxpdHlPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOldlYktpdEFwcGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNz
aWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsIHF1ZXVl
OltOU09wZXJhdGlvblF1ZXVlIGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0
aW9uICpub3RlKSB7CiAgICAgICAgIHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShbW1tub3RlIHVz
ZXJJbmZvXSBvYmplY3RGb3JLZXk6QCJBWEVuaGFuY2VkVXNlckludGVyZmFjZSJdIGJvb2xWYWx1
ZV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDAwYmYwNmQwMjY3OTRlYjFkNTU4NDUzYWQwNWNlMjM4NjNkN2Y3MDkuLmZkMjcy
Mzc0NGVhZTI2NTkyZjNjZWRhNzZkY2JiNWNhNmM0NDBlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4MCw2ICsyODAsMTQg
QEAKIAkJMjk1MDE3MjQxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5NTAxNzIzMTYyQTQ1MDQwMDRBOUQ3MSAvKiBXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjk2QkQ4NUQxNTAxOUJDMzAwNzFG
NDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjk2QkQ4NUIxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGll
cy5oICovOyB9OwogCQkyOTZCRDg1RTE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk2QkQ4
NUMxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLzsgfTsKKwkJMjk4NEY1
N0MxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5ODRGNTdBMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTI5ODRGNTdEMTY0QjkxNUYwMDRCQzBDNiAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg0RjU3QjE2NEI5MTVGMDA0QkMwQzYgLyogQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovOyB9OworCQkyOTg0RjU4MTE2NEI5
QkJEMDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg0RjU4MDE2NEI5QkJEMDA0QkMwQzYgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggKi87IH07CisJCTI5ODRGNTgzMTY0QjlCRDkwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg0RjU4MjE2NEI5QkQ5MDA0QkMwQzYgLyogQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyTWFjLm1tICovOyB9OworCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYg
LyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg2MTY0QkEwOTUwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQky
OTg0RjU4OTE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTg3
MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovOyB9
OworCQkyOUFEMzA5MzE2NEI0QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUQz
MDkyMTY0QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oICovOyB9
OworCQkyOUFEMzA5NjE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMu
bW0gKi87IH07CiAJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdC5oICovOyB9OwogCQkyOUNENTVBQjEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0Lm1tICovOyB9OwogCQkyOUQ1NURGMTE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFn
ZUdyb3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjlENTVERUYxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VH
cm91cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTE0NzksNiArMTQ4NywxNiBA
QAogCQkyOTUwMTcyMzE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NkJEODVCMTUwMTlCQzMwMDcxRjQyNCAv
KiBTdHJpbmdVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NkJEODVDMTUw
MTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTdHJpbmdVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTI5ODRGNTdBMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5ODRGNTdCMTY0QjkxNUYwMDRCQzBDNiAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk4NEY1ODAxNjRCOUJCRDAwNEJDMEM2IC8qIEN1
c3RvbVByb3RvY29sTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBD
dXN0b21Qcm90b2NvbE1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1
c3RvbVByb3RvY29sTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTg0
RjU4MjE2NEI5QkQ5MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWFjLm1tOyBwYXRoID0gTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29s
TWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk4NEY1ODQxNjRC
OUVEOTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW47IHBhdGgg
PSBOZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5ODRGNTg2MTY0QkEwOTUwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5ODRGNTg3MTY0QkEwOTUwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oOyBwYXRoID0gQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjlBRDMwOTIxNjRCNEM1RDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5Lmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlBRDMwOTUxNjRCNEM5MzAwNzJE
RUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW07
IHBhdGggPSBDdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUFEMzA5NzE2NEI0RTIxMDA3MkRF
QTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW47IHBhdGgg
PSBDdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0Q1NUE4MTI4RTI5NEYwMDEzM0M4NSAv
KiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjlDRDU1QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyOUQ1NURFRTE2MUJGODc4MDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHkubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yOTYzLDYgKzI5ODEsNDIgQEAKIAkJCXBhdGggPSBtYWM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkyOTg0RjU3RTE2NEI5QjU2MDA0QkMw
QzYgLyogQ3VzdG9tUHJvdG9jb2xzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkyOTg0RjU3RjE2NEI5QjVEMDA0QkMwQzYgLyogbWFjICovLAorCQkJCTI5
ODRGNTgwMTY0QjlCQkQwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCAqLywKKwkJ
CQkyOTg0RjU4NDE2NEI5RUQ5MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3Nh
Z2VzLmluICovLAorCQkJKTsKKwkJCW5hbWUgPSBDdXN0b21Qcm90b2NvbHM7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQkyOTg0RjU3RjE2NEI5QjVEMDA0QkMwQzYgLyogbWFj
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyOTg0RjU4
MjE2NEI5QkQ5MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQky
OUFEMzA5MTE2NEI0QzEwMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xzICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyOUFEMzA5NDE2NEI0QzgzMDA3MkRF
QTkgLyogbWFjICovLAorCQkJCTI5QUQzMDkyMTY0QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5oICovLAorCQkJCTI5QUQzMDk3MTY0QjRFMjEwMDcyREVBOSAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCSk7CisJCQluYW1l
ID0gQ3VzdG9tUHJvdG9jb2xzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
MjlBRDMwOTQxNjRCNEM4MzAwNzJERUE5IC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJMjlBRDMwOTUxNjRCNEM5MzAwNzJERUE5IC8qIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBtYWM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkzMTA5OTk3NDE0NkM4QUE4MDAyOURF
QjkgLyogTm90aWZpY2F0aW9ucyAoVXNlcikgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtMzA0Nyw2ICszMTAxLDcgQEAKIAkJNTEwNUIwRDIxNjJGN0E1RTAw
RTI3NzA5IC8qIE5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTI5ODRGNTdFMTY0QjlCNTYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbHMgKi8s
CiAJCQkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgKi8sCiAJCQkJNTEwNUIwRDUxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oICovLAogCQkJCTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC0zMDkzLDYgKzMxNDgsNyBAQAog
CQk1MTBDQzdFNzE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMjlBRDMwOTExNjRCNEMxMDAwNzJERUE5IC8q
IEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTYzMTk5MzE2Mjg5ODBFMDBFMjJGMDAgLyogbWFj
ICovLAogCQkJCTUxMDVCMERCMTYyRjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc01hbmFn
ZXIuY3BwICovLAogCQkJCTUxMDVCMERDMTYyRjdFOUQwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vz
c01hbmFnZXIuaCAqLywKQEAgLTQxNjksNiArNDIyNSwxMCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJNTEyRjU4QTAxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEyRjU4QTExMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhl
bnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJMjk4NEY1ODYxNjRCQTA5NTAwNEJD
MEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJ
Mjk4NEY1ODcxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmggKi8sCisJCQkJMjk4NEY1N0ExNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkyOTg0RjU3QjE2NEI5MTVGMDA0
QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovLAogCQkJCUUx
OTY3RTM1MTUwQUI1RDUwMEM3MzE2OSAvKiBjb20uYXBwbGUuV2ViS2l0LlBsdWdpblByb2Nlc3Mu
c2IgKi8sCiAJCQkJRTE5NjdFMzcxNTBBQjVFMjAwQzczMTY5IC8qIGNvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiICovLAogCQkJCTFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTQ5MDgsNiArNDk2OCwxMCBAQAogCQkJCTFBQTNE
NzYyMTY1MUI3RDMwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxRkQxOEI2MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQ0JCQTEwMTY1MjE5QjYwMDVCRThGRCAv
KiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjlB
RDMwOTMxNjRCNEM1RDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggaW4g
SGVhZGVycyAqLywKKwkJCQkyOTg0RjU3RDE2NEI5MTVGMDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjk4NEY1ODExNjRC
OUJCRDAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMjk4NEY1ODkxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU4NTQsNiArNTkxOCwxMCBAQAogCQkJCTFBQTNENzYx
MTY1MUI3RDMwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxRkQxOEI1MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDQkJBMEYxNjUyMTlCNjAw
NUJFOEZEIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTI5QUQzMDk2MTY0QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI5ODRGNTdDMTY0QjkxNUYwMDRCQzBDNiAv
KiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkyOTg0RjU4MzE2NEI5QkQ5MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8q
IEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXguaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDJQcmVmaXguaAppbmRleCAwNjczZWM4NmQ3MzlhM2E1NmI5MGI1ZDAzZDk1NTdm
ZWM3M2MwNzk0Li4wZDRkYzdjODZkMDhlOTIzOWYzZTAyZDQzYmIzNjBjOGNmYTE0NWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0MlByZWZpeC5oCkBAIC00NCw2ICs0NCw4IEBACiAKICNkZWZpbmUgRU5BQkxFX01F
TU9SWV9TQU1QTEVSIDEKIAorI2RlZmluZSBFTkFCTEVfQ1VTVE9NX1BST1RPQ09MUyAxCisKICNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2IyNDUzYTg3YzMwYWFmZDMwYjQzMzAyMzg2
ZjY2ZjZlYTY3Nzc1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTAs
MCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyX2gK
KyNkZWZpbmUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyX2gKKworI2lmIEVOQUJMRShDVVNUT01fUFJP
VE9DT0xTKQorCisjaW5jbHVkZSAiTWVzc2FnZUlELmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKE1BQykK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09C
SkNfQ0xBU1MgV0tDdXN0b21Qcm90b2NvbDsKKyNlbmRpZgorCisKK25hbWVzcGFjZSBDb3JlSVBD
IHsKK2NsYXNzIENvbm5lY3Rpb247CitjbGFzcyBEYXRhUmVmZXJlbmNlOworY2xhc3MgTWVzc2Fn
ZURlY29kZXI7Cit9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXN0b21Qcm90b2NvbE1hbmFn
ZXIpOworCitwdWJsaWM6CisgICAgc3RhdGljIEN1c3RvbVByb3RvY29sTWFuYWdlciYgc2hhcmVk
KCk7CisgICAgCisgICAgdm9pZCByZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHVucmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBzdXBwb3J0c1Nj
aGVtZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29k
ZXImKTsKKyAgICB2b2lkIGRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgZGlkTG9hZERhdGEo
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYp
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCB1aW50MzJfdCBjYWNoZVN0b3JhZ2VQ
b2xpY3kpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJD
dXN0b21Qcm90b2NvbENsYXNzKCk7CisgICAgdm9pZCBhZGRDdXN0b21Qcm90b2NvbChXS0N1c3Rv
bVByb3RvY29sICopOworICAgIHZvaWQgcmVtb3ZlQ3VzdG9tUHJvdG9jb2woV0tDdXN0b21Qcm90
b2NvbCAqKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIEN1c3RvbVByb3RvY29sTWFuYWdlcigp
IHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKTsKKyAgICAKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsK
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJldGFp
blB0cjxXS0N1c3RvbVByb3RvY29sPiA+IEN1c3RvbVByb3RvY29sTWFwOworICAgIEN1c3RvbVBy
b3RvY29sTWFwIG1fY3VzdG9tUHJvdG9jb2xNYXA7CisgICAgV0tDdXN0b21Qcm90b2NvbCAqcHJv
dG9jb2xGb3JJRCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKKyNlbmRpZgorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykK
KworI2VuZGlmIC8vIEN1c3RvbVByb3RvY29sTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29s
TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU4ZWZkODM4OTE2NTdiZjg3NjEzZDhiYmRhY2JhNmExZTFhOGYwY2QKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BS
T1RPQ09MUykKKworbWVzc2FnZXMgLT4gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyIHsKKyAgICBEaWRG
YWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IpCisgICAgRGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwg
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIERpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
LCB1aW50MzJfdCBjYWNoZVN0b3JhZ2VQb2xpY3kpCisgICAgRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElEKQorfQorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUwNmQxNWNhMzNlNzM2OWJlZGYxYjhiNjU1Yzhi
ZDFkYzJmMjdmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQpA
QCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09M
UykKKworI2ltcG9ydCAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2lt
cG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCisjaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ3VzdG9tUHJv
dG9jb2xJRCgpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUN1c3RvbVByb3RvY29sSUQg
PSAwOworICAgIHJldHVybiArK3VuaXF1ZUN1c3RvbVByb3RvY29sSUQ7Cit9CisKK0BpbnRlcmZh
Y2UgV0tDdXN0b21Qcm90b2NvbCA6IE5TVVJMUHJvdG9jb2wgeworfQorQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV0tDdXN0b21Qcm90b2NvbAorCitAc3ludGhlc2l6ZSBjdXN0b21Qcm90b2Nv
bElEID0gX2N1c3RvbVByb3RvY29sSUQ7CisKKysgKEJPT0wpY2FuSW5pdFdpdGhSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0Cit7CisgICAgcmV0dXJuIFdlYktpdDo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpzaGFyZWQoKS5zdXBwb3J0c1NjaGVtZShbW1tyZXF1ZXN0IFVSTF0gc2NoZW1l
XSBsb3dlcmNhc2VTdHJpbmddKTsKK30KKworKyAoTlNVUkxSZXF1ZXN0ICopY2Fub25pY2FsUmVx
dWVzdEZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICByZXR1cm4gcmVx
dWVzdDsKK30KKworKyAoQk9PTClyZXF1ZXN0SXNDYWNoZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVz
dCAqKWEgdG9SZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiliCit7CisgICAgcmV0dXJuIE5POworfQor
CistIChpZClpbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY2FjaGVkUmVz
cG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRSZXNwb25zZSBjbGllbnQ6KGlkPE5T
VVJMUHJvdG9jb2xDbGllbnQ+KWNsaWVudAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhS
ZXF1ZXN0OnJlcXVlc3QgY2FjaGVkUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2UgY2xpZW50OmNsaWVu
dF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIF9jdXN0
b21Qcm90b2NvbElEID0gZ2VuZXJhdGVDdXN0b21Qcm90b2NvbElEKCk7CisgICAgV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnNoYXJlZCgpLmFkZEN1c3RvbVByb3RvY29sKHNlbGYpOwor
ICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXN0YXJ0TG9hZGluZworeworICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHk6OlN0YXJ0TG9hZGluZyhzZWxmLmN1c3RvbVByb3RvY29sSUQsIFtzZWxm
IHJlcXVlc3RdKSwgMCk7Cit9CisKKy0gKHZvaWQpc3RvcExvYWRpbmcKK3sKKyAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5OjpTdG9wTG9hZGluZyhzZWxmLmN1c3RvbVByb3RvY29sSUQpLCAwKTsKKyAg
ICBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6c2hhcmVkKCkucmVtb3ZlQ3VzdG9tUHJv
dG9jb2woc2VsZik7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0N1c3RvbVBy
b3RvY29sTWFuYWdlciYgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzaGFyZWQoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLCBjdXN0b21Qcm90b2NvbE1h
bmFnZXIsICgpKTsKKyAgICByZXR1cm4gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyOworfQorCit2b2lk
IEN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJDdXN0b21Qcm90b2NvbENsYXNzKCkKK3sK
KyAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltXS0N1c3RvbVByb3RvY29sIGNsYXNz
XV07Cit9CisgICAgCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3VzdG9tUHJvdG9j
b2woV0tDdXN0b21Qcm90b2NvbCAqY3VzdG9tUHJvdG9jb2wpCit7CisgICAgQVNTRVJUKGN1c3Rv
bVByb3RvY29sKTsKKyAgICBtX2N1c3RvbVByb3RvY29sTWFwLmFkZChjdXN0b21Qcm90b2NvbC5j
dXN0b21Qcm90b2NvbElELCBjdXN0b21Qcm90b2NvbCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpyZW1vdmVDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICpjdXN0b21Q
cm90b2NvbCkKK3sKKyAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2wpOworICAgIG1fY3VzdG9tUHJv
dG9jb2xNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sLmN1c3RvbVByb3RvY29sSUQpOworfQorICAg
IAordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQoreworICAgIG1fcmVnaXN0ZXJlZFNjaGVtZXMuYWRkKHNjaGVtZSk7Cit9Cisg
ICAgCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKK3sKKyAgICBtX3JlZ2lzdGVyZWRTY2hlbWVzLnJlbW92ZShzY2hlbWUp
OworfQorCitib29sIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c3VwcG9ydHNTY2hlbWUoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCit7CisgICAgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFp
bnMoc2NoZW1lKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZFJlY2VpdmVN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGRp
ZFJlY2VpdmVDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJ
RCwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGYWlsV2l0
aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQoreworICAgIFdLQ3VzdG9tUHJvdG9jb2wgKnByb3RvY29sID0gcHJvdG9j
b2xGb3JJRChjdXN0b21Qcm90b2NvbElEKTsKKyAgICBpZiAoIXByb3RvY29sKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29sOnByb3RvY29s
IGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICByZW1vdmVDdXN0b21Qcm90
b2NvbChwcm90b2NvbCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRMb2Fk
RGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhKQoreworICAgIFdLQ3VzdG9tUHJvdG9jb2wgKnByb3RvY29sID0gcHJvdG9jb2xG
b3JJRChjdXN0b21Qcm90b2NvbElEKTsKKyAgICBpZiAoIXByb3RvY29sKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29sOnByb3RvY29sIGRp
ZExvYWREYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczoodm9pZCopZGF0YS5kYXRhKCkgbGVuZ3Ro
OmRhdGEuc2l6ZSgpXV07Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSkKK3sK
KyAgICBXS0N1c3RvbVByb3RvY29sICpwcm90b2NvbCA9IHByb3RvY29sRm9ySUQoY3VzdG9tUHJv
dG9jb2xJRCk7CisgICAgaWYgKCFwcm90b2NvbCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IFtbcHJvdG9jb2wgY2xpZW50XSBVUkxQcm90b2NvbDpwcm90b2NvbCBkaWRSZWNlaXZlUmVzcG9u
c2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIGNhY2hlU3RvcmFnZVBvbGljeTpzdGF0aWNfY2Fz
dDxOU1VSTENhY2hlU3RvcmFnZVBvbGljeT4oY2FjaGVTdG9yYWdlUG9saWN5KV07Cit9CisKK3Zv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQpCit7CisgICAgV0tDdXN0b21Qcm90b2NvbCAqcHJvdG9jb2wgPSBwcm90b2Nv
bEZvcklEKGN1c3RvbVByb3RvY29sSUQpOworICAgIGlmICghcHJvdG9jb2wpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBbW3Byb3RvY29sIGNsaWVudF0gVVJMUHJvdG9jb2xEaWRGaW5pc2hM
b2FkaW5nOnByb3RvY29sXTsKKyAgICByZW1vdmVDdXN0b21Qcm90b2NvbChwcm90b2NvbCk7Cit9
CisKK1dLQ3VzdG9tUHJvdG9jb2wgKkN1c3RvbVByb3RvY29sTWFuYWdlcjo6cHJvdG9jb2xGb3JJ
RCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAgIEN1c3RvbVByb3RvY29sTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZmluZChjdXN0b21Qcm90b2Nv
bElEKTsKKyAgICBpZiAoaXQgPT0gbV9jdXN0b21Qcm90b2NvbE1hcC5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAKKyAgICBBU1NFUlQoaXQtPnZhbHVlKTsKKyAgICByZXR1cm4gaXQt
PnZhbHVlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShDVVNUT01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNjBmZTczMWI5ZTM2YWJkMDdkZmViNzZkNDE3YzhiYmY3YmIxZjdhNi4uYjRm
MTBiNzFlZmE3NzY1NTlhMTYwMTA4NDVjZWUxYTE1MjYxOGZhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJz
LmgiCkBAIC03MDcsNiArNzA4LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAg
aWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NDdXN0b21Qcm90b2NvbE1hbmFn
ZXI+KCkpIHsKKyAgICAgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzaGFyZWQoKS5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3Nh
Z2VDbGFzc1dlYlBhZ2VHcm91cFByb3h5PigpKSB7CiAgICAgICAgIHVpbnQ2NF90IHBhZ2VHcm91
cElEID0gZGVjb2Rlci5kZXN0aW5hdGlvbklEKCk7CiAgICAgICAgIGlmICghcGFnZUdyb3VwSUQp
CkBAIC0xMTM5LDQgKzExNDcsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRHZXRQbHVnaW5zKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFYKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09M
UykKK3ZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25z
dCBXVEY6OlN0cmluZyYgc2NoZW1lKQoreworICAgIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6c2hh
cmVkKCkucmVnaXN0ZXJTY2hlbWUoc2NoZW1lKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjp1bnJl
Z2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgV1RGOjpTdHJpbmcmIHNjaGVtZSkK
K3sKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnNoYXJlZCgpLnVucmVnaXN0ZXJTY2hlbWUo
c2NoZW1lKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMGIzYzBmYjk5OGQ0NzFkZDI5ZGY3M2ZkM2I2
ODlkYmRmNDE4YzdjZi4uOTMyNDhiMDg0N2Q1MzY2MzcwNWVhZTQ4Y2E4NThmMTk1M2EwNzU5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTMwNCw2ICszMDQsMTEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlvbios
IHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIHZvaWQgcmVnaXN0
ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZvaWQg
dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFdURjo6U3RyaW5nJik7Cisj
ZW5kaWYKKwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fY29ubmVjdGlv
bjsKICAgICBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCAyYzFiNDMwNTIzNjRkMzZmYjYyYTZlZDdlOWJjMmFmNGMzZDgwNWViLi5lZGNhZDM0
ZmYzN2NlYTdhZDEzNWQ2ZDI2NDQyZTFkZWM0ODhkMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDEsNCArMTAxLDkgQEAg
bWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFNldEFwcGxp
Y2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKKyAgICBSZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKFdURjo6U3Ry
aW5nIG5hbWUpCisgICAgVW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKFdURjo6U3Ry
aW5nIG5hbWUpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzTWFjLm1tCmluZGV4IDAwMWRlYjRjOGZmNWU4MDc2MDcxNTc0ZTQ0MTZhZjYyZjM2
YzZkOTAuLjgwZDNlNDhhMWEyYjhmY2ExZTI2MDZhNTBiM2JhMDZjNjU1ZmIyMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAKKyNp
bXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCiAjaW1wb3J0ICJX
ZWJJbnNwZWN0b3IuaCIKQEAgLTI5MSw2ICsyOTIsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMKICAgICAvLyBubyB3aW5kb3cgaW4gV0syLCBOU0FwcGxpY2F0aW9uIG5lZWRzIHRvIHVzZSB0
aGUgZm9jdXNlZCBwYWdlJ3MgZm9jdXNlZCBlbGVtZW50LgogICAgIE1ldGhvZCBtZXRob2RUb1Bh
dGNoID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoW05TQXBwbGljYXRpb24gY2xhc3NdLCBAc2Vs
ZWN0b3IoYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQpKTsKICAgICBtZXRob2Rfc2V0SW1w
bGVtZW50YXRpb24obWV0aG9kVG9QYXRjaCwgKElNUClOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0
eUZvY3VzZWRVSUVsZW1lbnQpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5zaXplKCk7ICsr
aSkKKyAgICAgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzaGFyZWQoKS5yZWdpc3RlclNjaGVt
ZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsK
KyAgICAKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyQ3VzdG9tUHJvdG9jb2xD
bGFzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVTaGltKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MTBkMDcxNTJiYWZm
ODNlN2JmZDZiNzIzYjZiNzcyNTIzNTU3NzU1Li5jZjY2MWJlZTA4MzQ4NWUyNGRiOGVjNzlkZDJl
NWFhYzk1N2E4MTFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTEtMDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXQyXSBOZWVkIEFQSSBpbiBVSVByb2Nlc3MgdG8g
ZW5hYmxlIGxvYWRpbmcgb2YgY3VzdG9tIHByb3RvY29scworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRoYXQgaW1wbGVtZW50
cyBhIGN1c3RvbSBwcm90b2NvbCBhbmQgYXR0ZW1wdHMgdG8gbG9hZAorICAgICAgICBhIHJlc291
cmNlIHJlcXVpcmluZyB0aGF0IHByb3RvY29sIGluIGEgV0tWaWV3LiBUaGUgdGVzdCBwYXNzZXMg
b25seSBpZgorICAgICAgICBkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IGZpcmVzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2Nv
bHNUZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKCtbVGVzdFByb3RvY29sIGNhbkluaXRXaXRoUmVx
dWVzdDpdKToKKyAgICAgICAgKCtbVGVzdFByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1
ZXN0Ol0pOgorICAgICAgICAoK1tUZXN0UHJvdG9jb2wgcmVxdWVzdElzQ2FjaGVFcXVpdmFsZW50
OnRvUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFByb3RvY29sIHN0YXJ0TG9hZGluZ10pOgor
ICAgICAgICAoLVtUZXN0UHJvdG9jb2wgc3RvcExvYWRpbmddKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1VzZXJDb250ZW50VGVzdC5tbToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlckludGVybmFsLmguCisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaC4K
KyAgICAgICAgKC1bVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBpbml0V2l0aEJsb2Nr
VG9SdW5PbkxvYWQ6XSk6CisgICAgICAgICgtW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdh
dGUgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZEZpbmlzaExvYWQ6XSk6CisKIDIwMTItMTEt
MTMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQ1MDMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRj
MjU2YjQ3ZGYwZGVkMTQyZjVmOWM1MmYxZjk3YWI1NGZmYzI4OTYuLjI0OWZjNGFhNjVkOTYyYWZm
MWE0MzdkOGIzNGUyNzhlNzg5N2E4NmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMiw2
ICszMiw4IEBACiAJCTI2RjFCNDQ0MTVDQTQzNEYwMEQxRTRCRiAvKiBBdG9taWNTdHJpbmcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMUI0NDIx
NUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAgKi87IH07CiAJCTI2RjFCNDQ1MTVD
QTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjFCNDQzMTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJ
bXBsLmNwcCAqLzsgfTsKIAkJMjk0M0JFODYxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50
VGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5
NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29udGVudFRlc3QubW0gKi87IH07CisJCTI5
QUI4QUExMTY0QzczNTgwMEQ0OUJFQyAvKiBDdXN0b21Qcm90b2NvbHNUZXN0Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBQjhBOUYxNjRDNzM1ODAw
RDQ5QkVDIC8qIEN1c3RvbVByb3RvY29sc1Rlc3QubW0gKi87IH07CisJCTI5QUI4QUE0MTY0QzdB
OTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBQjhBQTIxNjRDN0E5MzAw
RDQ5QkVDIC8qIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gKi87IH07CiAJCTMz
M0I5Q0UyMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzQjlDRTExMjc3RjIz
MTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgKi87IH07CiAJCTMzQkU1QUY1
MTM3QjVBNkMwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUY0MTM3QjVBNkMwMDcwNTgx
MyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcCAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAw
NzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAv
KiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgKi87IH07CkBAIC0yNzQsNiArMjc2LDkg
QEAKIAkJMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBdG9taWNTdHJpbmcuY3BwOyBwYXRoID0g
V1RGL0F0b21pY1N0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RjFC
NDQzMTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFN0cmluZ0ltcGwuY3BwOyBwYXRoID0gV1RGL1N0cmluZ0ltcGwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTQzQkU4NDE2MURGRUI4MDA5OTlF
M0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gVXNlckNvbnRlbnRUZXN0Lm1tOyBwYXRoID0gV2ViS2l0Mk9iakMvVXNlckNvbnRl
bnRUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUFCOEE5RjE2NEM3MzU4
MDBENDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IEN1c3RvbVByb3RvY29sc1Rlc3QubW07IHBhdGggPSBXZWJLaXQy
T2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyOUFCOEFBMjE2NEM3QTkzMDBENDlCRUMgLyogVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlc3RCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTI5QUI4QUEzMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RCcm93c2luZ0NvbnRl
eHRMb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzQjlDRTEx
Mjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0JFNUFGNDEzN0I1QTZDMDA3MDU4MTMgLyogTW91
c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vdXNlTW92ZUFmdGVyQ3Jh
c2hfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0MSw2ICs1NDYs
NyBAQAogCQlCQzNDNEM2RjE0NTc1QjFEMDAyNUZCNjIgLyogV2ViS2l0MiBPYmplY3RpdmUtQyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMjlBQjhBOUYx
NjRDNzM1ODAwRDQ5QkVDIC8qIEN1c3RvbVByb3RvY29sc1Rlc3QubW0gKi8sCiAJCQkJMjk0M0JF
ODQxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50VGVzdC5tbSAqLywKIAkJCQlCQzNDNEM3
RDE0NTg3QUE2MDAyNUZCNjIgLyogV0tCcm93c2luZ0NvbnRleHRHcm91cFRlc3QubW0gKi8sCiAJ
CQkJQkMzQzRDNzAxNDU3NUI2QTAwMjVGQjYyIC8qIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlVGVzdC5tbSAqLywKQEAgLTcxMSw2ICs3MTcsOCBAQAogCQkJCUJDOTA5NTVDMTI1NTQ4QUEw
MDA4Mzc1NiAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0gKi8sCiAJCQkJQzA4MTIyNDMxM0ZDMTlF
QzAwREMzOUFFIC8qIFN5bnRoZXRpY0JhY2tpbmdTY2FsZUZhY3RvcldpbmRvdy5oICovLAogCQkJ
CUMwODEyMjQ0MTNGQzE5RUMwMERDMzlBRSAvKiBTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JX
aW5kb3cubSAqLywKKwkJCQkyOUFCOEFBMzE2NEM3QTkzMDBENDlCRUMgLyogVGVzdEJyb3dzaW5n
Q29udGV4dExvYWREZWxlZ2F0ZS5oICovLAorCQkJCTI5QUI4QUEyMTY0QzdBOTMwMEQ0OUJFQyAv
KiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tICovLAogCQkJCUMwODU4N0JFMTNG
RTk1NkMwMDFFRjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rlc3QuaCAqLywKIAkJCQlDMDg1ODdCRDEz
RkU5NTZDMDAxRUY0RTUgLyogV2ViS2l0QWdub3N0aWNUZXN0Lm1tICovLAogCQkJKTsKQEAgLTEw
MTYsNiArMTAyNCw4IEBACiAJCQkJNEY0RDJDMEUxNjI2RkUyNzAwMzIwRkUxIC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvblRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc4RTY0NzMxNjMyNjQ2
RDAwQjZDNjc2IC8qIEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZFMjE3RUNEMTY0MEE1NEEwMDUyOTg4QiAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyOUFCOEFBMTE2NEM3MzU4MDBENDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xz
VGVzdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI5QUI4QUE0MTY0QzdBOTMwMEQ0OUJFQyAvKiBU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29s
c1Rlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVBy
b3RvY29sc1Rlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ1NGYzZjM4MTBjN2YyOTQ0Mjg0OTkzMDMzZGM4
ZTYxYTkxN2U4NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbQpAQCAtMCwwICsxLDkyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0LmgiCisKKyNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERl
bGVnYXRlLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdDIvV2ViS2l0Mi5oPgorCitzdGF0aWMgTlNTdHJpbmcgKnRlc3RTY2hlbWUgPSBAInRlc3Qi
Oworc3RhdGljIE5TU3RyaW5nICp0ZXN0SG9zdCA9IEAidGVzdCI7CitzdGF0aWMgYm9vbCB0ZXN0
RmluaXNoZWQgPSBmYWxzZTsKKworQGludGVyZmFjZSBUZXN0UHJvdG9jb2wgOiBOU1VSTFByb3Rv
Y29sIHsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbAorCisrIChCT09M
KWNhbkluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAoreworICAgIHJldHVy
biBbW1tyZXF1ZXN0IFVSTF0gc2NoZW1lXSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOnRlc3RTY2hl
bWVdID09IE5TT3JkZXJlZFNhbWU7Cit9CisKKysgKE5TVVJMUmVxdWVzdCAqKWNhbm9uaWNhbFJl
cXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0Cit7CisgICAgcmV0dXJuIHJl
cXVlc3Q7Cit9CisKKysgKEJPT0wpcmVxdWVzdElzQ2FjaGVFcXVpdmFsZW50OihOU1VSTFJlcXVl
c3QgKilhIHRvUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopYgoreworICAgIHJldHVybiBOTzsKK30K
KworLSAodm9pZClzdGFydExvYWRpbmcKK3sKKyAgICBFWFBFQ1RfVFJVRShbW1tbc2VsZiByZXF1
ZXN0XSBVUkxdIHNjaGVtZV0gaXNFcXVhbFRvU3RyaW5nOnRlc3RTY2hlbWVdKTsKKyAgICBFWFBF
Q1RfVFJVRShbW1tbc2VsZiByZXF1ZXN0XSBVUkxdIGhvc3RdIGlzRXF1YWxUb1N0cmluZzp0ZXN0
SG9zdF0pOworICAgIAorICAgIE5TRGF0YSAqZGF0YSA9IFtAIjxib2R5PlBBU1M8L2JvZHk+IiBk
YXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddOworICAgIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlID0gW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbW3NlbGYg
cmVxdWVzdF0gVVJMXSBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OltkYXRhIGxlbmd0aF0gdGV4dEVuY29kaW5nTmFtZTpuaWxdOworICAgIFtbc2VsZiBjbGllbnRd
IFVSTFByb3RvY29sOnNlbGYgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlIGNhY2hlU3RvcmFn
ZVBvbGljeTpOU1VSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWRdOworICAgIFtbc2VsZiBjbGllbnRd
IFVSTFByb3RvY29sOnNlbGYgZGlkTG9hZERhdGE6ZGF0YV07CisgICAgW1tzZWxmIGNsaWVudF0g
VVJMUHJvdG9jb2xEaWRGaW5pc2hMb2FkaW5nOnNlbGZdOworICAgIFtyZXNwb25zZSByZWxlYXNl
XTsKK30KKworLSAodm9pZClzdG9wTG9hZGluZworeworfQorCitAZW5kCisKK1RFU1QoV2ViS2l0
MkN1c3RvbVByb3RvY29sc1Rlc3QsIEN1c3RvbVByb3RvY29sVXNlZCkKK3sKKyAgICBbTlNVUkxQ
cm90b2NvbCByZWdpc3RlckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICBbV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6dGVz
dFNjaGVtZV07CisKKyAgICBXS1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3VwID0gW1tXS1Byb2Nl
c3NHcm91cCBhbGxvY10gaW5pdF07CisgICAgV0tCcm93c2luZ0NvbnRleHRHcm91cCAqYnJvd3Np
bmdDb250ZXh0R3JvdXAgPSBbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRo
SWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl07CisgICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dL
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9j
ZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4
dEdyb3VwXTsKKyAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdh
dGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Cisg
ICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgfV07CisgICAgW3drVmlldy5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDov
LyVAIiwgdGVzdFNjaGVtZSwgdGVzdEhvc3RdXV1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvVXNlckNvbnRl
bnRUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9Vc2VyQ29u
dGVudFRlc3QubW0KaW5kZXggZDg3YWQ1ZWQ1OTQ2ODc0ZmI1MmQ5OGY5ZDUxODc4NjgwN2I0Mjlj
ZS4uMDI1ODk2MzczMGI4ZDlkOTQ3ZjQ3ZTVlZDk0NTRlYjg4OWY1OGQwMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRl
c3QubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIlRlc3QuaCIKIAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdh
dGUuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oPgpAQCAtNDIsNDAgKzQzLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGdyZWVuSW5SR0IgPSAicmdiKDAsIDEyOCwgMCkiOwogc3RhdGljIGNvbnN0IGNoYXIqIHJlZElu
UkdCID0gInJnYigyNTUsIDAsIDApIjsKIHN0YXRpYyBjb25zdCBjaGFyKiB1c2VyU2NyaXB0VGVz
dFByb3BlcnR5ID0gIndpbmRvdy5fdXNlclNjcmlwdEluc3RhbGxlZCI7CiAKLXR5cGVkZWYgdm9p
ZCAoXk9uTG9hZEJsb2NrKShXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKik7Ci0KLUBpbnRl
cmZhY2UgVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdLQnJvd3NpbmdD
b250ZXh0TG9hZERlbGVnYXRlPgotewotICAgIE9uTG9hZEJsb2NrIF9vbkxvYWRCbG9jazsKLX0K
LQotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE9uTG9hZEJsb2NrIG9uTG9hZEJsb2NrOwot
Ci0tIChpZClpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6KE9uTG9hZEJsb2NrKWJsb2NrOwotCi1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBVc2VyQ29udGVudFRlc3RMb2FkRGVsZWdhdGUKLQotQHN5
bnRoZXNpemUgb25Mb2FkQmxvY2sgPSBfb25Mb2FkQmxvY2s7Ci0KLS0gKGlkKWluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDooT25Mb2FkQmxvY2spYmxvY2sKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBzZWxmLm9uTG9hZEJs
b2NrID0gYmxvY2s7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlckRpZEZpbmlzaExvYWQ6KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAq
KXNlbmRlcgotewotICAgIGlmIChfb25Mb2FkQmxvY2spCi0gICAgICAgIF9vbkxvYWRCbG9jayhz
ZW5kZXIpOwotfQotCi1AZW5kCi0KIG5hbWVzcGFjZSB7CiAgICAgY2xhc3MgV2ViS2l0MlVzZXJD
b250ZW50VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgIHB1YmxpYzoKQEAgLTE0
Myw3ICsxMTAsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclN0eWxl
U2hlZXRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgCiAgICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dL
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9j
ZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4
dEdyb3VwXTsKICAgICBXS1N0cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCk7Ci0gICAgd2tWaWV3
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tVc2VyQ29udGVudFRl
c3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgKnNlbmRlcikgewogICAgICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVfYih3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnksIF4oV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7
CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgZ3JlZW5JblJHQik7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwpAQCAt
MTYyLDcgKzEyOSw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5
bGVTaGVldEFmdGVyQ3JlYXRpbmdWaWV3KQogICAgIAogICAgIFdLVmlldyAqd2tWaWV3ID0gW1tX
S1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJv
Y2Vzc0dyb3VwOnByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRl
eHRHcm91cF07CiAgICAgV0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9yUXVlcnkgPSBXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpOwotICAgIHdrVmll
dy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVXNlckNvbnRlbnRU
ZXN0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIHdrVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lX2Iod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikg
ewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKQEAg
LTE4NCw3ICsxNTEsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzKQogICAgIAogICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3Vw
OnByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cF07
CiAgICAgV0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9yUXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpOwotICAgIHdrVmlldy5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVXNlckNvbnRlbnRUZXN0TG9hZERl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpzZW5kZXIpIHsKICAgICAgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2Iod2tW
aWV3LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewogICAgICAg
ICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIHJl
ZEluUkdCKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CkBAIC0yMDYsNyArMTcz
LDcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTY3JpcHRCZWZvcmVD
cmVhdGluZ1ZpZXcpCiAgICAgCiAgICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJv
Y2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKICAg
ICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQcm9wZXJ0eSk7Ci0gICAgd2tWaWV3LmJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tVc2VyQ29udGVudFRlc3RM
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKnNlbmRlcikgewogICAgICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVf
Yih3a1ZpZXcucGFnZVJlZiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZywgXihXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJy
b3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNjcmlwdFZhbHVlSXNCb29sZWFuKHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwpAQCAt
MjI1LDcgKzE5Miw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU2Ny
aXB0QWZ0ZXJDcmVhdGluZ1ZpZXcpCiAgICAgCiAgICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNz
R3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdy
b3VwXTsKICAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQcm9wZXJ0eSk7Ci0gICAg
d2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tVc2VyQ29u
dGVudFRlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgd2tWaWV3LmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewogICAgICAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5N
YWluRnJhbWVfYih3a1ZpZXcucGFnZVJlZiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZywg
XihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJy
b3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNjcmlwdFZhbHVlSXNCb29sZWFuKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0
cnVlOwpAQCAtMjQ3LDcgKzIxNCw3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBS
ZW1vdmVBbGxVc2VyU2NyaXB0cykKICAgICAKICAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NH
cm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3Jv
dXBdOwogICAgIFdLU3RyaW5nUmVmIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KTsKLSAgICB3
a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1VzZXJDb250
ZW50VGVzdExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICB3a1ZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAgICAgICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZV9iKHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBe
KFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJv
clJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1VuZGVmaW5lZChz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RCcm93c2luZ0NvbnRl
eHRMb2FkRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjNkMDA2ODdjNDVmOTNlMDVlNzI5OWE0Mzkx
ZTkyY2E2ZmM4MTllCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
VGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxXZWJLaXQyL1dlYktpdDIuaD4KKwordHlwZWRlZiB2b2lkICheT25M
b2FkQmxvY2spKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKTsKKworQGludGVyZmFjZSBU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdLQnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlPiB7Cit9CisKK0Bwcm9wZXJ0eShub25hdG9taWMsIGNvcHkpIE9uTG9h
ZEJsb2NrIG9uTG9hZEJsb2NrOworCistIChpZClpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6KE9u
TG9hZEJsb2NrKWJsb2NrOworCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9UZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NmM4Y2VmOTQzODNhMzFjZDAxY2Y1YmUzNTU5ZWFiOTg4MjcxNmEzCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0
ZS5tbQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCIKKworQGltcGxlbWVu
dGF0aW9uIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUKKworQHN5bnRoZXNpemUgb25M
b2FkQmxvY2sgPSBfb25Mb2FkQmxvY2s7CisKKy0gKGlkKWluaXRXaXRoQmxvY2tUb1J1bk9uTG9h
ZDooT25Mb2FkQmxvY2spYmxvY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBzZWxmLm9uTG9hZEJsb2NrID0gYmxvY2s7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ckRpZEZpbmlzaExvYWQ6KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKXNlbmRlcgorewor
ICAgIGlmIChfb25Mb2FkQmxvY2spCisgICAgICAgIF9vbkxvYWRCbG9jayhzZW5kZXIpOworfQor
CitAZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174045</attachid>
            <date>2012-11-13 18:10:12 -0800</date>
            <delta_ts>2012-12-10 15:09:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101674-20121113180812.patch</filename>
            <type>text/plain</type>
            <size>80885</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTI5MmQ3YWRkMzZlNzg0
ODFiNjZmYWY5NTg5N2VlNjYyZjY3NzVlZi4uNTM0MmVhNTkyMTk0ZjRmMDNiYWFmMGFiMDIzZTVk
ZGY2YzVkYjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMi0xMS0wOCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYktpdDJdIE5lZWQgQVBJ
IGluIFVJUHJvY2VzcyB0byBlbmFibGUgbG9hZGluZyBvZiBjdXN0b20gcHJvdG9jb2xzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2NzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgY2xpZW50
cyBvZiBXZWJLaXQyIHRvIGltcGxlbWVudCBOU1VSTFByb3RvY29sIHN1YmNsYXNzZXMgdG8KKyAg
ICAgICAgY29udHJvbCB0aGUgbG9hZGluZyBvZiByZXNvdXJjZXMgd2l0aCBzY2hlbWVzIHRoYXQg
V2ViS2l0MiBjYW5ub3QKKyAgICAgICAgaGFuZGxlIG5hdGl2ZWx5LiBTaW5jZSBsb2FkaW5nIGhh
cHBlbnMgaW4gYSBkaWZmZXJlbnQgcHJvY2Vzcywgd2UKKyAgICAgICAgYWNjb21wbGlzaCB0aGlz
IGJ5IHJlZ2lzdGVyaW5nIGEgZ2xvYmFsIE5TVVJMUHJvdG9jb2wgaW4gdGhlIHdlYgorICAgICAg
ICBwcm9jZXNzIGFuZCBwcm94eWluZyBOU1VSTFByb3RvY29sIGFuZCBOU1VSTFByb3RvY29sQ2xp
ZW50IGNhbGxzIHRvCisgICAgICAgIHRoZSBjbGllbnQncyBOU1VSTFByb3RvY29sIGluIHRoZSBV
SSBwcm9jZXNzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZGVkIG5ldyAu
bWVzc2FnZXMuaW4gZmlsZXMuCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6IEFk
ZGVkIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBzY2hlbWVzLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoK1tXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpdKToKKyAg
ICAgICAgQWRkZWQgYSBjbGFzcyBtZXRob2Qgd2hlcmUgYSBjbGllbnQgY2FuIHJlZ2lzdGVyIGEg
c2NoZW1lIHRoYXQgaXQgc3VwcG9ydHMuCisgICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgIEFk
ZGVkIGEgY2xhc3MgbWV0aG9kIHdoZXJlIGEgY2xpZW50IGNhbiB1bnJlZ2lzdGVyIGEgc2NoZW1l
IHRoYXQgaXQgbm8gbG9uZ2VyIHN1cHBvcnRzLgorICAgICAgICAoK1tXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgY3VzdG9tU2NoZW1lc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFj
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eU1hYy5tbTogQWRkZWQuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gTlNVUkxDb25uZWN0
aW9uRGVsZWdhdGUgdGhhdCBwcm94aWVzIG1lc3NhZ2VzIHRvIHRoZQorICAgICAgICBlcXVpdmFs
ZW50IE5TVVJMUHJvdG9jb2xDbGllbnQgaW4gdGhlIHdlYiBwcm9jZXNzOgorICAgICAgICAoLVtX
S0N1c3RvbVByb3RvY29sTG9hZGVyIGluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6
Y3VzdG9tUHJvdG9jb2xJRDpyZXF1ZXN0OmNvbm5lY3Rpb246XSk6CisgICAgICAgICgtW1dLQ3Vz
dG9tUHJvdG9jb2xMb2FkZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29s
TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bV0tDdXN0
b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uOndpbGxDYWNoZVJlc3BvbnNlOl0pOgorICAgICAg
ICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNl
Ol0pOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVj
ZWl2ZURhdGE6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgY29ubmVjdGlv
bjp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV0tDdXN0
b21Qcm90b2NvbExvYWRlciBjb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKToKKworICAgICAg
ICBJbXBsZW1lbnRlZCBhIHByb3h5IHRoYXQgcmVjaWV2ZXMgLXN0YXJ0TG9hZGluZyBhbmQgLXN0
b3BMb2FkaW5nCisgICAgICAgIG1lc3NhZ2VzIGZyb20gdGhlIE5TVVJMUHJvdG9jb2wgaW4gdGhl
IHdlYiBwcm9jZXNzIGFuZCBzdGFydHMgYW4KKyAgICAgICAgTlNVUkxDb25uZWN0aW9uIGluIHRo
ZSBVSSBwcm9jZXNzLCB3aGljaCB3aWxsIGluc3RhbnRpYXRlIHRoZSBjbGllbnQncyBOU1VSTFBy
b3RvY29sOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Lmg6IERlY2xhcmVkIHN0cmluZ3MgdGhhdCBzdG9yZSBuYW1lcyBv
ZgorICAgICAgICBOU05vdGlmaWNhdGlvbnMgdXNlZCBmb3Igc2NoZW1lIHJlZ2lzdHJhdGlvbiBp
biB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKTogRm9y
d2FyZGVkIG1lc3NhZ2VzIHRvIHRoZQorICAgICAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogQWRkZWQgdGhlIGN1cnJlbnRseQorICAg
ICAgICByZWdpc3RlcmVkIHNjaGVtZXMgdG8gdGhlIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgYW5kIHJlZ2lzdGVyCisgICAgICAgIE5TTm90aWZpY2F0aW9uIG9ic2VydmVycyBmb3IgbmV3
IHNjaGVtZSByZWdpc3RyYXRpb24gdGhhdCBmb3J3YXJkcyB0bworICAgICAgICB0aGUgY29udGV4
dCdzIHdlYiBwcm9jZXNzZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYktpdDJQcmVmaXguaDogRW5hYmxlZCB0aGUgQ1VTVE9NX1BS
T1RPQ09MUyBtYWNybyBmb3IgdGhlIE1hYy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdl
ci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tOiBBZGRlZC4KKyAgICAg
ICAgKGdlbmVyYXRlQ3VzdG9tUHJvdG9jb2xJRCk6IEdlbmVyYXRlIGEgcGVyLVdlYlByb2Nlc3Mg
dW5pcXVlIElELgorCisgICAgICAgIEltcGxlbWVudGVkIGEgZ2xvYmFsIE5TVVJMUHJvdG9jb2wg
dGhhdCBjbGFpbXMgdG8gc3VwcG9ydCBhbGwgc2NoZW1lcworICAgICAgICByZWdpc3RlcmVkIGlu
IHRoZSBVSSBwcm9jZXNzLiBXaGVuIE5TVVJMQ29ubmVjdGlvbiBjYWxscyAtc3RhcnRMb2FkaW5n
CisgICAgICAgIGFuZCAtc3RvcExvYWRpbmcsIHdlIGZvcndhcmQgdGhlc2UgbWVzc2FnZXMgdG8g
dGhlIGNsaWVudCdzIE5TVVJMUHJvdG9jb2wKKyAgICAgICAgaW4gdGhlIFVJIHByb2Nlc3M6Cisg
ICAgICAgICgrW1dLQ3VzdG9tUHJvdG9jb2wgY2FuSW5pdFdpdGhSZXF1ZXN0Ol0pOgorICAgICAg
ICAoK1tXS0N1c3RvbVByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0Ol0pOgorICAg
ICAgICAoK1tXS0N1c3RvbVByb3RvY29sIHJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVl
c3Q6XSk6CisgICAgICAgICgtW1dLQ3VzdG9tUHJvdG9jb2wgaW5pdFdpdGhSZXF1ZXN0OmNhY2hl
ZFJlc3BvbnNlOmNsaWVudDpdKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbCBzdGFydExv
YWRpbmddKToKKyAgICAgICAgKC1bV0tDdXN0b21Qcm90b2NvbCBzdG9wTG9hZGluZ10pOgorCisg
ICAgICAgIEltcGxlbWVudGVkIGEgbWFuYWdlciB0aGF0IHJlY2VpdmVzIE5TVVJMQ29ubmVjdGlv
bkRlbGVnYXRlIG1lc3NhZ2VzCisgICAgICAgIGZvcndhcmRlZCBmcm9tIHRoZSBVSSBwcm9jZXNz
IGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgZ2xvYmFsIE5TVVJMUHJvdG9jb2wncyBOU1VSTFByb3Rv
Y29sQ2xpZW50OgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJDdXN0
b21Qcm90b2NvbENsYXNzKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjphZGRDdXN0b21Qcm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlcjo6cmVtb3ZlQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnByb3RvY29sRm9ySUQpOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOiBGb3J3YXJkZWQgbWVzc2FnZXMgdG8gdGhlCisgICAgICAg
IHNoYXJlZCBDdXN0b21Qcm90b2NvbE1hbmFnZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBSZWdpc3RlciBhCisgICAgICAg
IHNjaGVtZSByZWNlaXZlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBVbnJlZ2lzdGVy
IGEKKyAgICAgICAgc2NoZW1lIHJlY2VpdmVkIGZyb20gdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOiBEZWNsYXJlZCBtZXNzYWdlcyBmb3IgcGFzc2luZworICAgICAgICBz
dXBwb3J0ZWQgc2NoZW1lcyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRoZSB3ZWIgcHJvY2Vzcy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogUmVnaXN0ZXIgdGhl
CisgICAgICAgIHNjaGVtZXMgY29udGFpbmVkIGluIHRoZSBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLgorCiAyMDEyLTExLTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3RlR3JhcGhpY3NMYXllciBkZXN0cnVjdG9yIHNob3VsZCBjYWxs
IEdyYXBoaWNzTGF5ZXI6OndpbGxCZURlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggNDY2YTUzOGY0NDQ2OWExOWI1MTFiMDQwNjFkZjkzMTZiNDEzOWQ3Ny4uZGQ3OWY4
ZTZmMzU0NTIwZTNhYjhkYjEwZTZhMDU5MTE4NDMyN2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC0zNyw2ICszNyw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9NZWRp
YUNhY2hlIFwKICAgICAkKFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0d29yayBcCisgICAgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwKICAgICAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAgICAgJChXZWJLaXQyKS9XZWJQcm9jZXNzL1Bs
dWdpbnMgXAogICAgICQoV2ViS2l0MikvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlIFwKQEAgLTQ2
LDYgKzQ3LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MgXAogICAgICQo
V2ViS2l0MikvVUlQcm9jZXNzL0Rvd25sb2FkcyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3Mv
TmV0d29yayBcCisgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogICAgICQoV2Vi
S2l0MikvVUlQcm9jZXNzL1BsdWdpbnMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL1NoYXJl
ZFdvcmtlcnMgXApAQCAtNTQsNiArNTYsOCBAQCBWUEFUSCA9IFwKIAogTUVTU0FHRV9SRUNFSVZF
UlMgPSBcCiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyIFwKKyAgICBDdXN0b21Qcm90b2NvbE1h
bmFnZXIgXAorICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IFwKICAgICBEcmF3aW5nQXJl
YSBcCiAgICAgRHJhd2luZ0FyZWFQcm94eSBcCiAgICAgRG93bmxvYWRQcm94eSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAppbmRleCAwMTQ4NmQ2MzM4Y2I5
NWE2ZDI1OTFmM2Y5MTc5Zjc1ZDA0YjZmYWRiLi40N2ZkZjAxZTg0NTc3ODA0Y2RkNGM5YzQ3ODRm
NmJkYWM2NzRkNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L01lc3NhZ2VJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2Fn
ZUlELmgKQEAgLTEyNiw2ICsxMjYsMTQgQEAgZW51bSBNZXNzYWdlQ2xhc3MgewogCiAgICAgLy8g
TWVzc2FnZXMgc2VudCBieSB0aGUgc2hhcmVkIHdvcmtlciBwcm9jZXNzIHRvIHRoZSBVSSBwcm9j
ZXNzLgogICAgIE1lc3NhZ2VDbGFzc1NoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwKKyAgICAKKyNp
ZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICAvLyBNZXNzYWdlcyBzZW50IGJ5IHRoZSBV
SSBwcm9jZXNzIHRvIGEgd2ViIHByb2Nlc3MgKHNvb24gdGhlIG5ldHdvcmsgcHJvY2VzcykuCisg
ICAgTWVzc2FnZUNsYXNzQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLAorCisgICAgLy8gTWVzc2FnZXMg
c2VudCBieSBhIHdlYiBwcm9jZXNzIChzb29uIHRoZSBuZXR3b3JrIHByb2Nlc3MpIHRvIHRoZSBV
SSBwcm9jZXNzLgorICAgIE1lc3NhZ2VDbGFzc0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LAor
I2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IE1lc3NhZ2VLaW5kVHJhaXRz
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCA1NjM4M2Y3NDk2YmI3YmY5NzAyZjJlNzUyM2Y3YTVhZDQ1
MjRkYjRkLi4zYTYxNTVlY2E5Njk0MDYzZjQ1NzFhMDVmNzE5MmU4NzNmZDFkNDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCkBAIC03Myw2ICs3Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uCiAgICAgZW5j
b2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3M7CiAgICAgZW5jb2RlciA8PCB1
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxheUlzb2xhdGVkOwogICAgIGVuY29kZXIgPDwgdXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkOworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9D
T0xTKQorICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHM7CisjZW5kaWYKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7CiAgICAgZW5j
b2RlciA8PCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsKICAgICBlbmNvZGVyIDw8IHNob3VsZEFs
d2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGg7CkBAIC0xNTgsNiArMTYxLDEwIEBAIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgV2ViCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3Vz
dG9tUHJvdG9jb2xzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGVFbnVtKHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFRyYWNr
VmlzaXRlZExpbmtzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGRlNWY5ZjMyZjU3MGU2MDcxY2UzMDQ1NTY4ZjU1
OGE0YzllZmJlYTMuLmFkMWIyZTA3YzVlYjFlNjY5NmQ1MTM1YmI3M2I0MjhhOWI4MzU1YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtNzIsNiArNzIsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNz
OwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNwbGF5SXNvbGF0
ZWQ7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVk
OworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorICAgIFZlY3RvcjxTdHJpbmc+IHVybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzOworI2VuZGlmCiAKICAgICBDYWNoZU1v
ZGVsIGNhY2hlTW9kZWw7CiAgICAgYm9vbCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLmgKaW5kZXggYzA1M2FlNjY0NDNiN2RkYTIxOWUwN2JlNzg0ZDFi
ZDM5ZTZhNzk5Mi4uMDdiYjlhOGQyMmU5OWE0YTE0MTNiNWYzOGRhYzI0NWQ0OWQ5NWQ5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmgKQEAgLTQyLDYgKzQyLDkgQEAgV0tfRVhQT1JUCiAK
ICNwcmFnbWEgbWFyayBMb2FkaW5nCiAKKysgKHZvaWQpcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbDooTlNTdHJpbmcgKilzY2hlbWU7CisrICh2b2lkKXVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbDooTlNTdHJpbmcgKilzY2hlbWU7CisKIC8qIExvYWQgYSByZXF1ZXN0LiBU
aGlzIGlzIG9ubHkgdmFsaWQgZm9yIHJlcXVlc3RzIG9mIG5vbi1maWxlOiBVUkxzLiBQYXNzaW5n
IGEKICAgIGZpbGU6IFVSTCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4gKi8KIC0gKHZvaWQpbG9h
ZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubW0KaW5kZXggMmQ0YTk0NDAwMTJmMDFjNWY5NmRjMzRlNzUzMjE2ZmFjNTJmNGI4Zi4uODYw
NGRlODc2MTcwZDcxOGQ4MmVhYjE0OGU3ODYxZTc1OTUyZmMyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV0tVUkxDRi5oIgogI2lt
cG9ydCAiV0tVUkxSZXF1ZXN0LmgiCiAjaW1wb3J0ICJXS1VSTFJlcXVlc3ROUy5oIgorI2ltcG9y
dCAiV2ViQ29udGV4dC5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaW1wb3J0ICJX
S0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oIgpAQCAtMTAzLDYgKzEwNCwyMCBAQCBzdGF0
aWMgaW5saW5lIE5TVVJMICphdXRvcmVsZWFzZWQoV0tVUkxSZWYgdXJsKQogCiAjcHJhZ21hIG1h
cmsgTG9hZGluZwogCisrICh2b2lkKXJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6KE5T
U3RyaW5nICopc2NoZW1lCit7CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZVNjaGVtZSA9IFtzY2hl
bWUgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICBbW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBj
dXN0b21TY2hlbWVzXSBhZGRPYmplY3Q6bG93ZXJjYXNlU2NoZW1lXTsKKyAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYktpdDo6
U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6
bG93ZXJjYXNlU2NoZW1lXTsKK30KKworKyAodm9pZCl1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9t
UHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lCit7CisgICAgTlNTdHJpbmcgKmxvd2VyY2FzZVNj
aGVtZSA9IFtzY2hlbWUgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICBbW1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciBjdXN0b21TY2hlbWVzXSByZW1vdmVPYmplY3Q6bG93ZXJjYXNlU2NoZW1lXTsK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOldlYktpdDo6U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xVbnJlZ2lzdGVyZWROb3RpZmlj
YXRpb25OYW1lIG9iamVjdDpsb3dlcmNhc2VTY2hlbWVdOworfQorCiAtICh2b2lkKWxvYWRSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZXF1
ZXN0UmVmPiB3a1JlcXVlc3QgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhOU1VSTFJl
cXVlc3QocmVxdWVzdCkpOwpAQCAtNDAzLDQgKzQxOCwxMCBAQCBzdGF0aWMgdm9pZCBzZXRVcFBh
Z2VMb2FkZXJDbGllbnQoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRl
eHQsCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKysgKE5TTXV0YWJsZVNldCAqKWN1c3RvbVNjaGVt
ZXMKK3sKKyAgICBzdGF0aWMgTlNNdXRhYmxlU2V0ICpjdXN0b21TY2hlbWVzID0gW1tOU011dGFi
bGVTZXQgYWxsb2NdIGluaXRdOworICAgIHJldHVybiBjdXN0b21TY2hlbWVzOworfQorIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgKaW5kZXggYjk0NTJh
ZGZjMWMzYzdiNTEwZDA0YWE1MzI4M2Q1Y2Y1ZTcwYTU4MS4uZDFkMjBhZDA0M2E1MGYyZTIxOGUz
YjExYmI3OTllM2IzYTczODg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJ
bnRlcm5hbC5oCkBAIC0yOSw1ICsyOSw2IEBACiAKIC8qIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIGZyb20gYXNzb2NpYXRlIHZpZXcuICovCiAtIChpZClfaW5pdFdpdGhQYWdlUmVmOihXS1Bh
Z2VSZWYpcGFnZVJlZjsKKysgKE5TTXV0YWJsZVNldCAqKWN1c3RvbVNjaGVtZXM7CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWJhOTU3N2YyOGFlOGI2YTE3N2ZmYWY2MWZiOTM3ODE4NmNlYTVhMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5X2gKKyNkZWZpbmUg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlfaAorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NP
TFMpCisKKyNpbmNsdWRlICJNZXNzYWdlSUQuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNfQ0xB
U1MgV0tDdXN0b21Qcm90b2NvbExvYWRlcjsKKyNlbmRpZgorCituYW1lc3BhY2UgQ29yZUlQQyB7
CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgTWVzc2FnZURlY29kZXI7Cit9IC8vIG5hbWVzcGFj
ZSBDb3JlSVBDCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlByb2Nlc3NQcm94eTsKKworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQ
cm94eSopOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZv
aWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBkaWRSZWNlaXZlQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKKyAgICBXZWJQcm9jZXNzUHJveHkq
IG1fd2ViUHJvY2Vzc1Byb3h5OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHR5cGVkZWYgSGFz
aE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI+ID4gTG9hZGVy
TWFwOworICAgIExvYWRlck1hcCBtX2xvYWRlck1hcDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKworI2Vu
ZGlmIC8vIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YWVmMGUwZTc5Mjg2YjhkZWE5YWIxZDZmODY1NDFhYzBiNTk5NGViCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJM
RShDVVNUT01fUFJPVE9DT0xTKQorCittZXNzYWdlcyAtPiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSB7CisgICAgU3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5TWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNGFhMDNmMzY2ODM4Yzg2MTFmMDNhNTUwYTRj
ODJlZTUzYWY2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFj
Lm1tCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisKKyNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIkN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1w
b3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBDb3JlSVBDOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitAaW50ZXJmYWNlIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXIgOiBOU09iamVjdCA8TlNV
UkxDb25uZWN0aW9uRGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkqIF9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKKyAgICB1aW50NjRfdCBfY3Vz
dG9tUHJvdG9jb2xJRDsKKyAgICBSZWZQdHI8Q29ubmVjdGlvbj4gX2Nvbm5lY3Rpb247CisgICAg
TlNVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgX3N0b3JhZ2VQb2xpY3k7CisgICAgTlNVUkxDb25uZWN0
aW9uICpfdXJsQ29ubmVjdGlvbjsKK30KKy0gKGlkKWluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6KEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiljdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSBjdXN0b21Qcm90b2NvbElEOih1aW50NjRfdCljdXN0b21Qcm90b2NvbElEIHJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29ubmVjdGlvbjooQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0N1c3RvbVByb3RvY29sTG9hZGVyCisK
Ky0gKGlkKWluaXRXaXRoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6KEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5KiljdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBjdXN0b21Qcm90b2NvbElE
Oih1aW50NjRfdCljdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QgY29ubmVjdGlvbjooQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFT
U0VSVChjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSk7CisgICAgQVNTRVJUKHJlcXVlc3QpOwor
ICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKyAgICBfY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkg
PSBjdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKKyAgICBfY3VzdG9tUHJvdG9jb2xJRCA9IGN1
c3RvbVByb3RvY29sSUQ7CisgICAgX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICAgIF9zdG9y
YWdlUG9saWN5ID0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkOworICAgIF91cmxDb25uZWN0
aW9uID0gW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIGluaXRXaXRoUmVxdWVzdDpyZXF1ZXN0IGRl
bGVnYXRlOnNlbGYgc3RhcnRJbW1lZGlhdGVseTpZRVNdOworICAgIAorICAgIHJldHVybiBzZWxm
OworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29ubmVjdGlvbi5jbGVhcigpOworICAg
IFtfdXJsQ29ubmVjdGlvbiBjYW5jZWxdOworICAgIFtfdXJsQ29ubmVjdGlvbiByZWxlYXNlXTsK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sK
KyAgICBSZXNvdXJjZUVycm9yIGNvcmVFcnJvcihlcnJvcik7CisgICAgX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihfY3Vz
dG9tUHJvdG9jb2xJRCwgY29yZUVycm9yKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5LT5zdG9wTG9hZGluZyhfY3VzdG9tUHJvdG9jb2xJRCk7Cit9CisKKy0gKE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKiljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdp
bGxDYWNoZVJlc3BvbnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopY2FjaGVkUmVzcG9uc2UKK3sK
KyAgICBBU1NFUlQoX3N0b3JhZ2VQb2xpY3kgPT0gTlNVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2Vk
KTsKKyAgICBfc3RvcmFnZVBvbGljeSA9IFtjYWNoZWRSZXNwb25zZSBzdG9yYWdlUG9saWN5XTsK
KyAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2U7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbjooTlNV
UkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9u
c2UgKilyZXNwb25zZQoreworICAgIFJlc291cmNlUmVzcG9uc2UgY29yZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoX2N1c3RvbVByb3RvY29sSUQsIGNvcmVSZXNwb25zZSwg
X3N0b3JhZ2VQb2xpY3kpLCAwKTsKK30KKworLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAg
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZSBjb3JlRGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoX2N1c3RvbVByb3Rv
Y29sSUQsIGNvcmVEYXRhKSwgMCk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJl
c3BvbnNlCit7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKKy0gKHZvaWQpY29ubmVjdGlvbkRp
ZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KK3sKKyAgICBfY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGaW5pc2hM
b2FkaW5nKF9jdXN0b21Qcm90b2NvbElEKSwgMCk7CisgICAgX2N1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5LT5zdG9wTG9hZGluZyhfY3VzdG9tUHJvdG9jb2xJRCk7Cit9CisKK0BlbmQKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eShXZWJQcm9jZXNzUHJveHkqIHdlYlByb2Nlc3NQcm94eSkKKyAgICA6
IG1fd2ViUHJvY2Vzc1Byb3h5KHdlYlByb2Nlc3NQcm94eSkKK3sKKyAgICBBU1NFUlQobV93ZWJQ
cm9jZXNzUHJveHkpOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpN
ZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBkaWRSZWNlaXZlQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rp
b24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHk6OnN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGNvcmVSZXF1ZXN0KQoreworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IGNvcmVSZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpOworICAgIGlmICghcmVxdWVzdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV0tDdXN0b21Qcm90b2NvbExvYWRlciAqbG9hZGVyID0gW1tXS0N1c3Rv
bVByb3RvY29sTG9hZGVyIGFsbG9jXSBpbml0V2l0aEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
OnRoaXMgY3VzdG9tUHJvdG9jb2xJRDpjdXN0b21Qcm90b2NvbElEIHJlcXVlc3Q6cmVxdWVzdCBj
b25uZWN0aW9uOm1fd2ViUHJvY2Vzc1Byb3h5LT5jb25uZWN0aW9uKCldOworICAgIEFTU0VSVChs
b2FkZXIpOworICAgIEFTU0VSVCghbV9sb2FkZXJNYXAuY29udGFpbnMoY3VzdG9tUHJvdG9jb2xJ
RCkpOworICAgIG1fbG9hZGVyTWFwLmFkZChjdXN0b21Qcm90b2NvbElELCBsb2FkZXIpOworICAg
IFtsb2FkZXIgcmVsZWFzZV07Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6
OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCit7CisgICAgbV9sb2FkZXJN
YXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmgKaW5kZXggNWVjZjBiOTJkMWEzZjYzZWZhNGU2YmFmMzkxMWM3ZGYxNmRi
ZjAzOS4uZDFlZjE5NDFkYmFlNTFlMjkxZTQyYjM2YzFmMzBjYTQxMzFmMDU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC03NCw2ICs3NCwxMSBAQCBzdHJ1Y3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PFdLRGljdGlvbmFyeVJlZj4gRGljdGlvbmFyeUNhbGxiYWNrOwogCisjaWYgUExBVEZPUk0oTUFD
KQorZXh0ZXJuIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3Rp
ZmljYXRpb25OYW1lOworZXh0ZXJuIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVu
cmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWU7CisjZW5kaWYKKwogY2xhc3MgV2ViQ29udGV4dCA6
IHB1YmxpYyBBUElPYmplY3QsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNvbnRleHQ7CkBAIC0z
ODEsNiArMzg2LDggQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5Q
dHI8Q0ZUeXBlUmVmPiBtX2VuaGFuY2VkQWNjZXNzaWJpbGl0eU9ic2VydmVyOworICAgIFJldGFp
blB0cjxDRlR5cGVSZWY+IG1fY3VzdG9tU2NoZW1lUmVnaXN0ZXJlZE9ic2VydmVyOworICAgIFJl
dGFpblB0cjxDRlR5cGVSZWY+IG1fY3VzdG9tU2NoZW1lVW5yZWdpc3RlcmVkT2JzZXJ2ZXI7CiAj
ZW5kaWYKIAogICAgIFN0cmluZyBtX292ZXJyaWRlRGF0YWJhc2VEaXJlY3Rvcnk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGVlZDViY2ZjOGY4
MWMwMWE4MGRiZDkyYjkxNmJiOGZlZWRjN2IzMzguLmFkMzE2YjcyMTNmYTA2MjIzMzk0YjllOGYx
Mzc1NjI3ZGU0Zjg2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCkBAIC05Myw2ICs5Myw5IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1By
b3h5KFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gY29udGV4dCkKICAgICA6IG1fcmVzcG9uc2l2ZW5l
c3NUaW1lcih0aGlzKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX21heUhhdmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oZmFsc2UpCisjaWYgRU5BQkxFKENVU1RP
TV9QUk9UT0NPTFMpCisgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KHRoaXMpCisj
ZW5kaWYKIHsKICAgICBjb25uZWN0KCk7CiB9CkBAIC00MzYsNiArNDM5LDEzIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ1VT
VE9NX1BST1RPQ09MUykKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFz
c0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5PigpKSB7CisgICAgICAgIG1fY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBk
ZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgdWludDY0X3Qg
cGFnZUlEID0gZGVjb2Rlci5kZXN0aW5hdGlvbklEKCk7CiAgICAgaWYgKCFwYWdlSUQpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApp
bmRleCBjM2VhYjYwYjQwYTg3MDlhNDY4YmYwZDFhMTFhMGVkYjBlZmIxMjdjLi5lNDA0NzE5NzU1
N2NjY2ExOTk0ZGFkZDdhNWM4Mjk3ODNhYmE0NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00MCw2ICs0MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorI2lmIEVOQUJMRShD
VVNUT01fUFJPVE9DT0xTKQorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEtVUkw7CiB9OwpAQCAt
MjE5LDYgKzIyMywxMCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYlBhZ2VQ
cm94eSo+IG1fcGFnZU1hcDsKICAgICBXZWJGcmFtZVByb3h5TWFwIG1fZnJhbWVNYXA7CiAgICAg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbU1hcCBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXA7CisgICAg
CisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTsKKyNlbmRpZgogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1hYy5tbQppbmRleCAxMWI3NWM5ZDA1NjBmODY4ZGQ2YzU1MmJlZjg4OWY4YWRlOTAyNmRlLi41
YmExNjFiNGRlNDA3MTc2OGZkZGU5MmJlNmUwNWFjNzY2OTc0OWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW1wb3J0ICJOZXR3b3JrUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCiAjaW1wb3J0ICJTaGFyZWRXb3JrZXJQcm9jZXNzTWFuYWdlci5oIgorI2ltcG9y
dCAiV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYktp
dFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC01Niw2ICs1Nyw5IEBAIE5T
U3RyaW5nICpXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViSWNvbkRh
dGFiYXNlRGlyZWN0b3J5RGVmYXVsCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitOU1N0cmluZyAq
U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSA9IEAiV2Vi
S2l0U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2xSZWdpc3RlcmVkTm90aWZpY2F0aW9uIjsKK05TU3Ry
aW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFVucmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUg
PSBAIldlYktpdFNjaGVtZUZvckN1c3RvbVByb3RvY29sVW5yZWdpc3RlcmVkTm90aWZpY2F0aW9u
IjsKKwogYm9vbCBXZWJDb250ZXh0OjpzX2FwcGxpY2F0aW9uSXNPY2NsdWRlZCA9IGZhbHNlOwog
CiBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCkBAIC0xMjQs
NiArMTI4LDIyIEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiAKICAgICBwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CiAgICAgCisgICAgTlNBcnJheSAqc2NoZW1lcyA9IFtbV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIGN1c3RvbVNjaGVtZXNdIGFsbE9iamVjdHNdOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgW3NjaGVtZXMgY291bnRdOyArK2kpCisgICAgICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKFtzY2hl
bWVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgIAorICAgIG1fY3VzdG9tU2NoZW1lUmVnaXN0ZXJl
ZE9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNl
cnZlckZvck5hbWU6V2ViS2l0OjpTY2hlbWVGb3JDdXN0b21Qcm90b2NvbFJlZ2lzdGVyZWROb3Rp
ZmljYXRpb25OYW1lIG9iamVjdDpuaWwgcXVldWU6W05TT3BlcmF0aW9uUXVldWUgY3VycmVudFF1
ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeworICAgICAg
ICBOU1N0cmluZyAqc2NoZW1lID0gW25vdGlmaWNhdGlvbiBvYmplY3RdOworICAgICAgICBBU1NF
UlQoW3NjaGVtZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKHNjaGVtZSkpOworICAgIH1dOworICAgIAorICAgIG1fY3VzdG9tU2NoZW1l
VW5yZWdpc3RlcmVkT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpXZWJLaXQ6OlNjaGVtZUZvckN1c3RvbVByb3RvY29sVW5y
ZWdpc3RlcmVkTm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsIHF1ZXVlOltOU09wZXJhdGlvblF1
ZXVlIGN1cnJlbnRRdWV1ZV0gdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRp
b24pIHsKKyAgICAgICAgTlNTdHJpbmcgKnNjaGVtZSA9IFtub3RpZmljYXRpb24gb2JqZWN0XTsK
KyAgICAgICAgQVNTRVJUKFtzY2hlbWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7
CisgICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6VW5yZWdp
c3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZSkpOworICAgIH1dOworICAgIAogICAg
IC8vIExpc3RlbiBmb3IgZW5oYW5jZWQgYWNjZXNzaWJpbGl0eSBjaGFuZ2VzIGFuZCBwcm9wYWdh
dGUgdGhlbSB0byB0aGUgV2ViUHJvY2Vzcy4KICAgICBtX2VuaGFuY2VkQWNjZXNzaWJpbGl0eU9i
c2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
ckZvck5hbWU6V2ViS2l0QXBwbGljYXRpb25EaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5RW5oYW5jZWRV
c2VySW50ZXJmYWNlTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgcXVldWU6W05TT3BlcmF0aW9uUXVl
dWUgY3VycmVudFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGUpIHsKICAg
ICAgICAgc2V0RW5oYW5jZWRBY2Nlc3NpYmlsaXR5KFtbW25vdGUgdXNlckluZm9dIG9iamVjdEZv
cktleTpAIkFYRW5oYW5jZWRVc2VySW50ZXJmYWNlIl0gYm9vbFZhbHVlXSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDBiZjA2
ZDAyNjc5NGViMWQ1NTg0NTNhZDA1Y2UyMzg2M2Q3ZjcwOS4uZmQyNzIzNzQ0ZWFlMjY1OTJmM2Nl
ZGE3NmRjYmI1Y2E2YzQ0MGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjgwLDYgKzI4MCwxNCBAQAogCQkyOTUwMTcyNDE2
MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjk1MDE3MjMxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OTZCRDg1QjE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggKi87IH07CiAJCTI5
NkJEODVFMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTZCRDg1QzE1MDE5QkMzMDA3MUY0
MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovOyB9OworCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMw
QzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4NEY1N0ExNjRCOTE1
RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKKwkJMjk4NEY1N0QxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5ODRGNTdCMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTI5ODRGNTgxMTY0QjlCQkQwMDRCQzBDNiAvKiBD
dXN0b21Qcm90b2NvbE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5ODRGNTgwMTY0QjlCQkQwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaCAqLzsgfTsKKwkJMjk4NEY1ODMxNjRCOUJEOTAwNEJDMEM2IC8qIEN1c3RvbVByb3Rv
Y29sTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5ODRGNTgyMTY0QjlCRDkwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJN
YWMubW0gKi87IH07CisJCTI5ODRGNTg4MTY0QkEwOTUwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjk4NEY1ODYxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3Rv
Y29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTI5ODRGNTg5MTY0QkEwOTUw
MDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4NEY1ODcxNjRCQTA5NTAwNEJDMEM2
IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmggKi87IH07CisJCTI5QUQzMDkzMTY0
QjRDNUQwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBRDMwOTIxNjRCNEM1RDAwNzJE
RUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggKi87IH07CisJCTI5QUQzMDk2MTY0
QjRDOTMwMDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUQzMDk1MTY0QjRDOTMw
MDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSAqLzsgfTsKIAkJMjlD
RDU1QUExMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE4MTI4
RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi87IH07CiAJ
CTI5Q0Q1NUFCMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1
QTkxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gKi87
IH07CiAJCTI5RDU1REYxMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOUQ1NURFRjE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtMTQ3OSw2ICsxNDg3LDE2IEBACiAJCTI5NTAxNzIzMTYy
QTQ1MDQwMDRBOUQ3MSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjk2QkQ4NUIxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdVdGlsaXRpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk2QkQ4NUMxNTAxOUJDMzAwNzFGNDI0IC8q
IFN0cmluZ1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFN0cmluZ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk4
NEY1N0ExNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMjk4NEY1N0IxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyOTg0RjU4MDE2NEI5QkJEMDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbVByb3RvY29sTWFu
YWdlci5oOyBwYXRoID0gTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5ODRGNTgyMTY0QjlCRDkwMDRC
QzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW07IHBhdGggPSBO
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTg0RjU4NDE2NEI5RUQ5MDA0QkMwQzYgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IEN1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE5ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMjk4NEY1ODYxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3Rv
Y29sTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRo
ID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMjk4NEY1ODcxNjRCQTA5NTAwNEJDMEM2IC8qIEN1c3RvbVByb3Rv
Y29sTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1
c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmg7IHBhdGggPSBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUFEMzA5MjE2NEI0
QzVEMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDsgcGF0aCA9
IEN1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbTsgcGF0aCA9IEN1c3RvbVBy
b3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTI5QUQzMDk3MTY0QjRFMjEwMDcyREVBOSAvKiBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9IEN1c3RvbVByb3RvY29s
cy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OUNENTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5RDU1REVF
MTYxQkY4NzgwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI5NjMsNiArMjk4MSw0MiBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07CisJCTI5ODRGNTdFMTY0QjlCNTYwMDRCQzBDNiAvKiBDdXN0b21Qcm90
b2NvbHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTI5
ODRGNTdGMTY0QjlCNUQwMDRCQzBDNiAvKiBtYWMgKi8sCisJCQkJMjk4NEY1ODAxNjRCOUJCRDAw
NEJDMEM2IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlci5oICovLAorCQkJCTI5ODRGNTg0MTY0QjlF
RDkwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCisJCQkp
OworCQkJbmFtZSA9IEN1c3RvbVByb3RvY29sczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCTI5ODRGNTdGMTY0QjlCNUQwMDRCQzBDNiAvKiBtYWMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTI5ODRGNTgyMTY0QjlCRDkwMDRCQzBD
NiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IG1h
YzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTI5QUQzMDkxMTY0QjRDMTAw
MDcyREVBOSAvKiBDdXN0b21Qcm90b2NvbHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTI5QUQzMDk0MTY0QjRDODMwMDcyREVBOSAvKiBtYWMgKi8sCisJ
CQkJMjlBRDMwOTIxNjRCNEM1RDAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmggKi8sCisJCQkJMjlBRDMwOTcxNjRCNEUyMTAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJKTsKKwkJCW5hbWUgPSBDdXN0b21Qcm90b2Nv
bHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkyOUFEMzA5NDE2NEI0Qzgz
MDA3MkRFQTkgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQkyOUFEMzA5NTE2NEI0QzkzMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCTMxMDk5OTc0MTQ2QzhBQTgwMDI5REVCOSAvKiBOb3RpZmljYXRp
b25zIChVc2VyKSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0zMDQ3LDYgKzMxMDEsNyBAQAogCQk1MTA1QjBEMjE2MkY3QTVFMDBFMjc3MDkgLyogTmV0d29y
ayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMjk4NEY1
N0UxNjRCOUI1NjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29scyAqLywKIAkJCQk1MTA1QjBENDE2
MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1
MTA1QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8s
CiAJCQkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLywKQEAgLTMwOTMsNiArMzE0OCw3IEBACiAJCTUxMENDN0U3MTYxMzhF
NzIwMEQwM0VEMyAvKiBOZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkyOUFEMzA5MTE2NEI0QzEwMDA3MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xz
ICovLAogCQkJCTUxNjMxOTkzMTYyODk4MEUwMEUyMkYwMCAvKiBtYWMgKi8sCiAJCQkJNTEwNUIw
REIxNjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5jcHAgKi8sCiAJCQkJ
NTEwNUIwREMxNjJGN0U5RDAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzTWFuYWdlci5oICovLApA
QCAtNDE2OSw2ICs0MjI1LDEwIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTJGNThBMDEyQTg4
M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKIAkJCQk1MTJGNThBMTEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2Vy
TWVzc2FnZXMuaCAqLywKKwkJCQkyOTg0RjU4NjE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQkyOTg0RjU4NzE2NEJBMDk1
MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCAqLywKKwkJCQkyOTg0
RjU3QTE2NEI5MTVGMDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovLAorCQkJCTI5ODRGNTdCMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJRTE5NjdFMzUxNTBBQjVENTAw
QzczMTY5IC8qIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luUHJvY2Vzcy5zYiAqLywKIAkJCQlFMTk2
N0UzNzE1MEFCNUUyMDBDNzMxNjkgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgKi8sCiAJCQkJ
MUFCN0Q2MTcxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLApAQCAtNDkwOCw2ICs0OTY4LDEwIEBACiAJCQkJMUFBM0Q3NjIxNjUxQjdEMzAwODcx
M0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3RNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFGRDE4QjYxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFDQkJBMTAxNjUyMTlCNjAwNUJFOEZEIC8qIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQkyOUFEMzA5MzE2NEI0QzVEMDA3
MkRFQTkgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTI5ODRGNTdEMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkyOTg0RjU4MTE2NEI5QkJEMDA0QkMwQzYgLyog
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyOTg0RjU4OTE2NEJB
MDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtNTg1NCw2ICs1OTE4LDEwIEBACiAJCQkJMUFBM0Q3NjExNjUxQjdEMzAwODcxM0Qw
IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFGRDE4QjUxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUNCQkEwRjE2NTIxOUI2MDA1QkU4RkQgLyogTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlBRDMwOTYx
NjRCNEM5MzAwNzJERUE5IC8qIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJMjk4NEY1N0MxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5ODRG
NTgzMTY0QjlCRDkwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0gaW4gU291
cmNlcyAqLywKKwkJCQkyOTg0RjU4ODE2NEJBMDk1MDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZp
eC5oCmluZGV4IDA2NzNlYzg2ZDczOWEzYTU2YjkwYjVkMDNkOTU1N2ZlYzczYzA3OTQuLjBkNGRj
N2M4NmQwOGU5MjM5ZjNlMDJkNDNiYjM2MGM4Y2ZhMTQ1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDJQcmVmaXguaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4
LmgKQEAgLTQ0LDYgKzQ0LDggQEAKIAogI2RlZmluZSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIgMQog
CisjZGVmaW5lIEVOQUJMRV9DVVNUT01fUFJPVE9DT0xTIDEKKwogI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFw
aGljcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYjI0NTNhODdjMzBhYWZkMzBiNDMzMDIzODZmNjZmNmVhNjc3NzU5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBDdXN0b21Qcm90b2NvbE1hbmFnZXJfaAorI2RlZmluZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJfaAorCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisKKyNpbmNs
dWRlICJNZXNzYWdlSUQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorT0JKQ19DTEFTUyBXS0N1c3Rv
bVByb3RvY29sOworI2VuZGlmCisKKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQ29ubmVj
dGlvbjsKK2NsYXNzIERhdGFSZWZlcmVuY2U7CitjbGFzcyBNZXNzYWdlRGVjb2RlcjsKK30gLy8g
bmFtZXNwYWNlIENvcmVJUEMKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VF
cnJvcjsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEN1c3RvbVByb3RvY29sTWFuYWdlcik7CisKK3B1YmxpYzoK
KyAgICBzdGF0aWMgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyJiBzaGFyZWQoKTsKKyAgICAKKyAgICB2
b2lkIHJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdW5yZWdpc3RlclNj
aGVtZShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHN1cHBvcnRzU2NoZW1lKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIHZvaWQg
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSk7CisgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOworICAgIAorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckN1c3RvbVByb3RvY29sQ2xh
c3MoKTsKKyAgICB2b2lkIGFkZEN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKik7Cisg
ICAgdm9pZCByZW1vdmVDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3RvY29sICopOworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyKCkgeyB9CisgICAgdm9pZCBk
aWRSZWNlaXZlQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOworICAgIAor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOworCisjaWYgUExBVEZPUk0o
TUFDKQorICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmV0YWluUHRyPFdLQ3VzdG9tUHJv
dG9jb2w+ID4gQ3VzdG9tUHJvdG9jb2xNYXA7CisgICAgQ3VzdG9tUHJvdG9jb2xNYXAgbV9jdXN0
b21Qcm90b2NvbE1hcDsKKyAgICBXS0N1c3RvbVByb3RvY29sICpwcm90b2NvbEZvcklEKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQpOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjZW5kaWYgLy8gQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9D
dXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThlZmQ4Mzg5MTY1
N2JmODc2MTNkOGJiZGFjYmE2YTFlMWE4ZjBjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCittZXNz
YWdlcyAtPiBDdXN0b21Qcm90b2NvbE1hbmFnZXIgeworICAgIERpZEZhaWxXaXRoRXJyb3IodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAg
ICBEaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBDb3JlSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGEpCisgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIHVpbnQzMl90IGNhY2hl
U3RvcmFnZVBvbGljeSkKKyAgICBEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFj
L0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NTA2ZDE1Y2EzM2U3MzY5YmVkZjFiOGI2NTVjOGJkMWRjMmYyN2Y3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCkBAIC0wLDAgKzEsMTg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQorCisjaW1wb3J0ICJD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0ICJEYXRhUmVmZXJl
bmNlLmgiCisjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgIldlYlBy
b2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVDdXN0b21Qcm90b2NvbElEKCkKK3sKKyAg
ICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ3VzdG9tUHJvdG9jb2xJRCA9IDA7CisgICAgcmV0dXJu
ICsrdW5pcXVlQ3VzdG9tUHJvdG9jb2xJRDsKK30KKworQGludGVyZmFjZSBXS0N1c3RvbVByb3Rv
Y29sIDogTlNVUkxQcm90b2NvbCB7Cit9CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0N1
c3RvbVByb3RvY29sCisKK0BzeW50aGVzaXplIGN1c3RvbVByb3RvY29sSUQgPSBfY3VzdG9tUHJv
dG9jb2xJRDsKKworKyAoQk9PTCljYW5Jbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnNoYXJl
ZCgpLnN1cHBvcnRzU2NoZW1lKFtbW3JlcXVlc3QgVVJMXSBzY2hlbWVdIGxvd2VyY2FzZVN0cmlu
Z10pOworfQorCisrIChOU1VSTFJlcXVlc3QgKiljYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdAoreworICAgIHJldHVybiByZXF1ZXN0OworfQorCisrIChC
T09MKXJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDooTlNVUkxSZXF1ZXN0ICopYSB0b1JlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKWIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKGlkKWluaXRXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjYWNoZWRSZXNwb25zZTooTlNDYWNoZWRV
UkxSZXNwb25zZSAqKWNhY2hlZFJlc3BvbnNlIGNsaWVudDooaWQ8TlNVUkxQcm90b2NvbENsaWVu
dD4pY2xpZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBj
YWNoZWRSZXNwb25zZTpjYWNoZWRSZXNwb25zZSBjbGllbnQ6Y2xpZW50XTsKKyAgICBpZiAoIXNl
bGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgX2N1c3RvbVByb3RvY29sSUQgPSBn
ZW5lcmF0ZUN1c3RvbVByb3RvY29sSUQoKTsKKyAgICBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlcjo6c2hhcmVkKCkuYWRkQ3VzdG9tUHJvdG9jb2woc2VsZik7CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKHZvaWQpc3RhcnRMb2FkaW5nCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
U3RhcnRMb2FkaW5nKHNlbGYuY3VzdG9tUHJvdG9jb2xJRCwgW3NlbGYgcmVxdWVzdF0pLCAwKTsK
K30KKworLSAodm9pZClzdG9wTG9hZGluZworeworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OlN0
b3BMb2FkaW5nKHNlbGYuY3VzdG9tUHJvdG9jb2xJRCksIDApOworICAgIFdlYktpdDo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpzaGFyZWQoKS5yZW1vdmVDdXN0b21Qcm90b2NvbChzZWxmKTsKK30K
KworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyJiBD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnNoYXJlZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDdXN0b21Qcm90b2NvbE1hbmFnZXIsIGN1c3RvbVByb3RvY29sTWFuYWdlciwgKCkpOworICAg
IHJldHVybiBjdXN0b21Qcm90b2NvbE1hbmFnZXI7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpyZWdpc3RlckN1c3RvbVByb3RvY29sQ2xhc3MoKQoreworICAgIFtOU1VSTFByb3Rv
Y29sIHJlZ2lzdGVyQ2xhc3M6W1dLQ3VzdG9tUHJvdG9jb2wgY2xhc3NdXTsKK30KKyAgICAKK3Zv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjphZGRDdXN0b21Qcm90b2NvbChXS0N1c3RvbVByb3Rv
Y29sICpjdXN0b21Qcm90b2NvbCkKK3sKKyAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2wpOworICAg
IG1fY3VzdG9tUHJvdG9jb2xNYXAuYWRkKGN1c3RvbVByb3RvY29sLmN1c3RvbVByb3RvY29sSUQs
IGN1c3RvbVByb3RvY29sKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92
ZUN1c3RvbVByb3RvY29sKFdLQ3VzdG9tUHJvdG9jb2wgKmN1c3RvbVByb3RvY29sKQoreworICAg
IEFTU0VSVChjdXN0b21Qcm90b2NvbCk7CisgICAgbV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUo
Y3VzdG9tUHJvdG9jb2wuY3VzdG9tUHJvdG9jb2xJRCk7Cit9CisgICAgCit2b2lkIEN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7Cisg
ICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5hZGQoc2NoZW1lKTsKK30KKyAgICAKK3ZvaWQgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQor
eworICAgIG1fcmVnaXN0ZXJlZFNjaGVtZXMucmVtb3ZlKHNjaGVtZSk7Cit9CisKK2Jvb2wgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkK
K3sKKyAgICByZXR1cm4gbV9yZWdpc3RlcmVkU2NoZW1lcy5jb250YWlucyhzY2hlbWUpOworfQor
Cit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit7CisgICAgZGlkUmVjZWl2ZUN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKK30K
Kwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisgICAgV0tDdXN0b21Qcm90b2NvbCAqcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVBy
b3RvY29sSUQpOworICAgIGlmICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBbW3Byb3RvY29sIGNsaWVudF0gVVJMUHJvdG9jb2w6cHJvdG9jb2wgZGlkRmFpbFdpdGhFcnJv
cjplcnJvci5uc0Vycm9yKCldOworICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKHByb3RvY29sKTsK
K30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7Cisg
ICAgV0tDdXN0b21Qcm90b2NvbCAqcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3Rv
Y29sSUQpOworICAgIGlmICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBb
W3Byb3RvY29sIGNsaWVudF0gVVJMUHJvdG9jb2w6cHJvdG9jb2wgZGlkTG9hZERhdGE6W05TRGF0
YSBkYXRhV2l0aEJ5dGVzOih2b2lkKilkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldXTsK
K30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KQoreworICAgIFdLQ3VzdG9tUHJv
dG9jb2wgKnByb3RvY29sID0gcHJvdG9jb2xGb3JJRChjdXN0b21Qcm90b2NvbElEKTsKKyAgICBp
ZiAoIXByb3RvY29sKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgW1twcm90b2NvbCBjbGll
bnRdIFVSTFByb3RvY29sOnByb3RvY29sIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VS
TFJlc3BvbnNlKCkgY2FjaGVTdG9yYWdlUG9saWN5OnN0YXRpY19jYXN0PE5TVVJMQ2FjaGVTdG9y
YWdlUG9saWN5PihjYWNoZVN0b3JhZ2VQb2xpY3kpXTsKK30KKwordm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sK
KyAgICBXS0N1c3RvbVByb3RvY29sICpwcm90b2NvbCA9IHByb3RvY29sRm9ySUQoY3VzdG9tUHJv
dG9jb2xJRCk7CisgICAgaWYgKCFwcm90b2NvbCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IFtbcHJvdG9jb2wgY2xpZW50XSBVUkxQcm90b2NvbERpZEZpbmlzaExvYWRpbmc6cHJvdG9jb2xd
OworICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKHByb3RvY29sKTsKK30KKworV0tDdXN0b21Qcm90
b2NvbCAqQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpwcm90b2NvbEZvcklEKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQpCit7CisgICAgQ3VzdG9tUHJvdG9jb2xNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9jdXN0b21Qcm90b2NvbE1hcC5maW5kKGN1c3RvbVByb3RvY29sSUQpOworICAgIGlmIChp
dCA9PSBtX2N1c3RvbVByb3RvY29sTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IAorICAgIEFTU0VSVChpdC0+dmFsdWUpOworICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2MGZl
NzMxYjllMzZhYmQwN2RmZWI3NmQ0MTdjOGJiZjdiYjFmN2E2Li4zYTY1ZDE3MjY0NzExYjIwNGYz
MzIzMjA2ZjYzZTNkYTVhNWE1NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTk4LDYgKzk4LDEwIEBACiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCisjaW5jbHVkZSAi
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03MDcsNiArNzExLDEzIEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgQ29yZUlQQzo6TWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisjaWYgRU5BQkxF
KENVU1RPTV9QUk9UT0NPTFMpCisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdl
Q2xhc3NDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCkpIHsKKyAgICAgICAgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpzaGFyZWQoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQs
IGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAobWVz
c2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlBhZ2VHcm91cFByb3h5PigpKSB7CiAg
ICAgICAgIHVpbnQ2NF90IHBhZ2VHcm91cElEID0gZGVjb2Rlci5kZXN0aW5hdGlvbklEKCk7CiAg
ICAgICAgIGlmICghcGFnZUdyb3VwSUQpCkBAIC0xMTM5LDQgKzExNTAsMTYgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpkaWRHZXRQbHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFYKIH0KICNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAKKyNp
ZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKK3ZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTY2hl
bWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBXVEY6OlN0cmluZyYgc2NoZW1lKQoreworICAgIEN1
c3RvbVByb3RvY29sTWFuYWdlcjo6c2hhcmVkKCkucmVnaXN0ZXJTY2hlbWUoc2NoZW1lKTsKK30K
Kwordm9pZCBXZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29u
c3QgV1RGOjpTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnNo
YXJlZCgpLnVucmVnaXN0ZXJTY2hlbWUoc2NoZW1lKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMGIz
YzBmYjk5OGQ0NzFkZDI5ZGY3M2ZkM2I2ODlkYmRmNDE4YzdjZi4uOTMyNDhiMDg0N2Q1MzY2Mzcw
NWVhZTQ4Y2E4NThmMTk1M2EwNzU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTMwNCw2ICszMDQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEdldFBsdWdp
bnMoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDVVNUT01fUFJP
VE9DT0xTKQorICAgIHZvaWQgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBX
VEY6OlN0cmluZyYpOworICAgIHZvaWQgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
KGNvbnN0IFdURjo6U3RyaW5nJik7CisjZW5kaWYKKwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3M+IG1fY29ubmVjdGlvbjsKICAgICBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXJN
YXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyYzFiNDMwNTIzNjRkMzZmYjYyYTZlZDdl
OWJjMmFmNGMzZDgwNWViLi5lZGNhZDM0ZmYzN2NlYTdhZDEzNWQ2ZDI2NDQyZTFkZWM0ODhkMzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0xMDEsNCArMTAxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFNldEFwcGxpY2F0aW9uSXNPY2NsdWRlZChib29sIGZsYWcpOwogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyAgICBSZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sKFdURjo6U3RyaW5nIG5hbWUpCisgICAgVW5yZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sKFdURjo6U3RyaW5nIG5hbWUpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCmluZGV4IDAwMWRlYjRjOGZm
NWU4MDc2MDcxNTc0ZTQ0MTZhZjYyZjM2YzZkOTAuLjgwZDNlNDhhMWEyYjhmY2ExZTI2MDZhNTBi
M2JhMDZjNjU1ZmIyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc01hYy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzLmgiCiAKKyNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlci5oIgog
I2ltcG9ydCAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nl
c3NXYXRjaGVyLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3IuaCIKQEAgLTI5MSw2ICsyOTIsMTEg
QEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMKICAgICAvLyBubyB3aW5kb3cgaW4gV0syLCBOU0Fw
cGxpY2F0aW9uIG5lZWRzIHRvIHVzZSB0aGUgZm9jdXNlZCBwYWdlJ3MgZm9jdXNlZCBlbGVtZW50
LgogICAgIE1ldGhvZCBtZXRob2RUb1BhdGNoID0gY2xhc3NfZ2V0SW5zdGFuY2VNZXRob2QoW05T
QXBwbGljYXRpb24gY2xhc3NdLCBAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1l
bnQpKTsKICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9QYXRjaCwgKElNUClO
U0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQpOworICAgIAorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1
c3RvbVByb3RvY29scy5zaXplKCk7ICsraSkKKyAgICAgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpzaGFyZWQoKS5yZWdpc3RlclNjaGVtZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzW2ldKTsKKyAgICAKKyAgICBDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OnJlZ2lzdGVyQ3VzdG9tUHJvdG9jb2xDbGFzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6Omlu
aXRpYWxpemVTaGltKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA5MTBkMDcxNTJiYWZmODNlN2JmZDZiNzIzYjZiNzcyNTIzNTU3NzU1Li5jZjY2
MWJlZTA4MzQ4NWUyNGRiOGVjNzlkZDJlNWFhYzk1N2E4MTFhIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTEt
MDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXQyXSBO
ZWVkIEFQSSBpbiBVSVByb2Nlc3MgdG8gZW5hYmxlIGxvYWRpbmcgb2YgY3VzdG9tIHByb3RvY29s
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjc0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFu
IEFQSSB0ZXN0IHRoYXQgaW1wbGVtZW50cyBhIGN1c3RvbSBwcm90b2NvbCBhbmQgYXR0ZW1wdHMg
dG8gbG9hZAorICAgICAgICBhIHJlc291cmNlIHJlcXVpcmluZyB0aGF0IHByb3RvY29sIGluIGEg
V0tWaWV3LiBUaGUgdGVzdCBwYXNzZXMgb25seSBpZgorICAgICAgICBkaWRGaW5pc2hMb2FkRm9y
RnJhbWU6IGZpcmVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKCtbVGVz
dFByb3RvY29sIGNhbkluaXRXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKCtbVGVzdFByb3RvY29s
IGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0Ol0pOgorICAgICAgICAoK1tUZXN0UHJvdG9jb2wg
cmVxdWVzdElzQ2FjaGVFcXVpdmFsZW50OnRvUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFBy
b3RvY29sIHN0YXJ0TG9hZGluZ10pOgorICAgICAgICAoLVtUZXN0UHJvdG9jb2wgc3RvcExvYWRp
bmddKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1VzZXJDb250
ZW50VGVzdC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3NpbmdDb250
ZXh0TG9hZERlbGVnYXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmguCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9tYWMvVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbTogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVySW50ZXJuYWwuaC4KKyAgICAgICAgKC1bVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XSk6CisgICAgICAgICgtW1Rlc3RC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZEZp
bmlzaExvYWQ6XSk6CisKIDIwMTItMTEtMTMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzQ1MDMuCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGRjMjU2YjQ3ZGYwZGVkMTQyZjVmOWM1MmYxZjk3YWI1NGZm
YzI4OTYuLjI0OWZjNGFhNjVkOTYyYWZmMWE0MzdkOGIzNGUyNzhlNzg5N2E4NmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zMiw2ICszMiw4IEBACiAJCTI2RjFCNDQ0MTVDQTQzNEYwMEQx
RTRCRiAvKiBBdG9taWNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5j
cHAgKi87IH07CiAJCTI2RjFCNDQ1MTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2RjFCNDQzMTVD
QTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJMjk0M0JFODYxNjFERkVC
ODAwOTk5RTNEIC8qIFVzZXJDb250ZW50VGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5NDNCRTg0MTYxREZFQjgwMDk5OUUzRCAvKiBVc2VyQ29u
dGVudFRlc3QubW0gKi87IH07CisJCTI5QUI4QUExMTY0QzczNTgwMEQ0OUJFQyAvKiBDdXN0b21Q
cm90b2NvbHNUZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlBQjhBOUYxNjRDNzM1ODAwRDQ5QkVDIC8qIEN1c3RvbVByb3RvY29sc1Rlc3QubW0g
Ki87IH07CisJCTI5QUI4QUE0MTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0
TG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlBQjhBQTIxNjRDN0E5MzAwRDQ5QkVDIC8qIFRlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUubW0gKi87IH07CiAJCTMzM0I5Q0UyMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50
RW1wdHlVc2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2Vu
dC5jcHAgKi87IH07CiAJCTMzQkU1QUY1MTM3QjVBNkMwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRl
ckNyYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzQkU1QUY0MTM3QjVBNkMwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcCAqLzsg
fTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMz
QkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAg
Ki87IH07CkBAIC0yNzQsNiArMjc2LDkgQEAKIAkJMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8q
IEF0b21pY1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBB
dG9taWNTdHJpbmcuY3BwOyBwYXRoID0gV1RGL0F0b21pY1N0cmluZy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI2RjFCNDQzMTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0cmluZ0ltcGwuY3Bw
OyBwYXRoID0gV1RGL1N0cmluZ0ltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyOTQzQkU4NDE2MURGRUI4MDA5OTlFM0QgLyogVXNlckNvbnRlbnRUZXN0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVXNlckNvbnRlbnRUZXN0Lm1tOyBwYXRo
ID0gV2ViS2l0Mk9iakMvVXNlckNvbnRlbnRUZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyOUFCOEE5RjE2NEM3MzU4MDBENDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xzVGVzdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEN1c3RvbVByb3RvY29s
c1Rlc3QubW07IHBhdGggPSBXZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOUFCOEFBMjE2NEM3QTkzMDBENDlCRUMgLyogVGVz
dEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QUI4QUEzMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVz
ZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50
RW1wdHlVc2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzM0JFNUFG
NDEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNl
TW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vdXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU0MSw2ICs1NDYsNyBAQAogCQlCQzNDNEM2RjE0NTc1QjFEMDAyNUZCNjIg
LyogV2ViS2l0MiBPYmplY3RpdmUtQyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMjlBQjhBOUYxNjRDNzM1ODAwRDQ5QkVDIC8qIEN1c3RvbVByb3RvY29s
c1Rlc3QubW0gKi8sCiAJCQkJMjk0M0JFODQxNjFERkVCODAwOTk5RTNEIC8qIFVzZXJDb250ZW50
VGVzdC5tbSAqLywKIAkJCQlCQzNDNEM3RDE0NTg3QUE2MDAyNUZCNjIgLyogV0tCcm93c2luZ0Nv
bnRleHRHcm91cFRlc3QubW0gKi8sCiAJCQkJQkMzQzRDNzAxNDU3NUI2QTAwMjVGQjYyIC8qIFdL
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdC5tbSAqLywKQEAgLTcxMSw2ICs3MTcsOCBA
QAogCQkJCUJDOTA5NTVDMTI1NTQ4QUEwMDA4Mzc1NiAvKiBQbGF0Zm9ybVdlYlZpZXdNYWMubW0g
Ki8sCiAJCQkJQzA4MTIyNDMxM0ZDMTlFQzAwREMzOUFFIC8qIFN5bnRoZXRpY0JhY2tpbmdTY2Fs
ZUZhY3RvcldpbmRvdy5oICovLAogCQkJCUMwODEyMjQ0MTNGQzE5RUMwMERDMzlBRSAvKiBTeW50
aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3cubSAqLywKKwkJCQkyOUFCOEFBMzE2NEM3QTkz
MDBENDlCRUMgLyogVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oICovLAorCQkJCTI5
QUI4QUEyMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
Lm1tICovLAogCQkJCUMwODU4N0JFMTNGRTk1NkMwMDFFRjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rl
c3QuaCAqLywKIAkJCQlDMDg1ODdCRDEzRkU5NTZDMDAxRUY0RTUgLyogV2ViS2l0QWdub3N0aWNU
ZXN0Lm1tICovLAogCQkJKTsKQEAgLTEwMTYsNiArMTAyNCw4IEBACiAJCQkJNEY0RDJDMEUxNjI2
RkUyNzAwMzIwRkUxIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzc4RTY0NzMxNjMyNjQ2RDAwQjZDNjc2IC8qIEluamVjdGVkQnVuZGxlRnJhbWVI
aXRUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFMjE3RUNEMTY0MEE1NEEwMDUyOTg4QiAv
KiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyOUFCOEFBMTE2NEM3MzU4MDBE
NDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI5QUI4
QUE0MTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ1NGYz
ZjM4MTBjN2YyOTQ0Mjg0OTkzMDMzZGM4ZTYxYTkxN2U4NwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVzdC5t
bQpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJUZXN0LmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdDIvV2ViS2l0Mi5oPgorCitzdGF0aWMgTlNTdHJp
bmcgKnRlc3RTY2hlbWUgPSBAInRlc3QiOworc3RhdGljIE5TU3RyaW5nICp0ZXN0SG9zdCA9IEAi
dGVzdCI7CitzdGF0aWMgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKworQGludGVyZmFjZSBU
ZXN0UHJvdG9jb2wgOiBOU1VSTFByb3RvY29sIHsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFRlc3RQcm90b2NvbAorCisrIChCT09MKWNhbkluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdAoreworICAgIHJldHVybiBbW1tyZXF1ZXN0IFVSTF0gc2NoZW1lXSBjYXNlSW5z
ZW5zaXRpdmVDb21wYXJlOnRlc3RTY2hlbWVdID09IE5TT3JkZXJlZFNhbWU7Cit9CisKKysgKE5T
VVJMUmVxdWVzdCAqKWNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0Cit7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKKysgKEJPT0wpcmVxdWVzdElzQ2Fj
aGVFcXVpdmFsZW50OihOU1VSTFJlcXVlc3QgKilhIHRvUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
YgoreworICAgIHJldHVybiBOTzsKK30KKworLSAodm9pZClzdGFydExvYWRpbmcKK3sKKyAgICBF
WFBFQ1RfVFJVRShbW1tbc2VsZiByZXF1ZXN0XSBVUkxdIHNjaGVtZV0gaXNFcXVhbFRvU3RyaW5n
OnRlc3RTY2hlbWVdKTsKKyAgICBFWFBFQ1RfVFJVRShbW1tbc2VsZiByZXF1ZXN0XSBVUkxdIGhv
c3RdIGlzRXF1YWxUb1N0cmluZzp0ZXN0SG9zdF0pOworICAgIAorICAgIE5TRGF0YSAqZGF0YSA9
IFtAIjxib2R5PlBBU1M8L2JvZHk+IiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5j
b2RpbmddOworICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDpbW3NlbGYgcmVxdWVzdF0gVVJMXSBNSU1FVHlwZTpAInRleHQvaHRt
bCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOltkYXRhIGxlbmd0aF0gdGV4dEVuY29kaW5nTmFtZTpu
aWxdOworICAgIFtbc2VsZiBjbGllbnRdIFVSTFByb3RvY29sOnNlbGYgZGlkUmVjZWl2ZVJlc3Bv
bnNlOnJlc3BvbnNlIGNhY2hlU3RvcmFnZVBvbGljeTpOU1VSTENhY2hlU3RvcmFnZU5vdEFsbG93
ZWRdOworICAgIFtbc2VsZiBjbGllbnRdIFVSTFByb3RvY29sOnNlbGYgZGlkTG9hZERhdGE6ZGF0
YV07CisgICAgW1tzZWxmIGNsaWVudF0gVVJMUHJvdG9jb2xEaWRGaW5pc2hMb2FkaW5nOnNlbGZd
OworICAgIFtyZXNwb25zZSByZWxlYXNlXTsKK30KKworLSAodm9pZClzdG9wTG9hZGluZworewor
fQorCitAZW5kCisKK1RFU1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIEN1c3RvbVByb3Rv
Y29sVXNlZCkKK3sKKyAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltUZXN0UHJvdG9j
b2wgY2xhc3NdXTsKKyAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2No
ZW1lRm9yQ3VzdG9tUHJvdG9jb2w6dGVzdFNjaGVtZV07CisKKyAgICBXS1Byb2Nlc3NHcm91cCAq
cHJvY2Vzc0dyb3VwID0gW1tXS1Byb2Nlc3NHcm91cCBhbGxvY10gaW5pdF07CisgICAgV0tCcm93
c2luZ0NvbnRleHRHcm91cCAqYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBbW1dLQnJvd3NpbmdDb250
ZXh0R3JvdXAgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl07Cisg
ICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29u
dGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKKyAgICB3a1ZpZXcuYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAg
fV07CisgICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDovLyVAIiwgdGVzdFNjaGVtZSwgdGVzdEhvc3RdXV1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mk9iakMvVXNlckNvbnRlbnRUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW0KaW5kZXggZDg3YWQ1ZWQ1OTQ2ODc0
ZmI1MmQ5OGY5ZDUxODc4NjgwN2I0MjljZS4uMDI1ODk2MzczMGI4ZDlkOTQ3ZjQ3ZTVlZDk0NTRl
Yjg4OWY1OGQwMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
T2JqQy9Vc2VyQ29udGVudFRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyT2JqQy9Vc2VyQ29udGVudFRlc3QubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQg
IlRlc3QuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pT
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgog
I2ltcG9ydCA8V2ViS2l0Mi9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgpAQCAtNDIsNDAgKzQz
LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGdyZWVuSW5SR0IgPSAicmdiKDAsIDEyOCwgMCkiOwog
c3RhdGljIGNvbnN0IGNoYXIqIHJlZEluUkdCID0gInJnYigyNTUsIDAsIDApIjsKIHN0YXRpYyBj
b25zdCBjaGFyKiB1c2VyU2NyaXB0VGVzdFByb3BlcnR5ID0gIndpbmRvdy5fdXNlclNjcmlwdElu
c3RhbGxlZCI7CiAKLXR5cGVkZWYgdm9pZCAoXk9uTG9hZEJsb2NrKShXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgKik7Ci0KLUBpbnRlcmZhY2UgVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRl
IDogTlNPYmplY3QgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgotewotICAgIE9uTG9h
ZEJsb2NrIF9vbkxvYWRCbG9jazsKLX0KLQotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE9u
TG9hZEJsb2NrIG9uTG9hZEJsb2NrOwotCi0tIChpZClpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6
KE9uTG9hZEJsb2NrKWJsb2NrOwotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBVc2VyQ29udGVu
dFRlc3RMb2FkRGVsZWdhdGUKLQotQHN5bnRoZXNpemUgb25Mb2FkQmxvY2sgPSBfb25Mb2FkQmxv
Y2s7Ci0KLS0gKGlkKWluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDooT25Mb2FkQmxvY2spYmxvY2sK
LXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBzZWxmLm9uTG9hZEJsb2NrID0gYmxvY2s7Ci0gICAgcmV0dXJuIHNlbGY7Ci19
Ci0KLS0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZEZpbmlzaExvYWQ6KFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciAqKXNlbmRlcgotewotICAgIGlmIChfb25Mb2FkQmxvY2sp
Ci0gICAgICAgIF9vbkxvYWRCbG9jayhzZW5kZXIpOwotfQotCi1AZW5kCi0KIG5hbWVzcGFjZSB7
CiAgICAgY2xhc3MgV2ViS2l0MlVzZXJDb250ZW50VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogICAgIHB1YmxpYzoKQEAgLTE0Myw3ICsxMTAsNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJD
b250ZW50VGVzdCwgQWRkVXNlclN0eWxlU2hlZXRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgCiAg
ICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29u
dGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKICAgICBXS1N0cmluZ1JlZiBiYWNrZ3Jv
dW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRD
b2xvclNjcmlwdCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERl
bGVnYXRlID0gW1tVc2VyQ29udGVudFRlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Cisg
ICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5Pbkxv
YWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewogICAgICAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYih3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENv
bG9yUXVlcnksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlz
U3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZ3JlZW5JblJHQik7CiAgICAgICAgICAgICB0
ZXN0RmluaXNoZWQgPSB0cnVlOwpAQCAtMTYyLDcgKzEyOSw3IEBAIFRFU1RfRihXZWJLaXQyVXNl
ckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5bGVTaGVldEFmdGVyQ3JlYXRpbmdWaWV3KQogICAgIAog
ICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cCBicm93c2luZ0Nv
bnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cF07CiAgICAgV0tTdHJpbmdSZWYgYmFja2dy
b3VuZENvbG9yUXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5k
Q29sb3JTY3JpcHQpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWRE
ZWxlZ2F0ZSA9IFtbVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJs
b2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewor
ICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVz
dEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25M
b2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgV0tQ
YWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lX2Iod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRD
b2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJ
c1N0cmluZyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAg
dGVzdEZpbmlzaGVkID0gdHJ1ZTsKQEAgLTE4NCw3ICsxNTEsNyBAQCBURVNUX0YoV2ViS2l0MlVz
ZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQogICAgIAogICAgIFdLVmll
dyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91
cDpicm93c2luZ0NvbnRleHRHcm91cF07CiAgICAgV0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9y
UXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3Jp
cHQpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9
IFtbVXNlckNvbnRlbnRUZXN0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5P
bkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIHdrVmll
dy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5n
Q29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lX2Iod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5
LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tF
cnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhz
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIHJlZEluUkdCKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hl
ZCA9IHRydWU7CkBAIC0yMDYsNyArMTczLDcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRl
c3QsIEFkZFVzZXJTY3JpcHRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgCiAgICAgV0tWaWV3ICp3
a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJy
b3dzaW5nQ29udGV4dEdyb3VwXTsKICAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0VGVzdFByb3Bl
cnR5U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eSk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVn
YXRlID0gW1tVc2VyQ29udGVudFRlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tU
b1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAg
d2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6
XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewogICAgICAgICBXS1BhZ2VS
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYih3a1ZpZXcucGFnZVJlZiwgdXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eVN0cmluZywgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNjcmlwdFZh
bHVlSXNCb29sZWFuKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICB0
ZXN0RmluaXNoZWQgPSB0cnVlOwpAQCAtMjI1LDcgKzE5Miw3IEBAIFRFU1RfRihXZWJLaXQyVXNl
ckNvbnRlbnRUZXN0LCBBZGRVc2VyU2NyaXB0QWZ0ZXJDcmVhdGluZ1ZpZXcpCiAgICAgCiAgICAg
V0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4
dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwXTsKICAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0
VGVzdFByb3BlcnR5U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNj
cmlwdFRlc3RQcm9wZXJ0eSk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
bG9hZERlbGVnYXRlID0gW1tVc2VyQ29udGVudFRlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVy
KSB7CisgICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0g
W1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9S
dW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewogICAgICAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYih3a1ZpZXcucGFnZVJlZiwgdXNlclNj
cmlwdFRlc3RQcm9wZXJ0eVN0cmluZywgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVj
dFNjcmlwdFZhbHVlSXNCb29sZWFuKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdHJ1ZSk7CiAgICAg
ICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwpAQCAtMjQ3LDcgKzIxNCw3IEBAIFRFU1RfRihX
ZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBSZW1vdmVBbGxVc2VyU2NyaXB0cykKICAgICAKICAgICBX
S1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0
R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXBdOwogICAgIFdLU3RyaW5nUmVmIHVzZXJTY3JpcHRU
ZXN0UHJvcGVydHlTdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2Ny
aXB0VGVzdFByb3BlcnR5KTsKLSAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5s
b2FkRGVsZWdhdGUgPSBbW1VzZXJDb250ZW50VGVzdExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIp
IHsKKyAgICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBb
W1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1
bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAgICAgICAg
IFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKHdrVmlldy5wYWdlUmVmLCB1c2VyU2Ny
aXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0
U2NyaXB0VmFsdWVJc1VuZGVmaW5lZChzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgICAgICAg
ICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjNk
MDA2ODdjNDVmOTNlMDVlNzI5OWE0MzkxZTkyY2E2ZmM4MTllCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5o
CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQyL1dlYktpdDIu
aD4KKwordHlwZWRlZiB2b2lkICheT25Mb2FkQmxvY2spKFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciAqKTsKKworQGludGVyZmFjZSBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIDog
TlNPYmplY3QgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPiB7Cit9CisKK0Bwcm9wZXJ0
eShub25hdG9taWMsIGNvcHkpIE9uTG9hZEJsb2NrIG9uTG9hZEJsb2NrOworCistIChpZClpbml0
V2l0aEJsb2NrVG9SdW5PbkxvYWQ6KE9uTG9hZEJsb2NrKWJsb2NrOworCitAZW5kCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEJyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmM4Y2VmOTQzODNhMzFjZDAxY2Y1YmUzNTU5ZWFiOTg4
MjcxNmEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUuaCIKKworQGltcGxlbWVudGF0aW9uIFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGUKKworQHN5bnRoZXNpemUgb25Mb2FkQmxvY2sgPSBfb25Mb2FkQmxvY2s7CisKKy0gKGlk
KWluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDooT25Mb2FkQmxvY2spYmxvY2sKK3sKKyAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBz
ZWxmLm9uTG9hZEJsb2NrID0gYmxvY2s7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZEZpbmlzaExvYWQ6KFdLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciAqKXNlbmRlcgoreworICAgIGlmIChfb25Mb2FkQmxvY2spCisgICAgICAgIF9v
bkxvYWRCbG9jayhzZW5kZXIpOworfQorCitAZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQo=
</data>
<flag name="review"
          id="188935"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>