<?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>103759</bug_id>
          
          <creation_ts>2012-11-30 11:30:20 -0800</creation_ts>
          <short_desc>IndexedDB: Rename exception enum members from UGLY_ERR to PrettyError</short_desc>
          <delta_ts>2012-12-03 10:55:01 -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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>arv</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>780256</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 11:30:20 -0800</bug_when>
    <thetext>IndexedDB: Rename exception enum members from UGLY_ERR to PrettyError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780259</commentid>
    <comment_count>1</comment_count>
      <attachid>176999</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 11:37:37 -0800</bug_when>
    <thetext>Created attachment 176999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780260</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 11:38:36 -0800</bug_when>
    <thetext>dglazkov@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781549</commentid>
    <comment_count>3</comment_count>
      <attachid>177276</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 09:44:44 -0800</bug_when>
    <thetext>Created attachment 177276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781550</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 09:44:55 -0800</bug_when>
    <thetext>Rebased. r? anyone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781552</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 09:47:00 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781553</commentid>
    <comment_count>6</comment_count>
      <attachid>177276</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-12-03 09:48:52 -0800</bug_when>
    <thetext>Comment on attachment 177276
Patch

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

&gt; Source/WebKit/chromium/public/WebIDBDatabaseException.h:38
&gt; +    WebIDBDatabaseExceptionDataError = 1203,
&gt; +    WebIDBDatabaseExceptionQuotaError = 1212,

Can these just refer to the enum value instead of hard coding the value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781558</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 09:52:34 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 177276 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177276&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebIDBDatabaseException.h:38
&gt; &gt; +    WebIDBDatabaseExceptionDataError = 1203,
&gt; &gt; +    WebIDBDatabaseExceptionQuotaError = 1212,
&gt; 
&gt; Can these just refer to the enum value instead of hard coding the value?

I don&apos;t believe includes from WebKit/chromium/public to WebCore are permitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781560</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 09:53:42 -0800</bug_when>
    <thetext>&gt; I don&apos;t believe includes from WebKit/chromium/public to WebCore are permitted.

&quot;Wait; strike that, reverse it.&quot;

...includes from WebCore by headers in WebKit/chromium/public...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781564</commentid>
    <comment_count>9</comment_count>
      <attachid>177276</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 09:57:14 -0800</bug_when>
    <thetext>Comment on attachment 177276
Patch

Attachment 177276 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15098613</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781572</commentid>
    <comment_count>10</comment_count>
      <attachid>177280</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 10:07:29 -0800</bug_when>
    <thetext>Created attachment 177280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781573</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 10:07:45 -0800</bug_when>
    <thetext>... and webkit_unit_tests updated, derp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781646</commentid>
    <comment_count>12</comment_count>
      <attachid>177280</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 10:54:57 -0800</bug_when>
    <thetext>Comment on attachment 177280
Patch

Clearing flags on attachment: 177280

Committed r136417: &lt;http://trac.webkit.org/changeset/136417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781647</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 10:55:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176999</attachid>
            <date>2012-11-30 11:37:37 -0800</date>
            <delta_ts>2012-12-03 09:44:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103759-20121130113509.patch</filename>
            <type>text/plain</type>
            <size>68565</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMyMzk2YWY2YTk0YzNh
Nzc0ZjcxY2Q5OGNmMzYzOTBiMzU3MmI3Yy4uNGI3YjllODlhNDMzMDA1YWU0ZWM1OGIyOWNiNTMz
M2MxMmVjMDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0xMS0zMCAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogUmVu
YW1lIGV4Y2VwdGlvbiBlbnVtIG1lbWJlcnMgZnJvbSBVR0xZX0VSUiB0byBQcmV0dHlFcnJvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQg
SURCRGF0YWJhc2VFeGNlcHRpb24gaXNuJ3QgZXhwb3NlZCB0byBzY3JpcHQgd2l0aCBjb25zdGFu
dHMsIHRoZSBleGNlcHRpb24gdHlwZXMKKyAgICAgICAgY2FuIGJlIHJlbmFtZWQgdG8gbWF0Y2gg
dGhlIG11Y2ggZnJpZW5kbGllciBuYW1lcyB1c2VkIGluIG5ld2VyIGl0ZXJhdGlvbnMgb2YgdGhl
IHNwZWMuIEFsc28KKyAgICAgICAgcmVtb3ZlIHRoZSBsZWdhY3kvdW51c2VkIHR5cGVzLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCByZW5hbWVzLgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6YWR2YW5jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFj
a2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
QmFja2VuZEltcGw6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2Vu
ZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVhdGVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldEludFZl
cnNpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEVycm9yRW50cnkpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0
b3J5OjpjbXApOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6OmdldERh
dGFiYXNlTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpk
ZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6
Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbktleUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4OjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6
b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVu
S2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJh
bmdlOjpvbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdlOjpsb3dlckJvdW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQktleVJhbmdlOjp1cHBlckJvdW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQktleVJhbmdlOjpib3VuZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
OjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldElu
ZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpw
dXRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmNvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVu
REJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVycm9y
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp3ZWJraXRFcnJvck1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6YWJvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OmFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OmNvbW1pdCk6CisKIDIwMTItMTEtMjkgIFRpYW5jaGVuZyBKaWFuZyAgPHRpamlhbmdAcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIEJCMTAgZm9ybSB0aGVtZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDQyMGFiYjAzYjlhMTg1MDMwZThkMTBmZTc0MDI2Y2Y1
OTlkZDA0MC4uZmQwMjI5Mzc1ZDBjYTUzNjFlNzZjNDg0YTM4M2ZhMzU3M2M4MjA5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMS0zMCAgSm9zaHVh
IEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogUmVuYW1l
IGV4Y2VwdGlvbiBlbnVtIG1lbWJlcnMgZnJvbSBVR0xZX0VSUiB0byBQcmV0dHlFcnJvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzU5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIElEQkRh
dGFiYXNlRXhjZXB0aW9uIGVudW0gbmFtZXMvdmFsdWVzIHRvIG1hdGNoIFdlYkNvcmUuCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaDoKKyAgICAgICAgKiBzcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxv
d0luZGV4ZWREQik6CisKIDIwMTItMTEtMjkgIEZsb3JpbiBNYWxpdGEgIDxmbWFsaXRhQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbU2tpYV0gQWRkIG1pc3NpbmcgT3BhcXVlUmVnaW9uU2tpYSBu
b3RpZmllciBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5jcHAKaW5kZXggMWFhZjJiMjNkODY5ZWFjOGUzZmU2ZWIzYTJiOTZhMDg3NGFjMTM5MC4u
ZDQxMWRhOTM3NWVmYWI5MTBjYmQ2NWU3ZDliMWU0NGM5MzA4M2RjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0xMjksMTUgKzEyOSwx
NSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKFNjcmlwdFN0YXRl
KiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLAogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjp1
cGRhdGUiKTsKIAogICAgIGlmICghbV9nb3RWYWx1ZSB8fCBpc0tleUN1cnNvcigpKSB7Ci0gICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkp
IHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJ
VkVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobV90cmFuc2Fj
dGlvbi0+aXNSZWFkT25seSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OlJFQURfT05MWV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJlYWRP
bmx5RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTQ3LDcgKzE0Nyw3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2NyaXB0U3RhdGUqIHN0
YXRlLCBTY3JpcHRWYWx1ZSYgdmFsdWUsCiAgICAgaWYgKHVzZXNJbkxpbmVLZXlzKSB7CiAgICAg
ICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKG1fcmVxdWVzdC0+cmVxdWVzdFN0YXRlKCksIHZhbHVlLCBrZXlQYXRoKTsK
ICAgICAgICAgaWYgKCFrZXlQYXRoS2V5IHx8ICFrZXlQYXRoS2V5LT5pc0VxdWFsKG1fY3VycmVu
dFByaW1hcnlLZXkuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRh
dGFFcnJvcjsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtMTU5
LDEyICsxNTksMTIgQEAgdm9pZCBJREJDdXJzb3I6OmFkdmFuY2UobG9uZyBsb25nIGNvdW50LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6YWR2YW5jZSIp
OwogICAgIGlmICghbV9nb3RWYWx1ZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xODQsMTcgKzE4NCwxNyBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGlu
dWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6Y29udGludWUiKTsKICAgICBpZiAoa2V5ICYmICFr
ZXktPmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRB
X0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgp
KSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2dvdFZh
bHVlKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRl
RXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwMiwxMiArMjAyLDEyIEBAIHZv
aWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBBU1NFUlQobV9jdXJyZW50S2V5KTsKICAgICAgICAg
aWYgKG1fZGlyZWN0aW9uID09IElEQkN1cnNvcjo6TkVYVCB8fCBtX2RpcmVjdGlvbiA9PSBJREJD
dXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFKSB7CiAgICAgICAgICAgICBpZiAoIW1fY3VycmVudEtl
eS0+aXNMZXNzVGhhbihrZXkuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICgha2V5LT5pc0xlc3NUaGFu
KG1fY3VycmVudEtleS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0yMjUsMTYgKzIyNSwxNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dAogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjpkZWxldGUiKTsKICAgICBpZiAoIW1fdHJh
bnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7Ci0gICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlJlYWRPbmx5RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAogICAgIGlmICghbV9nb3RWYWx1ZSB8fCBpc0tleUN1cnNvcigpKSB7Ci0gICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6
OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggMjIzNTdmOGQ0YTg4MjY5MDUyNDdmNmNiOGUwNzJm
N2IyMjU3YmQ4MS4uOGM3ZTE2MTQ3MzhlODk0NzM2Njk3MGMzYTNmNzBjZDQ0NzhiNTgzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJ
bXBsOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQ
dAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKIAog
ICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUsIGNyZWF0ZUNh
bGxiYWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5h
bCwgdGhpcywgcHJwS2V5LCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JU
X0VSUikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIHZvaWQgSURCQ3Vy
c29yQmFja2VuZEltcGw6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYpCkBAIC03OCw3ICs3OCw3
IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3Vu
dCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5jZUlu
dGVybmFsLCB0aGlzLCBjb3VudCwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9B
Qk9SVF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwogfQogCiB2b2lkIElE
QkN1cnNvckJhY2tlbmRJbXBsOjphZHZhbmNlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgdW5zaWduZWQg
bG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKQEAgLTEyNyw3
ICsxMjcsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGlu
dCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIElEQl9UUkFDRSgiSURCQ3Vy
c29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2sobV90YXNrVHlwZSwgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsLCB0aGlzLCBudW1iZXJUb0ZldGNoLCBj
YWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnBy
ZWZldGNoQ29udGludWVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBpbnQgbnVtYmVyVG9GZXRjaCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBlNzk5YzBkYjJlY2FhYjVhZGM0
ZjNiZTI3N2E2MjYyNGY0ZmY2YWNjLi43MzgyM2M1ZmQ5NGEyYWUwMDgyNmZmM2IzNTBiZDVmNzM2
MWQxYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwCkBAIC0xMzMsMTEgKzEzMywxMSBAQCBQYXNzUmVmUHRyPElEQkFueT4gSURCRGF0
YWJhc2U6OnZlcnNpb24oKSBjb25zdAogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0
YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRGljdGlv
bmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbikgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
REJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFt
X3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjbwogICAgIH0KIAogICAgIGlmIChjb250YWluc09iamVjdFN0b3JlKG5hbWUpKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAogICAgIGlmICgha2V5UGF0aC5pc051bGwoKSAmJiAha2V5UGF0
aC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1NZ
TlRBWF9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlN5bnRheEVycm9y
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjbwogICAgICAgICBvcHRpb25zLmdldCgiYXV0b0luY3JlbWVudCIsIGF1
dG9JbmNyZW1lbnQpOwogCiAgICAgaWYgKGF1dG9JbmNyZW1lbnQgJiYgKChrZXlQYXRoLnR5cGUo
KSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlICYmIGtleVBhdGguc3RyaW5nKCkuaXNFbXB0eSgp
KSB8fCBrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpBcnJheVR5cGUpKSB7Ci0gICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRBY2Nlc3NFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xODksMTcgKzE4OSwxNyBAQCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjbwogdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9J
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52
YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFtX3ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IGZpbmRPYmplY3RTdG9y
ZUlkKG5hbWUpOwogICAgIGlmIChvYmplY3RTdG9yZUlkID09IElEQk9iamVjdFN0b3JlTWV0YWRh
dGE6OkludmFsaWRJZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
Tk9UX0ZPVU5EX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tm90Rm91
bmRFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjEzLDcgKzIxMyw3IEBAIHZv
aWQgSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6
dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIGlmICghc2NvcGUuc2l6ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9JTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkludmFsaWRBY2Nlc3NFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURC
RGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgbV9j
bG9zZVBlbmRpbmcpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZh
bGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yMzAsNyArMjMw
LDcgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNjb3BlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IGZp
bmRPYmplY3RTdG9yZUlkKHNjb3BlW2ldKTsKICAgICAgICAgaWYgKG9iamVjdFN0b3JlSWQgPT0g
SURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW52YWxpZElkKSB7Ci0gICAgICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfTk9UX0ZPVU5EX0VSUjsKKyAgICAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246Ok5vdEZvdW5kRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgfQogICAgICAgICBvYmplY3RTdG9yZUlkcy5hcHBlbmQob2JqZWN0U3RvcmVJ
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDJjYmY5YjNjODFiYmYxMDdhOTViN2U5YmMy
NmI5ZThkZjE4NTA4MDkuLmUzMjA2ODIxM2VlMDU3MDA1NGFlMmZiYmYxNTQ1MTNjZDc0YzA5MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNy
ZWF0ZU9iamVjdFMKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAg
ICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9i
amVjdFN0b3JlSW50ZXJuYWwsIGRhdGFiYXNlLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pLAog
ICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpy
ZW1vdmVPYmplY3RTdG9yZUZyb21NYXAsIGRhdGFiYXNlLCBvYmplY3RTdG9yZSkpKSB7Ci0gICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVy
cm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIElE
QlRyYW5zYWN0aW9uQmFja2VuZAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygK
ICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
ZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbCwgZGF0YWJhc2UsIG9iamVjdFN0b3JlLCB0cmFuc2Fj
dGlvbiksCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmFkZE9iamVjdFN0b3JlVG9NYXAsIGRhdGFiYXNlLCBvYmplY3RTdG9yZSkpKSB7Ci0g
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2
ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fb2JqZWN0U3RvcmVzLnJlbW92
ZShpZCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpz
ZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3MKICAgICBB
U1NFUlQodmVyc2lvbiA+IG9sZFZlcnNpb24pOwogICAgIGRhdGFiYXNlLT5tX21ldGFkYXRhLmlu
dFZlcnNpb24gPSB2ZXJzaW9uOwogICAgIGlmICghZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51
cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24pKSB7
Ci0gICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0
aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdl
LiIpOwogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwogICAgICAgICB0cmFuc2Fj
dGlvbi0+YWJvcnQoZXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0yNTYsNyArMjU2LDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRG
aXJlZChQYXNzUmVmUHRyPElEQlRyYW4KICAgICAgICAgLy8gaGFsZiIgb3BlbiBjYWxsIHdhaXRp
bmcgZm9yIHVzIGluIHByb2Nlc3NQZW5kaW5nQ2FsbHMuCiAgICAgICAgIC8vIEZJWE1FOiBXaGVu
IHdlIG5vIGxvbmdlciBzdXBwb3J0IHNldFZlcnNpb24sIGFzc2VydCBzdWNoIGEgdGhpbmcuCiAg
ICAgICAgIGlmIChtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uKSB7Ci0gICAgICAg
ICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uLT5jYWxsYmFja3MoKS0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9B
Qk9SVF9FUlIsICJWZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCBpbiB1cGdy
YWRlbmVlZGVkIGV2ZW50IGhhbmRsZXIuIikpOworICAgICAgICAgICAgbV9wZW5kaW5nU2Vjb25k
SGFsZk9wZW5XaXRoVmVyc2lvbi0+Y2FsbGJhY2tzKCktPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yLCAiVmVyc2lvbiBjaGFu
Z2UgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQgaW4gdXBncmFkZW5lZWRlZCBldmVudCBoYW5kbGVy
LiIpKTsKICAgICAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24ucmVs
ZWFzZSgpOwogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKQEAgLTM0
Miw3ICszNDIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9u
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0gSW52YWxpZElkICYmICFvcGVuSW50ZXJuYWwo
KSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsK
KyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX21ldGFkYXRhLnZlcnNpb24gPT0gTm9TdHJp
bmdWZXJzaW9uICYmIG1fbWV0YWRhdGEuaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pIHsKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+CiAgICAgICAgIGlmIChvcGVuSW50ZXJuYWwoKSkKICAgICAgICAgICAgIEFTU0VSVChtX21l
dGFkYXRhLmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVy
bmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVy
bmFsIGVycm9yLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTQxNiw3ICs0MTYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKHZlcnNpb24gPCBtX21ldGFkYXRhLmludFZlcnNpb24pIHsKLSAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VkVSX0VSUiwgU3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lv
biAoJWxsZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0
aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNpb24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWV0
YWRhdGEuaW50VmVyc2lvbikpKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlZlcnNpb25FcnJvciwgU3Ry
aW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxsZCkgaXMgbGVzcyB0aGFuIHRo
ZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNp
b24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWV0YWRhdGEuaW50VmVyc2lvbikpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHZlcnNpb24gPT0gbV9tZXRhZGF0YS5p
bnRWZXJzaW9uKTsKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFjawog
ICAgIH0KICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGlmICghbV9iYWNraW5nU3Rv
cmUtPmRlbGV0ZURhdGFiYXNlKG1fbWV0YWRhdGEubmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX21ldGFkYXRhLnZlcnNpb24gPSBOb1N0cmluZ1ZlcnNpb247CkBAIC00NjIsNyArNDYyLDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MKIAogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
cmVtb3ZlKGNhbGxiYWNrcyk7CiAgICAgaWYgKG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZl
cnNpb24gJiYgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbi0+ZGF0YWJhc2VDYWxs
YmFja3MoKSA9PSBjYWxsYmFja3MpIHsKLSAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5X
aXRoVmVyc2lvbi0+Y2FsbGJhY2tzKCktPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIGNvbm5lY3Rpb24gd2Fz
IGNsb3NlZC4iKSk7CisgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24t
PmNhbGxiYWNrcygpLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgIlRoZSBjb25uZWN0aW9uIHdhcyBjbG9zZWQuIikpOwog
ICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uLnJlbGVhc2UoKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlRXhjZXB0aW9uLmNwcAppbmRleCBhMzViMDNjNTZiNzlmMzAxMTVjYjMxNzYyYmNk
MDc2ZTY1ZmFhYjY5Li41ZjExY2NhMDkyZmU1MTEzMTc3ZWZiYjMyOTY3YzVmNzdmMWIzMDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4
Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VFeGNlcHRpb24uY3BwCkBAIC00MSwxNyArNDEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVj
dCBJREJEYXRhYmFzZUV4Y2VwdGlvbk5hbWVEZXNjcmlwdGlvbiB7CiB9IGlkYkRhdGFiYXNlRXhj
ZXB0aW9uc1tdID0gewogICAgIC8vIFRoZXNlIGFyZSBJREItc3BlY2lmaWMgZXJyb3JzIGZyb20g
dGhlIHNwZWMuCiAgICAgeyAiVW5rbm93bkVycm9yIiwgIkFuIHVua25vd24gZXJyb3Igb2NjdXJy
ZWQgd2l0aGluIEluZGV4ZWQgRGF0YWJhc2UuIiwgMCB9LAotICAgIHsgIk5vblRyYW5zaWVudEVy
cm9yIiwgIk5vblRyYW5zaWVudEVycm9yIiwgMCB9LCAvLyBGSVhNRTogTm8gbG9uZ2VyIGluIHRo
ZSBzcGVjCi0gICAgeyAwLCAwLCAwIH0sIC8vIEZJWE1FOiBQcmV2aW91cy9sZWdhY3kgdmFsdWUg
Tk9UX0ZPVU5EX0VSUi4KICAgICB7ICJDb25zdHJhaW50RXJyb3IiLCAiQSBtdXRhdGlvbiBvcGVy
YXRpb24gaW4gdGhlIHRyYW5zYWN0aW9uIGZhaWxlZCBiZWNhdXNlIGEgY29uc3RyYWludCB3YXMg
bm90IHNhdGlzZmllZC4iLCAwIH0sCiAgICAgeyAiRGF0YUVycm9yIiwgIlRoZSBkYXRhIHByb3Zp
ZGVkIGRvZXMgbm90IG1lZXQgcmVxdWlyZW1lbnRzLiIsIDAgfSwKLSAgICB7ICJOb3RBbGxvd2Vk
RXJyb3IiLCAiVGhpcyBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZCB0byBiZSBjYWxsZWQgaW4gc3Vj
aCBhIGNvbnRleHQuIiwgMH0sIC8vIEZJWE1FOiBubyBsb25nZXIgaW4gdGhlIHNwZWMKICAgICB7
ICJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IiLCAiQSByZXF1ZXN0IHdhcyBwbGFjZWQgYWdhaW5z
dCBhIHRyYW5zYWN0aW9uIHdoaWNoIGlzIGVpdGhlciBjdXJyZW50bHkgbm90IGFjdGl2ZSwgb3Ig
d2hpY2ggaXMgZmluaXNoZWQuIiwgMCB9LAotICAgIHsgMCwgMCwgMCB9LCAvLyBGSVhNRTogUHJl
dmlvdXMvbGVnYWN5IHZhbHVlIHdhcyBBQk9SVF9FUlIuCiAgICAgeyAiUmVhZE9ubHlFcnJvciIs
ICJBIHdyaXRlIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0
aW9uLiIsIDAgfSwKLSAgICB7IDAsIDAsIDAgfSwgLy8gRklYTUU6IFByZXZpb3VzL2xlZ2FjeSB2
YWx1ZSB3YXMgVElNRU9VVF9FUlIuCi0gICAgeyAwLCAwLCAwIH0sIC8vIEZJWE1FOiBQcmV2aW91
cy9sZWdhY3kgdmFsdWUgd2FzIFFVT1RBX0VSUi4KLSAgICB7ICJWZXJzaW9uRXJyb3IiLCAiQW4g
YXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVuIGEgZGF0YWJhc2UgdXNpbmcgYSBsb3dlciB2ZXJzaW9u
IHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24uIiwgMCB9LCAvLyBGSVhNRTogVGhpcyBpc24ndCB1
c2VkIHlldAorICAgIHsgIlZlcnNpb25FcnJvciIsICJBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIG9w
ZW4gYSBkYXRhYmFzZSB1c2luZyBhIGxvd2VyIHZlcnNpb24gdGhhbiB0aGUgZXhpc3RpbmcgdmVy
c2lvbi4iLCAwIH0sCiAKICAgICAvLyBUaGVzZSBhcmUgSURCLXNwZWNpZmljIGRlc2NyaXB0aW9u
cyBvZiBnZW5lcmljIERPTSBFeGNlcHRpb25zIHdoZW4gdGhleSBhcmUgdGhyb3duIGZyb20gSURC
IEFQSXMKICAgICB7ICJOb3RGb3VuZEVycm9yIiwgIkFuIG9wZXJhdGlvbiBmYWlsZWQgYmVjYXVz
ZSB0aGUgcmVxdWVzdGVkIGRhdGFiYXNlIG9iamVjdCBjb3VsZCBub3QgYmUgZm91bmQuIiwgTk9U
X0ZPVU5EX0VSUiB9LApAQCAtNTksMTEgKzUzLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBJREJE
YXRhYmFzZUV4Y2VwdGlvbk5hbWVEZXNjcmlwdGlvbiB7CiAgICAgeyAiSW52YWxpZEFjY2Vzc0Vy
cm9yIiwgIkFuIGludmFsaWQgb3BlcmF0aW9uIHdhcyBwZXJmb3JtZWQgb24gYW4gb2JqZWN0LiIs
IElOVkFMSURfQUNDRVNTX0VSUiB9LAogICAgIHsgIkFib3J0RXJyb3IiLCAiVGhlIHRyYW5zYWN0
aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIsIEFC
T1JUX0VSUiB9LAogICAgIHsgIlRpbWVvdXRFcnJvciIsICJBIGxvY2sgZm9yIHRoZSB0cmFuc2Fj
dGlvbiBjb3VsZCBub3QgYmUgb2J0YWluZWQgaW4gYSByZWFzb25hYmxlIHRpbWUuIiwgVElNRU9V
VF9FUlIgfSwgLy8gRklYTUU6IFRoaXMgaXNuJ3QgdXNlZCB5ZXQuCi0gICAgeyAiUXVvdGFFeGNl
ZWRlZEVycm9yIiwgIlRoZSBvcGVyYXRpb24gZmFpbGVkIGJlY2F1c2UgdGhlcmUgd2FzIG5vdCBl
bm91Z2ggcmVtYWluaW5nIHN0b3JhZ2Ugc3BhY2UsIG9yIHRoZSBzdG9yYWdlIHF1b3RhIHdhcyBy
ZWFjaGVkIGFuZCB0aGUgdXNlciBkZWNsaW5lZCB0byBnaXZlIG1vcmUgc3BhY2UgdG8gdGhlIGRh
dGFiYXNlLiIsIFFVT1RBX0VYQ0VFREVEX0VSUiB9LCAvLyBGSVhNRTogVGhpcyBpc24ndCB1c2Vk
IHlldAorICAgIHsgIlF1b3RhRXhjZWVkZWRFcnJvciIsICJUaGUgb3BlcmF0aW9uIGZhaWxlZCBi
ZWNhdXNlIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJlbWFpbmluZyBzdG9yYWdlIHNwYWNlLCBvciB0
aGUgc3RvcmFnZSBxdW90YSB3YXMgcmVhY2hlZCBhbmQgdGhlIHVzZXIgZGVjbGluZWQgdG8gZ2l2
ZSBtb3JlIHNwYWNlIHRvIHRoZSBkYXRhYmFzZS4iLCBRVU9UQV9FWENFRURFRF9FUlIgfSwKICAg
ICB7ICJTeW50YXhFcnJvciIsICJUaGUga2V5cGF0aCBhcmd1bWVudCBjb250YWlucyBhbiBpbnZh
bGlkIGtleSBwYXRoLiIsIFNZTlRBWF9FUlIgfSwKICAgICB7ICJEYXRhQ2xvbmVFcnJvciIsICJU
aGUgZGF0YSBiZWluZyBzdG9yZWQgY291bGQgbm90IGJlIGNsb25lZCBieSB0aGUgaW50ZXJuYWwg
c3RydWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobS4iLCBEQVRBX0NMT05FX0VSUiB9LAotICAgIHsg
MCwgMCwgMCB9LCAvLyBGSVhNRTogUHJldmlvdXMvbGVnYWN5IHZhbHVlIHdhcyBJREJfVFlQRV9F
UlIuCi0gICAgeyAwLCAwLCAwIH0sIC8vIEZJWE1FOiBQcmV2aW91cy9sZWdhY3kgdmFsdWUgd2Fz
IElEQl9OT1RfU1VQUE9SVEVEX0VSUi4KIH07CiAKIHN0YXRpYyBjb25zdCBJREJEYXRhYmFzZUV4
Y2VwdGlvbk5hbWVEZXNjcmlwdGlvbiogZ2V0RXJyb3JFbnRyeShFeGNlcHRpb25Db2RlIGVjKQpA
QCAtNzIsNyArNjQsNyBAQCBzdGF0aWMgY29uc3QgSURCRGF0YWJhc2VFeGNlcHRpb25OYW1lRGVz
Y3JpcHRpb24qIGdldEVycm9yRW50cnkoRXhjZXB0aW9uQ29kZSBlYwogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHNpemVfdCB0YWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKGlkYkRhdGFiYXNl
RXhjZXB0aW9ucyk7Ci0gICAgc2l6ZV90IHRhYmxlSW5kZXggPSBlYyAtIElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVTktOT1dOX0VSUjsKKyAgICBzaXplX3QgdGFibGVJbmRleCA9IGVjIC0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvcjsKIAogICAgIHJldHVybiB0YWJsZUluZGV4IDwg
dGFibGVTaXplID8gJmlkYkRhdGFiYXNlRXhjZXB0aW9uc1t0YWJsZUluZGV4XSA6IDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4
Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VF
eGNlcHRpb24uaAppbmRleCBkNzY2ZDBjODQ0MmMwODE5MmU1NjY4MjIyZjE1M2QxM2ZkYTgzODYw
Li4wNTJmNDc2YTQ3MmFlZmJiOWRmMjdjNDdkNWMyZWRkM2Y5NTNmY2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9u
LmgKQEAgLTQzLDMwICs0MywyNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludCBJREJE
YXRhYmFzZUV4Y2VwdGlvbk1heCA9IDEyOTk7CiAKICAgICBlbnVtIElEQkRhdGFiYXNlRXhjZXB0
aW9uQ29kZSB7Ci0gICAgICAgIE5PX0VSUiA9IElEQkRhdGFiYXNlRXhjZXB0aW9uT2Zmc2V0LAot
ICAgICAgICBVTktOT1dOX0VSUiwKLSAgICAgICAgTEVHQUNZX05PTl9UUkFOU0lFTlRfRVJSLCAv
LyBGSVhNRTogUGxhY2Vob2xkZXIsIG5vdCBpbiBzcGVjLgotICAgICAgICBMRUdBQ1lfTk9UX0ZP
VU5EX0VSUiwgLy8gRklYTUU6IFBsYWNlaG9sZGVyLgotICAgICAgICBDT05TVFJBSU5UX0VSUiwK
LSAgICAgICAgREFUQV9FUlIsCi0gICAgICAgIExFR0FDWV9OT1RfQUxMT1dFRF9FUlIsIC8vIEZJ
WE1FOiBQbGFjZWhvbGRlciwgbm90IGluIHNwZWMuCi0gICAgICAgIFRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiwKLSAgICAgICAgTEVHQUNZX0FCT1JUX0VSUiwgLy8gRklYTUU6IFBsYWNlaG9sZGVy
LgotICAgICAgICBSRUFEX09OTFlfRVJSLAotICAgICAgICBMRUdBQ1lfVElNRU9VVF9FUlIsIC8v
IEZJWE1FOiBQbGFjZWhvbGRlci4KLSAgICAgICAgTEVHQUNZX1FVT1RBX0VSUiwgLy8gRklYTUU6
IFBsYWNlaG9sZGVyLgotICAgICAgICBWRVJfRVJSLAorICAgICAgICBOb0Vycm9yID0gSURCRGF0
YWJhc2VFeGNlcHRpb25PZmZzZXQsCiAKLSAgICAgICAgSURCX05PVF9GT1VORF9FUlIsCi0gICAg
ICAgIElEQl9JTlZBTElEX1NUQVRFX0VSUiwKLSAgICAgICAgSURCX0lOVkFMSURfQUNDRVNTX0VS
UiwKLSAgICAgICAgSURCX0FCT1JUX0VSUiwKLSAgICAgICAgSURCX1RJTUVPVVRfRVJSLAotICAg
ICAgICBJREJfUVVPVEFfRVhDRUVERURfRVJSLAotICAgICAgICBJREJfU1lOVEFYX0VSUiwKLSAg
ICAgICAgSURCX0RBVEFfQ0xPTkVfRVJSLAotICAgICAgICBMRUdBQ1lfSURCX1RZUEVfRVJSLCAv
LyBGSVhNRTogUGxhY2Vob2xkZXIuCi0gICAgICAgIExFR0FDWV9JREJfTk9UX1NVUFBPUlRFRF9F
UlIsIC8vIEZJWE1FOiBQbGFjZWhvbGRlci4KKyAgICAgICAgLy8gSW5kZXhlZERCIHVzZXMgdGhl
IGZvbGxvd2luZyBuZXcgRE9NRXhjZXB0aW9uIHR5cGVzIHdpdGggdGhlaXIgdmFyaW91cyBtZXNz
YWdlczoKKyAgICAgICAgVW5rbm93bkVycm9yLAorICAgICAgICBDb25zdHJhaW50RXJyb3IsCisg
ICAgICAgIERhdGFFcnJvciwKKyAgICAgICAgVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yLAorICAg
ICAgICBSZWFkT25seUVycm9yLAorICAgICAgICBWZXJzaW9uRXJyb3IsCisKKyAgICAgICAgLy8g
SW5kZXhlZERCIHJldXNlcyB0aGUgZm9sbG93aW5nIGV4aXN0aW5nIERPTUV4Y2VwdGlvbiB0eXBl
cyBmcm9tIFtET000XSwgYnV0IHdpdGggSURCLXNwZWNpZmljIGVycm9yIG1lc3NhZ2VzLgorICAg
ICAgICBOb3RGb3VuZEVycm9yLAorICAgICAgICBJbnZhbGlkU3RhdGVFcnJvciwKKyAgICAgICAg
SW52YWxpZEFjY2Vzc0Vycm9yLAorICAgICAgICBBYm9ydEVycm9yLAorICAgICAgICBUaW1lb3V0
RXJyb3IsCisgICAgICAgIFF1b3RhRXhjZWVkZWRFcnJvciwKKyAgICAgICAgU3ludGF4RXJyb3Is
CisgICAgICAgIERhdGFDbG9uZUVycm9yLAogICAgIH07CiAKICAgICBzdGF0aWMgaW50IEVycm9y
Q29kZVRvRXhjZXB0aW9uQ29kZShpbnQgZXJyb3JDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBjYjQ4NWY1MDRmYmIyNmY5MDUx
ZjRmZTk0ZThmOWEwNDhmZWVhZTNkLi5jMTRjNjhjOTFmNjM0YWU3OTkyOWUzZjViMjIyYWQ0MzA3
NDkzNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHNob3J0IElEQkZhY3Rvcnk6OmNtcChQYXNzUmVm
UHRyPElEQktleT4gZmlyc3QsIFBhc3NSZWZQdHI8SURCS2V5PiBzZWNvbmQsIEV4Y2VwCiAgICAg
QVNTRVJUKHNlY29uZCk7CiAKICAgICBpZiAoIWZpcnN0LT5pc1ZhbGlkKCkgfHwgIXNlY29uZC0+
aXNWYWxpZCgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJS
OworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggZWFhNzMzYTUyOGVm
NDU0YWMzODBlYzJmMGM2MWQ0NTEzY2JmNzA5Yy4uMmQ1ODQyY2QxNTA0YzFmZGNhMTM1OGUxZjgz
ZDhkYWFiODQ5ZDM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZv
aWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsCiB7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFj
a2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9y
eSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9F
UlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
IkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTExLDcg
KzExMSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgLy8gRklYTUU6IEV2ZXJ5dGhp
bmcgZnJvbSBub3cgb24gc2hvdWxkIGJlIGRvbmUgb24gYW5vdGhlciB0aHJlYWQuCiAgICAgUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1
cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKLSAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2Fs
CiAgICAgICAgIGRhdGFiYXNlQmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UoY2FsbGJhY2tzKTsKICAg
ICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAucmVtb3ZlKHVuaXF1ZUlkZW50aWZpZXIpOwogICAg
IH0gZWxzZQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIp
KTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOwog
fQogCiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpv
cGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBJ
REJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZl
cnNpb24sIFBhc3NSZWZQdHIKICAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5k
KCkpIHsKICAgICAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3Bl
bkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiAgICAgICAgIGlm
ICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIklu
dGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIklu
dGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0x
NjAsNyArMTYwLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHIKICAgICAgICAgaWYgKGRhdGFi
YXNlQmFja2VuZCkKICAgICAgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJ
ZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXggZWMyOTgzN2ExMTkxNWNiZTFhNDYx
YWM5YzBjZTRjMWM2ZDkyYTUyYS4uMjI3NzQ5ZWJmMmZmYWFjMDA3ZDEyMDZlYjc2ZjgzODk5NDE0
NTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNw
cApAQCAtNjMsMTEgKzYzLDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzCiB7CiAgICAgSURC
X1RSQUNFKCJJREJJbmRleDo6b3BlbkN1cnNvciIpOwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUo
KSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFD
VElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIElEQkN1cnNvcjo6
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0
aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CkBAIC05NCwxMSArOTQsMTEgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlAKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4Ojpjb3VudCIpOwogICAgIGlm
IChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZh
bGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFu
c2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNv
bnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKQEAgLTEy
MCwxMSArMTIwLDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlD
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgaWYgKG1fZGVsZXRlZCkgewotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZF
X0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgSURCQ3Vyc29yOjpEaXJl
Y3Rpb24gZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25T
dHJpbmcsIGNvbnRleHQsIGVjKTsKQEAgLTE2MCwxNSArMTYwLDE1IEBAIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0Iik7CiAgICAgaWYgKG1f
ZGVsZXRlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRT
dGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX3RyYW5zYWN0
aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRS
QU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAg
ICAgaWYgKCFrZXlSYW5nZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
QVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE5MiwxNSArMTkyLDE1IEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0S2V5Iik7CiAg
ICAgaWYgKG1fZGVsZXRlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
REJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFt
X3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgaWYgKCFrZXlSYW5nZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0
YUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
MTNlNjk5Zjk2NjY4MjFjZmIwMGI5MDUwZGE4MTk5ZTAxNDc0MzMyYS4uZTNjZjIyMzM1ZWRkZWE0
ODI2MzhkNmZiNzNlOGMxYjRmYTY1MWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTk3LDcgKzk3
LDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ24KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9t
KHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5DdXJzb3JJbnRlcm5hbCwgaW5kZXgs
IGtleVJhbmdlLCBkaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4Q3Vy
c29yLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9S
VF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwogfQogCiB2b2lkIElEQklu
ZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJw
S2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvblB0ciwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBJREJJbmRl
eEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtl
eVJhbmdlLCB1bnMKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNh
Y3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsK
ICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAgICBjcmVhdGVD
YWxsYmFja1Rhc2soJm9wZW5DdXJzb3JJbnRlcm5hbCwgaW5kZXgsIGtleVJhbmdlLCBkaXJlY3Rp
b24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5Q3Vyc29yLCBjYWxsYmFja3Ms
IHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwogfQogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6
OmNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSURCSW5k
ZXhCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NS
ZWZQdHI8SURCQ2FsCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7
CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3JlYXRl
Q2FsbGJhY2tUYXNrKCZjb3VudEludGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0cmFu
c2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRJ
bnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJREJJbmRleEJh
Y2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NS
ZWZQdHI8SUQKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFj
a3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0g
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYg
KCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZ2V0SW50ZXJu
YWwsIGluZGV4LCBrZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsK
IH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlv
bkNvZGUmKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0
S2V5KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmUHRyCiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2Fj
dGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZnZXRL
ZXlJbnRlcm5hbCwgaW5kZXgsIGtleVJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0g
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRF
cnJvcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKaW5kZXggOTJlODQ1NDI2NmI5YWQ3
ZjQ2NTgwYzYwOWQyOTE0OGVkMjE1NGVlOS4uOGE4NDkyY2U1ZTdmZWM3NWFiZGQ1MGYyZDhhY2I5
Nzk3YWU2ODA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmNwcApAQCAtNDUsNyArNDUsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJ
REJLZXlSYW5nZTo6b25seShQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBFeGNlcHRpb25Dbwog
ewogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBpZiAoIWtleSB8fCAha2V5
LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9F
UlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2Vw
dGlvbkNvCiBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJCb3VuZChQ
YXNzUmVmUHRyPElEQktleT4gYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgaWYgKCFib3VuZCB8fCAhYm91bmQtPmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTY1LDcg
KzY1LDcgQEAgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQo
UGFzc1JlZlB0cjxJREJLZXk+IGJvdW5kLCBib29sIG8KIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IElEQktleVJhbmdlOjp1cHBlckJvdW5kKFBhc3NSZWZQdHI8SURCS2V5PiBib3VuZCwgYm9vbCBv
cGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWJvdW5kIHx8ICFib3VuZC0+aXNW
YWxpZCgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtNzUsMTUgKzc1LDE1IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IElEQktleVJhbmdlOjp1cHBlckJvdW5kKFBhc3NSZWZQdHI8SURCS2V5PiBib3VuZCwgYm9v
bCBvCiBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6Ym91bmQoUGFzc1JlZlB0
cjxJREJLZXk+IGxvd2VyLCBQYXNzUmVmUHRyPElEQktleT4gdXBwZXIsIGJvb2wgbG93ZXJPcGVu
LCBib29sIHVwcGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFsb3dlciB8
fCAhbG93ZXItPmlzVmFsaWQoKSB8fCAhdXBwZXIgfHwgIXVwcGVyLT5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIGlmICh1cHBlci0+aXNMZXNzVGhhbihsb3dlci5nZXQoKSkpIHsKLSAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
ICh1cHBlci0+aXNFcXVhbChsb3dlci5nZXQoKSkgJiYgKGxvd2VyT3BlbiB8fCB1cHBlck9wZW4p
KSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCmluZGV4IDZhYjM1NTNiY2E4MGRiYmJmOGRhZTBiMmMzNjI2ZDhhNDI0
N2E1MDQuLjcyMjg5OTZhZDkzNjJjYThkZGJhOGMyYWFjNTFmYjEyYWI4ZTc0ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAK
QEAgLTc1LDE1ICs3NSwxNSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogewogICAgIElEQl9U
UkFDRSgiSURCT2JqZWN0U3RvcmU6OmdldCIpOwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICgha2V5UmFuZ2UpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICgh
bV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsK
QEAgLTE0MSwyNyArMTQxLDI3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OnB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vCiAgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6cHV0Iik7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJw
S2V5OwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAg
IGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKLSAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UmVhZE9ubHlFcnJvcjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFZhbHVlID0gdmFsdWUuc2VyaWFsaXplKHN0YXRlKTsKICAgICBpZiAoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9EQVRBX0NM
T05FX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUNsb25lRXJy
b3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlmIChzZXJpYWxpemVkVmFsdWUt
PmJsb2JVUkxzKCkuc2l6ZSgpID4gMCkgewogICAgICAgICAvLyBGSVhNRTogQWRkIEJsb2IvRmls
ZS9GaWxlTGlzdCBzdXBwb3J0Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9EQVRBX0NMT05FX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0
YUNsb25lRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTczLDI2ICsxNzMs
MjYgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW8KICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVz
dFN0YXRlKGNvbnRleHQpOwogCiAgICAgaWYgKHB1dE1vZGUgIT0gSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlOjpDdXJzb3JVcGRhdGUgJiYgdXNlc0luTGluZUtleXMgJiYga2V5KSB7Ci0g
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBpZiAoIXVzZXNJbkxpbmVLZXlzICYmICFoYXNLZXlHZW5lcmF0b3IgJiYgIWtleSkg
ewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgaWYgKHVzZXNJbkxpbmVLZXlzKSB7CiAgICAgICAgIFJlZlB0cjxJREJLZXk+
IGtleVBhdGhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKCZyZXF1
ZXN0U3RhdGUsIHZhbHVlLCBrZXlQYXRoKTsKICAgICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtl
eVBhdGhLZXktPmlzVmFsaWQoKSkgewotICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
YXRhRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBpZiAo
IWhhc0tleUdlbmVyYXRvciAmJiAha2V5UGF0aEtleSkgewotICAgICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQog
ICAgICAgICBpZiAoaGFzS2V5R2VuZXJhdG9yICYmICFrZXlQYXRoS2V5KSB7CiAgICAgICAgICAg
ICBpZiAoIWNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSgmcmVxdWVzdFN0YXRlLCB2YWx1
ZSwga2V5UGF0aCkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEQVRBX0VSUjsKKyAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
YXRhRXJyb3I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTIwMCw3ICsyMDAsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjpwdXQoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpQdXRNbwogICAgICAg
ICAgICAga2V5ID0ga2V5UGF0aEtleTsKICAgICB9CiAgICAgaWYgKGtleSAmJiAha2V5LT5pc1Zh
bGlkKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCkBAIC0yMjMsMTkgKzIyMywxOSBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjbwogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZSIpOwogICAgIGlm
IChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZh
bGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFu
c2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6UmVhZE9ubHlFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
ICAgIGlmICgha2V5UmFuZ2UpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
REFUQV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yNTgsMTUgKzI1OCwxNSBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeAogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNsZWFy
Iik7CiAgICAgaWYgKG1fZGVsZXRlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
aWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewotICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSZWFkT25seUVycm9yOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKQEAgLTM1NSwxNSArMzU1LDE1IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKICAgICBp
ZiAoIW1fdHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpIHx8IG1fZGVsZXRlZCkgewotICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgp
KSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFrZXlQYXRo
LmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfU1lO
VEFYX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6U3ludGF4RXJyb3I7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobmFtZS5pc051bGwoKSkgewpAQCAt
MzcxLDcgKzM3MSw3IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVh
dGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KICAgICBpZiAoY29udGFpbnNJbmRleChuYW1lKSkgewotICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKQEAgLTM4Miw3ICszODIsNyBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6Y3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgIG9wdGlv
bnMuZ2V0KCJtdWx0aUVudHJ5IiwgbXVsdGlFbnRyeSk7CiAKICAgICBpZiAoa2V5UGF0aC50eXBl
KCkgPT0gSURCS2V5UGF0aDo6QXJyYXlUeXBlICYmIG11bHRpRW50cnkpIHsKLSAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZEFjY2Vzc0Vycm9yOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKQEAgLTQyMCwxMSArNDIwLDExIEBAIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6aW5kZXgiKTsKICAgICBp
ZiAobV9kZWxldGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9J
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52
YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobV90cmFu
c2FjdGlvbi0+aXNGaW5pc2hlZCgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAt
NDM0LDcgKzQzNCw3IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAKICAgICBpbnQ2NF90IGlu
ZGV4SWQgPSBmaW5kSW5kZXhJZChuYW1lKTsKICAgICBpZiAoaW5kZXhJZCA9PSBJREJJbmRleE1l
dGFkYXRhOjpJbnZhbGlkSWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SURCX05PVF9GT1VORF9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5v
dEZvdW5kRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNDU4LDE2ICs0NTgs
MTYgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMKIHZvaWQgSURCT2JqZWN0U3RvcmU6OmRlbGV0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KCFtX3RyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSB8fCBtX2RlbGV0ZWQpIHsKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsK
LSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0
aXZlRXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaW50NjRfdCBpbmRleElkID0g
ZmluZEluZGV4SWQobmFtZSk7CiAgICAgaWYgKGluZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6
SW52YWxpZElkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1Rf
Rk9VTkRfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOb3RGb3VuZEVy
cm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODYsMTEgKzQ4NiwxMSBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleAogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6Om9w
ZW5DdXJzb3IiKTsKICAgICBpZiAobV9kZWxldGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24g
PSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwg
ZWMpOwpAQCAtNTE3LDExICs1MTcsMTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGEKIHsKICAg
ICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOwogICAgIGlmIChtX2RlbGV0ZWQp
IHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVf
RVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJv
cjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNB
Y3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHAKaW5kZXggYzkwZGFjMjI0ZDQ1NWMwMTA1MTY2N2UzYzkyNGI5YzczYTE4OTZiMS4u
ZTAzNDNjNWRhNjBiMzZhNDkxMmQxZmI2Y2MxMmFlM2MyNDFhZWUxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIFBhc3NSZWYK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
JklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsLCBvYmplY3RTdG9yZSwga2V5
UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FC
T1JUX0VSUikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0
aW9uKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwKIAogICAgIGlm
ICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIHZh
bHVlLCBrZXksIHB1dE1vZGUsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24sIG5ld0luZGV4SWRzLnJl
bGVhc2UoKSwgbmV3SW5kZXhLZXlzLnJlbGVhc2UoKSkpKQotICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
QUJPUlRfRVJSKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKIH0KIAogbmFtZXNw
YWNlIHsKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgYwogICAgIFN0
cmluZyBlcnJvck1lc3NhZ2U7CiAgICAgaWYgKCFtYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9u
LCB0aGlzLCBwcmltYXJ5S2V5LCBmYWxzZSwgaW5kZXhJZHMsIGluZGV4S2V5cywgJmluZGV4V3Jp
dGVycywgJmVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZGVhbCB3
aXRoIGVycm9yTWVzc2FnZSBoZXJlLiBtYWtlSW5kZXhXcml0ZXJzIG9ubHkgZmFpbHMgb24gdW5p
cXVlbmVzcyBjb25zdHJhaW50IGVycm9ycy4KLSAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9F
UlIsICJEdXBsaWNhdGUgaW5kZXgga2V5cyBleGlzdCBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsK
KyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCAiRHVwbGljYXRlIGluZGV4IGtleXMg
ZXhpc3QgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogICAgICAgICBSZWZQ
dHI8SURCS2V5PiBhdXRvSW5jS2V5ID0gb2JqZWN0U3RvcmUtPmdlbmVyYXRlS2V5KHRyYW5zYWN0
aW9uKTsKICAgICAgICAga2V5V2FzR2VuZXJhdGVkID0gdHJ1ZTsKICAgICAgICAgaWYgKCFhdXRv
SW5jS2V5LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJS
LCAiTWF4aW11bSBrZXkgZ2VuZXJhdG9yIHZhbHVlIHJlYWNoZWQuIikpOworICAgICAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCAiTWF4aW11bSBrZXkgZ2VuZXJhdG9yIHZhbHVlIHJl
YWNoZWQuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGtleSA9
IGF1dG9JbmNLZXk7CkBAIC0zMDEsMTQgKzMwMSwxNCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PAogCiAgICAgSURCQmFja2luZ1N0b3JlOjpSZWNvcmRJZGVudGlmaWVyIHJlY29yZElkZW50aWZp
ZXI7CiAgICAgaWYgKHB1dE1vZGUgPT0gQWRkT25seSAmJiBvYmplY3RTdG9yZS0+YmFja2luZ1N0
b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgp
LCAqa2V5LCAmcmVjb3JkSWRlbnRpZmllcikpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlO
VF9FUlIsICJLZXkgYWxyZWFkeSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CisgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgIktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUg
b2JqZWN0IHN0b3JlLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFZlY3RvcjxP
d25QdHI8SW5kZXhXcml0ZXI+ID4gaW5kZXhXcml0ZXJzOwogICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2U7CiAgICAgaWYgKCFtYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZS5n
ZXQoKSwga2V5LCBrZXlXYXNHZW5lcmF0ZWQsICppbmRleElkcywgKmluZGV4S2V5cywgJmluZGV4
V3JpdGVycywgJmVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9F
UlIsIGVycm9yTWVzc2FnZSkpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsIGVy
cm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDAsNyArMzQwLDcg
QEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW4KIAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXlSYW5nZSwgY2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7Cisg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0z
NzEsNyArMzcxLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREIKIAogICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbCwgb2JqZWN0U3RvcmUsIGNhbGxi
YWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOwor
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbikKQEAgLTM5Niw3ICszOTYsNyBAQCBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgo
aW50NgogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgICAg
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRl
eEludGVybmFsLCBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uKSwKICAgICAgICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJ
bmRleEZyb21NYXAsIG9iamVjdFN0b3JlLCBpbmRleCkpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGludDY0X3QgaW5kZXhJZCwgSURCVHJhbnNhY3Rpb25C
YWNrZQogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgICAg
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRl
eEludGVybmFsLCBvYmplY3RTdG9yZSwgaW5kZXgsIHRyYW5zYWN0aW9uKSwKICAgICAgICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjphZGRJbmRl
eFRvTWFwLCBvYmplY3RTdG9yZSwgaW5kZXgpKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBtX2luZGV4ZXMucmVtb3ZlKGluZGV4SWQpOwpAQCAtNDUxLDcgKzQ1MSw3
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBwcnBSYW5nZSwgSURCCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0
cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAg
ICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpv
cGVuQ3Vyc29ySW50ZXJuYWwsIG9iamVjdFN0b3JlLCByYW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFj
a3MsIHRhc2tUeXBlLCB0cmFuc2FjdGlvbikpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9S
VF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwogICAgIH0KIH0KIApAQCAt
NDgxLDcgKzQ4MSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8CiAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKAogICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpjb3VudEludGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2Fj
dGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
b3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBy
YW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggNTUxZDBk
ZDA5M2JhN2NlMGZkMDY4M2MzNWFiNTAxMTdjMjNlMTUxYi4uZjJlNzZkNzE1MDU2MTE5ZTQ4N2Q1
NzY4ODBhNGQwZjhkN2ZmZGYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29s
IElEQk9wZW5EQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CiAgICAgLy8gYW4gImVycm9yIiBldmVudCBzaG91bGQgYmUgZmlyZWQgaW5zdGVhZC4KICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50ICYmIG1fcmVzdWx0
LT5pZGJEYXRhYmFzZSgpLT5pc0Nsb3NlUGVuZGluZygpKSB7CiAgICAgICAgIG1fcmVzdWx0LmNs
ZWFyKCk7Ci0gICAgICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIGNvbm5lY3Rpb24gd2FzIGNsb3NlZC4i
KSk7CisgICAgICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpBYm9ydEVycm9yLCAiVGhlIGNvbm5lY3Rpb24gd2FzIGNsb3NlZC4iKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMDNhMTFiOTQ0MzhiYzA3MzllYWM2ZGUx
Y2JhMWEwZTgwMWQxMmVmZS4uOGU1NmE4NTU0NGQzY2YzZTk3ZDhiZGNkYThlODllZGE0ZDFmMWEw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHAKQEAgLTkyLDcgKzkyLDcgQEAgSURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQogUGFzc1JlZlB0
cjxJREJBbnk+IElEQlJlcXVlc3Q6OnJlc3VsdChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsK
ICAgICBpZiAobV9yZWFkeVN0YXRlICE9IERPTkUpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIHJldHVybiBtX3Jlc3VsdDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBQYXNzUmVmUHRyPElE
QkFueT4gSURCUmVxdWVzdDo6cmVzdWx0KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogUGFzc1Jl
ZlB0cjxET01FcnJvcj4gSURCUmVxdWVzdDo6ZXJyb3IoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiB7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBET05FKSB7Ci0gICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICByZXR1cm4gbV9lcnJvcjsKQEAgLTExMCw3ICsxMTAsNyBAQCBQYXNzUmVmUHRy
PERPTUVycm9yPiBJREJSZXF1ZXN0OjplcnJvcihFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHVu
c2lnbmVkIHNob3J0IElEQlJlcXVlc3Q6OmVycm9yQ29kZShFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKICAgICBpZiAobV9yZWFkeVN0YXRlICE9IERPTkUpIHsKLSAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgIHJldHVybiBtX2Vycm9yQ29kZTsKQEAgLTExOSw3ICsxMTksNyBAQCB1bnNp
Z25lZCBzaG9ydCBJREJSZXF1ZXN0OjplcnJvckNvZGUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiBTdHJpbmcgSURCUmVxdWVzdDo6d2Via2l0RXJyb3JNZXNzYWdlKEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAogewogICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gRE9ORSkgewotICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgfQogICAgIHJldHVybiBtX2Vycm9yTWVzc2FnZTsKQEAgLTE3OCw3
ICsxNzgsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmFib3J0KCkKICAgICBtX2Vycm9yLmNsZWFyKCk7
CiAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcoKTsKICAgICBtX3Jlc3VsdC5jbGVhcigpOwot
ICAgIG9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJREJfQUJPUlRfRVJSKSk7CisgICAgb25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKICAgICBtX3JlcXVlc3RBYm9ydGVk
ID0gdHJ1ZTsKIH0KIApAQCAtNDcwLDcgKzQ3MCw3IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBXaGVuIHdl
IGFsbG93IGN1c3RvbSBldmVudCBkaXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQg
dG8gY2hhbmdlLgogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50IHx8
IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCwgImV2ZW50
IHR5cGUgd2FzICVzIiwgZXZlbnQtPnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICBjb25zdCBib29sIHNldFRyYW5zYWN0aW9uQWN0aXZlID0gbV90cmFuc2FjdGlvbiAmJiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCB8fCAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCAmJiBtX2Vycm9yQ29kZSAhPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgIGNvbnN0IGJvb2wgc2V0VHJhbnNhY3Rpb25BY3Rp
dmUgPSBtX3RyYW5zYWN0aW9uICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNj
ZXNzRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2
ZW50IHx8IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50ICYmIG1fZXJy
b3JDb2RlICE9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiAKICAgICBpZiAo
c2V0VHJhbnNhY3Rpb25BY3RpdmUpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZSh0
cnVlKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0
aW9uSW5FdmVudEhhbmRsZXIoKQogewogICAgIGlmIChtX3RyYW5zYWN0aW9uICYmICFtX3JlcXVl
c3RBYm9ydGVkKSB7Ci0gICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEVycm9yKERPTUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OmdldEVycm9yTmFtZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0FCT1JUX0VSUikpKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0RXJyb3Io
RE9NRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Z2V0RXJyb3JOYW1lKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSkpOwogICAgICAgICBFeGNlcHRpb25Db2RlIHVu
dXNlZDsKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQodW51c2VkKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggODM3ZDU0NmE3Y2ZmMGMwZmYxZDEyNDRiMTZmZTczOTZjNzQ3ZWYwNy4uNDc5ZjEyYTE1
NTdmNDFlNjQ1OWZmM2ViNTE0MzMyYmM3YTY2NDg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTQ2LDcgKzE0Niw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnNldEVycm9yKFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVy
cm9yKQogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1f
c3RhdGUgPT0gRmluaXNoZWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNTUs
MTQgKzE1NSwxNCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6
b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcAogICAgICAgICByZXR1cm4gaXQt
PnZhbHVlOwogCiAgICAgaWYgKCFpc1ZlcnNpb25DaGFuZ2UoKSAmJiAhbV9vYmplY3RTdG9yZU5h
bWVzLmNvbnRhaW5zKG5hbWUpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9OT1RfRk9VTkRfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpO
b3RGb3VuZEVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpbnQ2NF90IG9i
amVjdFN0b3JlSWQgPSBtX2RhdGFiYXNlLT5maW5kT2JqZWN0U3RvcmVJZChuYW1lKTsKICAgICBp
ZiAob2JqZWN0U3RvcmVJZCA9PSBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQpIHsK
ICAgICAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKLSAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SURCX05PVF9GT1VORF9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246Ok5vdEZvdW5kRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApA
QCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnNldEFjdGl2ZShib29sIGFj
dGl2ZSkKIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGluZyB8fCBtX3N0YXRlID09IEZpbmlzaGVkKSB7Ci0g
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXgg
YjhjNzdlZDdkMGUwNWU4NmVkNjkwNzk3ZmY1YmQ3MDVlN2VmY2M3ZC4uYzU0MmZkZDc5MDg5OWVl
YWJhMTQ0MTI0ZThlMzJlOTM0M2U3MDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6fklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwoKQogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Om9iamVjdFN0b3JlKGludDY0X3QgaWQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVkKSB7Ci0gICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtOTksNyArOTksNyBAQCBib29sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPFNj
cmlwdEV4ZQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KCkKIHsKLSAg
ICBhYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVO
S05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgIGFib3J0KElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwg
ZXJyb3IuIikpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpCkBAIC0yMjksNyArMjI5LDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogICAgICAgICBtX2NhbGxiYWNr
cy0+b25Db21wbGV0ZSgpOwogICAgICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVk
QW5kQ29tcGxldGVGaXJlZCh0aGlzKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2NhbGxiYWNr
cy0+b25BYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBtX2NhbGxiYWNrcy0+
b25BYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgbV9kYXRhYmFzZS0+dHJh
bnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQodGhpcyk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VFeGNlcHRpb24u
aAppbmRleCBiMGU2M2Q0MjZlMDcwMDlmMjdmOGY2OGExMDlkNDU4ZTM4ZjQ1NTY3Li44YzAwYTBm
MDJlNTBhYjU4YzcxMWU0MGNlY2JlMjNkNTQ1YmFmMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgKQEAgLTM0
LDggKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBlbnVtIFdlYklEQkRhdGFiYXNlRXhj
ZXB0aW9uIHsKLSAgICBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRhdGFFcnJvciA9IDEyMDUsCi0g
ICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90YUVycm9yID0gMTIxOCwKKyAgICBXZWJJREJE
YXRhYmFzZUV4Y2VwdGlvbkRhdGFFcnJvciA9IDEyMDMsCisgICAgV2ViSURCRGF0YWJhc2VFeGNl
cHRpb25RdW90YUVycm9yID0gMTIxMiwKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApp
bmRleCAzZWU5ZmNhYzU0ZWM1YzkyZjliOTgxMWIzNThmZDhmZDcyMjVkMzBmLi40NTdiMzcwNmNj
YjJmMTcwYzM3OTRmYzZkYzRlOTQ5NTNiZmZiYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNDc5LDggKzQ3OSw4IEBA
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlldzo6VXNlckNvbnRlbnRJbmplY3RJ
blRvcEZyYW1lT25seSwgSW5qZWN0SW5UCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YlZpZXc6OlVzZXJTdHlsZUluamVjdEluRXhpc3RpbmdEb2N1bWVudHMsIEluamVjdEluRXhpc3Rp
bmdEb2N1bWVudHMpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWV3OjpVc2Vy
U3R5bGVJbmplY3RJblN1YnNlcXVlbnREb2N1bWVudHMsIEluamVjdEluU3Vic2VxdWVudERvY3Vt
ZW50cyk7CiAKLUNPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCRGF0YWJhc2VFeGNl
cHRpb25EYXRhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUik7Ci1DT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uUXVvdGFFcnJvciwg
SURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9RVU9UQV9FWENFRURFRF9FUlIpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRhdGFFcnJvciwgSURC
RGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uUXVvdGFFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRp
b246OlF1b3RhRXhjZWVkZWRFcnJvcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpJbnZhbGlkVHlwZSwgSURC
S2V5OjpJbnZhbGlkVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IDI4OTk1ZWM2NjBlMzFmZjdjZWZhZDkz
ZWIzYmRhMjM0MWFhMWVmZjguLmZmZjU0OTY1ZTczOTBkYWE5YWM5ZGFiZTU0NzEyODcyYTMyM2Fl
M2YgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNr
ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgYm9vbCBJREJGYWN0b3J5QmFja2Vu
ZFByb3h5OjphbGxvd0luZGV4ZWREQihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b24KICAgICB9CiAKICAgICBpZiAoIWFsbG93ZWQpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihXZWJJREJEYXRhYmFzZUVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
IlRoZSB1c2VyIGRlbmllZCBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgZGF0YWJhc2UuIikpOwor
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoV2ViSURCRGF0YWJhc2VFcnJvcihJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVGhlIHVzZXIgZGVuaWVkIHBlcm1pc3Npb24gdG8g
YWNjZXNzIHRoZSBkYXRhYmFzZS4iKSk7CiAKICAgICByZXR1cm4gYWxsb3dlZDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177276</attachid>
            <date>2012-12-03 09:44:44 -0800</date>
            <delta_ts>2012-12-03 10:07:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103759-20121203094210.patch</filename>
            <type>text/plain</type>
            <size>70471</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEwZWQ4YWUzMDg2ZWI2
OTc1OGM0ZmZhODVjMDRiNjE3MTA0NzI1ZS4uZjllOTQ5ZjJmYzA2YzUyOGM5M2I5YjczMjAwYjA2
YTllZmRiOWMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0xMi0wMyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogUmVu
YW1lIGV4Y2VwdGlvbiBlbnVtIG1lbWJlcnMgZnJvbSBVR0xZX0VSUiB0byBQcmV0dHlFcnJvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQg
SURCRGF0YWJhc2VFeGNlcHRpb24gaXNuJ3QgZXhwb3NlZCB0byBzY3JpcHQgd2l0aCBjb25zdGFu
dHMsIHRoZSBleGNlcHRpb24gdHlwZXMKKyAgICAgICAgY2FuIGJlIHJlbmFtZWQgdG8gbWF0Y2gg
dGhlIG11Y2ggZnJpZW5kbGllciBuYW1lcyB1c2VkIGluIG5ld2VyIGl0ZXJhdGlvbnMgb2YgdGhl
IHNwZWMuIEFsc28KKyAgICAgICAgcmVtb3ZlIHRoZSBsZWdhY3kvdW51c2VkIHR5cGVzLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBjb25zdGFudCByZW5hbWVzLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6YWR2YW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVsZXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rp
b25XaXRoVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNl
cHRpb24uY3BwOiBUaWR5aW5nIGFuZCByZW5hbWluZy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RXJyb3JFbnRyeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmNtcCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkluZGV4OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldEtl
eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQklu
ZGV4QmFja2VuZEltcGw6OmdldEtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Om9ubHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Omxvd2VyQm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5UmFuZ2U6OnVwcGVyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFu
Z2U6OmJvdW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlU3RvcmFn
ZU9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPcGVuREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVl
c3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OmVycm9yQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp3ZWJraXRFcnJv
ck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6YWJvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OmNvbW1pdCk6CisKIDIwMTItMTEtMzAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFJlcGxhY2UgdXNlIG9mIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgKFBhcnQgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYTVmMTQ0ZmVhNDYzZGJlMmNlZDc1ZTM4YmVjOGUwM2ZlMWUzMThmNy4uOGRmNmI5Y2Q5MTkz
M2Y2ZTc3ZTMwNzI2NWZkNTI1NDA2MjkyODk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wMyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogUmVuYW1lIGV4Y2VwdGlvbiBlbnVtIG1lbWJl
cnMgZnJvbSBVR0xZX0VSUiB0byBQcmV0dHlFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIElEQkRhdGFiYXNlRXhjZXB0aW9uIGVudW0g
bmFtZXMvdmFsdWVzIHRvIG1hdGNoIFdlYkNvcmUuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURC
RGF0YWJhc2VFeGNlcHRpb24uaDoKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHA6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxvd0luZGV4ZWREQik6CisKIDIwMTIt
MTEtMzAgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBTdXBwcmVzcyB0aGUgbmV3IHNlcGFyYWJsZSBtYXNrIGJsdXJzIGluIHNr
aWEgdW50aWwgdGhlIHRlc3RzIGNhbiBiZSByZWJhc2VsaW5lZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDFhYWYyYjIzZDg2OWVhYzhl
M2ZlNmViM2EyYjk2YTA4NzRhYzEzOTAuLmQ0MTFkYTkzNzVlZmFiOTEwY2JkNjVlN2Q5YjFlNDRj
OTMwODNkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmNwcApAQCAtMTI5LDE1ICsxMjksMTUgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJD
dXJzb3I6OnVwZGF0ZShTY3JpcHRTdGF0ZSogc3RhdGUsIFNjcmlwdFZhbHVlJiB2YWx1ZSwKICAg
ICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6dXBkYXRlIik7CiAKICAgICBpZiAoIW1fZ290VmFsdWUg
fHwgaXNLZXlDdXJzb3IoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
REJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFt
X3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewotICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpSZWFkT25seUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNv
cjo6dXBkYXRlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgU2NyaXB0VmFsdWUmIHZhbHVlLAogICAgIGlm
ICh1c2VzSW5MaW5lS2V5cykgewogICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0g
Y3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChtX3JlcXVlc3QtPnJlcXVlc3RT
dGF0ZSgpLCB2YWx1ZSwga2V5UGF0aCk7CiAgICAgICAgIGlmICgha2V5UGF0aEtleSB8fCAha2V5
UGF0aEtleS0+aXNFcXVhbChtX2N1cnJlbnRQcmltYXJ5S2V5LmdldCgpKSkgewotICAgICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE1OSwxMiArMTU5LDEyIEBAIHZvaWQgSURCQ3Vyc29yOjph
ZHZhbmNlKGxvbmcgbG9uZyBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJDdXJzb3I6OmFkdmFuY2UiKTsKICAgICBpZiAoIW1fZ290VmFsdWUpIHsKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkg
ewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElW
RV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTg0LDE3ICsxODQsMTcg
QEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OmNvbnRp
bnVlIik7CiAgICAgaWYgKGtleSAmJiAha2V5LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICgh
bV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmICghbV9nb3RWYWx1ZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMDIsMTIgKzIwMiwxMiBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgQVNTRVJU
KG1fY3VycmVudEtleSk7CiAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5F
WFQgfHwgbV9kaXJlY3Rpb24gPT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSkgewogICAg
ICAgICAgICAgaWYgKCFtX2N1cnJlbnRLZXktPmlzTGVzc1RoYW4oa2V5LmdldCgpKSkgewotICAg
ICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAg
ICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoIWtleS0+aXNMZXNzVGhhbihtX2N1cnJlbnRLZXkuZ2V0KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjI1LDE2ICsyMjUsMTYg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6
ZGVsZXRlIik7CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9y
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVh
ZE9ubHkoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlf
RVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSZWFkT25seUVycm9yOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoIW1fZ290VmFsdWUgfHwgaXNLZXlD
dXJzb3IoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRT
dGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUo
dGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4IDJjYzFi
OGZkMTMyNGFiODBlZDRiNjg4YjNmZWU1ZjY4NDJhZmU5OTcuLjg2NGU5ZmFkZWIzZmVlNjFjNzQ1
ODY5YTZjNWI0N2I4YmM0NDJjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPEkKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tl
bmRJbXBsOjpjb250aW51ZSIpOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IHBycENhbGxiYWNrczsKICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhtX3Rh
c2tUeXBlLCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXksIGNhbGxi
YWNrcykpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6YWR2YW5j
ZSh1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzLCBFeGNlcHRpb25Db2RlJikKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPgogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKIAogICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEN1cnNvckFkdmFuY2VP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBjb3VudCwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwogfQog
CiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJzb3JBZHZhbmNlT3BlcmF0aW9uOjpwZXJm
b3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJ
bXBsPiBwcnBDdXJzb3IsIHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5k
SW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJD
YWwKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVl
Iik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwog
ICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKG1fdGFza1R5cGUsIEN1cnNvclBy
ZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbnVtYmVyVG9GZXRjaCwgY2Fs
bGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6QWJvcnRFcnJvcikpOwogfQogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpDdXJz
b3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBpbnQgbnVt
YmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCBlNzk5
YzBkYjJlY2FhYjVhZGM0ZjNiZTI3N2E2MjYyNGY0ZmY2YWNjLi43MzgyM2M1ZmQ5NGEyYWUwMDgy
NmZmM2IzNTBiZDVmNzM2MWQxYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xMzMsMTEgKzEzMywxMSBAQCBQYXNzUmVmUHRy
PElEQkFueT4gSURCRGF0YWJhc2U6OnZlcnNpb24oKSBjb25zdAogUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgewotICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9F
UlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3Rp
dmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNTIsMTIgKzE1MiwxMiBA
QCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgIH0KIAogICAgIGlmIChjb250YWluc09iamVj
dFN0b3JlKG5hbWUpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNU
UkFJTlRfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50
RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlmICgha2V5UGF0aC5pc051
bGwoKSAmJiAha2V5UGF0aC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SURCX1NZTlRBWF9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OlN5bnRheEVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE2Niw3ICsx
NjYsNyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICBvcHRpb25zLmdldCgiYXV0
b0luY3JlbWVudCIsIGF1dG9JbmNyZW1lbnQpOwogCiAgICAgaWYgKGF1dG9JbmNyZW1lbnQgJiYg
KChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpTdHJpbmdUeXBlICYmIGtleVBhdGguc3Ry
aW5nKCkuaXNFbXB0eSgpKSB8fCBrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpBcnJheVR5
cGUpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX0FD
Q0VTU19FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRBY2Nl
c3NFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xODksMTcgKzE4OSwxNyBA
QCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
IW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJv
cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9
IGZpbmRPYmplY3RTdG9yZUlkKG5hbWUpOwogICAgIGlmIChvYmplY3RTdG9yZUlkID09IElEQk9i
amVjdFN0b3JlTWV0YWRhdGE6OkludmFsaWRJZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfTk9UX0ZPVU5EX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6Tm90Rm91bmRFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjEz
LDcgKzIxMyw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghc2NvcGUuc2l6ZSgpKSB7Ci0gICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRBY2Nlc3NFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnQKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAobV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gfHwgbV9jbG9zZVBlbmRpbmcpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CkBAIC0yMzAsNyArMjMwLDcgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJh
c2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNjb3BlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCA9IGZpbmRPYmplY3RTdG9yZUlkKHNjb3BlW2ldKTsKICAgICAgICAgaWYgKG9i
amVjdFN0b3JlSWQgPT0gSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW52YWxpZElkKSB7Ci0gICAg
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfTk9UX0ZPVU5EX0VSUjsKKyAg
ICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5vdEZvdW5kRXJyb3I7CiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBvYmplY3RTdG9yZUlkcy5hcHBl
bmQob2JqZWN0U3RvcmVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDNkZDlmZjgwNWZi
ZWU4MjdiMDAwODdlMGY1YThiZTIyZDQwYmRiYjYuLmFiMGE5YzJiMzg0NGMzMGE1Y2VkNDQ5YzM1
M2JjOGY1NDIwODkwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0yMjUsNyArMjI1LDcg
QEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFMKICAgICBtX21ldGFkYXRhLm1heE9iamVjdFN0b3Jl
SWQgPSBpZDsKIAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhDcmVhdGVPYmpl
Y3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbiks
IENyZWF0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9y
ZSkpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rp
b25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTI1Niw3ICsy
NTYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgaWQsIElEQlRyYW5zYWN0aW9uQmFja2VuZAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CiAKICAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0
ZSh0aGlzLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pLCBEZWxldGVPYmplY3RTdG9yZUFib3J0
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmUpKSkgewotICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBtX29iamVjdFN0b3Jlcy5yZW1vdmUoaWQpOwpAQCAtMjc3
LDcgKzI3Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9w
ZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250CiAgICAgQVNTRVJUKHZlcnNpb24g
PiBvbGRWZXJzaW9uKTsKICAgICBkYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uID0gdmVy
c2lvbjsKICAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRh
YmFzZUlkLCBkYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkgewotICAgICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0
YWJsZSBzdG9yYWdlLiIpOworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3Ig
PSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKTsKICAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKGVycm9yKTsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVy
cm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQoUGFzc1JlZlB0
cjxJREJUcmFuCiAgICAgICAgIC8vIGhhbGYiIG9wZW4gY2FsbCB3YWl0aW5nIGZvciB1cyBpbiBw
cm9jZXNzUGVuZGluZ0NhbGxzLgogICAgICAgICAvLyBGSVhNRTogV2hlbiB3ZSBubyBsb25nZXIg
c3VwcG9ydCBzZXRWZXJzaW9uLCBhc3NlcnQgc3VjaCBhIHRoaW5nLgogICAgICAgICBpZiAobV9w
ZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbikgewotICAgICAgICAgICAgbV9wZW5kaW5n
U2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbi0+Y2FsbGJhY2tzKCktPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVmVy
c2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQgaW4gdXBncmFkZW5lZWRlZCBldmVu
dCBoYW5kbGVyLiIpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZl
cnNpb24tPmNhbGxiYWNrcygpLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgIlZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9u
IHdhcyBhYm9ydGVkIGluIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaGFuZGxlci4iKSk7CiAgICAgICAg
ICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uLnJlbGVhc2UoKTsKICAgICAg
ICAgfQogICAgICAgICBwcm9jZXNzUGVuZGluZ0NhbGxzKCk7CkBAIC00MDEsNyArNDAxLDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICht
X21ldGFkYXRhLmlkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFsKCkpIHsKLSAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAobV9tZXRhZGF0YS52ZXJzaW9uID09IE5vU3RyaW5nVmVyc2lvbiAmJiBt
X21ldGFkYXRhLmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9u
KSB7CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVu
Q29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgogICAgICAgICBp
ZiAob3BlbkludGVybmFsKCkpCiAgICAgICAgICAgICBBU1NFUlQobV9tZXRhZGF0YS5pbnRWZXJz
aW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7
CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC00NzIsNyArNDcyLDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9u
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
ICh2ZXJzaW9uIDwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlZF
Ul9FUlIsIFN0cmluZzo6Zm9ybWF0KCJUaGUgcmVxdWVzdGVkIHZlcnNpb24gKCVsbGQpIGlzIGxl
c3MgdGhhbiB0aGUgZXhpc3RpbmcgdmVyc2lvbiAoJWxsZCkuIiwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPih2ZXJzaW9uKSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX21ldGFkYXRhLmludFZlcnNp
b24pKSkpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpWZXJzaW9uRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJU
aGUgcmVxdWVzdGVkIHZlcnNpb24gKCVsbGQpIGlzIGxlc3MgdGhhbiB0aGUgZXhpc3RpbmcgdmVy
c2lvbiAoJWxsZCkuIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPih2ZXJzaW9uKSwgc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPihtX21ldGFkYXRhLmludFZlcnNpb24pKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIEFTU0VSVCh2ZXJzaW9uID09IG1fbWV0YWRhdGEuaW50VmVyc2lvbik7CkBA
IC01MDEsNyArNTAxLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRh
YmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICB9CiAgICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlKTsKICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kZWxldGVEYXRh
YmFzZShtX21ldGFkYXRhLm5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAi
SW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRl
cm5hbCBlcnJvci4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9tZXRhZGF0YS52
ZXJzaW9uID0gTm9TdHJpbmdWZXJzaW9uOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzCiAKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnJlbW92ZShjYWxsYmFj
a3MpOwogICAgIGlmIChtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uICYmIG1fcGVu
ZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24tPmRhdGFiYXNlQ2FsbGJhY2tzKCkgPT0gY2Fs
bGJhY2tzKSB7Ci0gICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24tPmNh
bGxiYWNrcygpLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRoZSBjb25uZWN0aW9uIHdhcyBjbG9zZWQuIikpOwor
ICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uLT5jYWxsYmFja3MoKS0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFi
b3J0RXJyb3IsICJUaGUgY29ubmVjdGlvbiB3YXMgY2xvc2VkLiIpKTsKICAgICAgICAgbV9wZW5k
aW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbi5yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2Vw
dGlvbi5jcHAKaW5kZXggYTM1YjAzYzU2Yjc5ZjMwMTE1Y2IzMTc2MmJjZDA3NmU2NWZhYWI2OS4u
NWYxMWNjYTA5MmZlNTExMzE3N2VmYmIzMjk2N2M1Zjc3ZjFiMzA1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9u
LmNwcApAQCAtNDEsMTcgKzQxLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSURCRGF0YWJhc2VF
eGNlcHRpb25OYW1lRGVzY3JpcHRpb24gewogfSBpZGJEYXRhYmFzZUV4Y2VwdGlvbnNbXSA9IHsK
ICAgICAvLyBUaGVzZSBhcmUgSURCLXNwZWNpZmljIGVycm9ycyBmcm9tIHRoZSBzcGVjLgogICAg
IHsgIlVua25vd25FcnJvciIsICJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIHdpdGhpbiBJbmRl
eGVkIERhdGFiYXNlLiIsIDAgfSwKLSAgICB7ICJOb25UcmFuc2llbnRFcnJvciIsICJOb25UcmFu
c2llbnRFcnJvciIsIDAgfSwgLy8gRklYTUU6IE5vIGxvbmdlciBpbiB0aGUgc3BlYwotICAgIHsg
MCwgMCwgMCB9LCAvLyBGSVhNRTogUHJldmlvdXMvbGVnYWN5IHZhbHVlIE5PVF9GT1VORF9FUlIu
CiAgICAgeyAiQ29uc3RyYWludEVycm9yIiwgIkEgbXV0YXRpb24gb3BlcmF0aW9uIGluIHRoZSB0
cmFuc2FjdGlvbiBmYWlsZWQgYmVjYXVzZSBhIGNvbnN0cmFpbnQgd2FzIG5vdCBzYXRpc2ZpZWQu
IiwgMCB9LAogICAgIHsgIkRhdGFFcnJvciIsICJUaGUgZGF0YSBwcm92aWRlZCBkb2VzIG5vdCBt
ZWV0IHJlcXVpcmVtZW50cy4iLCAwIH0sCi0gICAgeyAiTm90QWxsb3dlZEVycm9yIiwgIlRoaXMg
ZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQgdG8gYmUgY2FsbGVkIGluIHN1Y2ggYSBjb250ZXh0LiIs
IDB9LCAvLyBGSVhNRTogbm8gbG9uZ2VyIGluIHRoZSBzcGVjCiAgICAgeyAiVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yIiwgIkEgcmVxdWVzdCB3YXMgcGxhY2VkIGFnYWluc3QgYSB0cmFuc2FjdGlv
biB3aGljaCBpcyBlaXRoZXIgY3VycmVudGx5IG5vdCBhY3RpdmUsIG9yIHdoaWNoIGlzIGZpbmlz
aGVkLiIsIDAgfSwKLSAgICB7IDAsIDAsIDAgfSwgLy8gRklYTUU6IFByZXZpb3VzL2xlZ2FjeSB2
YWx1ZSB3YXMgQUJPUlRfRVJSLgogICAgIHsgIlJlYWRPbmx5RXJyb3IiLCAiQSB3cml0ZSBvcGVy
YXRpb24gd2FzIGF0dGVtcHRlZCBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbi4iLCAwIH0sCi0g
ICAgeyAwLCAwLCAwIH0sIC8vIEZJWE1FOiBQcmV2aW91cy9sZWdhY3kgdmFsdWUgd2FzIFRJTUVP
VVRfRVJSLgotICAgIHsgMCwgMCwgMCB9LCAvLyBGSVhNRTogUHJldmlvdXMvbGVnYWN5IHZhbHVl
IHdhcyBRVU9UQV9FUlIuCi0gICAgeyAiVmVyc2lvbkVycm9yIiwgIkFuIGF0dGVtcHQgd2FzIG1h
ZGUgdG8gb3BlbiBhIGRhdGFiYXNlIHVzaW5nIGEgbG93ZXIgdmVyc2lvbiB0aGFuIHRoZSBleGlz
dGluZyB2ZXJzaW9uLiIsIDAgfSwgLy8gRklYTUU6IFRoaXMgaXNuJ3QgdXNlZCB5ZXQKKyAgICB7
ICJWZXJzaW9uRXJyb3IiLCAiQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVuIGEgZGF0YWJhc2Ug
dXNpbmcgYSBsb3dlciB2ZXJzaW9uIHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24uIiwgMCB9LAog
CiAgICAgLy8gVGhlc2UgYXJlIElEQi1zcGVjaWZpYyBkZXNjcmlwdGlvbnMgb2YgZ2VuZXJpYyBE
T00gRXhjZXB0aW9ucyB3aGVuIHRoZXkgYXJlIHRocm93biBmcm9tIElEQiBBUElzCiAgICAgeyAi
Tm90Rm91bmRFcnJvciIsICJBbiBvcGVyYXRpb24gZmFpbGVkIGJlY2F1c2UgdGhlIHJlcXVlc3Rl
ZCBkYXRhYmFzZSBvYmplY3QgY291bGQgbm90IGJlIGZvdW5kLiIsIE5PVF9GT1VORF9FUlIgfSwK
QEAgLTU5LDExICs1Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSURCRGF0YWJhc2VFeGNlcHRp
b25OYW1lRGVzY3JpcHRpb24gewogICAgIHsgIkludmFsaWRBY2Nlc3NFcnJvciIsICJBbiBpbnZh
bGlkIG9wZXJhdGlvbiB3YXMgcGVyZm9ybWVkIG9uIGFuIG9iamVjdC4iLCBJTlZBTElEX0FDQ0VT
U19FUlIgfSwKICAgICB7ICJBYm9ydEVycm9yIiwgIlRoZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRl
ZCwgc28gdGhlIHJlcXVlc3QgY2Fubm90IGJlIGZ1bGZpbGxlZC4iLCBBQk9SVF9FUlIgfSwKICAg
ICB7ICJUaW1lb3V0RXJyb3IiLCAiQSBsb2NrIGZvciB0aGUgdHJhbnNhY3Rpb24gY291bGQgbm90
IGJlIG9idGFpbmVkIGluIGEgcmVhc29uYWJsZSB0aW1lLiIsIFRJTUVPVVRfRVJSIH0sIC8vIEZJ
WE1FOiBUaGlzIGlzbid0IHVzZWQgeWV0LgotICAgIHsgIlF1b3RhRXhjZWVkZWRFcnJvciIsICJU
aGUgb3BlcmF0aW9uIGZhaWxlZCBiZWNhdXNlIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJlbWFpbmlu
ZyBzdG9yYWdlIHNwYWNlLCBvciB0aGUgc3RvcmFnZSBxdW90YSB3YXMgcmVhY2hlZCBhbmQgdGhl
IHVzZXIgZGVjbGluZWQgdG8gZ2l2ZSBtb3JlIHNwYWNlIHRvIHRoZSBkYXRhYmFzZS4iLCBRVU9U
QV9FWENFRURFRF9FUlIgfSwgLy8gRklYTUU6IFRoaXMgaXNuJ3QgdXNlZCB5ZXQKKyAgICB7ICJR
dW90YUV4Y2VlZGVkRXJyb3IiLCAiVGhlIG9wZXJhdGlvbiBmYWlsZWQgYmVjYXVzZSB0aGVyZSB3
YXMgbm90IGVub3VnaCByZW1haW5pbmcgc3RvcmFnZSBzcGFjZSwgb3IgdGhlIHN0b3JhZ2UgcXVv
dGEgd2FzIHJlYWNoZWQgYW5kIHRoZSB1c2VyIGRlY2xpbmVkIHRvIGdpdmUgbW9yZSBzcGFjZSB0
byB0aGUgZGF0YWJhc2UuIiwgUVVPVEFfRVhDRUVERURfRVJSIH0sCiAgICAgeyAiU3ludGF4RXJy
b3IiLCAiVGhlIGtleXBhdGggYXJndW1lbnQgY29udGFpbnMgYW4gaW52YWxpZCBrZXkgcGF0aC4i
LCBTWU5UQVhfRVJSIH0sCiAgICAgeyAiRGF0YUNsb25lRXJyb3IiLCAiVGhlIGRhdGEgYmVpbmcg
c3RvcmVkIGNvdWxkIG5vdCBiZSBjbG9uZWQgYnkgdGhlIGludGVybmFsIHN0cnVjdHVyZWQgY2xv
bmluZyBhbGdvcml0aG0uIiwgREFUQV9DTE9ORV9FUlIgfSwKLSAgICB7IDAsIDAsIDAgfSwgLy8g
RklYTUU6IFByZXZpb3VzL2xlZ2FjeSB2YWx1ZSB3YXMgSURCX1RZUEVfRVJSLgotICAgIHsgMCwg
MCwgMCB9LCAvLyBGSVhNRTogUHJldmlvdXMvbGVnYWN5IHZhbHVlIHdhcyBJREJfTk9UX1NVUFBP
UlRFRF9FUlIuCiB9OwogCiBzdGF0aWMgY29uc3QgSURCRGF0YWJhc2VFeGNlcHRpb25OYW1lRGVz
Y3JpcHRpb24qIGdldEVycm9yRW50cnkoRXhjZXB0aW9uQ29kZSBlYykKQEAgLTcyLDcgKzY0LDcg
QEAgc3RhdGljIGNvbnN0IElEQkRhdGFiYXNlRXhjZXB0aW9uTmFtZURlc2NyaXB0aW9uKiBnZXRF
cnJvckVudHJ5KEV4Y2VwdGlvbkNvZGUgZWMKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzaXpl
X3QgdGFibGVTaXplID0gV1RGX0FSUkFZX0xFTkdUSChpZGJEYXRhYmFzZUV4Y2VwdGlvbnMpOwot
ICAgIHNpemVfdCB0YWJsZUluZGV4ID0gZWMgLSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9X
Tl9FUlI7CisgICAgc2l6ZV90IHRhYmxlSW5kZXggPSBlYyAtIElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3I7CiAKICAgICByZXR1cm4gdGFibGVJbmRleCA8IHRhYmxlU2l6ZSA/ICZp
ZGJEYXRhYmFzZUV4Y2VwdGlvbnNbdGFibGVJbmRleF0gOiAwOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmgKaW5k
ZXggZDc2NmQwYzg0NDJjMDgxOTJlNTY2ODIyMmYxNTNkMTNmZGE4Mzg2MC4uMTVlNThhZjI4ZWI0
OWY2YTI0MTc3NGFlOTUxNTE5NWUwYjE2NzQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCkBAIC00MywzMCAr
NDMsMjUgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgSURCRGF0YWJhc2VFeGNlcHRp
b25NYXggPSAxMjk5OwogCiAgICAgZW51bSBJREJEYXRhYmFzZUV4Y2VwdGlvbkNvZGUgewotICAg
ICAgICBOT19FUlIgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbk9mZnNldCwKLSAgICAgICAgVU5LTk9X
Tl9FUlIsCi0gICAgICAgIExFR0FDWV9OT05fVFJBTlNJRU5UX0VSUiwgLy8gRklYTUU6IFBsYWNl
aG9sZGVyLCBub3QgaW4gc3BlYy4KLSAgICAgICAgTEVHQUNZX05PVF9GT1VORF9FUlIsIC8vIEZJ
WE1FOiBQbGFjZWhvbGRlci4KLSAgICAgICAgQ09OU1RSQUlOVF9FUlIsCi0gICAgICAgIERBVEFf
RVJSLAotICAgICAgICBMRUdBQ1lfTk9UX0FMTE9XRURfRVJSLCAvLyBGSVhNRTogUGxhY2Vob2xk
ZXIsIG5vdCBpbiBzcGVjLgotICAgICAgICBUUkFOU0FDVElPTl9JTkFDVElWRV9FUlIsCi0gICAg
ICAgIExFR0FDWV9BQk9SVF9FUlIsIC8vIEZJWE1FOiBQbGFjZWhvbGRlci4KLSAgICAgICAgUkVB
RF9PTkxZX0VSUiwKLSAgICAgICAgTEVHQUNZX1RJTUVPVVRfRVJSLCAvLyBGSVhNRTogUGxhY2Vo
b2xkZXIuCi0gICAgICAgIExFR0FDWV9RVU9UQV9FUlIsIC8vIEZJWE1FOiBQbGFjZWhvbGRlci4K
LSAgICAgICAgVkVSX0VSUiwKKyAgICAgICAgTm9FcnJvciA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
T2Zmc2V0LAogCi0gICAgICAgIElEQl9OT1RfRk9VTkRfRVJSLAotICAgICAgICBJREJfSU5WQUxJ
RF9TVEFURV9FUlIsCi0gICAgICAgIElEQl9JTlZBTElEX0FDQ0VTU19FUlIsCi0gICAgICAgIElE
Ql9BQk9SVF9FUlIsCi0gICAgICAgIElEQl9USU1FT1VUX0VSUiwKLSAgICAgICAgSURCX1FVT1RB
X0VYQ0VFREVEX0VSUiwKLSAgICAgICAgSURCX1NZTlRBWF9FUlIsCi0gICAgICAgIElEQl9EQVRB
X0NMT05FX0VSUiwKLSAgICAgICAgTEVHQUNZX0lEQl9UWVBFX0VSUiwgLy8gRklYTUU6IFBsYWNl
aG9sZGVyLgotICAgICAgICBMRUdBQ1lfSURCX05PVF9TVVBQT1JURURfRVJSLCAvLyBGSVhNRTog
UGxhY2Vob2xkZXIuCisgICAgICAgIC8vIEluZGV4ZWREQiB1c2VzIHRoZSBmb2xsb3dpbmcgbmV3
IERPTUV4Y2VwdGlvbiB0eXBlcyB3aXRoIHRoZWlyIHZhcmlvdXMgbWVzc2FnZXM6CisgICAgICAg
IFVua25vd25FcnJvciwKKyAgICAgICAgQ29uc3RyYWludEVycm9yLAorICAgICAgICBEYXRhRXJy
b3IsCisgICAgICAgIFRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciwKKyAgICAgICAgUmVhZE9ubHlF
cnJvciwKKyAgICAgICAgVmVyc2lvbkVycm9yLAorCisgICAgICAgIC8vIEluZGV4ZWREQiByZXVz
ZXMgdGhlIGZvbGxvd2luZyBleGlzdGluZyBET01FeGNlcHRpb24gdHlwZXMsIGJ1dCB3aXRoIElE
Qi1zcGVjaWZpYyBlcnJvciBtZXNzYWdlcy4KKyAgICAgICAgTm90Rm91bmRFcnJvciwKKyAgICAg
ICAgSW52YWxpZFN0YXRlRXJyb3IsCisgICAgICAgIEludmFsaWRBY2Nlc3NFcnJvciwKKyAgICAg
ICAgQWJvcnRFcnJvciwKKyAgICAgICAgVGltZW91dEVycm9yLAorICAgICAgICBRdW90YUV4Y2Vl
ZGVkRXJyb3IsCisgICAgICAgIFN5bnRheEVycm9yLAorICAgICAgICBEYXRhQ2xvbmVFcnJvciwK
ICAgICB9OwogCiAgICAgc3RhdGljIGludCBFcnJvckNvZGVUb0V4Y2VwdGlvbkNvZGUoaW50IGVy
cm9yQ29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHAKaW5kZXggY2I0ODVmNTA0ZmJiMjZmOTA1MWY0ZmU5NGU4ZjlhMDQ4ZmVlYWUzZC4uYzE0
YzY4YzkxZjYzNGFlNzk5MjllM2Y1YjIyMmFkNDMwNzQ5MzU2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBA
QCBzaG9ydCBJREJGYWN0b3J5OjpjbXAoUGFzc1JlZlB0cjxJREJLZXk+IGZpcnN0LCBQYXNzUmVm
UHRyPElEQktleT4gc2Vjb25kLCBFeGNlcAogICAgIEFTU0VSVChzZWNvbmQpOwogCiAgICAgaWYg
KCFmaXJzdC0+aXNWYWxpZCgpIHx8ICFzZWNvbmQtPmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFj
a2VuZEltcGwuY3BwCmluZGV4IGVhYTczM2E1MjhlZjQ1NGFjMzgwZWMyZjBjNjFkNDUxM2NiZjcw
OWMuLjJkNTg0MmNkMTUwNGMxZmRjYTEzNThlMWY4M2Q4ZGFhYjg0OWQzNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLAogewog
ICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3Rv
cmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAgIGlmICghYmFja2luZ1N0b3Jl
KSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwor
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIElEQkZhY3RvcnlC
YWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PElEQkNhbAogICAgIC8vIEZJWE1FOiBFdmVyeXRoaW5nIGZyb20gbm93IG9uIHNob3VsZCBiZSBk
b25lIG9uIGFub3RoZXIgdGhyZWFkLgogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tp
bmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3Rvcnkp
OwogICAgIGlmICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJS
LCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJ
bnRlcm5hbCBlcnJvci4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyMSw3ICsx
MjEsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICBkYXRhYmFzZUJhY2tlbmQt
PmRlbGV0ZURhdGFiYXNlKGNhbGxiYWNrcyk7CiAgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFw
LnJlbW92ZSh1bmlxdWVJZGVudGlmaWVyKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKIH0KIAogUGFzc1JlZlB0cjxJREJCYWNraW5n
U3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdTdG9yZShQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyZWN0
b3J5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVu
KGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyCiAgICAgaWYg
KGl0ID09IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CiAgICAgICAgIFJlZlB0cjxJREJC
YWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlPcmln
aW4sIGRhdGFEaXJlY3RvcnkpOwogICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZSkgewotICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgSURCRmFj
dG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9u
LCBQYXNzUmVmUHRyCiAgICAgICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpCiAgICAgICAgICAgICBt
X2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5k
LmdldCgpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VS
UiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXgu
Y3BwCmluZGV4IGVjMjk4MzdhMTE5MTVjYmUxYTQ2MWFjOWMwY2U0YzFjNmQ5MmE1MmEuLjIyNzc0
OWViZjJmZmFhYzAwN2QxMjA2ZWI3NmY4Mzg5OTQxNDUwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTYzLDExICs2MywxMSBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhcwogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6Om9wZW5DdXJz
b3IiKTsKICAgICBpZiAobV9kZWxldGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAg
ICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJD
dXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOwpA
QCAtOTQsMTEgKzk0LDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQCiB7CiAgICAgSURCX1RS
QUNFKCJJREJJbmRleDo6Y291bnQiKTsKICAgICBpZiAobV9kZWxldGVkKSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
OworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZl
RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CkBAIC0xMjAsMTEgKzEyMCwxMSBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6b3BlbktleUN1cnNvciIp
OwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
ICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1cnNv
cjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250ZXh0LCBlYyk7CkBAIC0x
NjAsMTUgKzE2MCwxNSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cgogewogICAgIElEQl9UUkFD
RSgiSURCSW5kZXg6OmdldCIpOwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJv
cjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICgha2V5UmFuZ2UpIHsKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CkBAIC0xOTIsMTUgKzE5MiwxNSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpn
ZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZgogewogICAgIElE
Ql9UUkFDRSgiSURCSW5kZXg6OmdldEtleSIpOwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkg
ewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElW
RV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICgha2V5UmFuZ2Up
IHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IDFhMDVjMjBkYjk1MjcwZTQ5OWI0YTMwMmUx
Y2Y2ZDI4YTE3ZjZlNjguLjlhZDRiOGQ2ZTM2YmFmMzRlNmUzZDk2NTFhOTExYjc1MTcyYTgyOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4QmFja2VuZEltcGwuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBJREJJbmRleEJhY2tl
bmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNp
Z25lZAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUo
dGhpcywga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW5k
ZXhDdXJzb3IsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X0FCT1JUX0VSUikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIHZvaWQg
SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIElEQklu
ZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIHVuc2lnbgogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENh
bGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rp
b24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAg
ICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT3BlbkluZGV4Q3Vyc29yT3BlcmF0aW9u
OjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVy
ZmFjZTo6SW5kZXhLZXlDdXJzb3IsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7
CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6SW5kZXhDb3VudE9wZXJhdGlvbjo6cGVy
Zm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4gdHJhbnNhY3Rpb24pCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJD
YWwKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4Q291bnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBy
YW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJP
UlRfRVJSKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJREJJ
bmRleEJhY2tlbmRJbXBsOjpJbmRleFJlZmVyZW5jZWRWYWx1ZVJldHJpZXZhbE9wZXJhdGlvbjo6
cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBJREJJbmRleEJh
Y2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2EKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFj
a3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0g
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYg
KCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKEluZGV4UmVmZXJlbmNlZFZhbHVlUmV0cmlldmFs
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24p
KSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpB
Ym9ydEVycm9yKSk7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRy
LCBFeGNlcHRpb25Db2RlJikKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIElEQkluZGV4QmFja2Vu
ZEltcGw6OmdldEtleShQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0
cjxJRAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRy
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhWYWx1ZVJldHJpZXZhbE9wZXJhdGlvbjo6Y3Jl
YXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKaW5kZXggOTJlODQ1NDI2NmI5YWQ3ZjQ2NTgwYzYw
OWQyOTE0OGVkMjE1NGVlOS4uOGE4NDkyY2U1ZTdmZWM3NWFiZGQ1MGYyZDhhY2I5Nzk3YWU2ODA4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFu
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdl
LmNwcApAQCAtNDUsNyArNDUsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5n
ZTo6b25seShQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBFeGNlcHRpb25DbwogewogICAgIFJl
ZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBpZiAoIWtleSB8fCAha2V5LT5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElE
QktleVJhbmdlOjpvbmx5KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlvbkNvCiBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJCb3VuZChQYXNzUmVmUHRy
PElEQktleT4gYm91bmQsIGJvb2wgb3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KCFib3VuZCB8fCAhYm91bmQtPmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
RGF0YUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTY1LDcgKzY1LDcgQEAg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Omxvd2VyQm91bmQoUGFzc1JlZlB0
cjxJREJLZXk+IGJvdW5kLCBib29sIG8KIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJh
bmdlOjp1cHBlckJvdW5kKFBhc3NSZWZQdHI8SURCS2V5PiBib3VuZCwgYm9vbCBvcGVuLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWJvdW5kIHx8ICFib3VuZC0+aXNWYWxpZCgpKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIApAQCAtNzUsMTUgKzc1LDE1IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktl
eVJhbmdlOjp1cHBlckJvdW5kKFBhc3NSZWZQdHI8SURCS2V5PiBib3VuZCwgYm9vbCBvCiBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6Ym91bmQoUGFzc1JlZlB0cjxJREJLZXk+
IGxvd2VyLCBQYXNzUmVmUHRyPElEQktleT4gdXBwZXIsIGJvb2wgbG93ZXJPcGVuLCBib29sIHVw
cGVyT3BlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFsb3dlciB8fCAhbG93ZXIt
PmlzVmFsaWQoKSB8fCAhdXBwZXIgfHwgIXVwcGVyLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
ICh1cHBlci0+aXNMZXNzVGhhbihsb3dlci5nZXQoKSkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICh1cHBlci0+
aXNFcXVhbChsb3dlci5nZXQoKSkgJiYgKGxvd2VyT3BlbiB8fCB1cHBlck9wZW4pKSB7Ci0gICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwCmluZGV4IDZhYjM1NTNiY2E4MGRiYmJmOGRhZTBiMmMzNjI2ZDhhNDI0N2E1MDQuLjcy
Mjg5OTZhZDkzNjJjYThkZGJhOGMyYWFjNTFmYjEyYWI4ZTc0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTc1LDE1
ICs3NSwxNSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogewogICAgIElEQl9UUkFDRSgiSURC
T2JqZWN0U3RvcmU6OmdldCIpOwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGlmICgha2V5UmFuZ2UpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2Fj
dGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpU
UkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
ICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRl
eHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKQEAgLTE0MSwy
NyArMTQxLDI3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vCiAgICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZTo6cHV0Iik7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwogICAg
IGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
bnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90
cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6UmVhZE9ubHlFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0g
dmFsdWUuc2VyaWFsaXplKHN0YXRlKTsKICAgICBpZiAoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9EQVRBX0NMT05FX0VSUjsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUNsb25lRXJyb3I7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlmIChzZXJpYWxpemVkVmFsdWUtPmJsb2JVUkxz
KCkuc2l6ZSgpID4gMCkgewogICAgICAgICAvLyBGSVhNRTogQWRkIEJsb2IvRmlsZS9GaWxlTGlz
dCBzdXBwb3J0Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9EQVRBX0NM
T05FX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUNsb25lRXJy
b3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTczLDI2ICsxNzMsMjYgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZTo6UHV0TW8KICAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0YXRlKGNv
bnRleHQpOwogCiAgICAgaWYgKHB1dE1vZGUgIT0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlOjpDdXJzb3JVcGRhdGUgJiYgdXNlc0luTGluZUtleXMgJiYga2V5KSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBp
ZiAoIXVzZXNJbkxpbmVLZXlzICYmICFoYXNLZXlHZW5lcmF0b3IgJiYgIWtleSkgewotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAg
ICAgaWYgKHVzZXNJbkxpbmVLZXlzKSB7CiAgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhL
ZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKCZyZXF1ZXN0U3RhdGUs
IHZhbHVlLCBrZXlQYXRoKTsKICAgICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtleVBhdGhLZXkt
PmlzVmFsaWQoKSkgewotICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlI7CisgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBpZiAoIWhhc0tleUdl
bmVyYXRvciAmJiAha2V5UGF0aEtleSkgewotICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEYXRhRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBp
ZiAoaGFzS2V5R2VuZXJhdG9yICYmICFrZXlQYXRoS2V5KSB7CiAgICAgICAgICAgICBpZiAoIWNh
bkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZSgmcmVxdWVzdFN0YXRlLCB2YWx1ZSwga2V5UGF0
aCkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VS
UjsKKyAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTIwMCw3ICsyMDAsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpw
dXQoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpQdXRNbwogICAgICAgICAgICAga2V5
ID0ga2V5UGF0aEtleTsKICAgICB9CiAgICAgaWYgKGtleSAmJiAha2V5LT5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCkBAIC0yMjMsMTkgKzIyMywxOSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogewog
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZSIpOwogICAgIGlmIChtX2RlbGV0
ZWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RB
VEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVF
cnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+
aXNBY3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FD
VElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRy
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
IChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6UmVhZE9ubHlFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICgh
a2V5UmFuZ2UpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCkBAIC0yNTgsMTUgKzI1OCwxNSBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeAogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNsZWFyIik7CiAgICAg
aWYgKG1fZGVsZXRlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Oklu
dmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX3Ry
YW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewotICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpSZWFkT25seUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKQEAgLTM1NSwxNSArMzU1LDE1IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiB7CiAgICAg
SURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKICAgICBpZiAoIW1fdHJh
bnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpIHx8IG1fZGVsZXRlZCkgewotICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVy
cm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFrZXlQYXRoLmlzVmFsaWQo
KSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfU1lOVEFYX0VSUjsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6U3ludGF4RXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICBpZiAobmFtZS5pc051bGwoKSkgewpAQCAtMzcxLDcgKzM3
MSw3IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
ICAgICBpZiAoY29udGFpbnNJbmRleChuYW1lKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6Q29uc3RyYWludEVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTM4
Miw3ICszODIsNyBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRl
SW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgIG9wdGlvbnMuZ2V0KCJt
dWx0aUVudHJ5IiwgbXVsdGlFbnRyeSk7CiAKICAgICBpZiAoa2V5UGF0aC50eXBlKCkgPT0gSURC
S2V5UGF0aDo6QXJyYXlUeXBlICYmIG11bHRpRW50cnkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZEFjY2Vzc0Vycm9yOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKQEAgLTQyMCwxMSArNDIwLDExIEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9i
amVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjCiB7
CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6aW5kZXgiKTsKICAgICBpZiAobV9kZWxl
dGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRl
RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobV90cmFuc2FjdGlvbi0+
aXNGaW5pc2hlZCgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9J
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52
YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNDM0LDcgKzQz
NCw3IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAKICAgICBpbnQ2NF90IGluZGV4SWQgPSBm
aW5kSW5kZXhJZChuYW1lKTsKICAgICBpZiAoaW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJ
bnZhbGlkSWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX05PVF9G
T1VORF9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5vdEZvdW5kRXJy
b3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNDU4LDE2ICs0NTgsMTYgQEAgUGFz
c1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMKIHZvaWQgSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX3RyYW5z
YWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSB8fCBtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaW50NjRfdCBpbmRleElkID0gZmluZEluZGV4
SWQobmFtZSk7CiAgICAgaWYgKGluZGV4SWQgPT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElk
KSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJS
OworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOb3RGb3VuZEVycm9yOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC00ODYsMTEgKzQ4NiwxMSBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleAogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3Ii
KTsKICAgICBpZiAobV9kZWxldGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBp
ZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJDdXJz
b3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgY29udGV4dCwgZWMpOwpAQCAt
NTE3LDExICs1MTcsMTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGEKIHsKICAgICBJREJfVFJB
Q0UoIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkg
ewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElW
RV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRl
KHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAK
aW5kZXggMTAyNDBlMTA1ODg5NDk4MzE2ZTcyMmQzZTdmY2M4YWQxNGYzNDRlZC4uY2E4YWQ2MTcy
ZGU5ODE1YjU2ZWRkMzMxYTlhNzM1NmVjZjE5OGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cgogICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soT2JqZWN0U3RvcmVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBr
ZXlSYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
QUJPUlRfRVJSKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6
cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBQYXMKICAgICBBU1NFUlQoYXV0b0luY3JlbWVudCgpIHx8IGtleS5n
ZXQoKSk7CiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soT2JqZWN0U3RvcmVT
dG9yYWdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbiwgbmV3SW5kZXhJZHMucmVsZWFzZSgpLCBuZXdJbmRleEtleXMucmVs
ZWFzZSgpKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6QWJvcnRFcnJvcikpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMzM5LDcgKzMzOSw3IEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8
SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjCiAgICAgYm9vbCBvayA9IGJhY2tpbmdTdG9yZSgpLT5r
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBkYXRhYmFzZUlkKCksIGlkKCksICpwcmltYXJ5S2V5LCAmcmVjb3JkSWRlbnRpZmllciwg
Zm91bmQpOwogICAgIGlmICghb2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJrZXlFeGlzdHNJbk9i
amVjdFN0b3JlIHJlcG9ydGVkIGFuIGVycm9yIik7Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5hYm9y
dChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05f
RVJSLCAiSW50ZXJuYWwgZXJyb3Igc2V0dGluZyBpbmRleCBrZXlzLiIpKTsKKyAgICAgICAgdHJh
bnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igc2V0dGluZyBpbmRleCBrZXlzLiIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIWZvdW5kKSB7CkBAIC0zNTEsNyAr
MzUxLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoUGFz
c1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGMKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdl
OwogICAgIGlmICghbWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlvbiwgdGhpcywgcHJpbWFyeUtl
eSwgZmFsc2UsIGluZGV4SWRzLCBpbmRleEtleXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1lc3Nh
Z2UpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGRlYWwgd2l0aCBlcnJvck1lc3NhZ2Ug
aGVyZS4gbWFrZUluZGV4V3JpdGVycyBvbmx5IGZhaWxzIG9uIHVuaXF1ZW5lc3MgY29uc3RyYWlu
dCBlcnJvcnMuCi0gICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAiRHVwbGljYXRlIGlu
ZGV4IGtleXMgZXhpc3QgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CisgICAgICAgIHRyYW5zYWN0
aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNvbnN0cmFpbnRFcnJvciwgIkR1cGxpY2F0ZSBpbmRleCBrZXlzIGV4aXN0IGluIHRoZSBvYmpl
Y3Qgc3RvcmUuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTksNyArMzk5LDcg
QEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZVN0b3JhZ2VPcGVy
YXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3UKICAgICAgICAgUmVmUHRyPElEQktleT4gYXV0b0lu
Y0tleSA9IG9iamVjdFN0b3JlLT5nZW5lcmF0ZUtleSh0cmFuc2FjdGlvbik7CiAgICAgICAgIGtl
eVdhc0dlbmVyYXRlZCA9IHRydWU7CiAgICAgICAgIGlmICghYXV0b0luY0tleS0+aXNWYWxpZCgp
KSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIk1heGltdW0ga2V5IGdl
bmVyYXRvciB2YWx1ZSByZWFjaGVkLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFp
bnRFcnJvciwgIk1heGltdW0ga2V5IGdlbmVyYXRvciB2YWx1ZSByZWFjaGVkLiIpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBrZXkgPSBhdXRvSW5jS2V5OwpAQCAt
NDEyLDExICs0MTIsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpPYmplY3RT
dG9yZVN0b3JhZ2VPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3UKICAgICAgICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwogICAgICAgICBib29sIG9rID0gb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9y
ZSgpLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwg
KmtleSwgJnJlY29yZElkZW50aWZpZXIsIGZvdW5kKTsKICAgICAgICAgaWYgKCFvaykgewotICAg
ICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvciBjaGVja2luZyBr
ZXkgZXhpc3RlbmNlLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIklu
dGVybmFsIGVycm9yIGNoZWNraW5nIGtleSBleGlzdGVuY2UuIikpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChmb3VuZCkgewotICAgICAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6Q09OU1RSQUlOVF9FUlIsICJLZXkgYWxyZWFkeSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9y
ZS4iKSk7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsICJLZXkgYWxyZWFk
eSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpPYmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhl
Y3UKICAgICBWZWN0b3I8T3duUHRyPEluZGV4V3JpdGVyPiA+IGluZGV4V3JpdGVyczsKICAgICBT
dHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGlmICghbWFrZUluZGV4V3JpdGVycyh0cmFuc2FjdGlv
biwgb2JqZWN0U3RvcmUuZ2V0KCksIGtleSwga2V5V2FzR2VuZXJhdGVkLCAqaW5kZXhJZHMsICpp
bmRleEtleXMsICZpbmRleFdyaXRlcnMsICZlcnJvck1lc3NhZ2UpKSB7Ci0gICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OkNPTlNUUkFJTlRfRVJSLCBlcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29u
c3RyYWludEVycm9yLCBlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0
U3RvcmVTdG9yYWdlT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1CiAgICAgaWYgKGF1dG9J
bmNyZW1lbnQgJiYgcHV0TW9kZSAhPSBDdXJzb3JVcGRhdGUgJiYga2V5LT50eXBlKCkgPT0gSURC
S2V5OjpOdW1iZXJUeXBlKSB7CiAgICAgICAgIGJvb2wgb2sgPSBvYmplY3RTdG9yZS0+dXBkYXRl
S2V5R2VuZXJhdG9yKHRyYW5zYWN0aW9uLCBrZXkuZ2V0KCksICFrZXlXYXNHZW5lcmF0ZWQpOwog
ICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIklu
dGVybmFsIGVycm9yIHVwZGF0aW5nIGtleSBnZW5lcmF0b3IuIikpOworICAgICAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgdXBkYXRpbmcga2V5IGdlbmVyYXRv
ci4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC00NTcsNyAr
NDU3LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hl
ZHVsZVRhc2soT2JqZWN0U3RvcmVEZWxldGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGtleVJh
bmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJv
cihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9S
VF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwogfQogCiB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlRGVsZXRpb25PcGVyYXRpb246OnBlcmZv
cm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgSURCCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJw
Q2FsbGJhY2tzOwogCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9iamVjdFN0
b3JlQ2xlYXJPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkp
Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJv
cnRFcnJvcikpOwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0
b3JlQ2xlYXJPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24pCkBAIC01MDgsNyArNTA4LDcgQEAgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4
KGludDYKICAgICBtX21ldGFkYXRhLm1heEluZGV4SWQgPSBpZDsKIAogICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhDcmVhdGVJbmRleE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGlu
ZGV4LCB0cmFuc2FjdGlvbiksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBpbmRleCkpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTU0
MSw3ICs1NDEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4
KGludDY0X3QgaW5kZXhJZCwgSURCVHJhbnNhY3Rpb25CYWNrZQogICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7CiAKICAgICBp
ZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soRGVsZXRlSW5kZXhPcGVyYXRpb246OmNyZWF0
ZSh0aGlzLCBpbmRleCwgdHJhbnNhY3Rpb24pLCBEZWxldGVJbmRleEFib3J0T3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgaW5kZXgpKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBtX2luZGV4ZXMucmVtb3ZlKGluZGV4SWQpOwpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJh
bmdlPiByYW5nZSwgSURCQ3VyCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIp
OwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuT2JqZWN0U3RvcmVDdXJz
b3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCByYW5nZSwgZGlyZWN0aW9uLCBjYWxsYmFja3MsIHRh
c2tUeXBlLCB0cmFuc2FjdGlvbikpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIp
KTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwogICAgIH0KIH0KIApAQCAtNTg5LDcg
KzU4OSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8CiAgICAgUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20o
dHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmpl
Y3RTdG9yZUNvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgcmFuZ2UsIGNhbGxiYWNrcywgdHJh
bnNhY3Rpb24pKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6T2JqZWN0U3RvcmVDb3VudE9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVu
REJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5E
QlJlcXVlc3QuY3BwCmluZGV4IDU1MWQwZGQwOTNiYTdjZTBmZDA2ODNjMzVhYjUwMTE3YzIzZTE1
MWIuLmYyZTc2ZDcxNTA1NjExOWU0ODdkNTc2ODgwYTRkMGY4ZDdmZmRmMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3Bw
CkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBJREJPcGVuREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIC8vIGFuICJlcnJvciIgZXZlbnQgc2hvdWxk
IGJlIGZpcmVkIGluc3RlYWQuCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LnN1Y2Nlc3NFdmVudCAmJiBtX3Jlc3VsdC0+aWRiRGF0YWJhc2UoKS0+aXNDbG9zZVBlbmRpbmco
KSkgewogICAgICAgICBtX3Jlc3VsdC5jbGVhcigpOwotICAgICAgICBvbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUiwgIlRo
ZSBjb25uZWN0aW9uIHdhcyBjbG9zZWQuIikpOworICAgICAgICBvbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgIlRoZSBjb25u
ZWN0aW9uIHdhcyBjbG9zZWQuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4
IDAzYTExYjk0NDM4YmMwNzM5ZWFjNmRlMWNiYTFhMGU4MDFkMTJlZmUuLjhlNTZhODU1NDRkM2Nm
M2U5N2Q4YmRjZGE4ZTg5ZWRhNGQxZjFhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC05Miw3ICs5Miw3IEBAIElEQlJlcXVlc3Q6
On5JREJSZXF1ZXN0KCkKIFBhc3NSZWZQdHI8SURCQW55PiBJREJSZXF1ZXN0OjpyZXN1bHQoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBET05FKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gbV9yZXN1bHQ7CkBAIC0xMDEs
NyArMTAxLDcgQEAgUGFzc1JlZlB0cjxJREJBbnk+IElEQlJlcXVlc3Q6OnJlc3VsdChFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKIFBhc3NSZWZQdHI8RE9NRXJyb3I+IElEQlJlcXVlc3Q6OmVycm9y
KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gRE9O
RSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFU
RV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVy
cm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIG1fZXJyb3I7CkBAIC0x
MTAsNyArMTEwLDcgQEAgUGFzc1JlZlB0cjxET01FcnJvcj4gSURCUmVxdWVzdDo6ZXJyb3IoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB1bnNpZ25lZCBzaG9ydCBJREJSZXF1ZXN0OjplcnJvckNv
ZGUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBE
T05FKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRl
RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gbV9lcnJvckNvZGU7
CkBAIC0xMTksNyArMTE5LDcgQEAgdW5zaWduZWQgc2hvcnQgSURCUmVxdWVzdDo6ZXJyb3JDb2Rl
KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogU3RyaW5nIElEQlJlcXVlc3Q6OndlYmtpdEVycm9y
TWVzc2FnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAobV9yZWFkeVN0YXRl
ICE9IERPTkUpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFM
SURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlk
U3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICByZXR1cm4g
bV9lcnJvck1lc3NhZ2U7CkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjphYm9y
dCgpCiAgICAgbV9lcnJvci5jbGVhcigpOwogICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nKCk7
CiAgICAgbV9yZXN1bHQuY2xlYXIoKTsKLSAgICBvbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgIG9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9y
KSk7CiAgICAgbV9yZXF1ZXN0QWJvcnRlZCA9IHRydWU7CiB9CiAKQEAgLTQ3MCw3ICs0NzAsNyBA
QCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CiAKICAgICAvLyBGSVhNRTogV2hlbiB3ZSBhbGxvdyBjdXN0b20gZXZlbnQgZGlzcGF0Y2hpbmcs
IHRoaXMgd2lsbCBwcm9iYWJseSBuZWVkIHRvIGNoYW5nZS4KICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmJsb2NrZWRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS51
cGdyYWRlbmVlZGVkRXZlbnQsICJldmVudCB0eXBlIHdhcyAlcyIsIGV2ZW50LT50eXBlKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgY29uc3QgYm9vbCBzZXRUcmFuc2FjdGlvbkFjdGl2
ZSA9IG1fdHJhbnNhY3Rpb24gJiYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nl
c3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZl
bnQgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgbV9lcnJv
ckNvZGUgIT0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICBjb25z
dCBib29sIHNldFRyYW5zYWN0aW9uQWN0aXZlID0gbV90cmFuc2FjdGlvbiAmJiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCB8fCAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuZXJyb3JFdmVudCAmJiBtX2Vycm9yQ29kZSAhPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
QWJvcnRFcnJvcikpOwogCiAgICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZlKQogICAgICAgICBt
X3RyYW5zYWN0aW9uLT5zZXRBY3RpdmUodHJ1ZSk7CkBAIC01MDYsNyArNTA2LDcgQEAgYm9vbCBJ
REJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogdm9pZCBJ
REJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCkKIHsKICAgICBpZiAo
bV90cmFuc2FjdGlvbiAmJiAhbV9yZXF1ZXN0QWJvcnRlZCkgewotICAgICAgICBtX3RyYW5zYWN0
aW9uLT5zZXRFcnJvcihET01FcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpnZXRF
cnJvck5hbWUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKSk7CisgICAgICAg
IG1fdHJhbnNhY3Rpb24tPnNldEVycm9yKERPTUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OmdldEVycm9yTmFtZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpKTsK
ICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFi
b3J0KHVudXNlZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDgzN2Q1NDZhN2NmZjBjMGZmMWQxMjQ0YjE2
ZmU3Mzk2Yzc0N2VmMDcuLjQ3OWYxMmExNTU3ZjQxZTY0NTlmZjNlYjUxNDMzMmJjN2E2NjQ4NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRFcnJv
cihQYXNzUmVmUHRyPERPTUVycm9yPiBlcnJvcikKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVkKSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtMTU1LDE0ICsxNTUsMTQgQEAgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
RXhjZXAKICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKIAogICAgIGlmICghaXNWZXJzaW9uQ2hh
bmdlKCkgJiYgIW1fb2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhuYW1lKSkgewotICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfTk9UX0ZPVU5EX0VSUjsKKyAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tm90Rm91bmRFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCiAgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkID0gbV9kYXRhYmFzZS0+ZmluZE9i
amVjdFN0b3JlSWQobmFtZSk7CiAgICAgaWYgKG9iamVjdFN0b3JlSWQgPT0gSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YTo6SW52YWxpZElkKSB7CiAgICAgICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2Uo
KSk7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJS
OworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOb3RGb3VuZEVycm9yOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9y
dChFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hpbmcgfHwg
bV9zdGF0ZSA9PSBGaW5pc2hlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IGI4Yzc3ZWQ3ZDBlMDVlODZlZDY5MDc5N2ZmNWJkNzA1
ZTdlZmNjN2QuLmM1NDJmZGQ3OTA4OTllZWFiYTE0NDEyNGU4ZTMyZTkzNDNlNzA0ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6On5JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKCkKIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpv
YmplY3RTdG9yZShpbnQ2NF90IGlkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9z
dGF0ZSA9PSBGaW5pc2hlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
REJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTk5LDcg
Kzk5LDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2soVGFz
a1R5cGUgdHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGUKIAogdm9pZCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjphYm9ydCgpCiB7Ci0gICAgYWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsK
KyAgICBhYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjphYm9ydChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9y
KQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29t
bWl0KCkKICAgICAgICAgbV9jYWxsYmFja3MtPm9uQ29tcGxldGUoKTsKICAgICAgICAgbV9kYXRh
YmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQodGhpcyk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIp
KTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7
CiAgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWRBbmRBYm9ydEZpcmVkKHRo
aXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgKaW5kZXggYjBlNjNkNDI2ZTA3MDA5ZjI3ZjhmNjhh
MTA5ZDQ1OGUzOGY0NTU2Ny4uOGMwMGEwZjAyZTUwYWI1OGM3MTFlNDBjZWNiZTIzZDU0NWJhZjE4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJh
c2VFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJE
YXRhYmFzZUV4Y2VwdGlvbi5oCkBAIC0zNCw4ICszNCw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogZW51bSBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbiB7Ci0gICAgV2ViSURCRGF0YWJhc2VFeGNl
cHRpb25EYXRhRXJyb3IgPSAxMjA1LAotICAgIFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uUXVvdGFF
cnJvciA9IDEyMTgsCisgICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IgPSAxMjAz
LAorICAgIFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uUXVvdGFFcnJvciA9IDEyMTIsCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggM2VlOWZjYWM1NGVjNWM5MmY5Yjk4MTFiMzU4
ZmQ4ZmQ3MjI1ZDMwZi4uNDU3YjM3MDZjY2IyZjE3MGMzNzk0ZmM2ZGM0ZTk0OTUzYmZmYmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKQEAgLTQ3OSw4ICs0NzksOCBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YlZpZXc6OlVzZXJDb250ZW50SW5qZWN0SW5Ub3BGcmFtZU9ubHksIEluamVjdEluVAogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWV3OjpVc2VyU3R5bGVJbmplY3RJbkV4aXN0aW5n
RG9jdW1lbnRzLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViVmlldzo6VXNlclN0eWxlSW5qZWN0SW5TdWJzZXF1ZW50RG9jdW1lbnRz
LCBJbmplY3RJblN1YnNlcXVlbnREb2N1bWVudHMpOwogCi1DT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uRGF0YUVycm9yLCBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6REFUQV9FUlIpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRh
YmFzZUV4Y2VwdGlvblF1b3RhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfUVVPVEFf
RVhDRUVERURfRVJSKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCRGF0YWJh
c2VFeGNlcHRpb25EYXRhRXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3IpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvblF1b3Rh
RXJyb3IsIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpRdW90YUV4Y2VlZGVkRXJyb3IpOwogCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YklEQktleTo6SW52YWxpZFR5cGUsIElEQktleTo6SW52YWxpZFR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRl
eCAyODk5NWVjNjYwZTMxZmY3Y2VmYWQ5M2ViM2JkYTIzNDFhYTFlZmY4Li5mZmY1NDk2NWU3Mzkw
ZGFhOWFjOWRhYmU1NDcxMjg3MmEzMjNhZTNmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAtMTc4LDcgKzE3OCw3
IEBAIGJvb2wgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJbmRleGVkREIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAgICAgfQogCiAgICAgaWYgKCFhbGxvd2VkKQot
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoV2ViSURCRGF0YWJhc2VFcnJvcihJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJUaGUgdXNlciBkZW5pZWQgcGVybWlzc2lvbiB0byBh
Y2Nlc3MgdGhlIGRhdGFiYXNlLiIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKFdlYklE
QkRhdGFiYXNlRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlRoZSB1
c2VyIGRlbmllZCBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgZGF0YWJhc2UuIikpOwogCiAgICAg
cmV0dXJuIGFsbG93ZWQ7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177280</attachid>
            <date>2012-12-03 10:07:29 -0800</date>
            <delta_ts>2012-12-03 10:54:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103759-20121203100456.patch</filename>
            <type>text/plain</type>
            <size>71892</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Mjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0YTNkZjM2YjJmYjJm
ODZlOGQzYWRkMGFkZTk4MGZjMDFhZmY0ZS4uYTM1NzRmYWZhMmE5ZDYxM2FjNmY3MjdkNjMzMTc3
Nzg5NzhmMDcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMi0xMi0wMyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogUmVu
YW1lIGV4Y2VwdGlvbiBlbnVtIG1lbWJlcnMgZnJvbSBVR0xZX0VSUiB0byBQcmV0dHlFcnJvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQg
SURCRGF0YWJhc2VFeGNlcHRpb24gaXNuJ3QgZXhwb3NlZCB0byBzY3JpcHQgd2l0aCBjb25zdGFu
dHMsIHRoZSBleGNlcHRpb24gdHlwZXMKKyAgICAgICAgY2FuIGJlIHJlbmFtZWQgdG8gbWF0Y2gg
dGhlIG11Y2ggZnJpZW5kbGllciBuYW1lcyB1c2VkIGluIG5ld2VyIGl0ZXJhdGlvbnMgb2YgdGhl
IHNwZWMuIEFsc28KKyAgICAgICAgcmVtb3ZlIHRoZSBsZWdhY3kvdW51c2VkIHR5cGVzLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCBjb25zdGFudCByZW5hbWVzLgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6YWR2YW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVsZXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rp
b25XaXRoVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNl
cHRpb24uY3BwOiBUaWR5aW5nIGFuZCByZW5hbWluZy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RXJyb3JFbnRyeSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VFeGNlcHRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmNtcCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkluZGV4OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldEtl
eSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQklu
ZGV4QmFja2VuZEltcGw6OmdldEtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Om9ubHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Omxvd2VyQm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5UmFuZ2U6OnVwcGVyQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFu
Z2U6OmJvdW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlU3RvcmFn
ZU9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPcGVuREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVl
c3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OmVycm9yQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp3ZWJraXRFcnJv
ck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6YWJvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OmNvbW1pdCk6CisKIDIwMTItMTEtMzAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MzYxNDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGE1ZjE0NGZlYTQ2M2RiZTJjZWQ3
NWUzOGJlYzhlMDNmZTFlMzE4ZjcuLjI0YzI4YTIxYTA4NTYwNGQ2OTA0Y2Q0MTE0NWQ5ZmI5ZWE2
NjdkZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MTItMDMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRl
eGVkREI6IFJlbmFtZSBleGNlcHRpb24gZW51bSBtZW1iZXJzIGZyb20gVUdMWV9FUlIgdG8gUHJl
dHR5RXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBJREJEYXRhYmFzZUV4Y2VwdGlvbiBlbnVtIG5hbWVzL3ZhbHVlcyB0byBtYXRjaCBX
ZWJDb3JlLgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmg6Cisg
ICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9JREJG
YWN0b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tl
bmRQcm94eTo6YWxsb3dJbmRleGVkREIpOgorICAgICAgICAqIHRlc3RzL0lEQlJlcXVlc3RUZXN0
LmNwcDoKKwogMjAxMi0xMS0zMCAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFN1cHByZXNzIHRoZSBuZXcgc2VwYXJhYmxlIG1h
c2sgYmx1cnMgaW4gc2tpYSB1bnRpbCB0aGUgdGVzdHMgY2FuIGJlIHJlYmFzZWxpbmVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMWFh
ZjJiMjNkODY5ZWFjOGUzZmU2ZWIzYTJiOTZhMDg3NGFjMTM5MC4uZDQxMWRhOTM3NWVmYWI5MTBj
YmQ2NWU3ZDliMWU0NGM5MzA4M2RjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0xMjksMTUgKzEyOSwxNSBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgU2NyaXB0VmFs
dWUmIHZhbHVlLAogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjp1cGRhdGUiKTsKIAogICAgIGlm
ICghbV9nb3RWYWx1ZSB8fCBpc0tleUN1cnNvcigpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgp
KSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJlYWRPbmx5RXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCBTY3JpcHRWYWx1ZSYg
dmFsdWUsCiAgICAgaWYgKHVzZXNJbkxpbmVLZXlzKSB7CiAgICAgICAgIFJlZlB0cjxJREJLZXk+
IGtleVBhdGhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKG1fcmVx
dWVzdC0+cmVxdWVzdFN0YXRlKCksIHZhbHVlLCBrZXlQYXRoKTsKICAgICAgICAgaWYgKCFrZXlQ
YXRoS2V5IHx8ICFrZXlQYXRoS2V5LT5pc0VxdWFsKG1fY3VycmVudFByaW1hcnlLZXkuZ2V0KCkp
KSB7Ci0gICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAg
ICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtMTU5LDEyICsxNTksMTIgQEAgdm9p
ZCBJREJDdXJzb3I6OmFkdmFuY2UobG9uZyBsb25nIGNvdW50LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6YWR2YW5jZSIpOwogICAgIGlmICghbV9nb3RW
YWx1ZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0
ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9u
LT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
ODQsMTcgKzE4NCwxNyBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklE
QkN1cnNvcjo6Y29udGludWUiKTsKICAgICBpZiAoa2V5ICYmICFrZXktPmlzVmFsaWQoKSkgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2dvdFZhbHVlKSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIwMiwxMiArMjAyLDEyIEBAIHZvaWQgSURCQ3Vyc29yOjpjb250
aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICBBU1NFUlQobV9jdXJyZW50S2V5KTsKICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09
IElEQkN1cnNvcjo6TkVYVCB8fCBtX2RpcmVjdGlvbiA9PSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQ
TElDQVRFKSB7CiAgICAgICAgICAgICBpZiAoIW1fY3VycmVudEtleS0+aXNMZXNzVGhhbihrZXku
Z2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlI7CisgICAgICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVy
cm9yOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGlmICgha2V5LT5pc0xlc3NUaGFuKG1fY3VycmVudEtleS5nZXQo
KSkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VS
UjsKKyAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0y
MjUsMTYgKzIyNSwxNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6ZGVsZXRl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogewogICAgIElEQl9UUkFD
RSgiSURCQ3Vyc29yOjpkZWxldGUiKTsKICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZl
KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5B
Q1RJVkVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAobV90cmFu
c2FjdGlvbi0+aXNSZWFkT25seSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OlJFQURfT05MWV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJl
YWRPbmx5RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlmICghbV9nb3RW
YWx1ZSB8fCBpc0tleUN1cnNvcigpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBS
ZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJ
REJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5j
cHAKaW5kZXggMmNjMWI4ZmQxMzI0YWI4MGVkNGI2ODhiM2ZlZTVmNjg0MmFmZTk5Ny4uODY0ZTlm
YWRlYjNmZWU2MWM3NDU4NjlhNmM1YjQ3YjhiYzQ0MmMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApA
QCAtOTksNyArOTksNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0
aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SQogICAgIElEQl9UUkFDRSgi
SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlIik7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKG1fdGFza1R5cGUsIEN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIGtleSwgY2FsbGJhY2tzKSkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsK
KyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwogfQogCiB2b2lkIElEQkN1cnNvckJhY2tl
bmRJbXBsOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZv
aWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gcHJwQ2FsbGJhY2tzOwogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGNvdW50LCBjYWxsYmFja3MpKSkK
LSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9y
dEVycm9yKSk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OkN1cnNvckFkdmFuY2VP
cGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIElE
QkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQ
YXNzUmVmUHRyPElEQkNhbAogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OnBy
ZWZldGNoQ29udGludWUiKTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBw
cnBDYWxsYmFja3M7CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2sobV90YXNr
VHlwZSwgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBudW1i
ZXJUb0ZldGNoLCBjYWxsYmFja3MpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikp
OworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBD
dXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IGU3OTljMGRiMmVjYWFiNWFkYzRmM2JlMjc3YTYyNjI0ZjRmZjZhY2MuLjczODIz
YzVmZDk0YTJhZTAwODI2ZmYzYjM1MGJkNWY3MzYxZDFhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTEzMywxMSArMTMzLDEx
IEBAIFBhc3NSZWZQdHI8SURCQW55PiBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNvbnN0CiBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBpZiAoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKSB7Ci0gICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5p
c0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE1
MiwxMiArMTUyLDEyIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvCiAgICAgfQogCiAgICAgaWYg
KGNvbnRhaW5zT2JqZWN0U3RvcmUobmFtZSkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkNvbnN0cmFpbnRFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgaWYg
KCFrZXlQYXRoLmlzTnVsbCgpICYmICFrZXlQYXRoLmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfU1lOVEFYX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6U3ludGF4RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IApAQCAtMTY2LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvCiAgICAgICAgIG9w
dGlvbnMuZ2V0KCJhdXRvSW5jcmVtZW50IiwgYXV0b0luY3JlbWVudCk7CiAKICAgICBpZiAoYXV0
b0luY3JlbWVudCAmJiAoKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmluZ1R5cGUg
JiYga2V5UGF0aC5zdHJpbmcoKS5pc0VtcHR5KCkpIHx8IGtleVBhdGgudHlwZSgpID09IElEQktl
eVBhdGg6OkFycmF5VHlwZSkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SURCX0lOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SW52YWxpZEFjY2Vzc0Vycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE4
OSwxNyArMTg5LDE3IEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvCiB2b2lkIElEQkRhdGFiYXNl
OjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmICghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5pc0FjdGl2
ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rp
b25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaW50NjRfdCBv
YmplY3RTdG9yZUlkID0gZmluZE9iamVjdFN0b3JlSWQobmFtZSk7CiAgICAgaWYgKG9iamVjdFN0
b3JlSWQgPT0gSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW52YWxpZElkKSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJSOworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOb3RGb3VuZEVycm9yOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2NvcGUsIGNvbnN0IFN0cmlu
ZyYgbW9kZVN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFzY29wZS5zaXpl
KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZEFjY2Vz
c0Vycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChtX3Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBtX2Nsb3NlUGVuZGluZykgewotICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2NvcGUuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaW50NjRfdCBvYmplY3RTdG9yZUlkID0gZmluZE9iamVjdFN0b3JlSWQoc2NvcGVbaV0pOwog
ICAgICAgICBpZiAob2JqZWN0U3RvcmVJZCA9PSBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZh
bGlkSWQpIHsKLSAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1Rf
Rk9VTkRfRVJSOworICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tm90Rm91
bmRFcnJvcjsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIG9iamVj
dFN0b3JlSWRzLmFwcGVuZChvYmplY3RTdG9yZUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5k
ZXggM2RkOWZmODA1ZmJlZTgyN2IwMDA4N2UwZjVhOGJlMjJkNDBiZGJiNi4uYWIwYTljMmIzODQ0
YzMwYTVjZWQ0NDljMzUzYmM4ZjU0MjA4OTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAg
LTIyNSw3ICsyMjUsNyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0UwogICAgIG1fbWV0YWRhdGEu
bWF4T2JqZWN0U3RvcmVJZCA9IGlkOwogCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVU
YXNrKENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmUs
IHRyYW5zYWN0aW9uKSwgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG9iamVjdFN0b3JlKSkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRl
T2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kCiAgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsK
IAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhEZWxldGVPYmplY3RTdG9yZU9w
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbiksIERlbGV0ZU9i
amVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZSkpKSB7Ci0g
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VS
UjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2
ZUVycm9yOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fb2JqZWN0U3RvcmVzLnJlbW92
ZShpZCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpW
ZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICBB
U1NFUlQodmVyc2lvbiA+IG9sZFZlcnNpb24pOwogICAgIGRhdGFiYXNlLT5tX21ldGFkYXRhLmlu
dFZlcnNpb24gPSB2ZXJzaW9uOwogICAgIGlmICghZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51
cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24pKSB7
Ci0gICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0
aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdl
LiIpOwogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwogICAgICAgICB0cmFuc2Fj
dGlvbi0+YWJvcnQoZXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0zMTUsNyArMzE1LDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRG
aXJlZChQYXNzUmVmUHRyPElEQlRyYW4KICAgICAgICAgLy8gaGFsZiIgb3BlbiBjYWxsIHdhaXRp
bmcgZm9yIHVzIGluIHByb2Nlc3NQZW5kaW5nQ2FsbHMuCiAgICAgICAgIC8vIEZJWE1FOiBXaGVu
IHdlIG5vIGxvbmdlciBzdXBwb3J0IHNldFZlcnNpb24sIGFzc2VydCBzdWNoIGEgdGhpbmcuCiAg
ICAgICAgIGlmIChtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uKSB7Ci0gICAgICAg
ICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uLT5jYWxsYmFja3MoKS0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9B
Qk9SVF9FUlIsICJWZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZCBpbiB1cGdy
YWRlbmVlZGVkIGV2ZW50IGhhbmRsZXIuIikpOworICAgICAgICAgICAgbV9wZW5kaW5nU2Vjb25k
SGFsZk9wZW5XaXRoVmVyc2lvbi0+Y2FsbGJhY2tzKCktPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yLCAiVmVyc2lvbiBjaGFu
Z2UgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQgaW4gdXBncmFkZW5lZWRlZCBldmVudCBoYW5kbGVy
LiIpKTsKICAgICAgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24ucmVs
ZWFzZSgpOwogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKQEAgLTQw
MSw3ICs0MDEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9u
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0gSW52YWxpZElkICYmICFvcGVuSW50ZXJuYWwo
KSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsK
KyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX21ldGFkYXRhLnZlcnNpb24gPT0gTm9TdHJp
bmdWZXJzaW9uICYmIG1fbWV0YWRhdGEuaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pIHsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+CiAgICAgICAgIGlmIChvcGVuSW50ZXJuYWwoKSkKICAgICAgICAgICAgIEFTU0VSVChtX21l
dGFkYXRhLmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVy
bmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVy
bmFsIGVycm9yLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTQ3Miw3ICs0NzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0
aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKHZlcnNpb24gPCBtX21ldGFkYXRhLmludFZlcnNpb24pIHsKLSAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VkVSX0VSUiwgU3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lv
biAoJWxsZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0
aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNpb24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWV0
YWRhdGEuaW50VmVyc2lvbikpKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlZlcnNpb25FcnJvciwgU3Ry
aW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxsZCkgaXMgbGVzcyB0aGFuIHRo
ZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNp
b24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWV0YWRhdGEuaW50VmVyc2lvbikpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHZlcnNpb24gPT0gbV9tZXRhZGF0YS5p
bnRWZXJzaW9uKTsKQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFjawog
ICAgIH0KICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGlmICghbV9iYWNraW5nU3Rv
cmUtPmRlbGV0ZURhdGFiYXNlKG1fbWV0YWRhdGEubmFtZSkpIHsKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX21ldGFkYXRhLnZlcnNpb24gPSBOb1N0cmluZ1ZlcnNpb247CkBAIC01MTgsNyArNTE4LDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MKIAogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
cmVtb3ZlKGNhbGxiYWNrcyk7CiAgICAgaWYgKG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZl
cnNpb24gJiYgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbi0+ZGF0YWJhc2VDYWxs
YmFja3MoKSA9PSBjYWxsYmFja3MpIHsKLSAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5X
aXRoVmVyc2lvbi0+Y2FsbGJhY2tzKCktPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSLCAiVGhlIGNvbm5lY3Rpb24gd2Fz
IGNsb3NlZC4iKSk7CisgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24t
PmNhbGxiYWNrcygpLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgIlRoZSBjb25uZWN0aW9uIHdhcyBjbG9zZWQuIikpOwog
ICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uLnJlbGVhc2UoKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlRXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlRXhjZXB0aW9uLmNwcAppbmRleCBhMzViMDNjNTZiNzlmMzAxMTVjYjMxNzYyYmNk
MDc2ZTY1ZmFhYjY5Li41ZjExY2NhMDkyZmU1MTEzMTc3ZWZiYjMyOTY3YzVmNzdmMWIzMDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4
Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VFeGNlcHRpb24uY3BwCkBAIC00MSwxNyArNDEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVj
dCBJREJEYXRhYmFzZUV4Y2VwdGlvbk5hbWVEZXNjcmlwdGlvbiB7CiB9IGlkYkRhdGFiYXNlRXhj
ZXB0aW9uc1tdID0gewogICAgIC8vIFRoZXNlIGFyZSBJREItc3BlY2lmaWMgZXJyb3JzIGZyb20g
dGhlIHNwZWMuCiAgICAgeyAiVW5rbm93bkVycm9yIiwgIkFuIHVua25vd24gZXJyb3Igb2NjdXJy
ZWQgd2l0aGluIEluZGV4ZWQgRGF0YWJhc2UuIiwgMCB9LAotICAgIHsgIk5vblRyYW5zaWVudEVy
cm9yIiwgIk5vblRyYW5zaWVudEVycm9yIiwgMCB9LCAvLyBGSVhNRTogTm8gbG9uZ2VyIGluIHRo
ZSBzcGVjCi0gICAgeyAwLCAwLCAwIH0sIC8vIEZJWE1FOiBQcmV2aW91cy9sZWdhY3kgdmFsdWUg
Tk9UX0ZPVU5EX0VSUi4KICAgICB7ICJDb25zdHJhaW50RXJyb3IiLCAiQSBtdXRhdGlvbiBvcGVy
YXRpb24gaW4gdGhlIHRyYW5zYWN0aW9uIGZhaWxlZCBiZWNhdXNlIGEgY29uc3RyYWludCB3YXMg
bm90IHNhdGlzZmllZC4iLCAwIH0sCiAgICAgeyAiRGF0YUVycm9yIiwgIlRoZSBkYXRhIHByb3Zp
ZGVkIGRvZXMgbm90IG1lZXQgcmVxdWlyZW1lbnRzLiIsIDAgfSwKLSAgICB7ICJOb3RBbGxvd2Vk
RXJyb3IiLCAiVGhpcyBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZCB0byBiZSBjYWxsZWQgaW4gc3Vj
aCBhIGNvbnRleHQuIiwgMH0sIC8vIEZJWE1FOiBubyBsb25nZXIgaW4gdGhlIHNwZWMKICAgICB7
ICJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IiLCAiQSByZXF1ZXN0IHdhcyBwbGFjZWQgYWdhaW5z
dCBhIHRyYW5zYWN0aW9uIHdoaWNoIGlzIGVpdGhlciBjdXJyZW50bHkgbm90IGFjdGl2ZSwgb3Ig
d2hpY2ggaXMgZmluaXNoZWQuIiwgMCB9LAotICAgIHsgMCwgMCwgMCB9LCAvLyBGSVhNRTogUHJl
dmlvdXMvbGVnYWN5IHZhbHVlIHdhcyBBQk9SVF9FUlIuCiAgICAgeyAiUmVhZE9ubHlFcnJvciIs
ICJBIHdyaXRlIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0
aW9uLiIsIDAgfSwKLSAgICB7IDAsIDAsIDAgfSwgLy8gRklYTUU6IFByZXZpb3VzL2xlZ2FjeSB2
YWx1ZSB3YXMgVElNRU9VVF9FUlIuCi0gICAgeyAwLCAwLCAwIH0sIC8vIEZJWE1FOiBQcmV2aW91
cy9sZWdhY3kgdmFsdWUgd2FzIFFVT1RBX0VSUi4KLSAgICB7ICJWZXJzaW9uRXJyb3IiLCAiQW4g
YXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVuIGEgZGF0YWJhc2UgdXNpbmcgYSBsb3dlciB2ZXJzaW9u
IHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24uIiwgMCB9LCAvLyBGSVhNRTogVGhpcyBpc24ndCB1
c2VkIHlldAorICAgIHsgIlZlcnNpb25FcnJvciIsICJBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIG9w
ZW4gYSBkYXRhYmFzZSB1c2luZyBhIGxvd2VyIHZlcnNpb24gdGhhbiB0aGUgZXhpc3RpbmcgdmVy
c2lvbi4iLCAwIH0sCiAKICAgICAvLyBUaGVzZSBhcmUgSURCLXNwZWNpZmljIGRlc2NyaXB0aW9u
cyBvZiBnZW5lcmljIERPTSBFeGNlcHRpb25zIHdoZW4gdGhleSBhcmUgdGhyb3duIGZyb20gSURC
IEFQSXMKICAgICB7ICJOb3RGb3VuZEVycm9yIiwgIkFuIG9wZXJhdGlvbiBmYWlsZWQgYmVjYXVz
ZSB0aGUgcmVxdWVzdGVkIGRhdGFiYXNlIG9iamVjdCBjb3VsZCBub3QgYmUgZm91bmQuIiwgTk9U
X0ZPVU5EX0VSUiB9LApAQCAtNTksMTEgKzUzLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBJREJE
YXRhYmFzZUV4Y2VwdGlvbk5hbWVEZXNjcmlwdGlvbiB7CiAgICAgeyAiSW52YWxpZEFjY2Vzc0Vy
cm9yIiwgIkFuIGludmFsaWQgb3BlcmF0aW9uIHdhcyBwZXJmb3JtZWQgb24gYW4gb2JqZWN0LiIs
IElOVkFMSURfQUNDRVNTX0VSUiB9LAogICAgIHsgIkFib3J0RXJyb3IiLCAiVGhlIHRyYW5zYWN0
aW9uIHdhcyBhYm9ydGVkLCBzbyB0aGUgcmVxdWVzdCBjYW5ub3QgYmUgZnVsZmlsbGVkLiIsIEFC
T1JUX0VSUiB9LAogICAgIHsgIlRpbWVvdXRFcnJvciIsICJBIGxvY2sgZm9yIHRoZSB0cmFuc2Fj
dGlvbiBjb3VsZCBub3QgYmUgb2J0YWluZWQgaW4gYSByZWFzb25hYmxlIHRpbWUuIiwgVElNRU9V
VF9FUlIgfSwgLy8gRklYTUU6IFRoaXMgaXNuJ3QgdXNlZCB5ZXQuCi0gICAgeyAiUXVvdGFFeGNl
ZWRlZEVycm9yIiwgIlRoZSBvcGVyYXRpb24gZmFpbGVkIGJlY2F1c2UgdGhlcmUgd2FzIG5vdCBl
bm91Z2ggcmVtYWluaW5nIHN0b3JhZ2Ugc3BhY2UsIG9yIHRoZSBzdG9yYWdlIHF1b3RhIHdhcyBy
ZWFjaGVkIGFuZCB0aGUgdXNlciBkZWNsaW5lZCB0byBnaXZlIG1vcmUgc3BhY2UgdG8gdGhlIGRh
dGFiYXNlLiIsIFFVT1RBX0VYQ0VFREVEX0VSUiB9LCAvLyBGSVhNRTogVGhpcyBpc24ndCB1c2Vk
IHlldAorICAgIHsgIlF1b3RhRXhjZWVkZWRFcnJvciIsICJUaGUgb3BlcmF0aW9uIGZhaWxlZCBi
ZWNhdXNlIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJlbWFpbmluZyBzdG9yYWdlIHNwYWNlLCBvciB0
aGUgc3RvcmFnZSBxdW90YSB3YXMgcmVhY2hlZCBhbmQgdGhlIHVzZXIgZGVjbGluZWQgdG8gZ2l2
ZSBtb3JlIHNwYWNlIHRvIHRoZSBkYXRhYmFzZS4iLCBRVU9UQV9FWENFRURFRF9FUlIgfSwKICAg
ICB7ICJTeW50YXhFcnJvciIsICJUaGUga2V5cGF0aCBhcmd1bWVudCBjb250YWlucyBhbiBpbnZh
bGlkIGtleSBwYXRoLiIsIFNZTlRBWF9FUlIgfSwKICAgICB7ICJEYXRhQ2xvbmVFcnJvciIsICJU
aGUgZGF0YSBiZWluZyBzdG9yZWQgY291bGQgbm90IGJlIGNsb25lZCBieSB0aGUgaW50ZXJuYWwg
c3RydWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobS4iLCBEQVRBX0NMT05FX0VSUiB9LAotICAgIHsg
MCwgMCwgMCB9LCAvLyBGSVhNRTogUHJldmlvdXMvbGVnYWN5IHZhbHVlIHdhcyBJREJfVFlQRV9F
UlIuCi0gICAgeyAwLCAwLCAwIH0sIC8vIEZJWE1FOiBQcmV2aW91cy9sZWdhY3kgdmFsdWUgd2Fz
IElEQl9OT1RfU1VQUE9SVEVEX0VSUi4KIH07CiAKIHN0YXRpYyBjb25zdCBJREJEYXRhYmFzZUV4
Y2VwdGlvbk5hbWVEZXNjcmlwdGlvbiogZ2V0RXJyb3JFbnRyeShFeGNlcHRpb25Db2RlIGVjKQpA
QCAtNzIsNyArNjQsNyBAQCBzdGF0aWMgY29uc3QgSURCRGF0YWJhc2VFeGNlcHRpb25OYW1lRGVz
Y3JpcHRpb24qIGdldEVycm9yRW50cnkoRXhjZXB0aW9uQ29kZSBlYwogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHNpemVfdCB0YWJsZVNpemUgPSBXVEZfQVJSQVlfTEVOR1RIKGlkYkRhdGFiYXNl
RXhjZXB0aW9ucyk7Ci0gICAgc2l6ZV90IHRhYmxlSW5kZXggPSBlYyAtIElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVTktOT1dOX0VSUjsKKyAgICBzaXplX3QgdGFibGVJbmRleCA9IGVjIC0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvcjsKIAogICAgIHJldHVybiB0YWJsZUluZGV4IDwg
dGFibGVTaXplID8gJmlkYkRhdGFiYXNlRXhjZXB0aW9uc1t0YWJsZUluZGV4XSA6IDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4
Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VF
eGNlcHRpb24uaAppbmRleCBkNzY2ZDBjODQ0MmMwODE5MmU1NjY4MjIyZjE1M2QxM2ZkYTgzODYw
Li4xNWU1OGFmMjhlYjQ5ZjZhMjQxNzc0YWU5NTE1MTk1ZTBiMTY3NDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9u
LmgKQEAgLTQzLDMwICs0MywyNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludCBJREJE
YXRhYmFzZUV4Y2VwdGlvbk1heCA9IDEyOTk7CiAKICAgICBlbnVtIElEQkRhdGFiYXNlRXhjZXB0
aW9uQ29kZSB7Ci0gICAgICAgIE5PX0VSUiA9IElEQkRhdGFiYXNlRXhjZXB0aW9uT2Zmc2V0LAot
ICAgICAgICBVTktOT1dOX0VSUiwKLSAgICAgICAgTEVHQUNZX05PTl9UUkFOU0lFTlRfRVJSLCAv
LyBGSVhNRTogUGxhY2Vob2xkZXIsIG5vdCBpbiBzcGVjLgotICAgICAgICBMRUdBQ1lfTk9UX0ZP
VU5EX0VSUiwgLy8gRklYTUU6IFBsYWNlaG9sZGVyLgotICAgICAgICBDT05TVFJBSU5UX0VSUiwK
LSAgICAgICAgREFUQV9FUlIsCi0gICAgICAgIExFR0FDWV9OT1RfQUxMT1dFRF9FUlIsIC8vIEZJ
WE1FOiBQbGFjZWhvbGRlciwgbm90IGluIHNwZWMuCi0gICAgICAgIFRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUiwKLSAgICAgICAgTEVHQUNZX0FCT1JUX0VSUiwgLy8gRklYTUU6IFBsYWNlaG9sZGVy
LgotICAgICAgICBSRUFEX09OTFlfRVJSLAotICAgICAgICBMRUdBQ1lfVElNRU9VVF9FUlIsIC8v
IEZJWE1FOiBQbGFjZWhvbGRlci4KLSAgICAgICAgTEVHQUNZX1FVT1RBX0VSUiwgLy8gRklYTUU6
IFBsYWNlaG9sZGVyLgotICAgICAgICBWRVJfRVJSLAorICAgICAgICBOb0Vycm9yID0gSURCRGF0
YWJhc2VFeGNlcHRpb25PZmZzZXQsCiAKLSAgICAgICAgSURCX05PVF9GT1VORF9FUlIsCi0gICAg
ICAgIElEQl9JTlZBTElEX1NUQVRFX0VSUiwKLSAgICAgICAgSURCX0lOVkFMSURfQUNDRVNTX0VS
UiwKLSAgICAgICAgSURCX0FCT1JUX0VSUiwKLSAgICAgICAgSURCX1RJTUVPVVRfRVJSLAotICAg
ICAgICBJREJfUVVPVEFfRVhDRUVERURfRVJSLAotICAgICAgICBJREJfU1lOVEFYX0VSUiwKLSAg
ICAgICAgSURCX0RBVEFfQ0xPTkVfRVJSLAotICAgICAgICBMRUdBQ1lfSURCX1RZUEVfRVJSLCAv
LyBGSVhNRTogUGxhY2Vob2xkZXIuCi0gICAgICAgIExFR0FDWV9JREJfTk9UX1NVUFBPUlRFRF9F
UlIsIC8vIEZJWE1FOiBQbGFjZWhvbGRlci4KKyAgICAgICAgLy8gSW5kZXhlZERCIHVzZXMgdGhl
IGZvbGxvd2luZyBuZXcgRE9NRXhjZXB0aW9uIHR5cGVzIHdpdGggdGhlaXIgdmFyaW91cyBtZXNz
YWdlczoKKyAgICAgICAgVW5rbm93bkVycm9yLAorICAgICAgICBDb25zdHJhaW50RXJyb3IsCisg
ICAgICAgIERhdGFFcnJvciwKKyAgICAgICAgVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yLAorICAg
ICAgICBSZWFkT25seUVycm9yLAorICAgICAgICBWZXJzaW9uRXJyb3IsCisKKyAgICAgICAgLy8g
SW5kZXhlZERCIHJldXNlcyB0aGUgZm9sbG93aW5nIGV4aXN0aW5nIERPTUV4Y2VwdGlvbiB0eXBl
cywgYnV0IHdpdGggSURCLXNwZWNpZmljIGVycm9yIG1lc3NhZ2VzLgorICAgICAgICBOb3RGb3Vu
ZEVycm9yLAorICAgICAgICBJbnZhbGlkU3RhdGVFcnJvciwKKyAgICAgICAgSW52YWxpZEFjY2Vz
c0Vycm9yLAorICAgICAgICBBYm9ydEVycm9yLAorICAgICAgICBUaW1lb3V0RXJyb3IsCisgICAg
ICAgIFF1b3RhRXhjZWVkZWRFcnJvciwKKyAgICAgICAgU3ludGF4RXJyb3IsCisgICAgICAgIERh
dGFDbG9uZUVycm9yLAogICAgIH07CiAKICAgICBzdGF0aWMgaW50IEVycm9yQ29kZVRvRXhjZXB0
aW9uQ29kZShpbnQgZXJyb3JDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBjYjQ4NWY1MDRmYmIyNmY5MDUxZjRmZTk0ZThmOWEw
NDhmZWVhZTNkLi5jMTRjNjhjOTFmNjM0YWU3OTkyOWUzZjViMjIyYWQ0MzA3NDkzNTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAt
MTU3LDcgKzE1Nyw3IEBAIHNob3J0IElEQkZhY3Rvcnk6OmNtcChQYXNzUmVmUHRyPElEQktleT4g
Zmlyc3QsIFBhc3NSZWZQdHI8SURCS2V5PiBzZWNvbmQsIEV4Y2VwCiAgICAgQVNTRVJUKHNlY29u
ZCk7CiAKICAgICBpZiAoIWZpcnN0LT5pc1ZhbGlkKCkgfHwgIXNlY29uZC0+aXNWYWxpZCgpKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggZWFhNzMzYTUyOGVmNDU0YWMzODBlYzJm
MGM2MWQ0NTEzY2JmNzA5Yy4uMmQ1ODQyY2QxNTA0YzFmZGNhMTM1OGUxZjgzZDhkYWFiODQ5ZDM1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgSURCRmFjdG9y
eUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsCiB7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0g
b3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiAgICAgaWYg
KCFiYWNraW5nU3RvcmUpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5h
bCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVy
cm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTExLDcgKzExMSw3IEBAIHZv
aWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgLy8gRklYTUU6IEV2ZXJ5dGhpbmcgZnJvbSBub3cg
b24gc2hvdWxkIGJlIGRvbmUgb24gYW5vdGhlciB0aHJlYWQuCiAgICAgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwg
ZGF0YURpcmVjdG9yeSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKLSAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVE
YXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgICAgIGRh
dGFiYXNlQmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UoY2FsbGJhY2tzKTsKICAgICAgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAucmVtb3ZlKHVuaXF1ZUlkZW50aWZpZXIpOwogICAgIH0gZWxzZQotICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogfQogCiBQYXNzUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0
b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJp
bmcmIGRhdGFEaXJlY3RvcnkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFj
a2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NS
ZWZQdHIKICAgICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKICAgICAg
ICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9y
ZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiAgICAgICAgIGlmICghYmFja2luZ1N0
b3JlKSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9y
LiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9y
LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNjAsNyArMTYwLDcg
QEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHIKICAgICAgICAgaWYgKGRhdGFiYXNlQmFja2VuZCkK
ICAgICAgICAgICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBk
YXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5jcHAKaW5kZXggZWMyOTgzN2ExMTkxNWNiZTFhNDYxYWM5YzBjZTRjMWM2
ZDkyYTUyYS4uMjI3NzQ5ZWJmMmZmYWFjMDA3ZDEyMDZlYjc2ZjgzODk5NDE0NTBlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtNjMsMTEg
KzYzLDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzCiB7CiAgICAgSURCX1RSQUNFKCJJREJJ
bmRleDo6b3BlbkN1cnNvciIpOwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJv
cjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBj
b250ZXh0LCBlYyk7CkBAIC05NCwxMSArOTQsMTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlAK
IHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4Ojpjb3VudCIpOwogICAgIGlmIChtX2RlbGV0ZWQp
IHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVf
RVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJv
cjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNB
Y3RpdmUoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKQEAgLTEyMCwxMSArMTIwLDEx
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4Ojpv
cGVuS2V5Q3Vyc29yIik7CiAgICAgaWYgKG1fZGVsZXRlZCkgewotICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0
aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGNvbnRl
eHQsIGVjKTsKQEAgLTE2MCwxNSArMTYwLDE1IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiB7
CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0Iik7CiAgICAgaWYgKG1fZGVsZXRlZCkgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2
ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rp
b25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFrZXlS
YW5nZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKQEAgLTE5MiwxNSArMTkyLDE1IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0S2V5Iik7CiAgICAgaWYgKG1fZGVs
ZXRlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0
ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9u
LT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
aWYgKCFrZXlSYW5nZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRB
X0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggMWEwNWMyMGRiOTUy
NzBlNDk5YjRhMzAyZTFjZjZkMjhhMTdmNmU2OC4uOWFkNGI4ZDZlMzZiYWYzNGU2ZTNkOTY1MWE5
MTFiNzUxNzJhODI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIHVuc2lnbmVkCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIp
OwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuSW5kZXhDdXJzb3JPcGVy
YXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlOjpJbmRleEN1cnNvciwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3Ip
KTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMTM5LDcgKzEzOSw3
IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNh
Y3Rpb25QdHIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPcGVuSW5kZXhD
dXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpJbmRleEtleUN1cnNvciwgY2FsbGJhY2tzLCB0cmFuc2FjdGlv
bikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpJbmRleENvdW50
T3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIElE
QkluZGV4QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQ
YXNzUmVmUHRyPElEQkNhbAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBy
cENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNh
Y3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsK
ICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhDb3VudE9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikpOwog
fQogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OkluZGV4UmVmZXJlbmNlZFZhbHVlUmV0cmll
dmFsT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKQEAgLTIzMCw3ICsyMzAsNyBAQCB2
b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgUGFzc1JlZlB0cjxJREJDYQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cyA9IHBycENhbGxiYWNrczsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4g
dHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9u
UHRyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soSW5kZXhSZWZlcmVuY2Vk
VmFsdWVSZXRyaWV2YWxPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBrZXlSYW5nZSwgY2FsbGJhY2tz
LCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7CisgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBs
OjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQg
SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBQYXNzUmVmUHRyPElECiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIp
OwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhJbmRleFZhbHVlUmV0cmlldmFs
T3BlcmF0aW9uOjpjcmVhdGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24p
KSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpB
Ym9ydEVycm9yKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmNwcAppbmRleCA5MmU4NDU0MjY2
YjlhZDdmNDY1ODBjNjA5ZDI5MTQ4ZWQyMTU0ZWU5Li44YTg0OTJjZTVlN2ZlYzc1YWJkZDUwZjJk
OGFjYjk3OTdhZTY4MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UmFuZ2UuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IElEQktleVJhbmdlOjpvbmx5KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIEV4Y2VwdGlv
bkNvCiB7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwogICAgIGlmICgha2V5IHx8
ICFrZXktPmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
QVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gSURCS2V5UmFuZ2U6Om9ubHkoUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwg
RXhjZXB0aW9uQ28KIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJv
dW5kKFBhc3NSZWZQdHI8SURCS2V5PiBib3VuZCwgYm9vbCBvcGVuLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIWJvdW5kIHx8ICFib3VuZC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAt
NjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBJREJLZXlSYW5nZTo6bG93ZXJC
b3VuZChQYXNzUmVmUHRyPElEQktleT4gYm91bmQsIGJvb2wgbwogUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoUGFzc1JlZlB0cjxJREJLZXk+IGJvdW5kLCBi
b29sIG9wZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghYm91bmQgfHwgIWJvdW5k
LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9F
UlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC03NSwxNSArNzUsMTUgQEAgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gSURCS2V5UmFuZ2U6OnVwcGVyQm91bmQoUGFzc1JlZlB0cjxJREJLZXk+IGJvdW5k
LCBib29sIG8KIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpib3VuZChQYXNz
UmVmUHRyPElEQktleT4gbG93ZXIsIFBhc3NSZWZQdHI8SURCS2V5PiB1cHBlciwgYm9vbCBsb3dl
ck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWxv
d2VyIHx8ICFsb3dlci0+aXNWYWxpZCgpIHx8ICF1cHBlciB8fCAhdXBwZXItPmlzVmFsaWQoKSkg
ewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgaWYgKHVwcGVyLT5pc0xlc3NUaGFuKGxvd2VyLmdldCgpKSkgewotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAg
ICAgaWYgKHVwcGVyLT5pc0VxdWFsKGxvd2VyLmdldCgpKSAmJiAobG93ZXJPcGVuIHx8IHVwcGVy
T3BlbikpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNmFiMzU1M2JjYTgwZGJiYmY4ZGFlMGIyYzM2MjZk
OGE0MjQ3YTUwNC4uNzIyODk5NmFkOTM2MmNhOGRkYmE4YzJhYWM1MWZiMTJhYjhlNzRmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcApAQCAtNzUsMTUgKzc1LDE1IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiB7CiAgICAg
SURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Z2V0Iik7CiAgICAgaWYgKG1fZGVsZXRlZCkgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFrZXlSYW5nZSkgewotICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
aWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0
KCkpOwpAQCAtMTQxLDI3ICsxNDEsMjcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6cHV0KElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW8KICAgICBJ
REJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpwdXQiKTsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkg
PSBwcnBLZXk7CiAgICAgaWYgKG1fZGVsZXRlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkg
ewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSZWFkT25seUVycm9yOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkVmFsdWUgPSB2YWx1ZS5zZXJpYWxpemUoc3RhdGUpOwogICAgIGlmIChzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0RB
VEFfQ0xPTkVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhQ2xv
bmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgaWYgKHNlcmlhbGl6ZWRW
YWx1ZS0+YmxvYlVSTHMoKS5zaXplKCkgPiAwKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxv
Yi9GaWxlL0ZpbGVMaXN0IHN1cHBvcnQKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX0RBVEFfQ0xPTkVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEYXRhQ2xvbmVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNzMsMjYg
KzE3MywyNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpQdXRNbwogICAgIERPTVJlcXVlc3RTdGF0ZSBy
ZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAKICAgICBpZiAocHV0TW9kZSAhPSBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclVwZGF0ZSAmJiB1c2VzSW5MaW5lS2V5cyAmJiBrZXkp
IHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgIGlmICghdXNlc0luTGluZUtleXMgJiYgIWhhc0tleUdlbmVyYXRvciAmJiAh
a2V5KSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICBpZiAodXNlc0luTGluZUtleXMpIHsKICAgICAgICAgUmVmUHRyPElE
QktleT4ga2V5UGF0aEtleSA9IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgo
JnJlcXVlc3RTdGF0ZSwgdmFsdWUsIGtleVBhdGgpOwogICAgICAgICBpZiAoa2V5UGF0aEtleSAm
JiAha2V5UGF0aEtleS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRhdGFFcnJvcjsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAg
IGlmICghaGFzS2V5R2VuZXJhdG9yICYmICFrZXlQYXRoS2V5KSB7Ci0gICAgICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChoYXNLZXlHZW5lcmF0b3IgJiYgIWtleVBhdGhLZXkpIHsKICAgICAg
ICAgICAgIGlmICghY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKCZyZXF1ZXN0U3RhdGUs
IHZhbHVlLCBrZXlQYXRoKSkgewotICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkRBVEFfRVJSOworICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRhdGFFcnJvcjsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMjAwLDcgKzIwMCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OnB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vCiAg
ICAgICAgICAgICBrZXkgPSBrZXlQYXRoS2V5OwogICAgIH0KICAgICBpZiAoa2V5ICYmICFrZXkt
PmlzVmFsaWQoKSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VS
UjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTIyMywxOSArMjIzLDE5IEBAIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CiAg
ICAgaWYgKG1fZGVsZXRlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
REJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFt
X3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewotICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpSZWFkT25seUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAgICAgaWYgKCFrZXlSYW5nZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpEQVRBX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVy
cm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTI1OCwxNSArMjU4LDE1IEBAIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6
Y2xlYXIiKTsKICAgICBpZiAobV9kZWxldGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
ICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJlYWRPbmx5RXJyb3I7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtMzU1LDE1ICszNTUsMTUgQEAgUGFzc1JlZlB0cjxJREJJbmRl
eD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCIpOwog
ICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkgfHwgbV9kZWxldGVkKSB7
Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0
aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2Fj
dGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIWtl
eVBhdGguaXNWYWxpZCgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9TWU5UQVhfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpTeW50YXhF
cnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7
CkBAIC0zNzEsNyArMzcxLDcgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6
OmNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgIGlmIChjb250YWluc0luZGV4KG5hbWUpKSB7Ci0gICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSOworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3I7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIApAQCAtMzgyLDcgKzM4Miw3IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAg
b3B0aW9ucy5nZXQoIm11bHRpRW50cnkiLCBtdWx0aUVudHJ5KTsKIAogICAgIGlmIChrZXlQYXRo
LnR5cGUoKSA9PSBJREJLZXlQYXRoOjpBcnJheVR5cGUgJiYgbXVsdGlFbnRyeSkgewotICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkQWNjZXNzRXJyb3I7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtNDIwLDExICs0MjAsMTEgQEAgUGFzc1JlZlB0cjxJ
REJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleCIpOwog
ICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmICht
X3RyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CkBAIC00MzQsNyArNDM0LDcgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6
OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMKIAogICAgIGludDY0
X3QgaW5kZXhJZCA9IGZpbmRJbmRleElkKG5hbWUpOwogICAgIGlmIChpbmRleElkID09IElEQklu
ZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfTk9UX0ZPVU5EX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6Tm90Rm91bmRFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC00NTgsMTYg
KzQ1OCwxNiBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYwogdm9pZCBJREJPYmplY3RTdG9yZTo6
ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpIHx8IG1fZGVsZXRlZCkgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUo
KSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFD
VElWRV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpbnQ2NF90IGluZGV4
SWQgPSBmaW5kSW5kZXhJZChuYW1lKTsKICAgICBpZiAoaW5kZXhJZCA9PSBJREJJbmRleE1ldGFk
YXRhOjpJbnZhbGlkSWQpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X05PVF9GT1VORF9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5vdEZv
dW5kRXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4NiwxMSArNDg2LDExIEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9y
ZTo6b3BlbkN1cnNvciIpOwogICAgIGlmIChtX2RlbGV0ZWQpIHsKLSAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgewotICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBjb250
ZXh0LCBlYyk7CkBAIC01MTcsMTEgKzUxNywxMSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYQog
ewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CiAgICAgaWYgKG1fZGVs
ZXRlZCkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0
ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9u
LT5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmNwcAppbmRleCAxMDI0MGUxMDU4ODk0OTgzMTZlNzIyZDNlN2ZjYzhhZDE0ZjM0
NGVkLi5jYThhZDYxNzJkZTk4MTViNTZlZGQzMzFhOWE3MzU2ZWNmMTk4ZGE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNz
UmVmUHRyCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tz
OwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIGlmICgh
dHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZVJldHJpZXZhbE9wZXJhdGlvbjo6
Y3JlYXRlKHRoaXMsIGtleVJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCi0gICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9BQk9SVF9FUlIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvcikp
OwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlUmV0cmll
dmFsT3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKQEAgLTIyNyw3
ICsyMjcsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhcwogICAgIEFTU0VSVChhdXRvSW5jcmVt
ZW50KCkgfHwga2V5LmdldCgpKTsKIAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhPYmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB2YWx1ZSwga2V5LCBw
dXRNb2RlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uLCBuZXdJbmRleElkcy5yZWxlYXNlKCksIG5l
d0luZGV4S2V5cy5yZWxlYXNlKCkpKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikp
OworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0z
MzksNyArMzM5LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtl
eXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGMKICAgICBib29sIG9rID0gYmFj
a2luZ1N0b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQoKSwgaWQoKSwgKnByaW1hcnlLZXksICZyZWNv
cmRJZGVudGlmaWVyLCBmb3VuZCk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBMT0dfRVJST1Io
ImtleUV4aXN0c0luT2JqZWN0U3RvcmUgcmVwb3J0ZWQgYW4gZXJyb3IiKTsKLSAgICAgICAgdHJh
bnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvciBzZXR0aW5nIGluZGV4IGtleXMuIikp
OworICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBzZXR0aW5n
IGluZGV4IGtleXMuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghZm91bmQp
IHsKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNl
dEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgYwogICAgIFN0cmlu
ZyBlcnJvck1lc3NhZ2U7CiAgICAgaWYgKCFtYWtlSW5kZXhXcml0ZXJzKHRyYW5zYWN0aW9uLCB0
aGlzLCBwcmltYXJ5S2V5LCBmYWxzZSwgaW5kZXhJZHMsIGluZGV4S2V5cywgJmluZGV4V3JpdGVy
cywgJmVycm9yTWVzc2FnZSkpIHsKICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZGVhbCB3aXRo
IGVycm9yTWVzc2FnZSBoZXJlLiBtYWtlSW5kZXhXcml0ZXJzIG9ubHkgZmFpbHMgb24gdW5pcXVl
bmVzcyBjb25zdHJhaW50IGVycm9ycy4KLSAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIs
ICJEdXBsaWNhdGUgaW5kZXgga2V5cyBleGlzdCBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsKKyAg
ICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCAiRHVwbGljYXRlIGluZGV4IGtleXMgZXhp
c3QgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTM5OSw3ICszOTksNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0
b3JlU3RvcmFnZU9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdQogICAgICAgICBSZWZQdHI8
SURCS2V5PiBhdXRvSW5jS2V5ID0gb2JqZWN0U3RvcmUtPmdlbmVyYXRlS2V5KHRyYW5zYWN0aW9u
KTsKICAgICAgICAga2V5V2FzR2VuZXJhdGVkID0gdHJ1ZTsKICAgICAgICAgaWYgKCFhdXRvSW5j
S2V5LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAi
TWF4aW11bSBrZXkgZ2VuZXJhdG9yIHZhbHVlIHJlYWNoZWQuIikpOworICAgICAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6Q29uc3RyYWludEVycm9yLCAiTWF4aW11bSBrZXkgZ2VuZXJhdG9yIHZhbHVlIHJlYWNo
ZWQuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGtleSA9IGF1
dG9JbmNLZXk7CkBAIC00MTIsMTEgKzQxMiwxMSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Ok9iamVjdFN0b3JlU3RvcmFnZU9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdQog
ICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIGJvb2wgb2sgPSBvYmplY3RTdG9y
ZS0+YmFja2luZ1N0b3JlKCktPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG9iamVj
dFN0b3JlLT5pZCgpLCAqa2V5LCAmcmVjb3JkSWRlbnRpZmllciwgZm91bmQpOwogICAgICAgICBp
ZiAoIW9rKSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVy
cm9yIGNoZWNraW5nIGtleSBleGlzdGVuY2UuIikpOworICAgICAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5r
bm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgY2hlY2tpbmcga2V5IGV4aXN0ZW5jZS4iKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZvdW5kKSB7Ci0gICAg
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIktleSBhbHJlYWR5IGV4aXN0cyBpbiB0
aGUgb2JqZWN0IHN0b3JlLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJv
ciwgIktleSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlLiIpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9iamVjdFN0b3JlU3RvcmFnZU9wZXJhdGlvbjo6cGVy
Zm9ybShTY3JpcHRFeGVjdQogICAgIFZlY3RvcjxPd25QdHI8SW5kZXhXcml0ZXI+ID4gaW5kZXhX
cml0ZXJzOwogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAgaWYgKCFtYWtlSW5kZXhXcml0
ZXJzKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZS5nZXQoKSwga2V5LCBrZXlXYXNHZW5lcmF0ZWQs
ICppbmRleElkcywgKmluZGV4S2V5cywgJmluZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSkpIHsK
LSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsIGVycm9yTWVzc2FnZSkpOworICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IsIGVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpPYmplY3RTdG9yZVN0b3JhZ2VPcGVyYXRpb246OnBlcmZvcm0oU2NyaXB0RXhlY3UK
ICAgICBpZiAoYXV0b0luY3JlbWVudCAmJiBwdXRNb2RlICE9IEN1cnNvclVwZGF0ZSAmJiBrZXkt
PnR5cGUoKSA9PSBJREJLZXk6Ok51bWJlclR5cGUpIHsKICAgICAgICAgYm9vbCBvayA9IG9iamVj
dFN0b3JlLT51cGRhdGVLZXlHZW5lcmF0b3IodHJhbnNhY3Rpb24sIGtleS5nZXQoKSwgIWtleVdh
c0dlbmVyYXRlZCk7CiAgICAgICAgIGlmICghb2spIHsKLSAgICAgICAgICAgIGNhbGxiYWNrcy0+
b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVO
S05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IgdXBkYXRpbmcga2V5IGdlbmVyYXRvci4iKSk7Cisg
ICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciB1cGRhdGlu
ZyBrZXkgZ2VuZXJhdG9yLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLAogICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKIAogICAgIGlmICghdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzayhPYmplY3RTdG9yZURlbGV0aW9uT3BlcmF0aW9uOjpjcmVh
dGUodGhpcywga2V5UmFuZ2UsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKLSAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9
CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6T2JqZWN0U3RvcmVEZWxldGlvbk9w
ZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCkBAIC00ODUsNyArNDg1
LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREIKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVs
ZVRhc2soT2JqZWN0U3RvcmVDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrcywg
dHJhbnNhY3Rpb24pKSkKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VSUikpOworICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6T2JqZWN0U3RvcmVDbGVhck9wZXJhdGlvbjo6cGVyZm9ybShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9y
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKQEAgLTUwOCw3ICs1MDgsNyBAQCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y3JlYXRlSW5kZXgoaW50NgogICAgIG1fbWV0YWRhdGEubWF4SW5kZXhJZCA9IGlkOwogCiAg
ICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKENyZWF0ZUluZGV4T3BlcmF0aW9uOjpj
cmVhdGUodGhpcywgaW5kZXgsIHRyYW5zYWN0aW9uKSwgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlv
bjo6Y3JlYXRlKHRoaXMsIGluZGV4KSkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIApAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6ZGVsZXRlSW5kZXgoaW50NjRfdCBpbmRleElkLCBJREJUcmFuc2FjdGlvbkJhY2tlCiAgICAg
QVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hB
TkdFKTsKIAogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhEZWxldGVJbmRleE9w
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGluZGV4LCB0cmFuc2FjdGlvbiksIERlbGV0ZUluZGV4QWJv
cnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBpbmRleCkpKSB7Ci0gICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIG1faW5kZXhlcy5yZW1vdmUoaW5kZXhJZCk7CkBAIC01NTksNyAr
NTU5LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBJREJDdXIKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZnJvbSh0
cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKE9wZW5P
YmplY3RTdG9yZUN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIHJhbmdlLCBkaXJlY3Rpb24s
IGNhbGxiYWNrcywgdGFza1R5cGUsIHRyYW5zYWN0aW9uKSkpIHsKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SURCX0FCT1JUX0VSUikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiAgICAgfQog
fQogCkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
b3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjwKICAgICBSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKE9iamVjdFN0b3JlQ291bnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCByYW5nZSwg
Y2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJS
KSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OkFib3J0RXJyb3IpKTsKIH0KIAogdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpPYmplY3RTdG9yZUNvdW50T3BlcmF0aW9uOjpwZXJmb3JtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsPiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggNTUxZDBkZDA5M2JhN2NlMGZkMDY4M2Mz
NWFiNTAxMTdjMjNlMTUxYi4uZjJlNzZkNzE1MDU2MTE5ZTQ4N2Q1NzY4ODBhNGQwZjhkN2ZmZGYy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIElEQk9wZW5EQlJlcXVlc3Q6
OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgLy8gYW4gImVycm9y
IiBldmVudCBzaG91bGQgYmUgZmlyZWQgaW5zdGVhZC4KICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50ICYmIG1fcmVzdWx0LT5pZGJEYXRhYmFzZSgpLT5p
c0Nsb3NlUGVuZGluZygpKSB7CiAgICAgICAgIG1fcmVzdWx0LmNsZWFyKCk7Ci0gICAgICAgIG9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
QUJPUlRfRVJSLCAiVGhlIGNvbm5lY3Rpb24gd2FzIGNsb3NlZC4iKSk7CisgICAgICAgIG9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVy
cm9yLCAiVGhlIGNvbm5lY3Rpb24gd2FzIGNsb3NlZC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAKaW5kZXggMDNhMTFiOTQ0MzhiYzA3MzllYWM2ZGUxY2JhMWEwZTgwMWQxMmVmZS4u
OGU1NmE4NTU0NGQzY2YzZTk3ZDhiZGNkYThlODllZGE0ZDFmMWEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgSURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQogUGFzc1JlZlB0cjxJREJBbnk+IElEQlJlcXVl
c3Q6OnJlc3VsdChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAobV9yZWFkeVN0
YXRlICE9IERPTkUpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZh
bGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiBtX3Jl
c3VsdDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBQYXNzUmVmUHRyPElEQkFueT4gSURCUmVxdWVzdDo6
cmVzdWx0KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogUGFzc1JlZlB0cjxET01FcnJvcj4gSURC
UmVxdWVzdDo6ZXJyb3IoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKG1fcmVh
ZHlTdGF0ZSAhPSBET05FKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4g
bV9lcnJvcjsKQEAgLTExMCw3ICsxMTAsNyBAQCBQYXNzUmVmUHRyPERPTUVycm9yPiBJREJSZXF1
ZXN0OjplcnJvcihFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHVuc2lnbmVkIHNob3J0IElEQlJl
cXVlc3Q6OmVycm9yQ29kZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAobV9y
ZWFkeVN0YXRlICE9IERPTkUpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJbnZhbGlkU3RhdGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVy
biBtX2Vycm9yQ29kZTsKQEAgLTExOSw3ICsxMTksNyBAQCB1bnNpZ25lZCBzaG9ydCBJREJSZXF1
ZXN0OjplcnJvckNvZGUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiBTdHJpbmcgSURCUmVxdWVz
dDo6d2Via2l0RXJyb3JNZXNzYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlm
IChtX3JlYWR5U3RhdGUgIT0gRE9ORSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkludmFsaWRTdGF0ZUVycm9yOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
fQogICAgIHJldHVybiBtX2Vycm9yTWVzc2FnZTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIElE
QlJlcXVlc3Q6OmFib3J0KCkKICAgICBtX2Vycm9yLmNsZWFyKCk7CiAgICAgbV9lcnJvck1lc3Nh
Z2UgPSBTdHJpbmcoKTsKICAgICBtX3Jlc3VsdC5jbGVhcigpOwotICAgIG9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfQUJPUlRfRVJSKSk7
CisgICAgb25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OkFib3J0RXJyb3IpKTsKICAgICBtX3JlcXVlc3RBYm9ydGVkID0gdHJ1ZTsKIH0KIApAQCAt
NDcwLDcgKzQ3MCw3IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVu
dCBkaXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgfHwgZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCwgImV2ZW50IHR5cGUgd2FzICVzIiwgZXZl
bnQtPnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBjb25zdCBib29sIHNldFRy
YW5zYWN0aW9uQWN0aXZlID0gbV90cmFuc2FjdGlvbiAmJiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkuc3VjY2Vzc0V2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnVw
Z3JhZGVuZWVkZWRFdmVudCB8fCAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JF
dmVudCAmJiBtX2Vycm9yQ29kZSAhPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VS
UikpOworICAgIGNvbnN0IGJvb2wgc2V0VHJhbnNhY3Rpb25BY3RpdmUgPSBtX3RyYW5zYWN0aW9u
ICYmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50IHx8IChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50ICYmIG1fZXJyb3JDb2RlICE9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpBYm9ydEVycm9yKSk7CiAKICAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3Rp
dmUpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZSh0cnVlKTsKQEAgLTUwNiw3ICs1
MDYsNyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCiB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIo
KQogewogICAgIGlmIChtX3RyYW5zYWN0aW9uICYmICFtX3JlcXVlc3RBYm9ydGVkKSB7Ci0gICAg
ICAgIG1fdHJhbnNhY3Rpb24tPnNldEVycm9yKERPTUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OmdldEVycm9yTmFtZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0FCT1JUX0VS
UikpKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0RXJyb3IoRE9NRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6Z2V0RXJyb3JOYW1lKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpB
Ym9ydEVycm9yKSkpOwogICAgICAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKICAgICAgICAgbV90
cmFuc2FjdGlvbi0+YWJvcnQodW51c2VkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggODM3ZDU0NmE3Y2Zm
MGMwZmYxZDEyNDRiMTZmZTczOTZjNzQ3ZWYwNy4uNDc5ZjEyYTE1NTdmNDFlNjQ1OWZmM2ViNTE0
MzMyYmM3YTY2NDg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246OnNldEVycm9yKFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKQogUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQp
IHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVf
RVJSOworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJv
cjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0xNTUsMTQgKzE1NSwxNCBAQCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBFeGNlcAogICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwogCiAgICAgaWYg
KCFpc1ZlcnNpb25DaGFuZ2UoKSAmJiAhbV9vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKG5hbWUp
KSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJS
OworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOb3RGb3VuZEVycm9yOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBtX2Rh
dGFiYXNlLT5maW5kT2JqZWN0U3RvcmVJZChuYW1lKTsKICAgICBpZiAob2JqZWN0U3RvcmVJZCA9
PSBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKICAgICAgICAgQVNTRVJUKGlz
VmVyc2lvbkNoYW5nZSgpKTsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X05PVF9GT1VORF9FUlI7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5vdEZv
dW5kRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMjE0LDcgKzIxNCw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKIHZvaWQgSURCVHJh
bnNhY3Rpb246OmFib3J0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX3N0YXRlID09
IEZpbmlzaGluZyB8fCBtX3N0YXRlID09IEZpbmlzaGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggYjhjNzdlZDdkMGUwNWU4NmVk
NjkwNzk3ZmY1YmQ3MDVlN2VmY2M3ZC4uYzU0MmZkZDc5MDg5OWVlYWJhMTQ0MTI0ZThlMzJlOTM0
M2U3MDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6fklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoKQog
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6Om9iamVjdFN0b3JlKGludDY0X3QgaWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIApAQCAtOTksNyArOTksNyBAQCBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNj
aGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KCkKIHsKLSAgICBhYm9ydChJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJu
YWwgZXJyb3IuIikpOworICAgIGFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4gZXJyb3IpCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpjb21taXQoKQogICAgICAgICBtX2NhbGxiYWNrcy0+b25Db21wbGV0ZSgpOwog
ICAgICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZCh0
aGlzKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50
ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVy
bmFsIGVycm9yLiIpKTsKICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZEFu
ZEFib3J0RmlyZWQodGhpcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaAppbmRleCBiMGU2M2Q0MjZl
MDcwMDlmMjdmOGY2OGExMDlkNDU4ZTM4ZjQ1NTY3Li44YzAwYTBmMDJlNTBhYjU4YzcxMWU0MGNl
Y2JlMjNkNTQ1YmFmMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgKQEAgLTM0LDggKzM0LDggQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBlbnVtIFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uIHsKLSAgICBXZWJJ
REJEYXRhYmFzZUV4Y2VwdGlvbkRhdGFFcnJvciA9IDEyMDUsCi0gICAgV2ViSURCRGF0YWJhc2VF
eGNlcHRpb25RdW90YUVycm9yID0gMTIxOCwKKyAgICBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRh
dGFFcnJvciA9IDEyMDMsCisgICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90YUVycm9yID0g
MTIxMiwKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCAzZWU5ZmNhYzU0ZWM1
YzkyZjliOTgxMWIzNThmZDhmZDcyMjVkMzBmLi40NTdiMzcwNmNjYjJmMTcwYzM3OTRmYzZkYzRl
OTQ5NTNiZmZiYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNDc5LDggKzQ3OSw4IEBAIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViVmlldzo6VXNlckNvbnRlbnRJbmplY3RJblRvcEZyYW1lT25seSwgSW5q
ZWN0SW5UCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZXc6OlVzZXJTdHlsZUlu
amVjdEluRXhpc3RpbmdEb2N1bWVudHMsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWV3OjpVc2VyU3R5bGVJbmplY3RJblN1YnNl
cXVlbnREb2N1bWVudHMsIEluamVjdEluU3Vic2VxdWVudERvY3VtZW50cyk7CiAKLUNPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURCRGF0YWJhc2VFeGNlcHRpb25EYXRhRXJyb3IsIElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uUXVvdGFFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9RVU9UQV9FWENFRURFRF9FUlIpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRhdGFFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRpb246
OkRhdGFFcnJvcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQkRhdGFiYXNl
RXhjZXB0aW9uUXVvdGFFcnJvciwgSURCRGF0YWJhc2VFeGNlcHRpb246OlF1b3RhRXhjZWVkZWRF
cnJvcik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViSURCS2V5OjpJbnZhbGlkVHlwZSwgSURCS2V5OjpJbnZhbGlkVHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2Vu
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuY3BwCmluZGV4IDI4OTk1ZWM2NjBlMzFmZjdjZWZhZDkzZWIzYmRhMjM0MWFhMWVmZjgu
LmZmZjU0OTY1ZTczOTBkYWE5YWM5ZGFiZTU0NzEyODcyYTMyM2FlM2YgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCkBA
IC0xNzgsNyArMTc4LDcgQEAgYm9vbCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxvd0luZGV4
ZWREQihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb24KICAgICB9CiAKICAgICBp
ZiAoIWFsbG93ZWQpCi0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihXZWJJREJEYXRhYmFzZUVy
cm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIlRoZSB1c2VyIGRlbmllZCBw
ZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgZGF0YWJhc2UuIikpOworICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoV2ViSURCRGF0YWJhc2VFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93
bkVycm9yLCAiVGhlIHVzZXIgZGVuaWVkIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSBkYXRhYmFz
ZS4iKSk7CiAKICAgICByZXR1cm4gYWxsb3dlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSURCUmVxdWVzdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JREJSZXF1ZXN0VGVzdC5jcHAKaW5kZXggOGE3YTNmNGE3YmE2ODczODRmNjU1
ZDk4M2JhNmE4NDNiMjAyYmQxMy4uN2E4ZmRiYzUzMWZkYTU4ZWU0MWE0NjE1NGQyNDg1ZTM0ZjRl
NTRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJSZXF1ZXN0
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJSZXF1ZXN0VGVz
dC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgVEVTVF9GKElEQlJlcXVlc3RUZXN0LCBFdmVudHNBZnRl
clN0b3BwaW5nKQogICAgIHJlcXVlc3QtPnN0b3AoKTsKIAogICAgIC8vIEVuc3VyZSBub25lIG9m
IHRoZSBmb2xsb3dpbmcgcmFpc2UgYXNzZXJ0aW9ucyBpbiBzdG9wcGVkIHN0YXRlOgotICAgIHJl
cXVlc3QtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfQUJPUlRfRVJSLCAiRGVzY3JpcHRpb24gZ29lcyBoZXJlLiIpKTsKKyAgICByZXF1
ZXN0LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6QWJvcnRFcnJvciwgIkRlc2NyaXB0aW9uIGdvZXMgaGVyZS4iKSk7CiAgICAgcmVxdWVzdC0+
b25TdWNjZXNzKERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpKTsKICAgICByZXF1ZXN0LT5vblN1Y2Nl
c3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPigpLCBJREJLZXk6OmNyZWF0
ZUludmFsaWQoKSwgSURCS2V5OjpjcmVhdGVJbnZhbGlkKCksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6bnVsbFZhbHVlKCkpOwogICAgIHJlcXVlc3QtPm9uU3VjY2VzcyhJREJLZXk6OmNyZWF0ZUlu
dmFsaWQoKSk7CkBAIC0xMTMsNyArMTEzLDcgQEAgVEVTVF9GKElEQlJlcXVlc3RUZXN0LCBBYm9y
dEVycm9yQWZ0ZXJBYm9ydCkKIAogICAgIC8vIE5vdyBzaW11bGF0ZSB0aGUgYmFjayBlbmQgaGF2
aW5nIGZpcmVkIGFuIGFib3J0IGVycm9yIGF0IHRoZSByZXF1ZXN0IHRvIGNsZWFyIHVwIGFueSBp
bnRlcm1lZGlhcmllcy4KICAgICAvLyBFbnN1cmUgYW4gYXNzZXJ0aW9uIGlzIG5vdCByYWlzZWQu
Ci0gICAgcmVxdWVzdC0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OklEQl9BQk9SVF9FUlIsICJEZXNjcmlwdGlvbiBnb2VzIGhlcmUuIikpOwor
ICAgIHJlcXVlc3QtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpBYm9ydEVycm9yLCAiRGVzY3JpcHRpb24gZ29lcyBoZXJlLiIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>