<?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>138174</bug_id>
          
          <creation_ts>2014-10-29 08:28:52 -0700</creation_ts>
          <short_desc>Eliminate ResourceBuffer and use SharedBuffer directly instead</short_desc>
          <delta_ts>2014-11-04 11:12:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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>
          <dependson>138327</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1044756</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-29 08:28:52 -0700</bug_when>
    <thetext>Eliminate ResourceBuffer and use SharedBuffer directly instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044766</commentid>
    <comment_count>1</comment_count>
      <attachid>240607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-29 09:49:45 -0700</bug_when>
    <thetext>Created attachment 240607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044767</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-29 09:57:05 -0700</bug_when>
    <thetext>Looks like I didn’t update the EFL build system to remove the reference to ResourceBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044768</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-29 09:57:28 -0700</bug_when>
    <thetext>Still interested in review of this first cut, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044798</commentid>
    <comment_count>4</comment_count>
      <attachid>240607</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-29 11:58:14 -0700</bug_when>
    <thetext>Comment on attachment 240607
Patch

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

&gt; Source/WebCore/loader/cache/CachedResource.h:361
&gt; +class CachedResource::Callback {
&gt; +public:
&gt; +    Callback(CachedResource&amp;, CachedResourceClient&amp;);
&gt; +
&gt; +    void cancel();
&gt; +
&gt; +private:
&gt; +    void timerFired(Timer&lt;Callback&gt;&amp;);
&gt; +
&gt; +    CachedResource&amp; m_resource;
&gt; +    CachedResourceClient&amp; m_client;
&gt; +    Timer&lt;Callback&gt; m_timer;
&gt; +};

You could probably remove this awkward type and use a lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044964</commentid>
    <comment_count>5</comment_count>
      <attachid>240607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-29 20:20:46 -0700</bug_when>
    <thetext>Comment on attachment 240607
Patch

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

&gt;&gt; Source/WebCore/loader/cache/CachedResource.h:361
&gt;&gt; +};
&gt; 
&gt; You could probably remove this awkward type and use a lambda.

Good direction; but for the moment, not sure how to use a lambda with a Timer since there’s no std::function version yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045031</commentid>
    <comment_count>6</comment_count>
      <attachid>240673</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-30 08:46:57 -0700</bug_when>
    <thetext>Created attachment 240673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045035</commentid>
    <comment_count>7</comment_count>
      <attachid>240675</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-30 09:08:32 -0700</bug_when>
    <thetext>Created attachment 240675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045045</commentid>
    <comment_count>8</comment_count>
      <attachid>240679</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-30 09:43:09 -0700</bug_when>
    <thetext>Created attachment 240679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045211</commentid>
    <comment_count>9</comment_count>
      <attachid>240721</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-30 19:31:28 -0700</bug_when>
    <thetext>Created attachment 240721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045220</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-30 21:25:29 -0700</bug_when>
    <thetext>Committed r175406: &lt;http://trac.webkit.org/changeset/175406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045262</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-10-31 05:06:14 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Committed r175406: &lt;http://trac.webkit.org/changeset/175406&gt;

It made 15 tests crash on Apple&apos;s debug bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045369</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-31 14:10:05 -0700</bug_when>
    <thetext>Looking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045373</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-31 14:14:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/175423 should help</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045796</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-03 11:36:12 -0800</bug_when>
    <thetext>Some tests are still broken after this change.

https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/r175469%20(258)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045807</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-03 11:45:54 -0800</bug_when>
    <thetext>CRASHING TEST:/multipart/stop-crash.html

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010d817bfa WTFCrash + 42
1   com.apple.WebCore             	0x000000010f0ce16e WTF::PassRef&lt;WebCore::SharedBuffer&gt;::~PassRef() + 62 (PassRef.h:102)
2   com.apple.WebCore             	0x000000010f0cda15 WTF::PassRef&lt;WebCore::SharedBuffer&gt;::~PassRef() + 21 (PassRef.h:103)
3   com.apple.WebCore             	0x0000000110aa440c WebCore::SubresourceLoader::didReceiveResponse(WebCore::ResourceResponse const&amp;) + 764 (SubresourceLoader.cpp:239)
4   com.apple.WebKit              	0x000000010ac27a87 WebKit::WebResourceLoader::didReceiveResponse(WebCore::ResourceResponse const&amp;, bool) + 311 (WebResourceLoader.cpp:129)
5   com.apple.WebKit              	0x000000010ac2b6fa void IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(WebCore::ResourceResponse const&amp;, bool), std::__1::tuple&lt;WebCore::ResourceResponse, bool&gt;, 0ul, 1ul&gt;(WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(WebCore::ResourceResponse const&amp;, bool), std::__1::tuple&lt;WebCore::ResourceResponse, bool&gt;&amp;&amp;, std::index_sequence&lt;0ul, 1ul&gt;) + 186 (HandleMessage.h:17)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045855</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-03 14:20:25 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 138327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045861</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-03 14:29:07 -0800</bug_when>
    <thetext>Rolled out the patch and follow-up fixes in &lt;https://trac.webkit.org/r175491&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046081</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-04 08:47:47 -0800</bug_when>
    <thetext>Committed r175549: &lt;http://trac.webkit.org/changeset/175549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046083</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-04 08:55:33 -0800</bug_when>
    <thetext>Oops, one test still failing. Opening a new bug to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046114</commentid>
    <comment_count>20</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 11:12:32 -0800</bug_when>
    <thetext>Landed an iOS build fix: http://trac.webkit.org/changeset/175552</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240607</attachid>
            <date>2014-10-29 09:49:45 -0700</date>
            <delta_ts>2014-10-30 08:46:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138174-20141029094952.patch</filename>
            <type>text/plain</type>
            <size>152811</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ4ZWExMThmMjk3MDg4
YzM3YTM0M2QwYWFlNmU4YjZhMDQxNzdiMi4uY2EwZmQwZjNjZTk2ZjE5OWU3NDBhNzQ0MzlhNTRl
NDM3NjUxMDE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NiBAQAorMjAxNC0xMC0yOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRWxpbWluYXRlIFJlc291cmNl
QnVmZmVyIGFuZCB1c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODE3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCB3aXRoIHRl
c3QgY292ZXJhZ2UgYWNyb3NzIG1hbnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjogUmVtb3ZlZCBSZXNvdXJjZUJ1ZmZlci1yZWxhdGVkIHN5bWJvbHMsIGFuZCB1
cGRhdGVkIHN5bWJvbAorICAgICAgICBmb3Igb25lIGZ1bmN0aW9uIHRoYXQgdXNlZCB0byB0YWtl
IGEgUGFzc1JlZlB0ciBidXQgbm93IHRha2VzIGEgcmVmZXJlbmNlIGluc3RlYWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERlbGV0ZWQgUmVzb3VyY2VC
dWZmZXIubW0vLmNwcC8uaC4KKworICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRl
bnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRh
dGlvbjpdKTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAgICAgKiBlZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJl
Y3RseSwgYW5kCisgICAgICAgIGFsc28gcGFzcyBhIHJlZmVyZW5jZSBvbmx5IGlmIG5vbi1udWxs
IHJhdGhlciB0aGFuIHBhc3NpbmcgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKTogRGl0dG8uIEFkZGVkIGEgbWlzc2luZyBudWxsIGNo
ZWNrLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudCk6
IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6IERpdHRvLgorCisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3Rs
eSwKKyAgICAgICAgYW5kIHVzZSB0aGUgY29weSBmdW5jdGlvbiByYXRoZXIgdGhhbiBhIGhhbmQt
d3JpdHRlbiBhbHRlcm5hdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUNyZWF0ZUFyY2hpdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjptYWluUmVzb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpzdWJyZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOiBEaXR0by4KKworICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOiBDaGFuZ2VkIG1haW5SZXNvdXJjZURhdGEgdG8g
cmV0dXJuIGEKKyAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LiBXb3VsZCBiZSBiZXR0
ZXIgaWYgaXQgcmV0dXJuZWQgYSBTaGFyZWRCdWZmZXImLAorICAgICAgICBidXQgaXQgY3VycmVu
dGx5IHJldHVybnMgYSBuZXdseSBjcmVhdGVkIGJ1ZmZlciB3aGVuIHRoZXJlIGlzIHN1YnN0aXR1
dGUKKyAgICAgICAgZGF0YSBhbmQgY2FuIGFsc28gcmV0dXJuIG51bGwsIGV2ZW4gdGhvdWdoIG1h
bnkgY2FsbGVycyBhc3N1bWUgaXQgd2lsbCBub3QhCisKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVy
OjpkYXRhUmVjZWl2ZWQpOiBSZW1vdmVkIGNhbGwgdG8gdW51c2VkIGNsaWVudAorICAgICAgICBm
dW5jdGlvbiBidWZmZXJSZWNlaXZlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogUmVtb3ZlZCB1bnVzZWQgYnVmZmVyCisgICAgICAgIGFy
Z3VtZW50IHRvIGNsaWVudCBmdW5jdGlvbiBsb2FkRmluaXNoZWQuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VCdWZmZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUJ1ZmZlci5oOiBSZW1vdmVkLgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOiBV
c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKTog
VXNlIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIv
VGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6
cHJvY2Vzc05ld0N1ZURhdGEpOiBVc2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UpOiBEaXR0by4K
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6IERpdHRvLgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6IFVzZSBTaGFyZWRCdWZmZXIu
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDogRGl0dG8uCisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oOiBEaXR0by4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50
KTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRS
ZW1vdmVDbGllbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjphZGRJ
bmNyZW1lbnRhbERhdGFCdWZmZXIpOiBEaXR0by4gQ2hhbmdlZCB0byB0YWtlCisgICAgICAgIGEg
cmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjphZGREYXRhQnVmZmVyKTogRGl0dG8uIEFsc28gYWRkZWQgY2FsbCB0aHJvdWdoCisg
ICAgICAgIHRvIGJhc2UgY2xhc3MgYW5kIGNoYW5nZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSByYXRo
ZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6YWRkRGF0
YSk6IERpdHRvLiBBbHNvIGFkZGVkIGNhbGwgdGhyb3VnaCB0byBiYXNlIGNsYXNzLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOiBEaXR0by4KKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDogRGl0dG8uIEFsc28gY2hhbmdlZCB0aGUgdHlw
ZSBvZiBzb21lIGJpdCBmaWVsZHMKKyAgICAgICAgdG8gYmUgdW5zaWduZWQgaW5zdGVhZCBvZiB1
bnNpZ2VuZCBjaGFyLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayk6IFVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcik6IERpdHRvLiBDaGFuZ2VkIHRvIHRha2UK
KyAgICAgICAgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Y2FuUmV1c2UpOiBEaXR0by4KKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDogRGl0dG8uCisKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OkNhY2hlZFJlc291cmNlKTogUmVvcmRlcmVkIGRhdGEgbWVtYmVycyBkdWUgdG8gY2hh
bmdlCisgICAgICAgIGluIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
OjphZGREYXRhQnVmZmVyKTogQ2hhbmdlZCBhcmd1bWVudCB0eXBlLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQpOiBSZWZhY3RvcmVkIHRvIGVsaW1pbmF0
ZSBvbmUgZXh0cmEgaGFzaAorICAgICAgICB0YWJsZSBsb29rdXAgYnkgdXNpbmcgdGhlIHJldHVy
biB2YWx1ZSBmcm9tIHRoZSByZW1vdmUgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQpOiBVc2Ugc3RkOjptYWtlX3VuaXF1ZSBkaXJlY3Rs
eSBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIGEgZnVuY3Rpb24gbmFtZWQgInNjaGVkdWxlIiB0
byBhbGxvY2F0ZSB0aGUgY2FsbGJhY2sgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2U6OkNhbGxiYWNrOjpDYWxsYmFjayk6IENoYW5nZWQgZnVuY3Rpb24gYW5kIGRhdGEg
bWVtYmVyCisgICAgICAgIG5hbWUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
Q2FsbGJhY2s6OmNhbmNlbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKTogQ2hhbmdlZCB0byB0YWtlIGEgU2hh
cmVkQnVmZmVyJi4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOiBD
aGFuZ2VkIHR5cGVzIHRvIHVzZSBTaGFyZWRCdWZmZXIuIEFsc28gbWFkZSBtb3N0CisgICAgICAg
IGRhdGEgbWVtYmVycyBhbmQgb25lIGZ1bmN0aW9uIG1lbWJlciBwcml2YXRlIGluc3RlYWQgb2Yg
cHJvdGVjdGVkLiBBbHNvIHJlbmFtZWQgdGhlCisgICAgICAgIENhY2hlZFJlc291cmNlOjpDYWNo
ZWRSZXNvdXJjZUNhbGxiYWNrIGZ1bmN0aW9uIENhY2hlZFJlc291cmNlOjpDYWxsYmFjayBhbmQg
bW92ZWQKKyAgICAgICAgaXRzIGRlZmluaXRpb24gb3V0IG9mIHRoZSBDYWNoZWRSZXNvdXJjZSBj
bGFzcyBkZWZpbml0aW9uLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Q2xpZW50Lmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdE
b2N1bWVudDo6ZmluaXNoTG9hZGluZyk6IFVzZSBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDogRGl0dG8uIE1hZGUgZGF0YSBtZW1iZXJz
IHByaXZhdGUuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6IFVzZSBTaGFyZWRC
dWZmZXIuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOiBEaXR0by4gQWxz
byBmaXhlZCBpbmRlbnRpbmcgYW5kIHJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgZm9yd2FyZCBk
ZWNsYXJhdGlvbi4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVEYXRhKTogQWRkZWQs
IHNvIHRoYXQgZmluaXNoTG9hZGluZyBkb2VzIG5vdAorICAgICAgICBjYWxsIGFkZERhdGFCdWZm
ZXIuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmFkZERhdGFCdWZmZXIpOiBU
YWtlIFNoYXJlZEJ1ZmZlciwgY2FsbCB1cGRhdGVEYXRhLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5oOiBUYWtlIG91dCB1bm5lZWRlZCBleHBsaWNpdCBvdmVycmlk
ZSBvZiB0aGUKKyAgICAgICAgZGVzdHJ1Y3Rvci4gVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4K
KworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOiBVcGRhdGVk
IHRvIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaDogVG9vayBvdXQgdW5uZWVkZWQgaW5jbHVkZXMsIG1hZGUgZXZlcnl0aGluZwor
ICAgICAgICBwcml2YXRlIHJhdGhlciB0aGFuIHByb3RlY3RlZC4gQWRkZWQgYW4gZXhwbGljaXQg
dmlydHVhbCBjb25zdHJ1Y3RvciBzbyB3ZSBjYW4KKyAgICAgICAgY29tcGlsZSB3aXRob3V0IGtu
b3dpbmcgaG93IHRvIHJlZi9kZXJlZiBUZXh0UmVzb3VyY2VEZWNvZGVyLgorCisgICAgICAgICog
bG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBVcGRhdGVkIHRvIHVzZSBTaGFy
ZWRCdWZmZXIKKyAgICAgICAgYW5kIHRvIGNhbGwgYWRkRGF0YUJ1ZmZlciBvbmx5IGlmIHRoZXJl
IGlzIGEgbmV3IGRhdGEgYnVmZmVyLgorCisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oOiBVc2UgU2hhcmVkQnVmZmVyJiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIu
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJh
Y2tlZCk6IERpdHRvLgorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6IFVzZSBTaGFyZWRC
dWZmZXIqIGluc3RlYWQgb2YKKyAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPi4KKworICAg
ICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VCdWZmZXIubW06IFJlbW92ZWQuCisKKyAgICAgICAg
KiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBVc2UgU2hhcmVkQnVmZmVyLgorCisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y2xlYXIpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkpOiBSZXR1cm4gYSBQYXNzUmVmIGluc3RlYWQgb2YgYSBQ
YXNzUmVmUHRyLCBzaW5jZQorICAgICAgICB0aGlzIG5ldmVyIHJldHVybnMgbnVsbC4gVXNlIG1v
ZGVybiBmb3IgbG9vcHMuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHlCdWZm
ZXJBbmRDbGVhcik6IFVzZSBhIG1vZGVybiBmb3IgbG9vcC4KKworICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oOiBDaGFuZ2VkIGNvcHkgdG8gcmV0dXJuIFBhc3NSZWYgaW5zdGVhZCBv
ZiBQYXNzUmVmUHRyLgorICAgICAgICBDaGFuZ2VkIHRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0
Zm9ybUJ1ZmZlciB0byB0YWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAgICAgIGEgcG9p
bnRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3Jt
QnVmZmVyKTogVGFrZSBhIHJlZmVyZW5jZQorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oOiBSZW1vdmVkIHVudXNlZCBmdW5jdGlvbgorICAgICAgICBidWZmZXJSZWNlaXZlZCBhbmQg
dW5uZWVkZWQgYnVmZmVyIGFyZ3VtZW50IGZyb20gbG9hZEZpbmlzaGVkLiBBbHNvIG1hcmtlZCB0
aGUKKyAgICAgICAgY29uc3RydWN0b3IgZXhwbGljaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0
V2l0aFJlc291cmNlKTogVXNlCisgICAgICAgIFNoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5p
c2hlZCk6IFVwZGF0ZWQgZm9yIGNoYW5nZSB0bworICAgICAgICBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bTogUmVtb3ZlZCBpbmNsdWRlIG9mIFJlc291cmNlQnVmZmVyLmguCisKIDIwMTQtMTAtMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB2aXJ0dWFs
IGZ1bmN0aW9ucyBpbiBodG1sLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDVmNTYyMWZjNDJjYmYyYmZj
YzBkZWRlMjI0YzY1YzZhMzhhYjE0ZTguLjZlMDVlZjMxMGE3ZWY1MTUyMTU0NTZmYjYyZjY4MmZi
MDFjMzIxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0xMC0yOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRWxpbWluYXRlIFJlc291
cmNlQnVmZmVyIGFuZCB1c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODE3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKTogVXNlIFNoYXJlZEJ1
ZmZlciBkaXJlY3RseS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
Ol0pOiBEaXR0by4KKwogMjAxNC0xMC0yOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIG9wdGltaXplZCBmdWxsc2NyZWVuIG1vZGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggY2IwMjY1OWNkMDlmOTE5N2Q1OTc2YWVlOTdiZTE1YzA2OTZlNTM5Zi4uMzJiNDI2MzQxNmM0
MjI4MjI4ZjhkNWJmYzM3ODY3MDYzZjI1MGRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBA
CisyMDE0LTEwLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBF
bGltaW5hdGUgUmVzb3VyY2VCdWZmZXIgYW5kIHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkgaW5z
dGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4
MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOiBVc2UgYSByZWZlcmVuY2UgaW5z
dGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rp
c2tDYWNoZU1vbml0b3IuaDogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05l
dHdvcmtEaXNrQ2FjaGVNb25pdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGlza0Nh
Y2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKTogRGl0dG8uCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9t
U2hhcmVkQnVmZmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVzb3VyY2VCdWZm
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9XZWJSZXNvdXJjZUJ1ZmZlci5oOiBS
ZW1vdmVkLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBS
ZW1vdmVkIFdlYlJlc291cmNlQnVmZmVyLmNwcC9oLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5j
bHVkZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2Fj
aGVSZXNvdXJjZSk6IFVzZSBhIHJlZmVyZW5jZSBpbnN0ZWFkCisgICAgICAgIG9mIGEgcG9pbnRl
ci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6IFVzZSBT
aGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSk6IERpdHRvLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOiBSZWZhY3RvcmVkIHRvIG1ha2Ug
dGhlIHJlbGF0aW9uc2hpcAorICAgICAgICBiZXR3ZWVuIHRoZSBidWZmZXIgYW5kIHRoZSBEYXRh
UmVmZXJlbmNlIGNsZWFyZXIgYW5kIHRvIGF2b2lkIGhhdmluZyBhIGxvbmctbGl2ZWQKKyAgICAg
ICAgRGF0YVJlZmVyZW5jZSBwb2ludGluZyB0byBhbiB1bmRlcmx5aW5nIGJ1ZmZlciB3aXRoIHVu
Y2xlYXIgbGlmZXRpbWUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRlbnRzQXNT
dHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZSk6IERpdHRvLiBBbHNvIHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0
bHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6
IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0Ojpjb250YWluaW5nTGlua0VsZW1lbnQpOiBVc2UgZWxlbWVudExp
bmVhZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQp
OiBVc2UgcmVmZXJlbmNlcyBhbmQgU2hhcmVkQnVmZmVyLgorICAgICAgICBBTHNvIGRpZCBhIGJp
dCBvZiBvdGhlciBjbGVhbnVwIGluIGhlcmUuCisgICAgICAgIChXZWJLaXQ6OmlzQXNzaXN0YWJs
ZUVsZW1lbnQpOiBUYWtlIEVsZW1lbnQmIGluc3RlYWQgb2YgTm9kZSosIHNpbmNlIHRoYXQncyB3
aGF0CisgICAgICAgIHRoZSBjYWxsZXIgaGFzLgorICAgICAgICAoV2ViS2l0OjpuZXh0QXNzaXN0
YWJsZUVsZW1lbnQpOiBDaGFuZ2VkIG5hbWUgdG8gbWF0Y2ggd2hhdCB0aGUgZnVuY3Rpb24gZG9l
cy4KKyAgICAgICAgQWRkZWQgYW4gb2J2aW91c2x5LW1pc3NpbmcgY2hlY2sgb24gdGhlIHN0YXJ0
Tm9kZSBhcmd1bWVudC4gVXBkYXRlZCBmb3IgY2hhbmdlCisgICAgICAgIHRvIGlzQXNzaXN0YWJs
ZUVsZW1lbnQgYWJvdmUuIFRha2UgYSBQYWdlJiBpbnN0ZWFkIG9mIGEgUGFnZSouCisgICAgICAg
IChXZWJLaXQ6Omhhc0Fzc2lzdGFibGVFbGVtZW50KTogQ2hhbmdlZCBuYW1lIHRvIG1hdGNoIHdo
YXQgdGhlIGZ1bmN0aW9uIGRvZXMuCisgICAgICAgIFVwZGF0ZWQgZm9yIGNoYW5nZSB0byBuZXh0
QXNzaXN0YWJsZUVsZW1lbnQgYWJvdmUuIFRvb2sgb3V0IGluY29ycmVjdCBjb21wYXJpc29uCisg
ICAgICAgIG9mIGEgQysrIHBvaW50ZXIgdG8gdGhlIE9iamVjdGl2ZS1DIG9iamVjdCBwb2ludGVy
IG5pbC4gVGFrZSBhIFBhZ2UmIGluc3RlYWQgb2YgYSBQYWdlKi4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKTogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdl
cy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24p
OiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCiAyMDE0LTEwLTI4ICBUaW5nLVdlaSBMYW4g
IDxsYW50dzQ0QGdtYWlsLmNvbT4KIAogICAgICAgICBDYXN0IHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bi5jb3VudCgpIHRvIGludDY0X3QgaW4gQXJndW1lbnRDb2RlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCBlMmQ4NTI4NTZmMTZhNzllMzBkZmQ5YWJjMDZhNWM4ZDZlOWI0NDc4Li4yYjFhODYwODc5
NTdjNmUzNzhhMzVlOTQ2ZmQ1ZDZjYzk5NTNlODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
MzQwLDcgKzM0MCw3IEBAIF9fWk43V2ViQ29yZTEzcG9pbnRlckN1cnNvckV2CiBfX1pON1dlYkNv
cmUxM3RvSlNET01XaW5kb3dFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTE0Q2FjaGVkUmVz
b3VyY2UxMnJlbW92ZUNsaWVudEVQTlNfMjBDYWNoZWRSZXNvdXJjZUNsaWVudEUKIF9fWk43V2Vi
Q29yZTE0Q2FjaGVkUmVzb3VyY2UxNnVucmVnaXN0ZXJIYW5kbGVFUE5TXzI0Q2FjaGVkUmVzb3Vy
Y2VIYW5kbGVCYXNlRQotX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTIxdHJ5UmVwbGFjZUVu
Y29kZWREYXRhRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFCitfX1pON1dl
YkNvcmUxNENhY2hlZFJlc291cmNlMjF0cnlSZXBsYWNlRW5jb2RlZERhdGFFUk5TXzEyU2hhcmVk
QnVmZmVyRQogX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTlhZGRDbGllbnRFUE5TXzIwQ2Fj
aGVkUmVzb3VyY2VDbGllbnRFCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFUktOM1dU
RjZWZWN0b3JJTlNfOUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pO
N1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdgpAQCAtMzgzLDEzICszODMsNiBAQCBfX1pON1dl
YkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVhdGVCbG9iUmVnaXN0cnlFdgogX19aTjdXZWJDb3Jl
MTRMb2FkZXJTdHJhdGVneTIxcmVzb3VyY2VMb2FkU2NoZWR1bGVyRXYKIF9fWk43V2ViQ29yZTE0
TG9hZGVyU3RyYXRlZ3kyNWxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlFUE5TXzE3TmV0d29ya2lu
Z0NvbnRleHRFbVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFTlNfMTdTdG9yZWRDcmVkZW50aWFsc0VO
U18yMkNsaWVudENyZWRlbnRpYWxQb2xpY3lFUk5TXzEzUmVzb3VyY2VFcnJvckVSTlNfMTZSZXNv
dXJjZVJlc3BvbnNlRVJOM1dURjZWZWN0b3JJY0xtMEVOU0NfMTVDcmFzaE9uT3ZlcmZsb3dFRUUK
IF9fWk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQxMnBsdWdpbldpZGdldEV2Ci1fX1pON1dlYkNv
cmUxNFJlc291cmNlQnVmZmVyMTJjcmVhdGVOU0RhdGFFdgotX19aTjdXZWJDb3JlMTRSZXNvdXJj
ZUJ1ZmZlcjZhcHBlbmRFUEtjagotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckMxRVBLY2oK
LV9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJDMUV2Ci1fX1pON1dlYkNvcmUxNFJlc291cmNl
QnVmZmVyQzJFdgotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckQxRXYKLV9fWk43V2ViQ29y
ZTE0UmVzb3VyY2VCdWZmZXJEMkV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTJmaXJz
dFJlcXVlc3RFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTE2c2V0RGVmZXJzTG9hZGlu
Z0ViCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRlbnRTbmlmZmluZ0V2
CkBAIC0xNzE3LDkgKzE3MTAsNiBAQCBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMxZ2V0
Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlc0VSTjNXVEY2VmVjdG9ySU5TXwogX19aTks3V2Vi
Q29yZTE0RnJhbWVTZWxlY3Rpb24zNnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVu
dEV2CiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CiBfX1pOSzdXZWJD
b3JlMTRSZW5kZXJMaXN0SXRlbTEwbWFya2VyVGV4dEV2Ci1fX1pOSzdXZWJDb3JlMTRSZXNvdXJj
ZUJ1ZmZlcjRkYXRhRXYKLV9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNHNpemVFdgotX19a
Tks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI3aXNFbXB0eUV2CiBfX1pOSzdXZWJDb3JlMTRSZXNv
dXJjZUhhbmRsZTEwY29ubmVjdGlvbkV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUxvYWRlcjEx
ZnJhbWVMb2FkZXJFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIzMmlzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzRXYKQEAgLTI3ODEsNyArMjc3MSw2IEBAIF9fWk5LN1dlYkNv
cmUxNEZyYW1lU2VsZWN0aW9uMjlyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVjdGlvbkVpCiBfX1pO
SzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMycmFuZ2VCeUV4dGVuZGluZ0N1cnJlbnRTZWxlY3Rp
b25FaQogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNWNoYXJhY3RlckluUmVsYXRpb25U
b0NhcmV0U2VsZWN0aW9uRWkKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzZlbGVtZW50
UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb25FdgotX19aTks3V2ViQ29yZTE0UmVzb3VyY2VC
dWZmZXIxMnNoYXJlZEJ1ZmZlckV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjh0b1N0
cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMWNvbnRlbnRzTGF5ZXJGb3JN
ZWRpYUV2CiBfX1pOSzdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb240bGVmdEViCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzkxYzE2
NmYxZGFkOWJhNmY2ZGU2M2FkMDQxNDVlMjY5MTkyMThjMC4uZWM5YmU0Mjg5OWUzOWJiODcyOGJl
NWMzOWNjMjU2ZjY5NjA3MDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg2Nyw5ICsxODY3LDYgQEAKIAkJNTE0MDVDODkx
OTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MDVDODcxOTBCMDE0NDAwNzU0Rjk0
IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lz
dGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRC
M0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEIzRjc2MEM3MjIwNTUwMDA1MzBERiAv
KiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi87
IH07Ci0JCTUxNEJDODNGMTYxQ0YwNEEwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJDODNEMTYxQ0Yw
NDMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSAqLzsgfTsKLQkJNTE0QkM4NDIxNjFDRjA1
QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJDODQwMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJj
ZUJ1ZmZlci5jcHAgKi87IH07Ci0JCTUxNEJDODQzMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJj
ZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0QkM4NDExNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2MzcwQ0U5MjI1RTAw
N0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0Qzc2MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMRXJyb3IuY3Bw
ICovOyB9OwogCQk1MTRDNzYzODBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzYz
NjBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgKi87IH07CiAJCTUxNEM3
NjRDMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NE
IC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTg5NzUsOSArODk3Miw2IEBACiAJCTUxNDA1Qzg3MTkwQjAxNDQw
MDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRCQzgzRDE2MUNGMDQzMDA0RDUy
RjQgLyogUmVzb3VyY2VCdWZmZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBSZXNvdXJjZUJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTE0QkM4NDAxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVmZmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QkM4NDExNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNl
QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjM1MENFOTIyNUUwMDdFRjND
RCAvKiBKU1NRTEVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU1FMRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzYzNjBD
RTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9u
TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzYyMSw3ICsxNzYxNSw2IEBACiAJ
CQkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLywK
IAkJCQk2NTZEMzcxQTBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMuaCAqLywK
IAkJCQk2NTZEMzcxQjBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMubW0gKi8s
Ci0JCQkJNTE0QkM4M0QxNjFDRjA0MzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1tICovLAog
CQkJCTUxQUEzRjZFMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1hYy5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMjEyODcsOCArMjEyODAsNiBAQAogCQkJCTFBMkE2
ODIxMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuY3BwICovLAogCQkJCTFBMkE2
ODIyMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCAqLywKIAkJCQkxQUNBREQ3
ODE4ODBEOTFDMDBEOEI3MUQgLyogUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggKi8sCi0JCQkJNTE0
QkM4NDAxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCAqLywKLQkJCQk1MTRC
Qzg0MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCAqLywKIAkJCQk5M0UyMjdE
RTBBRjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzI3
MEFEQkE1REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCUQwQTNBNzMwMTQw
NUEzOTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCAqLywKQEAgLTI1ODQ5LDcg
KzI1ODQwLDYgQEAKIAkJCQk5OUNDMEI1QzE4QkU5ODRBMDA2Q0VCQ0MgLyogUmVwbGF5U2Vzc2lv
blNlZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThBRUM2MTNGOUQwRUEwMDkwQjFBQSAv
KiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1
QjNERDAxMjUxRjEyRDAwM0VGMjY5IC8qIFJlc2V0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTRCQzg0MzE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdFRTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VF
cnJvckJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3Njc5MENFOTIzQTEwMDdFRjNDRCAv
KiBSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTMxNiw4ICsyOTMwNiw2IEBA
CiAJCQkJOTlDQzBCNTkxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheVNlc3Npb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTlDQzBCNUIxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheVNlc3Npb25T
ZWdtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzRENGMTI1MUYxMkQwMDNFRjI2OSAv
KiBSZXNldElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTRCQzg0MjE2MUNGMDVD
MDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE0QkM4
M0YxNjFDRjA0QTAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM0RjcxM0UwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdFRTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VGM0NEIC8qIFJl
c291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggYjhkOTMzMDVhOTczMjM1
Y2NhNzMwNzA1ZWUzYjRmNDNkNWQ0OTFiNC4uMjAxYzI1OWM4Mzk2YjY1NGZmM2Y2ZWE0MmMxNWRk
NDQ3MTJjZTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01V
SUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01V
SUtpdEV4dGVuc2lvbnMubW0KQEAgLTYyLDcgKzYyLDYgQEAKICNpbXBvcnQgIlJlbmRlck9iamVj
dC5oIgogI2ltcG9ydCAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbXBvcnQgIlJlbmRlclRl
eHQuaCIKLSNpbXBvcnQgIlJlc291cmNlQnVmZmVyLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIu
aCIKICNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCAiVmlzaWJsZVVuaXRzLmgi
CkBAIC00NjQsMjMgKzQ2MywxNSBAQCBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEltYWdlRWxlbWVu
dCAoV2ViRE9NSFRNTEltYWdlRWxlbWVudE9wZXJhdGlvbnNQcml2YXRlKQogCiAtIChOU0RhdGEg
KilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiB7Ci0gICAgV2ViQ29yZTo6
Q2FjaGVkSW1hZ2UgKmNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2UoKTsKKyAg
ICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJ
bWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
V2ViQ29yZTo6SW1hZ2UgKmltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgV2ViQ29y
ZTo6SW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIgKmRhdGEgPSBu
aWw7Ci0gICAgaWYgKHJhd0ltYWdlRGF0YSkgewotICAgICAgICBSZXNvdXJjZUJ1ZmZlciAqcmVz
b3VyY2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKLSAgICAgICAgaWYg
KHJlc291cmNlQnVmZmVyKQotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlQnVmZmVyLT5zaGFy
ZWRCdWZmZXIoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkYXRhID0gaW1hZ2UtPmRhdGEoKTsK
LSAgICB9CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8g
Y2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KaW5kZXggMDE5MmQ1ZTkwMTFhMjAyNWU1N2M2YzBjNGVkMzFhMDg2YTFlZGIyMy4uYjll
Yjk2YzZkN2I3YmU2MDVmNjE0MWIyMzgxOTYxMDdjNjE1YTVhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIlBhc3Rl
Ym9hcmQuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdl
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5o
IgpAQCAtMzg1LDcgKzM4NCw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJk
KFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAgICAgcGFzdGVi
b2FyZEltYWdlLnVybC51cmwgPSBpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaW1hZ2VFbGVtZW50LmltYWdlU291cmNl
VVJMKCkpKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0bGU7CiAgICAgcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJkLnJlc291cmNlTUlNRVR5
cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7Ci0gICAgcGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRC
dWZmZXIoKTsKKyAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCk7CiAKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFn
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNmU0MTkw
ZjliNjUzYzQyYmZlMTkyMmUxMzIyODA5ZThjNDFhYmFiYy4uMjkyNzZmYTA0NGUwNjIxM2EwZmIw
M2M3YWJiYjNkYzNhMmU3NzcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtNTIsNyArNTIsNiBAQAogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRl
ckJsb2NrLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiUmVzb3VyY2VCdWZm
ZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCAiU291
bmQuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAtNDQ3LDcgKzQ0Niw3IEBAIHZv
aWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQs
IEVsZW1lbnQmIGltYWdlRWxlbWVuCiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSB1cmw7
CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwogICAgIHBhc3RlYm9hcmRJ
bWFnZS51cmwudXNlclZpc2libGVGb3JtID0gY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKHBh
c3RlYm9hcmRJbWFnZS51cmwudXJsKTsKLSAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
ID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpOworICAgIHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSA9IGNhY2hlZEltYWdlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCk7CiAKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJ
bWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCAxNzllYzEwODE2
NWZhM2JhMWE1MWNhMzFhYzVkZjZkZjZkZGRjMGRiLi40MGE3YjU3MjA4NzFkYWRjZTk4ZDliNTM2
MjFhZGVkYzYwZTAxNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAg
LTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmF3RGF0YURvY3Vt
ZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgotI2luY2x1ZGUgIlJlc291
cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTM0LDcgKzEzMyw4IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFy
c2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUoKTsKIAotICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5hZGREYXRh
QnVmZmVyKGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkuZ2V0KCkpOworICAgIGlmIChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQor
ICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+YWRkRGF0YUJ1ZmZlcigqYnVm
ZmVyKTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwogfQpAQCAtMTQzLDExICsxNDMsMTEgQEAgdm9p
ZCBJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIGlmICghcGFyc2VyKCkt
PmlzU3RvcHBlZCgpICYmIG1faW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIENhY2hlZEltYWdlJiBj
YWNoZWRJbWFnZSA9ICptX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKLSAgICAgICAgUmVm
UHRyPFJlc291cmNlQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFr
ZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAg
ICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgotICAgICAgICBp
ZiAobG9hZGVyKCktPmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSkKKyAgICAgICAgaWYgKGRh
dGEgJiYgbG9hZGVyKCktPmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSkKICAgICAgICAgICAg
IGRhdGEgPSBkYXRhLT5jb3B5KCk7CiAKICAgICAgICAgY2FjaGVkSW1hZ2UuZmluaXNoTG9hZGlu
ZyhkYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggNzgyODI2ZGM3ZDk5MDhjZjRkOTc1N2M2YTg2ZTc2YjNiZDAwODlk
My4uZjliMmIyMTNmYTQwZWZiNWU0YjM3ZDcxZTkzZTg1MzZmMTI5ZjY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTYyLDcgKzYy
LDYgQEAKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC0xNDMsMTEgKzE0Miw5IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
LCBTCiAKICAgICAqYmFzZTY0RW5jb2RlZCA9ICFoYXNUZXh0Q29udGVudChjYWNoZWRSZXNvdXJj
ZSk7CiAgICAgaWYgKCpiYXNlNjRFbmNvZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGhhc1plcm9TaXplID8gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSA6IGNhY2hl
ZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKTsKLQorICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYXNaZXJvU2l6ZSA/IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkgOiBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjYsNyArMTYzLDcgQEAgYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UsIFMKICAgICAgICAgICAgICpyZXN1bHQgPSBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KCpjYWNo
ZWRSZXNvdXJjZSkuc2NyaXB0KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6IHsKLSAgICAgICAgICAgIFJlc291cmNl
QnVmZmVyKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAg
ICAgICAgIGF1dG8qIGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwog
ICAgICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBjcmVhdGVY
SFJUZXh0RGVjb2RlcihjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBjYWNo
ZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwpAQCAtMTc3LDcgKzE3
NCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUmVzb3VyY2VCdWZmZXIq
IGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICAgICAg
YXV0byogYnVmZmVyID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAg
ICAgICByZXR1cm4gZGVjb2RlQnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2Rpbmco
KSwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE4NiwxMiArMTgzLDEwIEBAIGJvb2wg
SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlLCBTCiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCkKIHsKLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lID0gZnJhbWUtPmRvY3VtZW50KCktPmlucHV0
RW5jb2RpbmcoKTsKLQotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRh
Q29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5pbnB1dEVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIC8vIHN0
YXRpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCmluZGV4IDFjNTdhNGY1N2VmOTU5OTExNjFlZmFmYTA4ZDA0N2YwNzc4OTUyZDUu
LjQ4MWIyYmFkNDE5MmE0NTFiZjRkODIyMDAyMTMyZmMwNDM5YzZlNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTU0
LDcgKzU0LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNpbmNsdWRlICJSZXNvdXJj
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtNDA1LDggKzQwNCw5
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAgICAgaWYgKG1fcmVzb3Vy
Y2VzRGF0YS0+cmVzb3VyY2VUeXBlKHJlcXVlc3RJZCkgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpE
b2N1bWVudFJlc291cmNlKSB7Ci0gICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVy
ID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCk7Ci0gICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIo
cmVxdWVzdElkLCBidWZmZXIgPyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogbnVsbHB0ciwgbG9h
ZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOworICAgICAgICBtX3Jl
c291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHJlcXVlc3RJZCwKKyAgICAgICAg
ICAgIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNl
RGF0YSgpLAorICAgICAgICAgICAgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5pbnB1dEVu
Y29kaW5nKCkpOwogICAgIH0KIAogICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVEZWNvZGVEYXRh
VG9Db250ZW50KHJlcXVlc3RJZCk7CkBAIC00MzUsOCArNDM1LDkgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG8KICAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUocmVxdWVzdElk
KSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2UpIHsKICAgICAgICAgRnJh
bWUqIGZyYW1lID0gbG9hZGVyID8gbG9hZGVyLT5mcmFtZSgpIDogbnVsbHB0cjsKICAgICAgICAg
aWYgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpICYmIGZyYW1lLT5k
b2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9
IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0g
ICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHJlcXVl
c3RJZCwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIsIGZyYW1lLT5k
b2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOworICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSwKKyAgICAg
ICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
NDBhZTU5NDRlYmQ3ZjU0N2I5NDVjOTRhN2Q3ZDI5YzhiZjE5YWQzMC4uOTc3ZWQxNGIwZTIxNjM2
OGIxMTBiMjVjMzI2NGQxMjUwMTNiNmM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgpAQCAt
MTcxLDIwICsxNzAsMjAgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiAgICAg
Y2xlYXJNYWluUmVzb3VyY2UoKTsKIH0KIAotUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gRG9j
dW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAorUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBp
ZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUJ1
ZmZlcjo6Y3JlYXRlKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5kYXRhKCksIG1fc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpLT5zaXplKCkpOworICAgICAgICByZXR1cm4gbV9zdWJzdGl0dXRl
RGF0YS5jb250ZW50KCktPmNvcHkoKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UpCiAgICAgICAg
IHJldHVybiBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogRG9jdW1lbnQqIERvY3VtZW50TG9hZGVyOjpkb2N1
bWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQo
KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBEb2N1bWVudExvYWRlcjo6b3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QKQEAgLTk5
NCw4ICs5OTMsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQog
I2Vsc2UKICAgICAKICAgICAvLyBHaXZlIHRoZSBhcmNoaXZlIG1hY2hpbmVyeSBhIGNyYWNrIGF0
IHRoaXMgZG9jdW1lbnQuIElmIHRoZSBNSU1FIHR5cGUgaXMgbm90IGFuIGFyY2hpdmUgdHlwZSwg
aXQgd2lsbCByZXR1cm4gMC4KLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNvdXJj
ZUJ1ZmZlciA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBtX2FyY2hpdmUgPSBBcmNoaXZlRmFj
dG9yeTo6Y3JlYXRlKG1fcmVzcG9uc2UudXJsKCksIG1haW5SZXNvdXJjZUJ1ZmZlciA/IG1haW5S
ZXNvdXJjZUJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiAwLCBtX3Jlc3BvbnNlLm1pbWVUeXBlKCkp
OworICAgIG1fYXJjaGl2ZSA9IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUobV9yZXNwb25zZS51cmwo
KSwgbWFpblJlc291cmNlRGF0YSgpLmdldCgpLCBtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAg
IGlmICghbV9hcmNoaXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xMDExLDYg
KzEwMDksNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogfQog
CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCisKIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnNldEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQogewogICAg
IG1fYXJjaGl2ZSA9IGFyY2hpdmU7CkBAIC0xMDU4LDQ3ICsxMDU3LDQ2IEBAIFNoYXJlZEJ1ZmZl
ciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KKwogI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogCiBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9h
ZGVyOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIHJldHVybiAwOwotICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSA9IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YXJjaGl2ZVJlc291cmNlRm9yVVJM
KHVybCk7Ci0KLSAgICByZXR1cm4gcmVzb3VyY2UgJiYgIXJlc291cmNlLT5zaG91bGRJZ25vcmVX
aGVuVW5hcmNoaXZpbmcoKSA/IHJlc291cmNlIDogMDsKKyAgICBpZiAoIXJlc291cmNlIHx8IHJl
c291cmNlLT5zaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHJlc291cmNlOwogfQogCiBQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgciA9IHJlc3BvbnNlKCk7Ci0gICAgCi0gICAgUmVmUHRyPFJlc291
cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VCdWZmZXIgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZUJ1ZmZlciA/IG1haW5SZXNv
dXJjZUJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiAwOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgCi0gICAgcmV0dXJuIEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKGRhdGEsIHIudXJsKCksIHIubWltZVR5cGUoKSwgci50ZXh0RW5jb2Rp
bmdOYW1lKCksIGZyYW1lKCktPnRyZWUoKS51bmlxdWVOYW1lKCkpOworICAgIGF1dG8mIHJlc3Bv
bnNlID0gdGhpcy0+cmVzcG9uc2UoKTsKKyAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoZGF0YSwgcmVzcG9uc2UudXJsKCksIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRl
eHRFbmNvZGluZ05hbWUoKSwgZnJhbWUoKS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSk7CiB9CiAKIFBh
c3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVkUmVzb3VyY2UodXJs
KTsKICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+aXNMb2FkZWQoKSkKICAgICAgICAg
cmV0dXJuIGFyY2hpdmVSZXNvdXJjZUZvclVSTCh1cmwpOwogCiAgICAgaWYgKHJlc291cmNlLT50
eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVzb3VyY2VCdWZmZXIqIGRhdGEgPSBy
ZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UtPnJl
c291cmNlQnVmZmVyKCk7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
ZGF0YS0+c2hhcmVkQnVmZmVyKCksIHVybCwgcmVzb3VyY2UtPnJlc3BvbnNlKCkpOworICAgIHJl
dHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShkYXRhLCB1cmwsIHJlc291cmNlLT5yZXNwb25z
ZSgpKTsKIH0KIAogVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBEb2N1bWVudExvYWRl
cjo6c3VicmVzb3VyY2VzKCkgY29uc3QKQEAgLTE1MTEsNyArMTUwOSw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJh
bWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsK
LSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURh
dGEoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VE
YXRhLT5zaXplKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmlu
ZGV4IDQwM2UxOTU3MWM2ZDY2ZGZkMDc3NmY2NzUwOTc1M2VhOTE1OTI1NTYuLjc2OThmZmI4NGZi
ZjcwMmU4NGYxYzFkMmZlMGQ5ZTFiYWM1MjU5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCkBAIC02OCw3ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZUxvYWRlcjsKICAgICBjbGFzcyBQYWdlOwotICAg
IGNsYXNzIFJlc291cmNlQnVmZmVyOwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwogICAgIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC05Myw3
ICs5Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBG
cmFtZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQg
UmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBEb2N1bWVudFdyaXRl
ciYgd3JpdGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgwNzU2ZjEzYmIwMTc2NmY0
YWNmOWJiZjNhOGU2Mzk2NzUzMmJjZjQuLjE3ZjVmN2E2ZTkyZGI0ZTdkNTQxZjAwMjkxZDQ3YWU0
OWNiODRhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIk1lZGlhUmVzb3VyY2VMb2FkZXIu
aCIKIAogI2lmIEVOQUJMRShWSURFTykKKwogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApA
QCAtMTE2LDkgKzExNiw2IEBAIHZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0CiAKICAgICBSZWZQdHI8
TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKICAgICBtX2NsaWVudC0+ZGF0YVJl
Y2VpdmVkKGRhdGEsIGRhdGFMZW5ndGgpOwotCi0gICAgaWYgKFNoYXJlZEJ1ZmZlciogYnVmZmVy
ID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkgPyByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIo
KS0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyKQotICAgICAgICBtX2NsaWVudC0+YnVmZmVyUmVj
ZWl2ZWQoYnVmZmVyKTsKIH0KIAogdm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCkBAIC0xMjksNyArMTI2LDcgQEAgdm9pZCBN
ZWRpYVJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UpCiAgICAgaWYgKHJlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQogICAgICAgICBt
X2NsaWVudC0+bG9hZEZhaWxlZChyZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQocmVzb3VyY2UtPnJlc291cmNlQnVmZmVy
KCkgPyByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRy
KTsKKyAgICAgICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZCgpOwogICAgIHN0b3AoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE2YmE4Y2U1NWQxMjdkZTNhNjI2YjEzNzU1OTg5MjBiYzc2MjYzNTIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCi0KLSNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZXNvdXJjZUJ1ZmZlcjo6
UmVzb3VyY2VCdWZmZXIoKQotICAgIDogbV9zaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSkKLXsKLX0KLQotUmVzb3VyY2VCdWZmZXI6OlJlc291cmNlQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHVuc2lnbmVkIHNpemUpCi0gICAgOiBtX3NoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBzaXplKSkKLXsKLX0KLQotUmVzb3VyY2VCdWZmZXI6OlJlc291cmNlQnVm
ZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIpCi0gICAgOiBtX3NoYXJl
ZEJ1ZmZlcihzaGFyZWRCdWZmZXIpCi17Ci0gICAgQVNTRVJUKG1fc2hhcmVkQnVmZmVyKTsKLX0K
LSAgICAKLVJlc291cmNlQnVmZmVyOjp+UmVzb3VyY2VCdWZmZXIoKQotewotfQotCi1QYXNzUmVm
UHRyPFJlc291cmNlQnVmZmVyPiBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZCkKLXsKLSAgICByZXR1cm4gc2hhcmVkID8gYWRv
cHRSZWYobmV3IFJlc291cmNlQnVmZmVyKHNoYXJlZCkpIDogbnVsbHB0cjsKLX0KLQotY29uc3Qg
Y2hhciogUmVzb3VyY2VCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3NoYXJl
ZEJ1ZmZlci0+ZGF0YSgpOwotfQotCi11bnNpZ25lZCBSZXNvdXJjZUJ1ZmZlcjo6c2l6ZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5zaXplKCk7Ci19Ci0KLWJvb2wgUmVz
b3VyY2VCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZl
ci0+aXNFbXB0eSgpOwotfQotCi12b2lkIFJlc291cmNlQnVmZmVyOjphcHBlbmQoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICBtX3NoYXJlZEJ1ZmZlci0+YXBwZW5kKGRh
dGEsIHNpemUpOwotfQotCi12b2lkIFJlc291cmNlQnVmZmVyOjphcHBlbmQoU2hhcmVkQnVmZmVy
KiBidWZmZXIpCi17Ci0gICAgbV9zaGFyZWRCdWZmZXItPmFwcGVuZChidWZmZXIpOwotfQotCi0j
aWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQotdm9pZCBSZXNvdXJjZUJ1ZmZl
cjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQotewotICAgIEFTU0VSVChtX3NoYXJlZEJ1ZmZlcik7
Ci0gICAgbV9zaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhKTsKLX0KLSNlbmRpZgotCi12b2lkIFJl
c291cmNlQnVmZmVyOjpjbGVhcigpCi17Ci0gICAgbV9zaGFyZWRCdWZmZXItPmNsZWFyKCk7Ci19
Ci0KLXVuc2lnbmVkIFJlc291cmNlQnVmZmVyOjpnZXRTb21lRGF0YShjb25zdCBjaGFyKiYgZGF0
YSwgdW5zaWduZWQgcG9zaXRpb24pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVy
LT5nZXRTb21lRGF0YShkYXRhLCBwb3NpdGlvbik7Ci19Ci0KLVNoYXJlZEJ1ZmZlciogUmVzb3Vy
Y2VCdWZmZXI6OnNoYXJlZEJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgLy8gQ3VycmVudGx5IGFsbCBS
ZXNvdXJjZUJ1ZmZlcnMgYXJlIGJhY2tlZCBieSBTaGFyZWRCdWZmZXJzLgotICAgIC8vIEluIHRo
ZSBmdXR1cmUgd2UgbWlnaHQgaGF2ZSB0byBjcmVhdGUgdGhlIFNoYXJlZEJ1ZmZlciBvbiBkZW1h
bmQgaGVyZS4KLSAgICAvLyBXZSBzaG91bGQgYWxzbyBwaGFzZSBvdXQgYXMgbXVjaCB1c2Ugb2Yg
dGhpcyBhY2Nlc3NvciBhcyBwb3NzaWJsZSBhbmQgaGF2ZSBjbGllbnRzCi0gICAgLy8gZWl0aGVy
IHVzZSB0aGUgUmVzb3VyY2VCdWZmZXIgZGlyZWN0bHkgb3IgdXNlIGdldFNvbWVEYXRhKCkgd2hl
biBzZW5zaWNhbC4KLSAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXIuZ2V0KCk7Ci19Ci0KLVBhc3NS
ZWZQdHI8UmVzb3VyY2VCdWZmZXI+IFJlc291cmNlQnVmZmVyOjpjb3B5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gUmVzb3VyY2VCdWZmZXI6OmFkb3B0U2hhcmVkQnVmZmVyKG1fc2hhcmVkQnVmZmVy
LT5jb3B5KCkpOwotfQotCi0jaWYgVVNFKENGKQotUmV0YWluUHRyPENGRGF0YVJlZj4gUmVzb3Vy
Y2VCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5j
cmVhdGVDRkRhdGEoKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlNjNiMDhhYjFiNDgyOWI2NTcxYTViNjA0MzliMjlkMTllYWExMmJhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUmVzb3VyY2VC
dWZmZXJfaAotI2RlZmluZSBSZXNvdXJjZUJ1ZmZlcl9oCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShGT1VOREFUSU9OKQot
T0JKQ19DTEFTUyBOU0RhdGE7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBTaGFyZWRCdWZmZXI7Ci0KLWNsYXNzIFJlc291cmNlQnVmZmVyIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVzb3VyY2VCdWZmZXI+IHsKLXB1YmxpYzoKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJl
c291cmNlQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUmVzb3VyY2VCdWZm
ZXIpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGNyZWF0ZShjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUmVzb3Vy
Y2VCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VC
dWZmZXI+IGFkb3B0U2hhcmVkQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNvdXJjZUJ1ZmZlcigpOwotCi0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB1bnNpZ25lZCBzaXplKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBhcHBlbmQoU2hhcmVkQnVm
ZmVyKik7Ci0jaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQotICAgIHZvaWQg
YXBwZW5kKENGRGF0YVJlZik7Ci0jZW5kaWYKLSAgICB2b2lkIGNsZWFyKCk7Ci0gICAgCi0gICAg
dW5zaWduZWQgZ2V0U29tZURhdGEoY29uc3QgY2hhciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9u
ID0gMCkgY29uc3Q7Ci0gICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBzaGFy
ZWRCdWZmZXIoKSBjb25zdDsKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICB2b2lkIHRyeVJlcGxh
Y2VTaGFyZWRCdWZmZXJDb250ZW50cyhTaGFyZWRCdWZmZXIqKTsKLSNlbmRpZgotICAgIFBhc3NS
ZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGNvcHkoKSBjb25zdDsKLQotI2lmIFVTRShGT1VOREFUSU9O
KQotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpOwot
I2VuZGlmCi0jaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0
YSgpOwotI2VuZGlmCi0KLXByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUJ1
ZmZlcigpOwotCi1wcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlQnVmZmVyKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgUmVzb3VyY2VCdWZmZXIoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+KTsKLQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fc2hhcmVkQnVmZmVyOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVzb3VyY2VCdWZmZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmM4MWZhMzRj
NjZjYjBkZGMzM2Y4ZjQ2MjczMjVjZTNjMDEwZTViZi4uNDNiOWMzZjA4OGJhZjM0ZjgxOTgwYWQz
ODM5MTE5ZTgyNTY4OTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgotI2luY2x1ZGUg
IlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCkBA
IC0yMjIsMTIgKzIyMSwxMiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJj
ZSkgewotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlciA/IFJlc291cmNlQnVmZmVyOjph
ZG9wdFNoYXJlZEJ1ZmZlcihidWZmZXIpIDogUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZShkYXRhLCBs
ZW5ndGgpOworICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlciA/IGJ1ZmZlciA6IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgICAgIAogICAgIGlmICghbV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRh
ID0gYnVmZmVyID8gUmVzb3VyY2VCdWZmZXI6OmFkb3B0U2hhcmVkQnVmZmVyKGJ1ZmZlcikgOiBS
ZXNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VE
YXRhID0gYnVmZmVyID8gYnVmZmVyIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3Ro
KTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5hcHBlbmQoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggOGQwOTRjNjRlZjgxN2YxZGZiZjE2ZTllOWJiMzUxMjNhZTA5ZGYxNi4uMTYxNWY2
ZDliZjhkYzM0YTRlOWJjZjQ2YmI2M2I2OGY2Y2ZkYTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgVVJMOwotY2xhc3MgUmVz
b3VyY2VCdWZmZXI7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKIGNsYXNzIFF1aWNrTG9va0hhbmRs
ZTsKQEAgLTg4LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVz
b3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdDsK
IAotICAgIFJlc291cmNlQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlRGF0YS5nZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFyUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKTsK
QEAgLTIwNCw3ICsyMDMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVx
dWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSBy
ZWRpcmVjdHMuCi0gICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICB1bnNpZ25l
ZCBsb25nIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggN2Q0MGU2MzVkNGQwNDZkNjk4ZDExMTYwMTY4ZDE4NjQxY2FkZjNj
MS4uMjZhMzRlMjNlYjlkZjljYmM0NzZkYzRmOWU0YzJiYzdjNTVlZjVkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAj
aW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMjMzLDExICsyMzIsMTAgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRyPFJlc291
cmNlQnVmZmVyPiBidWZmZXIgPSByZXNvdXJjZURhdGEoKTsKKyAgICBhdXRvKiBidWZmZXIgPSBy
ZXNvdXJjZURhdGEoKTsKICAgICBpZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCAmJiBidWZm
ZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgLy8gVGhlIHJlc291cmNlIGRhdGEgd2ls
bCBjaGFuZ2UgYXMgdGhlIG5leHQgcGFydCBpcyBsb2FkZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBh
IGNvcHkuCi0gICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gY29waWVkRGF0YSA9IFJlc291
cmNlQnVmZmVyOjpjcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAg
ICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhjb3BpZWREYXRhLmdldCgpKTsKKyAgICAgICAg
bV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZygmYnVmZmVyLT5jb3B5KCkuZ2V0KCkpOwogICAgICAg
ICBjbGVhclJlc291cmNlRGF0YSgpOwogICAgICAgICAvLyBTaW5jZSBhIHN1YnJlc291cmNlIGxv
YWRlciBkb2VzIG5vdCBsb2FkIG11bHRpcGFydCBzZWN0aW9ucyBwcm9ncmVzc2l2ZWx5LCBkYXRh
IHdhcyBkZWxpdmVyZWQgdG8gdGhlIGxvYWRlciBhbGwgYXQgb25jZS4gICAgICAgIAogICAgICAg
ICAvLyBBZnRlciB0aGUgZmlyc3QgbXVsdGlwYXJ0IHNlY3Rpb24gaXMgY29tcGxldGUsIHNpZ25h
bCB0byBkZWxlZ2F0ZXMgdGhhdCB0aGlzIGxvYWQgaXMgImZpbmlzaGVkIiAKQEAgLTI3Myw4ICsy
NzEsOCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFBhcwogICAgIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAgIGlmICghbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dCkgewotICAgICAgICBpZiAoUmVzb3VyY2VCdWZmZXIqIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+YWRkRGF0YUJ1ZmZlcihyZXNv
dXJjZURhdGEpOworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3Vy
Y2VEYXRhKCkpCisgICAgICAgICAgICBtX3Jlc291cmNlLT5hZGREYXRhQnVmZmVyKCpyZXNvdXJj
ZURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3Jlc291cmNlLT5hZGREYXRhKGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggMzUzY2VmMjczNDJjZWQ4ZmUxZDdiMmU1ODYzYjVmNDVjOTJkYTU0ZS4uMGYyN2I5Mjgw
N2YzOTFjZjQwZWY4ZmViZTM4OTE1NzM3ZjAzNWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJDcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVlRUQ3VlLmgi
CiAjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCiAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBUZXh0
VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkK
ICAgICBpZiAobV9zdGF0ZSA9PSBGYWlsZWQgfHwgIXJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVzb3VyY2VCdWZmZXIqIGJ1ZmZlciA9IHJl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgIGF1dG8qIGJ1ZmZlciA9IHJlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpOwogICAgIGlmIChtX3BhcnNlT2Zmc2V0ID09IGJ1ZmZlci0+c2l6ZSgp
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNjM0MjE5NGNlNzhmMTA1
ZmUzM2FhZmU0OWMxYTY1NGRiNTUwNjY1Mi4uZTk1NGEzMzdlMDgyNzc3YzgzYzUzYjZjZWFiOTQ5
ZDZkODUwNTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNlci5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgpAQCAtMjU0LDExICsyNTMsOCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPmFkZFR5cGUoQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpNYXN0ZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghcmVzb3VyY2UtPnN0b3Jh
Z2VJRCgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgICAgICAgICBtX25ld2VzdENhY2hlLT5hZGRSZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OmNyZWF0ZSh1cmwsIGxvYWRlci0+cmVzcG9uc2UoKSwgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpNYXN0ZXIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiAwKSk7
Ci0gICAgICAgIH0KLQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fbmV3ZXN0Q2FjaGUt
PmFkZFJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgbG9hZGVy
LT5yZXNwb25zZSgpLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3RlciwgbG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGYWlsdXJlOgog
ICAgICAgICAvLyBDYWNoZSB1cGRhdGUgaGFzIGJlZW4gYSBmYWlsdXJlLCBzbyB0aGVyZSBpcyBu
byByZWFzb24gdG8ga2VlcCB0aGUgZG9jdW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbmNvbXBs
ZXRlIGNhY2hlCkBAIC0yNzYsMTAgKzI3Miw4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAg
ICAgICAgICAgICAgICByZXNvdXJjZS0+YWRkVHlwZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
Ok1hc3Rlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFyZXNvdXJjZS0+c3RvcmFnZUlEKCkp
OwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFJl
c291cmNlQnVmZmVyPiBidWZmZXIgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAg
ICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmFkZFJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6Y3JlYXRlKHVybCwgbG9hZGVyLT5yZXNwb25zZSgpLCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6Ok1hc3RlciwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IDApKTsK
LSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0
ZWQtPmFkZFJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgbG9h
ZGVyLT5yZXNwb25zZSgpLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3RlciwgbG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCkpKTsKICAgICAgICAgLy8gVGhlICJjYWNoZWQiIGV2ZW50IHdp
bGwgYmUgcG9zdGVkIHRvIGFsbCBhc3NvY2lhdGVkIGRvY3VtZW50cyBvbmNlIHVwZGF0ZSBpcyBj
b21wbGV0ZS4KICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCAyNGNmNGJlZWRl
ZGY2ZTQzNmE5ZGU4MjRiM2MzY2U1ZTk3Y2M5MzYzLi45NzIzNDZhMDA4M2JhNmU0NGUzZTI0ODI0
Y2VhYTM0ZDBhMzcxZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCi0j
aW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNTUwLDkgKzU0
OSw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nCiAjZW5kaWYKICAgICAgICAgICAgICAgICBD
YWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZv
clJlcXVlc3QocmVxdWVzdCwgZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZSkgewotICAgICAgICAgICAgICAgICAgICBSZXNvdXJj
ZUJ1ZmZlciogZGF0YSA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwotCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEgPyBkYXRhLT5zaGFyZWRCdWZmZXIoKSA6IDAsIHN1
YnJlc291cmNlVVJMLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCksIHN1YnJlc291
cmNlVVJMLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoV1RGOjptb3ZlKHJlc291cmNlKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmlu
ZGV4IGEyMDgxYmVhNGNhNTYzYjg1MDQ2NTNiZDFkYjUwMDkxYWE5MzQyYWYuLmUzNzAxMzhlYjA4
ZTk5MDA0YTRjZmVmZWZjNGUwOWU0ZmFjYjAzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgog
I2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CkBAIC05MCwxMyArOTAsMTMgQEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OnNoZWV0VGV4dChib29sIGVuZm9yY2VNSU1FVHlwZSwgYm9vbCogaGFzVmFsaWQKICAgICBy
ZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoUmVz
b3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgLy8gRGVjb2RlIHRoZSBkYXRh
IHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQg
ZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAobV9kYXRhKQotICAgICAgICBtX2RlY29kZWRT
aGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwog
ICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KCk7CiAgICAgLy8gQ2xlYXIg
dGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRl
bHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA4MGY5OTRjYjMwMmYy
M2I2NTc4MmRkM2Y2MzkyNjNlNmIxYTlhMmQ3Li45NDBmZDFmMTlkN2ZjZTgyMzgyMWZiZWMzOTdl
YWQxZjA3NmI0M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3Zl
cnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlk
ZTsKIAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcAppbmRleCAxMzY4MmZhMjc3OGRmZGY2MWFjZWQ5YzNiOTUwNGY2NjdlNzM3ZmY2Li4x
NjRjOWM0MTdjODQ2ZjE5NGEyNjE0MGNiODdkY2ViNTc1YTY5ODFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEu
aCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgpAQCAtNzYs
NyArNzUsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCogYykKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCo+KGMpLT5mb250
TG9hZGVkKHRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2RlZFNpemUobV9k
YXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKQEAgLTk1LDMwICs5NCwyNyBAQCB2b2lk
IENhY2hlZEZvbnQ6OmJlZ2luTG9hZElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyKiBkbCkK
IGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoKQogewogICAgIGlmICghbV9m
b250RGF0YSAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBtX2RhdGEpIHsK
LSAgICAgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIgPSBtX2RhdGEuZ2V0KCktPnNoYXJlZEJ1ZmZl
cigpOwotICAgICAgICBBU1NFUlQoYnVmZmVyKTsKLQorICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBtX2RhdGE7CiAgICAgICAgIGJvb2wgZm9udElzV09GRiA9IGZhbHNlOwor
CiAjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PD0gMTA5MCkgJiYgKCFQTEFURk9STShJT1MpIHx8IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDwgODAwMDApCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNmbnRCdWZmZXI7
Ci0KLSAgICAgICAgZm9udElzV09GRiA9IGlzV09GRihidWZmZXIpOwotICAgICAgICBpZiAoZm9u
dElzV09GRikgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IHNmbnQ7Ci0gICAgICAgICAgICBp
ZiAoY29udmVydFdPRkZUb1NmbnQoYnVmZmVyLCBzZm50KSkgewotICAgICAgICAgICAgICAgIHNm
bnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHNmbnQpOwotICAgICAgICAgICAg
ICAgIGJ1ZmZlciA9IHNmbnRCdWZmZXIuZ2V0KCk7Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgaWYgKGlzV09GRihidWZmZXIpKSB7CisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gY29udmVy
dGVkRm9udDsKKyAgICAgICAgICAgIGlmICghY29udmVydFdPRkZUb1NmbnQoYnVmZmVyLCBjb252
ZXJ0ZWRGb250KSkKICAgICAgICAgICAgICAgICBidWZmZXIgPSBudWxscHRyOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZl
Y3Rvcihjb252ZXJ0ZWRGb250KTsKKyAgICAgICAgICAgICAgICBmb250SXNXT0ZGID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9mb250RGF0YSA9
IGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlcikgOiBudWxscHRy
OwotICAgICAgICBpZiAobV9mb250RGF0YSkKLSAgICAgICAgICAgIG1faGFzQ3JlYXRlZEZvbnRE
YXRhV3JhcHBpbmdSZXNvdXJjZSA9ICFmb250SXNXT0ZGOwotICAgICAgICBlbHNlCisgICAgICAg
IG1faGFzQ3JlYXRlZEZvbnREYXRhV3JhcHBpbmdSZXNvdXJjZSA9IG1fZm9udERhdGEgJiYgIWZv
bnRJc1dPRkY7CisgICAgICAgIGlmICghbV9mb250RGF0YSkKICAgICAgICAgICAgIHNldFN0YXR1
cyhEZWNvZGVFcnJvcik7CiAgICAgfQorCiAgICAgcmV0dXJuIG1fZm9udERhdGEuZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGQ5NDM3MzA1
NTA2NDMxOTJjOTY2MzU3MWE1ZmRkNGQyNDA5YmI2ZmIuLjJhMjY3Y2NjYjE1MTExMjc3NTU5MDVj
OWUxNzQ3ZjE4ZWM3YmViNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkKENh
Y2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJikgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZm
ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCBiMGZkYTE4NDljNmE3MjY0Y2Q5MjczZDZkOWI2MjNjNDM2Y2I2MTZkLi5kYjJhZTk3ZjI5
NzhhNTBmYWI4OGIyZmFkZWU4OWM4NTcwNmMwNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJNZW1v
cnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTExNiwz
MSArMTE1LDMxIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjCiAgICAgICAgIHNldExvYWRpbmco
ZmFsc2UpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqIGMpCit2b2lkIENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqIGNsaWVudCkKIHsKICAgICBpZiAobV9kYXRhICYmICFtX2ltYWdlICYmICFlcnJv
ck9jY3VycmVkKCkpIHsKICAgICAgICAgY3JlYXRlSW1hZ2UoKTsKLSAgICAgICAgbV9pbWFnZS0+
c2V0RGF0YShtX2RhdGEtPnNoYXJlZEJ1ZmZlcigpLCB0cnVlKTsKKyAgICAgICAgbV9pbWFnZS0+
c2V0RGF0YShtX2RhdGEsIHRydWUpOwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoYy0+cmVzb3Vy
Y2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKKyAg
ICBBU1NFUlQoY2xpZW50LT5yZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNsaWVu
dDo6ZXhwZWN0ZWRUeXBlKCkpOwogICAgIGlmIChtX2ltYWdlICYmICFtX2ltYWdlLT5pc051bGwo
KSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2VDbGllbnQqPihjKS0+aW1hZ2VDaGFu
Z2VkKHRoaXMpOworICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZUNsaWVudCo+KGNsaWVu
dCktPmltYWdlQ2hhbmdlZCh0aGlzKTsKIAotICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGll
bnQoYyk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChjbGllbnQpOwogfQogCi12
b2lkIENhY2hlZEltYWdlOjpkaWRSZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMp
Cit2b2lkIENhY2hlZEltYWdlOjpkaWRSZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQq
IGNsaWVudCkKIHsKLSAgICBBU1NFUlQoYyk7Ci0gICAgQVNTRVJUKGMtPnJlc291cmNlQ2xpZW50
VHlwZSgpID09IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CisgICAgQVNTRVJU
KGNsaWVudCk7CisgICAgQVNTRVJUKGNsaWVudC0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2Fj
aGVkSW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKIAotICAgIG1fcGVuZGluZ0NvbnRhaW5l
clNpemVSZXF1ZXN0cy5yZW1vdmUoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2VDbGllbnQqPihjKSk7
CisgICAgbV9wZW5kaW5nQ29udGFpbmVyU2l6ZVJlcXVlc3RzLnJlbW92ZShzdGF0aWNfY2FzdDxD
YWNoZWRJbWFnZUNsaWVudCo+KGNsaWVudCkpOwogCiAgICAgaWYgKG1fc3ZnSW1hZ2VDYWNoZSkK
LSAgICAgICAgbV9zdmdJbWFnZUNhY2hlLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUoc3RhdGljX2Nh
c3Q8Q2FjaGVkSW1hZ2VDbGllbnQqPihjKSk7CisgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZS0+cmVt
b3ZlQ2xpZW50RnJvbUNhY2hlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50Kj4oY2xpZW50
KSk7CiAKLSAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KGMpOworICAgIENhY2hl
ZFJlc291cmNlOjpkaWRSZW1vdmVDbGllbnQoY2xpZW50KTsKIH0KIAogdm9pZCBDYWNoZWRJbWFn
ZTo6c3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpCkBAIC0zNjUsMTggKzM2NCwx
NiBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV9pbWFnZS5j
bGVhcigpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIo
UmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERh
dGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
aWYgKCFkYXRhKQotICAgICAgICByZXR1cm47CisgICAgbV9kYXRhID0gJmRhdGE7CiAKICAgICBj
cmVhdGVJbWFnZSgpOwogCiAgICAgLy8gSGF2ZSB0aGUgaW1hZ2UgdXBkYXRlIGl0cyBkYXRhIGZy
b20gaXRzIGludGVybmFsIGJ1ZmZlci4KICAgICAvLyBJdCB3aWxsIG5vdCBkbyBhbnl0aGluZyBu
b3csIGJ1dCB3aWxsIGRlbGF5IGRlY29kaW5nIHVudGlsCiAgICAgLy8gcXVlcmllZCBmb3IgaW5m
byAobGlrZSBzaXplIG9yIHNwZWNpZmljIGltYWdlIGZyYW1lcykuCi0gICAgYm9vbCBzaXplQXZh
aWxhYmxlID0gbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEtPnNoYXJlZEJ1ZmZlcigpLCBmYWxzZSk7
CisgICAgYm9vbCBzaXplQXZhaWxhYmxlID0gbV9pbWFnZS0+c2V0RGF0YSgmZGF0YSwgZmFsc2Up
OwogICAgIGlmICghc2l6ZUF2YWlsYWJsZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTgsMjYg
KzM5NSwyOCBAQCB2b2lkIENhY2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoUmVz
b3VyY2VCdWZmZXIqIGRhdGEpCiAgICAgc2V0RW5jb2RlZFNpemUobV9pbWFnZS0+ZGF0YSgpID8g
bV9pbWFnZS0+ZGF0YSgpLT5zaXplKCkgOiAwKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6YWRk
RGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmFkZERh
dGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFTU0VSVChtX29wdGlvbnMuZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOworICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7CiAgICAgYWRkSW5jcmVtZW50YWxEYXRhQnVmZmVy
KGRhdGEpOworICAgIENhY2hlZFJlc291cmNlOjphZGREYXRhQnVmZmVyKGRhdGEpOwogfQogCiB2
b2lkIENhY2hlZEltYWdlOjphZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKLSAgICBBU1NFUlQobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05v
dEJ1ZmZlckRhdGEpOwotICAgIGFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOworICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKTsKKyAgICBhZGRJbmNyZW1lbnRhbERhdGFCdWZm
ZXIoKlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOworICAgIENhY2hlZFJlc291
cmNlOjphZGREYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlz
aExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhOwogICAgIGlm
ICghbV9pbWFnZSAmJiBkYXRhKQogICAgICAgICBjcmVhdGVJbWFnZSgpOwogCiAgICAgaWYgKG1f
aW1hZ2UpCi0gICAgICAgIG1faW1hZ2UtPnNldERhdGEobV9kYXRhLT5zaGFyZWRCdWZmZXIoKSwg
dHJ1ZSk7CisgICAgICAgIG1faW1hZ2UtPnNldERhdGEoZGF0YSwgdHJ1ZSk7CiAKICAgICBpZiAo
IW1faW1hZ2UgfHwgbV9pbWFnZS0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gSW1hZ2UgZGVjb2Rp
bmcgZmFpbGVkOyB0aGUgaW1hZ2UgZGF0YSBpcyBtYWxmb3JtZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGZlZWY0NTJjNmNmZDM2NzI0Nzg5NDljMTZh
YzY5MDY5MzMxNTQzMzguLjU2ZDJhYTFmMzMwODZiMjM3MGRmNDYyNWM3ZTRjYjhiN2FiNTQxNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC03MSw4ICs3
MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0Owog
ICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2
b2lkIGFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogCiAgICAgZW51
bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY3JlYXRlSW1hZ2UoKTsKICAgICB2b2lkIGNsZWFySW1hZ2UoKTsKICAgICAv
LyBJZiBub3QgbnVsbCwgY2hhbmdlUmVjdCBpcyB0aGUgY2hhbmdlZCBwYXJ0IG9mIHRoZSBpbWFn
ZS4KLSAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0g
MCk7CisgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9
IG51bGxwdHIpOwogICAgIHZvaWQgY2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJy
aWRlOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1h
dGlvbkFkdmFuY2VkKGNvbnN0IEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNo
YW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciopOworICAgIHZv
aWQgYWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdHlwZWRl
ZiBzdGQ6OnBhaXI8TGF5b3V0U2l6ZSwgZmxvYXQ+IFNpemVBbmRab29tOwogICAgIHR5cGVkZWYg
SGFzaE1hcDxjb25zdCBDYWNoZWRJbWFnZUNsaWVudCosIFNpemVBbmRab29tPiBDb250YWluZXJT
aXplUmVxdWVzdHM7CkBAIC0xMzAsOCArMTMwLDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJ
bWFnZT4gbV9pbWFnZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHSW1hZ2VDYWNoZT4gbV9zdmdJ
bWFnZUNhY2hlOwotICAgIHVuc2lnbmVkIGNoYXIgbV9pc01hbnVhbGx5Q2FjaGVkIDogMTsKLSAg
ICB1bnNpZ25lZCBjaGFyIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA6IDE7CisgICAgdW5zaWdu
ZWQgbV9pc01hbnVhbGx5Q2FjaGVkIDogMTsKKyAgICB1bnNpZ25lZCBtX3Nob3VsZFBhaW50QnJv
a2VuSW1hZ2UgOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNWYyODEz
MmFlOGRjZWRiMzExMWRmNzM5YzI2ZDk0MTkxMTc1ZDZlYy4uNjhlNzdmZWIwODA5ODE3MTdhZTFl
MDE0NWVkZjY5ZDQ3ZjA2YjY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KQEAgLTQ2LDcgKzQ2LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hl
ZFJhd1Jlc291cmNlKFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBUeXBlIHR5cGUK
ICAgICBBU1NFUlQoaXNNYWluT3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotY29uc3QgY2hhciogQ2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKFJlc291cmNlQnVm
ZmVyKiBkYXRhLCB1bnNpZ25lZCYgaW5jcmVtZW50YWxEYXRhTGVuZ3RoKQorY29uc3QgY2hhciog
Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKFNoYXJlZEJ1
ZmZlciogZGF0YSwgdW5zaWduZWQmIGluY3JlbWVudGFsRGF0YUxlbmd0aCkKIHsKICAgICBpbmNy
ZW1lbnRhbERhdGFMZW5ndGggPSAwOwogICAgIGlmICghZGF0YSkKQEAgLTU4LDM0ICs1OCwzNiBA
QCBjb25zdCBjaGFyKiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
Q2h1bmsoUmVzb3VyY2VCdWZmZXIqIGRhdAogICAgIHJldHVybiBkYXRhLT5kYXRhKCkgKyBwcmV2
aW91c0RhdGFMZW5ndGg7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGFCdWZm
ZXIoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjphZGREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKLSAgICBBU1NFUlQobV9vcHRpb25zLmRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOwor
ICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7CisgICAgbV9k
YXRhID0gJmRhdGE7CiAKICAgICB1bnNpZ25lZCBpbmNyZW1lbnRhbERhdGFMZW5ndGg7Ci0gICAg
Y29uc3QgY2hhciogaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoZGF0YSwgaW5jcmVtZW50YWxEYXRhTGVuZ3RoKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICBjb25zdCBjaGFyKiBpbmNyZW1lbnRh
bERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuaygmZGF0YSwgaW5jcmVtZW50YWxE
YXRhTGVuZ3RoKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLnNpemUoKSk7CiAgICAgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEsIGluY3JlbWVudGFsRGF0YUxl
bmd0aCk7Ci0gICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RC
dWZmZXJEYXRhKSB7CisgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZl
ckRhdGEpIHsKICAgICAgICAgaWYgKG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNl
dERhdGFCdWZmZXJpbmdQb2xpY3koRG9Ob3RCdWZmZXJEYXRhKTsKICAgICAgICAgY2xlYXIoKTsK
ICAgICB9CisKKyAgICBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihkYXRhKTsKIH0KIAog
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRG9Ob3RCdWZmZXJEYXRhKTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERvTm90QnVmZmVyRGF0YSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChkYXRh
LCBsZW5ndGgpOworICAgIENhY2hlZFJlc291cmNlOjphZGREYXRhKGRhdGEsIGxlbmd0aCk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIq
IGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKIHsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
cHJvdGVjdCh0aGlzKTsKLSAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xp
Y3kgPSBtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOworICAgIERhdGFCdWZmZXJpbmdQ
b2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsK
ICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBCdWZmZXJEYXRhKSB7CiAgICAgICAgIG1f
ZGF0YSA9IGRhdGE7CiAKQEAgLTk5LDcgKzEwMSw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCiAgICAgbV9hbGxvd0VuY29kZWRE
YXRhUmVwbGFjZW1lbnQgPSAhbV9sb2FkZXItPmlzUXVpY2tMb29rUmVzb3VyY2UoKTsKIAogICAg
IENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwotICAgIGlmIChkYXRhQnVmZmVy
aW5nUG9saWN5ID09IEJ1ZmZlckRhdGEgJiYgbV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEb05vdEJ1ZmZlckRhdGEpIHsKKyAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBC
dWZmZXJEYXRhICYmIHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRh
dGEpIHsKICAgICAgICAgaWYgKG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNldERh
dGFCdWZmZXJpbmdQb2xpY3koRG9Ob3RCdWZmZXJEYXRhKTsKICAgICAgICAgY2xlYXIoKTsKQEAg
LTIyMiw3ICsyMjQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVIZWFkZXJGb3JDYWNoZVJl
dXNlKEhUVFBIZWFkZXJOYW1lIG5hbWUpCiAKIGJvb2wgQ2FjaGVkUmF3UmVzb3VyY2U6OmNhblJl
dXNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAo
bV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpCisgICAg
aWYgKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlUmVxdWVzdC5odHRwTWV0aG9kKCkgIT0g
bmV3UmVxdWVzdC5odHRwTWV0aG9kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IGYzYzY2OGYyYmRiOWZlNDZlOTM2MmU0MmI5ZDYz
NzIyZDA2YzJlMjcuLjJjZDQ1NWFjYjI1MWQwODFmYzM0ZWMwY2MwNmJiOTllMzUxYTExYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBA
IC00OCw5ICs0OCw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlk
QWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGFsbENs
aWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICBjb25zdCBjaGFyKiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhS
ZXNvdXJjZUJ1ZmZlciosIHVuc2lnbmVkJiBpbmNyZW1lbnRhbERhdGFMZW5ndGgpOworICAgIGNv
bnN0IGNoYXIqIGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKFNoYXJlZEJ1ZmZlciosIHVu
c2lnbmVkJiBpbmNyZW1lbnRhbERhdGFMZW5ndGgpOwogICAgIHZvaWQgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAjaWYg
VVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAppbmRleCA3ZjRmYTVhNTA0NjQyMTMwZmY5MmUxMzg3Zjc2YWUyMGY1OGJjYjg2Li40NzMy
ZTVhODM1Y2Q2NDg0Zjg2ZDU2YmE1MzRmY2ZmMTBjM2M1YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgi
CiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKQEAgLTE2MiwxMCArMTYxLDEwIEBAIERFRklO
RV9ERUJVR19PTkxZX0dMT0JBTChSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFJlc291cmNl
TGVha0NvdW50ZXIsICgiQ2FjCiAKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFR5cGUgdHlwZSwgU2Vzc2lvbklEIHNlc3Npb25J
RCkKICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpCisgICAgLCBtX2RlY29kZWREYXRh
RGVsZXRpb25UaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2U6OmRlY29kZWREYXRhRGVsZXRpb25U
aW1lckZpcmVkLCBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsRm9yUmVzb3VyY2VUeXBl
KHR5cGUpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9sb2FkUHJpb3Jp
dHkoZGVmYXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKHR5cGUpKQogICAgICwgbV9yZXNwb25z
ZVRpbWVzdGFtcChjdXJyZW50VGltZSgpKQotICAgICwgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGlt
ZXIodGhpcywgJkNhY2hlZFJlc291cmNlOjpkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCwg
ZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAg
ICAsIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lKDApCiAgICAgLCBtX2xvYWRGaW5pc2hUaW1lKDAp
CiAgICAgLCBtX2VuY29kZWRTaXplKDApCkBAIC0zNDIsMjIgKzM0MSwyMiBAQCB2b2lkIENhY2hl
ZFJlc291cmNlOjpjaGVja05vdGlmeSgpCiAgICAgaWYgKGlzTG9hZGluZygpIHx8IHN0aWxsTmVl
ZHNMb2FkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7Ci0gICAgd2hpbGUgKENhY2hl
ZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPm5vdGlmeUZpbmlzaGVk
KHRoaXMpOworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xp
ZW50PiB3YWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQq
IGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQo
dGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZmZXIoUmVzb3VyY2VC
dWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KQogewotICAgIEFTU0VSVChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZl
ckRhdGEpOworICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7
CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZERhdGEoY29uc3QgY2hhciosIHVuc2lnbmVk
KQogewotICAgIEFTU0VSVChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERvTm90
QnVmZmVyRGF0YSk7CisgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1
ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFJlc291
cmNlQnVmZmVyKikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKikKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSgpOwpAQCAt
NDcyLDE3ICs0NzEsMTUgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50KiBjbGllbnQpCiAgICAgICAgIGRpZEFkZENsaWVudChjbGllbnQpOwogfQog
Ci12b2lkIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQq
IGMpCit2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGNsaWVudCkKIHsKICAgICBpZiAobV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuaXNBY3Rp
dmUoKSkKICAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3RvcCgpOwogCi0gICAg
aWYgKG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suY29udGFpbnMoYykpIHsKLSAgICAgICAgbV9j
bGllbnRzLmFkZChjKTsKLSAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5yZW1vdmUo
Yyk7Ci0gICAgfQorICAgIGlmIChtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLnJlbW92ZShjbGll
bnQpKQorICAgICAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7CiAgICAgaWYgKCFpc0xvYWRpbmco
KSAmJiAhc3RpbGxOZWVkc0xvYWQoKSkKLSAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7
CisgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQodGhpcyk7CiB9CiAKIGJvb2wgQ2FjaGVk
UmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCkBA
IC01MDQsNyArNTAxLDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIg
dGhhbiBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90
aGVyIENhY2hlZFJlc291cmNlcywKICAgICAgICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNr
cyBhbmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJvbm91c2x5LgogICAgICAgICBBU1NF
UlQoIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suY29udGFpbnMoY2xpZW50KSk7Ci0gICAgICAg
IG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKGNsaWVudCwgQ2FjaGVkUmVzb3VyY2VDYWxs
YmFjazo6c2NoZWR1bGUodGhpcywgY2xpZW50KSk7CisgICAgICAgIG1fY2xpZW50c0F3YWl0aW5n
Q2FsbGJhY2suYWRkKGNsaWVudCwgc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsICpj
bGllbnQpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtODMxLDI3ICs4Mjgs
MjggQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0TG9hZFByaW9yaXR5KFJlc291cmNlTG9hZFBy
aW9yaXR5IGxvYWRQcmlvcml0eSkKICAgICBtX2xvYWRQcmlvcml0eSA9IGxvYWRQcmlvcml0eTsK
IH0KIAotQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2s6OkNhY2hlZFJlc291
cmNlQ2FsbGJhY2soQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZUNsaWVu
dCogY2xpZW50KQoraW5saW5lIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6Q2FsbGJhY2soQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAg
IDogbV9yZXNvdXJjZShyZXNvdXJjZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1f
Y2FsbGJhY2tUaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2VDYWxsYmFjazo6dGltZXJGaXJlZCkK
KyAgICAsIG1fdGltZXIodGhpcywgJkNhbGxiYWNrOjp0aW1lckZpcmVkKQogewotICAgIG1fY2Fs
bGJhY2tUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7
CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2s6OmNhbmNl
bCgpCitpbmxpbmUgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OmNhbmNlbCgpCiB7Ci0g
ICAgaWYgKG1fY2FsbGJhY2tUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2NhbGxiYWNrVGlt
ZXIuc3RvcCgpOworICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIu
c3RvcCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNr
Ojp0aW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbGJhY2s+JikKK3ZvaWQgQ2FjaGVk
UmVzb3VyY2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKFRpbWVyPENhbGxiYWNrPiYpCiB7Ci0gICAg
bV9yZXNvdXJjZS0+ZGlkQWRkQ2xpZW50KG1fY2xpZW50KTsKKyAgICBtX3Jlc291cmNlLmRpZEFk
ZENsaWVudCgmbV9jbGllbnQpOwogfQogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi12b2lkIENhY2hl
ZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IG5ld0J1ZmZlcikKKwordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICBy
ZXR1cm47CkBAIC04NjIsMTEgKzg2MCwxMiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBs
YWNlRW5jb2RlZERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IG5ld0J1ZmZlcikKICAgICAv
LyBXZSBoYXZlIHRvIGRvIHRoZSBtZW1jbXAgYmVjYXVzZSB3ZSBjYW4ndCB0ZWxsIGlmIHRoZSBy
ZXBsYWNlbWVudCBmaWxlIGJhY2tlZCBkYXRhIGlzIGZvciB0aGUKICAgICAvLyBzYW1lIHJlc291
cmNlIG9yIGlmIHdlIG1hZGUgYSBzZWNvbmQgcmVxdWVzdCB3aXRoIHRoZSBzYW1lIFVSTCB3aGlj
aCBnYXZlIHVzIGEgZGlmZmVyZW50CiAgICAgLy8gcmVzb3VyY2UuIFdlIGhhdmUgc2VlbiB0aGlz
IGhhcHBlbiBmb3IgY2FjaGVkIFBPU1QgcmVzb3VyY2VzLgotICAgIGlmIChtX2RhdGEtPnNpemUo
KSAhPSBuZXdCdWZmZXItPnNpemUoKSB8fCBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG5ld0J1ZmZl
ci0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpCisgICAgaWYgKG1fZGF0YS0+c2l6ZSgpICE9IG5l
d0J1ZmZlci5zaXplKCkgfHwgbWVtY21wKG1fZGF0YS0+ZGF0YSgpLCBuZXdCdWZmZXIuZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+dHJ5UmVw
bGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKG5ld0J1ZmZlci5nZXQoKSk7CisgICAgbV9kYXRhLT50
cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKTsKIH0KKwogI2Vu
ZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggZjQwZGQ4OTZlNDhlNDEzMDY4MjE4YTg0ZGE2MWQ5MjNlYjIyNWE4MC4uYmE2MTNkZDYy
Njc4NDljMmZhODM3NDRiNTI2YzNjZDkwODZkNWIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgY2xhc3MgQ2FjaGVk
UmVzb3VyY2VDbGllbnQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlOwotY2xhc3MgUmVz
b3VyY2VCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwpAQCAtMTAxLDkgKzEwMCw5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0
dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291
cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAtMTkyLDcgKzE5MSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBSZXNvdXJjZUJ1ZmZl
ciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBT
aGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yNTAsNTUgKzI0OSwzNSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGNhblJldXNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVk
QnVmZmVyJik7CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQotICAgIHZpcnR1YWwgY2hhciogZ2V0
T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKiByZXF1ZXN0ZWRTaXplICovLCBzaXplX3QmIC8q
IGFjdHVhbFNpemUgKi8pIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3Jl
YXRlUmVhZEJ1ZmZlcihzaXplX3QgLyogcmVxdWVzdGVkU2l6ZSAqLywgc2l6ZV90JiAvKiBhY3R1
YWxTaXplICovKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOwotCiAgICAgdm9pZCBzZXRFbmNvZGVkU2l6ZSh1
bnNpZ25lZCk7CiAgICAgdm9pZCBzZXREZWNvZGVkU2l6ZSh1bnNpZ25lZCk7CiAgICAgdm9pZCBk
aWRBY2Nlc3NEZWNvZGVkRGF0YShkb3VibGUgdGltZVN0YW1wKTsKIAorICAgIC8vIEZJWE1FOiBN
YWtlIHRoZSByZXN0IG9mIHRoZXNlIGRhdGEgbWVtYmVycyBwcml2YXRlIGFuZCB1c2UgZnVuY3Rp
b25zIGluIGRlcml2ZWQgY2xhc3NlcyBpbnN0ZWFkLgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hl
ZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwotCi0gICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VD
YWxsYmFjayB7Ci0gICAgcHVibGljOgotICAgICAgICBDYWNoZWRSZXNvdXJjZUNhbGxiYWNrKENh
Y2hlZFJlc291cmNlKiwgQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKLQotICAgICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENhY2hlZFJlc291cmNlQ2FsbGJhY2s+IHNjaGVkdWxlKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZUNhbGxiYWNrPihyZXNvdXJjZSwgY2xpZW50
KTsgfQotICAgICAgICB2b2lkIGNhbmNlbCgpOwotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQg
dGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUNhbGxiYWNrPiYpOwotCi0gICAgICAgIENh
Y2hlZFJlc291cmNlKiBtX3Jlc291cmNlOwotICAgICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudCog
bV9jbGllbnQ7Ci0gICAgICAgIFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbGJhY2s+IG1fY2FsbGJh
Y2tUaW1lcjsKLSAgICB9OwotICAgIEhhc2hNYXA8Q2FjaGVkUmVzb3VyY2VDbGllbnQqLCBzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkUmVzb3VyY2VDYWxsYmFjaz4+IG1fY2xpZW50c0F3YWl0aW5nQ2Fs
bGJhY2s7Ci0KICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJlcXVlc3Q7Ci0gICAgU2Vz
c2lvbklEIG1fc2Vzc2lvbklEOwotICAgIFN0cmluZyBtX2FjY2VwdDsKICAgICBSZWZQdHI8U3Vi
cmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwogICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBtX29w
dGlvbnM7Ci0gICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7Ci0KICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgZG91YmxlIG1fcmVzcG9uc2VUaW1lc3Rh
bXA7Ci0KLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgRGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX2RlY29kZWRE
YXRhRGVsZXRpb25UaW1lcjsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBDYWxsYmFjazsKKwogICAg
IGJvb2wgYWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKTsKIAogICAgIHZvaWQg
ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmlyZWQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBjaGVj
a05vdGlmeSgpOwogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKQEAgLTMwNiw2ICsyODUsMTIgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFkZEFkZGl0aW9uYWxSZXF1ZXN0SGVhZGVycyhDYWNoZWRSZXNvdXJjZUxv
YWRlciopOwogICAgIHZvaWQgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CiAKKyAgICBIYXNoTWFwPENh
Y2hlZFJlc291cmNlQ2xpZW50Kiwgc3RkOjp1bmlxdWVfcHRyPENhbGxiYWNrPj4gbV9jbGllbnRz
QXdhaXRpbmdDYWxsYmFjazsKKyAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgU3RyaW5n
IG1fYWNjZXB0OworICAgIFJlc291cmNlTG9hZFByaW9yaXR5IG1fbG9hZFByaW9yaXR5OworICAg
IGRvdWJsZSBtX3Jlc3BvbnNlVGltZXN0YW1wOworCiAgICAgU3RyaW5nIG1fZnJhZ21lbnRJZGVu
dGlmaWVyRm9yUmVxdWVzdDsKIAogICAgIFJlc291cmNlRXJyb3IgbV9lcnJvcjsKQEAgLTM0Myw3
ICszMjgsNyBAQCBwcml2YXRlOgogICAgIENhY2hlZFJlc291cmNlKiBtX25leHRJbkxpdmVSZXNv
dXJjZXNMaXN0OwogICAgIENhY2hlZFJlc291cmNlKiBtX3ByZXZJbkxpdmVSZXNvdXJjZXNMaXN0
OwogCi0gICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7IC8vIG9ubHkgbm9uLTAgZm9yIHJlc291cmNlcyB0aGF0IGFyZSBub3QgaW4gdGhlIGNhY2hl
CisgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
IC8vIG9ubHkgbm9uLW51bGwgZm9yIHJlc291cmNlcyB0aGF0IGFyZSBub3QgaW4gdGhlIGNhY2hl
CiAgICAgCiAgICAgLy8gSWYgdGhpcyBmaWVsZCBpcyBub24tbnVsbCB3ZSBhcmUgdXNpbmcgdGhl
IHJlc291cmNlIGFzIGEgcHJveHkgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gZXhpc3RpbmcgcmVz
b3VyY2UgaXMgc3RpbGwgdXAgdG8gZGF0ZQogICAgIC8vIHVzaW5nIEhUVFAgSWYtTW9kaWZpZWQt
U2luY2UvSWYtTm9uZS1NYXRjaCBoZWFkZXJzLiBJZiB0aGUgcmVzcG9uc2UgaXMgMzA0IGFsbCBj
bGllbnRzIG9mIHRoaXMgcmVzb3VyY2UgYXJlIG1vdmVkCkBAIC0zNjEsNiArMzQ2LDIwIEBAIHBy
aXZhdGU6CiAgICAgZG91YmxlIG1fcmVkaXJlY3RDaGFpbkVuZE9mVmFsaWRpdHk7CiB9OwogCitj
bGFzcyBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2sgeworcHVibGljOgorICAgIENhbGxiYWNrKENh
Y2hlZFJlc291cmNlJiwgQ2FjaGVkUmVzb3VyY2VDbGllbnQmKTsKKworICAgIHZvaWQgY2FuY2Vs
KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPENhbGxiYWNrPiYpOwor
CisgICAgQ2FjaGVkUmVzb3VyY2UmIG1fcmVzb3VyY2U7CisgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnQmIG1fY2xpZW50OworICAgIFRpbWVyPENhbGxiYWNrPiBtX3RpbWVyOworfTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FDSEVE
X1JFU09VUkNFKFRvQ2xhc3NOYW1lLCBDYWNoZWRSZXNvdXJjZVR5cGUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKaW5kZXggOTY5
MzNlMTNkNTRkNzNjMmM2NGE0YjE3Y2M4NDc3Y2M0ODFlOTc5ZC4uNzU5NTExMDQ5NzE2ZDI4OGIz
ZGZhNGE4ZWM4ZmI3MTYwMjM2OGJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKQEAgLTI1LDkgKzI1LDggQEAKICNpZm5kZWYg
Q2FjaGVkUmVzb3VyY2VDbGllbnRfaAogI2RlZmluZSBDYWNoZWRSZXNvdXJjZUNsaWVudF9oCiAK
LSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIGNs
YXNzIENhY2hlZFJlc291cmNlOwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkBAIC00
NCwxMyArNDMsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlQ2xpZW50
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqKSB7IH0KLSAgICAKKwogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNs
aWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQogICAg
IHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBDYWNoZWRS
ZXNvdXJjZUNsaWVudCgpIHsgfQogfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDMyYTYxYjNiM2E5
Mzk4MDY5YTFkMmZiZmY1ZDc2ZTk2Zjg0YjU3YmIuLmE1MjMwMjAxYjBmNzEwZDM5YTViZGJiMWE2
ZDZhMmI4NTI2MDdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcApAQCAtMjMsMTAgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgogCi0jaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VDbGllbnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1
ZGUgIlJlc291cmNlQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUxLDcgKzQ4LDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lk
IENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
ICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5l
dyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVz
ZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oCmluZGV4IGMxYzYwM2YzNDI5Y2MxZWM4YmE1NTBjMGM1NTAwZmI5YWJjMjY2YWIuLmE3
OTFjZDgzMWQzNmZhNWM4ZWZhNzU2Y2VlMmJjMWMwN2NhY2QzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC0zNywxNSArMzcsMTQg
QEAgcHVibGljOgogCiAgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9kb2N1bWVudC5nZXQoKTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgUmVmUHRyPFNWR0RvY3VtZW50
PiBtX2RvY3VtZW50OwotICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
Ci0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2Rp
bmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhSZXNv
dXJjZUJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciopIG92ZXJyaWRlOworCisgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3Vt
ZW50OworICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCmluZGV4IGY3MWE1ZThhYWVjZThiM2FiMTk1ZGU2NTRlMTQxMWQzNzk1ZWEw
MDMuLmY4YmMzM2M3YjMyNTFkYzQyMzgwZjVjNDY4M2ZmNGU5NGUzNDlkOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC0zMyw4ICszMyw4IEBA
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKQEAgLTc2LDE0ICs3NiwxMyBAQCBjb25zdCBTdHJpbmcmIENhY2hlZFNjcmlw
dDo6c2NyaXB0KCkKICAgICAgICAgc2V0RGVjb2RlZFNpemUobV9zY3JpcHQuc2l6ZUluQnl0ZXMo
KSk7CiAgICAgfQogICAgIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyLnJlc3RhcnQoKTsKLSAg
ICAKICAgICByZXR1cm4gbV9zY3JpcHQ7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuaAppbmRleCA5MWM5ODZhMjU0YjljMzcxYzJmZDE5ZjNkZjk4OTQ1NzQ3ZTli
ZTA2Li45MzhlOTE4N2NlYTRjMDljMmQ3MGJlNjIxN2E2NDliZGQ3NzMyM2U5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC0zMCwzNiArMzAsMzUgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
Ci0gICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKK2NsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiAKLSAgICBjbGFzcyBDYWNoZWRTY3JpcHQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkU2NyaXB0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgU2Vzc2lvbklEKTsKLSAgICAgICAgdmlydHVh
bCB+Q2FjaGVkU2NyaXB0KCk7CitjbGFzcyBDYWNoZWRTY3JpcHQgZmluYWwgOiBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2UgeworcHVibGljOgorICAgIENhY2hlZFNjcmlwdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFNlc3Npb25JRCk7CisgICAgdmlydHVhbCB+
Q2FjaGVkU2NyaXB0KCk7CiAKLSAgICAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKKyAgICBj
b25zdCBTdHJpbmcmIHNjcmlwdCgpOwogCi0gICAgICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0
OworICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5PU05JRkYpCi0g
ICAgICAgIGJvb2wgbWltZVR5cGVBbGxvd2VkQnlOb3NuaWZmKCkgY29uc3Q7CisgICAgYm9vbCBt
aW1lVHlwZUFsbG93ZWRCeU5vc25pZmYoKSBjb25zdDsKICNlbmRpZgogCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIG1heVRy
eVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0Nv
ZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2Fk
aW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEVuY29k
aW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKikgb3ZlcnJpZGU7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVk
RGF0YSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBv
dmVycmlkZTsKIAotICAgICAgICBTdHJpbmcgbV9zY3JpcHQ7Ci0gICAgICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgfTsKKyAgICBTdHJpbmcgbV9zY3JpcHQ7
CisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKK307CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAppbmRleCA3MDlmYWQ4NDQzYjdiYzFhMzhmMWVhODBkMjY0ZmYwZDI5
M2Q5OTcwLi43MTU1OTIyMDU3ZWVhZWRmMWYwNWQwZDA3ZmRmMGI1MGU2ZGRmYWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtMzIs
NyArMzIsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxv
YWRlci5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTQ0LDI0ICs0MywyNiBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRU
cmFjayhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgU2Vzc2lvbgogewog
fQogCi1DYWNoZWRUZXh0VHJhY2s6On5DYWNoZWRUZXh0VHJhY2soKQordm9pZCBDYWNoZWRUZXh0
VHJhY2s6OnVwZGF0ZURhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotfQotCi12b2lkIENhY2hl
ZFRleHRUcmFjazo6YWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciogZGF0YSkKLXsKLSAgICBB
U1NFUlQobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJEYXRhKTsKKyAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOwogICAgIG1fZGF0
YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXpl
KCkgOiAwKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAK
ICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fs
a2VyKG1fY2xpZW50cyk7Ci0gICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50ICpjbGllbnQg
PSB3YWxrZXIubmV4dCgpKQorICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50
ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNh
Y2hlZFJlc291cmNlKHRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyhSZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjphZGREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3sKKyAgICB1cGRhdGVEYXRhKCZkYXRhKTsKKyAg
ICBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihkYXRhKTsKK30KKwordm9pZCBDYWNoZWRU
ZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIGFkZERh
dGFCdWZmZXIoZGF0YSk7CisgICAgdXBkYXRlRGF0YShkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDRjM2YzOGFkNDY4ZTE1MWE4MDEyYTlkOWNlOTE0
ZmIzOGIzYjJkNTIuLjNjMTEyN2U4M2I4OTliNDNiMzgwYTk2M2I5NjZkNjNlZTZiY2FkY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM2
LDEyICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRUZXh0VHJhY2sg
ZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgogICAgIENhY2hlZFRleHRU
cmFjayhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOwotICAgIHZpcnR1YWwgfkNh
Y2hlZFRleHRUcmFjaygpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBs
YWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOworCisg
ICAgdm9pZCB1cGRhdGVEYXRhKFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwCmluZGV4IDY2ZjFlYzVhN2FlNGJlYjMxNDUzMTU4ZGRlMmY5OTZkMTliNDJl
NzUuLjc3OTUyYjhhY2MwMTJlNzNlOWU3OWE5ZjRiODc2MzgyNzQ4MDM3ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgotI2luY2x1ZGUgIlJlc291cmNl
QnVmZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDYsNiArNDYsMTAg
QEAgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Q2FjaGVkWFNMU3R5bGVTaGVldChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwKICAgICBzZXRBY2NlcHQoInRleHQveG1sLCBhcHBs
aWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL3hodG1sK3htbCwgdGV4dC94c2wsIGFwcGxpY2F0aW9u
L3Jzcyt4bWwsIGFwcGxpY2F0aW9uL2F0b20reG1sIik7CiB9CiAKK0NhY2hlZFhTTFN0eWxlU2hl
ZXQ6On5DYWNoZWRYU0xTdHlsZVNoZWV0KCkKK3sKK30KKwogdm9pZCBDYWNoZWRYU0xTdHlsZVNo
ZWV0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiB7ICAKICAgICBBU1NF
UlQoYy0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkU3R5bGVTaGVldENsaWVudDo6ZXhw
ZWN0ZWRUeXBlKCkpOwpAQCAtNjMsMTIgKzY3LDEyIEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNo
ZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhSZXNv
dXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNv
ZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChtX2Rh
dGEuZ2V0KCkpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpCisgICAgICAgIG1fc2hlZXQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IGQ5OTIxYzJj
NTgwMzE2NzJkYTIzODdhOGM2YjcyZGE1MjI1YzQ1YjguLjBlMDBlNjc2NjZhNDA0YTFmYWQyOWFh
Mjk1MzlmM2U4YmY1NDFjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtMjksMzQgKzI5LDI5IEBACiAjaWYgRU5BQkxFKFhT
TFQpCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7Ci0gICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKK2NsYXNzIFRleHRSZXNvdXJjZURl
Y29kZXI7CiAKLSAgICBjbGFzcyBDYWNoZWRYU0xTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIENh
Y2hlZFJlc291cmNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIENhY2hlZFhTTFN0eWxlU2hlZXQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklEKTsKK2NsYXNzIENhY2hlZFhTTFN0eWxl
U2hlZXQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVibGljOgorICAgIENhY2hl
ZFhTTFN0eWxlU2hlZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklEKTsKKyAgICB2
aXJ0dWFsIH5DYWNoZWRYU0xTdHlsZVNoZWV0KCk7CiAKLSAgICAgICAgY29uc3QgU3RyaW5nJiBz
aGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNoZWV0
KCkgY29uc3QgeyByZXR1cm4gbV9zaGVldDsgfQogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKSBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgdmlydHVh
bCB2b2lkIGNoZWNrTm90aWZ5KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIG1heVRyeVJl
cGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CiAKLSAgICAgICAg
U3RyaW5nIG1fc2hlZXQ7Ci0gICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFj
ZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBvdmVycmlk
ZTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3Zl
cnJpZGU7Ci0gICAgfTsKKyAgICBTdHJpbmcgbV9zaGVldDsKKyAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAKaW5k
ZXggNTc2NzYwNGFlZDUzOWVjOTllMTgwZDU5N2RlOWU5ODdjZDNlZjg4Yi4uNjllMjk5N2Y0ZWNm
NWIxNGMwNTUwZTJhMTllMWE4NjExNmU4ZDFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcApAQCAtNTEsOCArNTEsOCBAQCB2b2lkIFN1
YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5
KQogICAgICAgICAgICAgLy8gYmVpbmcgY2FuY2VsbGVkLiBCYWlsIG91dCBpZiB3ZSBubyBsb25n
ZXIgaGF2ZSBhIGNhY2hlZCByZXNvdXJjZS4KICAgICAgICAgICAgIGlmICghbV9yZXNvdXJjZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoUmVzb3VyY2VCdWZmZXIq
IHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQotICAgICAgICAgICAgICAgIG1f
cmVzb3VyY2UtPmFkZERhdGFCdWZmZXIocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKKyAgICAgICAgICAgICAg
ICBtX3Jlc291cmNlLT5hZGREYXRhQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgQ0ZEYXRhUmVmIGNmRGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Q0ZEYXRhUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGRhdGFBcnJheSwgaSkpOwogICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBmMTJlMzk5ODJhNDgz
MjYzZTkxZWNjMWE1ZDNmNWI2MTI3MDBkMWQwLi5hMzUzOWI4YjE3ZjA4MWNmODIxZTc3OGEwNjIy
YjU4OGZkNzdhNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBXRUJDT1JFX0VYUE9SVCBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7
CisgICAgdmlydHVhbCB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXIm
KTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGNhNjA4ZjdkNjUxNzkx
ZTkyNWM4OWViNDI2N2RjYmY0NjliNmQ1Y2YuLjFjMWJkNWVlOTBmMGVhOGFlMjc0ZGFiYzc3MWVm
YjEwZGQzODcxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIERpc2tDYWNoZU1vbml0
b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZXNz
aW9uSUQgc2VzCiAgICAgICAgIGlmICghZmlsZUJhY2tlZEJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBtb25pdG9yLT5yZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoZmlsZUJh
Y2tlZEJ1ZmZlcik7CisgICAgICAgIG1vbml0b3ItPnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCgq
ZmlsZUJhY2tlZEJ1ZmZlcik7CiAgICAgfTsKIAogI2lmIFVTRShXRUJfVEhSRUFEKQpAQCAtMTIx
LDcgKzEyMSw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2VzCiAgICAgX0NGQ2FjaGVkVVJMUmVz
cG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxv
Y2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2Ft
ZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdCht
X3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IDU0MDJlYjA4NjNjNThj
MmFmMmIwNDhiYTlhYzc0NDc3ZmMxOTM0NzguLjU2OTIxY2Q5Mzc3ZmMxMmUwZWUxZDAzZDkzNDQw
NzFjNGFiNGNiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3Bw
CkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSWNvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUmVzb3Vy
Y2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC04NSwxNiArODQs
MTYgQEAgdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiAKICAgICAvLyBJZiB3ZSBnb3QgYSBzdGF0dXMgY29kZSBpbmRpY2F0aW5nIGFuIGlu
dmFsaWQgcmVzcG9uc2UsIHRoZW4gbGV0cwogICAgIC8vIGlnbm9yZSB0aGUgZGF0YSBhbmQgbm90
IHRyeSB0byBkZWNvZGUgdGhlIGVycm9yIHBhZ2UgYXMgYW4gaWNvbi4KLSAgICBSZWZQdHI8UmVz
b3VyY2VCdWZmZXI+IGRhdGEgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICBhdXRv
KiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgaW50IHN0YXR1cyA9IHJl
c291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgaWYgKHN0YXR1cyAmJiAo
c3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpCi0gICAgICAgIGRhdGEgPSAwOworICAgICAg
ICBkYXRhID0gbnVsbHB0cjsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyIHBkZk1hZ2ljTnVtYmVy
W10gPSAiJVBERiI7CiAgICAgc3RhdGljIHVuc2lnbmVkIHBkZk1hZ2ljTnVtYmVyTGVuZ3RoID0g
c2l6ZW9mKHBkZk1hZ2ljTnVtYmVyKSAtIDE7CiAgICAgaWYgKGRhdGEgJiYgZGF0YS0+c2l6ZSgp
ID49IHBkZk1hZ2ljTnVtYmVyTGVuZ3RoICYmICFtZW1jbXAoZGF0YS0+ZGF0YSgpLCBwZGZNYWdp
Y051bWJlciwgcGRmTWFnaWNOdW1iZXJMZW5ndGgpKSB7CiAgICAgICAgIExPRyhJY29uRGF0YWJh
c2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBJZ25vcmluZyBpY29uIGF0ICVzIGJl
Y2F1c2UgaXQgYXBwZWFycyB0byBiZSBhIFBERiIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGRhdGEgPSAwOworICAgICAgICBkYXRhID0gbnVsbHB0
cjsKICAgICB9CiAKICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9h
ZGluZygpIC0gQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIiwgcmVzb3VyY2UtPnVy
bCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTEwMiw3ICsxMDEsNyBAQCB2b2lkIElj
b25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAv
LyBTZXR0aW5nIHRoZSBpY29uIGRhdGEgb25seSBhZnRlciBjb21taXR0aW5nIHRvIHRoZSBkYXRh
YmFzZSBlbnN1cmVzIHRoYXQgdGhlIGRhdGEgaXMKICAgICAvLyBrZXB0IGluIG1lbW9yeSAoc28g
aXQgZG9lcyBub3QgaGF2ZSB0byBiZSByZWFkIGZyb20gdGhlIGRhdGFiYXNlIGFzeW5jaHJvbm91
c2x5KSwgc2luY2UKICAgICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVyZW5jaW5nIGl0Lgot
ICAgIGljb25EYXRhYmFzZSgpLnNldEljb25EYXRhRm9ySWNvblVSTChkYXRhID8gZGF0YS0+c2hh
cmVkQnVmZmVyKCkgOiAwLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOworICAgIGljb25EYXRh
YmFzZSgpLnNldEljb25EYXRhRm9ySWNvblVSTChkYXRhLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5n
KCkpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpOwogICAgIHN0b3BMb2FkaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL1Jlc291cmNlQnVmZmVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9S
ZXNvdXJjZUJ1ZmZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRjZjliNzkw
OWMzNzk0MmRiY2QxYWYxZWQzYmY2MmVkYjRjMWJjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNl
QnVmZmVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZUJ1ZmZlci5oIgotCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUmV0YWluUHRyPE5TRGF0YT4gUmVzb3VyY2VCdWZmZXI6OmNy
ZWF0ZU5TRGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KTsKLX0KLQotdm9pZCBSZXNvdXJjZUJ1ZmZlcjo6dHJ5UmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRl
bnRzKFNoYXJlZEJ1ZmZlciogbmV3Q29udGVudHMpCi17Ci0gICAgaWYgKCFtX3NoYXJlZEJ1ZmZl
cikKLSAgICAgICAgbV9zaGFyZWRCdWZmZXIgPSBuZXdDb250ZW50czsKLSAgICBlbHNlCi0gICAg
ICAgIG1fc2hhcmVkQnVmZmVyLT50cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIo
bmV3Q29udGVudHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQppbmRleCBhMDE1ZTk4N2I2MDMy
ZGE3ZTExNjhlMjY3MjRlOGMxYjNmYTA5MDg4Li4zZWNkNTk3ZmYyOTVmN2Q2NzA4Njg2Zjc1ODQ0
YzlkNmNkZjg4Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291
cmNlTG9hZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VM
b2FkZXJNYWMubW0KQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgi
CiAjZW5kaWYKIAogI2lmIFVTRShDRk5FVFdPUkspCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCiAK
ICAgICAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0
YSkgewogICAgICAgICAgICAgaWYgKCFtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgICAgICAgICBt
X3Jlc291cmNlRGF0YSA9IFJlc291cmNlQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAg
ICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBt
X3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGExNjEyZGI3ZjQ2ZjNjNDk3ZWU2YTljZDIw
NGUzNGNmMWYyNDFjMjkuLjA2YmRiMzhiNTkwNmQ4ZWMxMTRmMGMyMTVjYTNlZDFkMzRiMTIwYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVVTRShORVRXT1JLX0NGREFUQV9BUlJB
WV9DQUxMQkFDSykKKwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlZ21lbnRTaXplID0gMHgxMDAw
Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlZ21lbnRQb3NpdGlvbk1hc2sgPSAweDBGRkY7CiAK
QEAgLTU2LDYgKzU3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVTZWdtZW50KGNoYXIqIHAp
CiB7CiAgICAgZmFzdEZyZWUocCk7CiB9CisKICNlbmRpZgogCiBTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcigpCkBAIC0yMTQsOSArMjE2LDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkK
ICAgICBjbGVhclBsYXRmb3JtRGF0YSgpOwogICAgIAogI2lmICFVU0UoTkVUV09SS19DRkRBVEFf
QVJSQVlfQ0FMTEJBQ0spCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2VnbWVudHMu
c2l6ZSgpOyArK2kpCi0gICAgICAgIGZyZWVTZWdtZW50KG1fc2VnbWVudHNbaV0pOwotCisgICAg
Zm9yIChjaGFyKiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgZnJlZVNlZ21lbnQoc2Vn
bWVudCk7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOwogI2Vsc2UKICAgICBtX2RhdGFBcnJheS5j
bGVhcigpOwpAQCAtMjI2LDI0ICsyMjcsMjYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkK
ICAgICBjbGVhckRhdGFCdWZmZXIoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitQYXNzUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZShhZG9w
dFJlZihuZXcgU2hhcmVkQnVmZmVyKSk7CisgICAgUGFzc1JlZjxTaGFyZWRCdWZmZXI+IGNsb25l
IHsgYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpIH07CiAgICAgaWYgKGhhc1BsYXRmb3JtRGF0
YSgpKSB7Ci0gICAgICAgIGNsb25lLT5hcHBlbmQoZGF0YSgpLCBzaXplKCkpOworICAgICAgICBj
bG9uZS5nZXQoKS5hcHBlbmQoZGF0YSgpLCBzaXplKCkpOwogICAgICAgICByZXR1cm4gY2xvbmU7
CiAgICAgfQogCi0gICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKLSAgICBjbG9uZS0+bV9idWZm
ZXItPmRhdGEucmVzZXJ2ZUNhcGFjaXR5KG1fc2l6ZSk7Ci0gICAgY2xvbmUtPm1fYnVmZmVyLT5k
YXRhLmFwcGVuZChtX2J1ZmZlci0+ZGF0YS5kYXRhKCksIG1fYnVmZmVyLT5kYXRhLnNpemUoKSk7
CisgICAgY2xvbmUuZ2V0KCkubV9zaXplID0gbV9zaXplOworICAgIGNsb25lLmdldCgpLm1fYnVm
ZmVyLT5kYXRhLnJlc2VydmVDYXBhY2l0eShtX3NpemUpOworICAgIGNsb25lLmdldCgpLm1fYnVm
ZmVyLT5kYXRhLmFwcGVuZChtX2J1ZmZlci0+ZGF0YS5kYXRhKCksIG1fYnVmZmVyLT5kYXRhLnNp
emUoKSk7CisKICNpZiAhVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytpKQotICAgICAgICBj
bG9uZS0+bV9idWZmZXItPmRhdGEuYXBwZW5kKG1fc2VnbWVudHNbaV0sIHNlZ21lbnRTaXplKTsK
KyAgICBmb3IgKGNoYXIqIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICBjbG9uZS5nZXQo
KS5tX2J1ZmZlci0+ZGF0YS5hcHBlbmQoc2VnbWVudCwgc2VnbWVudFNpemUpOwogI2Vsc2UKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRhQXJyYXkuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIGNsb25lLT5hcHBlbmQobV9kYXRhQXJyYXlbaV0uZ2V0KCkpOworICAgIGZvciAoYXV0byYg
ZGF0YSA6IG1fZGF0YUFycmF5KQorICAgICAgICBjbG9uZS5nZXQoKS5hcHBlbmQoZGF0YS5nZXQo
KSk7CiAjZW5kaWYKKwogICAgIHJldHVybiBjbG9uZTsKIH0KIApAQCAtMjc1LDE3ICsyNzgsMTkg
QEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyRGF0YUJ1ZmZlcigpCiB9CiAKICNpZiAhVVNFKE5F
VFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1
ZmZlckFuZENsZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29u
c3QKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsr
aSkgeworICAgIGZvciAoY2hhciogc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgdW5z
aWduZWQgZWZmZWN0aXZlQnl0ZXNUb0NvcHkgPSBzdGQ6Om1pbihieXRlc1RvQ29weSwgc2VnbWVu
dFNpemUpOwotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIG1fc2VnbWVudHNbaV0sIGVmZmVj
dGl2ZUJ5dGVzVG9Db3B5KTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzZWdtZW50LCBl
ZmZlY3RpdmVCeXRlc1RvQ29weSk7CiAgICAgICAgIGRlc3RpbmF0aW9uICs9IGVmZmVjdGl2ZUJ5
dGVzVG9Db3B5OwogICAgICAgICBieXRlc1RvQ29weSAtPSBlZmZlY3RpdmVCeXRlc1RvQ29weTsK
LSAgICAgICAgZnJlZVNlZ21lbnQobV9zZWdtZW50c1tpXSk7CisgICAgICAgIGZyZWVTZWdtZW50
KHNlZ21lbnQpOwogICAgIH0KICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiB9CisKICNlbmRpZgog
CiBjb25zdCBWZWN0b3I8Y2hhcj4mIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggY2NiMDI5ZDc5ODE4ZjZkOWNiZDdh
ZmJlNjU1MDRlMDU2NjliNzNlOS4uZjU5MTI5YTEzYWQ4NjE5Y2I2NDZlMzQ3MzNlMGI2ZThjMDU4
Zjg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEwMiw3ICsx
MDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0g
ICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBQYXNzUmVmPFNo
YXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVy
IG9mIGNvbnNlY3V0aXZlIGJ5dGVzIGFmdGVyICJwb3NpdGlvbiIuICJkYXRhIgogICAgIC8vIHBv
aW50cyB0byB0aGUgZmlyc3QgYnl0ZS4KQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gICAgICB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZ2V0U29tZURhdGEoY29uc3Qg
Y2hhciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCkgY29uc3Q7CiAKLSAgICB2b2lkIHRy
eVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2
b2lkIHRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3JtRGF0YSgpIGNvbnN0OwogCiAgICAg
c3RydWN0IERhdGFCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YUJ1ZmZl
cj4gewpAQCAtMTU4LDYgKzE1OCw3IEBAIHByaXZhdGU6CiAjZWxzZQogICAgIG11dGFibGUgVmVj
dG9yPGNoYXIqPiBtX3NlZ21lbnRzOwogI2VuZGlmCisKICNpZiBVU0UoQ0YpCiAgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9j
ZkRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
aW5kZXggNTY3NzA3YmZjN2ZiOTdhZGU1MWNiOTMzYjU2YzhlZDBiNThmYWZlNS4uYmJmMTg1ZTAw
NzIzYjEzZTc2MDkzZmMyYzE2NTFkMzY2NTNlZTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtOTIsMTMgKzkyLDEzIEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiAgICAgbV9jZkRhdGEgPSAwOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNo
YXJlZEJ1ZmZlciogbmV3Q29udGVudHMpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNv
bnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCiB7Ci0g
ICAgaWYgKCFuZXdDb250ZW50cy0+bV9jZkRhdGEpCisgICAgaWYgKCFuZXdDb250ZW50cy5tX2Nm
RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2xlYXIoKTsKLSAgICBtX2NmRGF0YSA9IG5l
d0NvbnRlbnRzLT5tX2NmRGF0YTsKKyAgICBtX2NmRGF0YSA9IG5ld0NvbnRlbnRzLm1fY2ZEYXRh
OwogfQogCiBib29sIFNoYXJlZEJ1ZmZlcjo6bWF5YmVBcHBlbmRQbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyKiBuZXdDb250ZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggNTg5
MWQ4Yzc3MWMzZjU2NTdiNjMyY2IxNjk4YmY3ZmRlMmY2OTJlYi4uNTMyYWM4NDBhNzllYTZhNzZj
MDVjZDM3NWM5MWRlZmQ4MThmOTZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyX2gKIAog
I2lmIEVOQUJMRShWSURFTykKKwogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM1LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CkBAIC00MywxMCArNDMsOSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFy
KiwgaW50KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyUmVjZWl2ZWQoU2hhcmVkQnVmZmVy
KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoU2hhcmVkQnVm
ZmVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZCgpIHsgfQogI2lmIFVTRShT
T1VQKQogICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKnJl
cXVlc3RlZFNpemUqLywgc2l6ZV90JiAvKmFjdHVhbFNpemUqLykgeyByZXR1cm4gbnVsbHB0cjsg
fTsKICNlbmRpZgpAQCAtNjgsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRp
ZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+IGNsaWVudCkKKyAgICBleHBsaWNpdCBQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQogICAgICAgICA6IG1fY2xpZW50KFdURjo6bW92
ZShjbGllbnQpKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggZjIwZTZhMDU4NGM4ZDRmZDFjYTYwOGIw
NGJhY2M4NTBjODE4ZWVkNi4uM2U2NWE1MTg5MWNjMGQzMTczOWRiNTdlNDkxZjJjMjdjYTNiMzlh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAiTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIgotI2ltcG9ydCAiUmVzb3VyY2VCdWZmZXIuaCIK
ICNpbXBvcnQgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVy
LmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgpAQCAtMTUyLDcgKzE1MSw3IEBAIHZvaWQgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyCiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkgPyBy
ZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCkgOiAwOworICAgIFNoYXJl
ZEJ1ZmZlciogZGF0YSA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGY5ZDc5OTEyM2FiMmE0NWU1ODE4OGI2NzUxY2M4ZWNiM2UxOGExYTUu
LjEyZmRlYmE5YjY3ZjI1NmVhNGNlODNjZWEwODE5YTVkNGNkYzIzNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGNsYXNz
IENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlckNsCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoY29u
c3QgY2hhciosIGludCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoKSBvdmVycmlkZTsKIH07CiAKIGNs
YXNzIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxl
Q2xpZW50LCBwdWJsaWMgU3RyZWFtaW5nQ2xpZW50IHsKQEAgLTEwMzEsNyArMTAzMSw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShzcmMtPnByaXYt
PmFwcHNyYyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
aW5pc2hlZChTaGFyZWRCdWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6bG9hZEZpbmlzaGVkKCkKIHsKICAgICBoYW5kbGVOb3RpZnlGaW5pc2hlZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBjZWE5MDQ4
NTM1YWYzMzkxMDQ0NTUzNmFmOGE1MGQ3ODczMTAyZGY4Li41MDFhMzhjYTU3MjllY2I3YTk4MTY0
NDk0N2Q3MWQzMjdmMWYyZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0
ZWd5LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJlbmRlcklt
YWdlLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2lt
cG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRT
dHJpbmdFeHRyYXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQppbmRleCBiMDIyYzcxNTNiODM4OWU3Y2RjNzY5MGJiOWE5NjljYjhhMjE3N2I3Li5kZGI4YjYy
MTdjMDcyOGEwZmI2M2Q4M2ZjNGNhYmYxNWE2YTQ3NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC01Myw3ICs1Myw2IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VC
dWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJh
cy5oPgpAQCAtNDU5LDcgKzQ1OCw3IEBAIC0gKHZvaWQpZmluYWxpemUKIAogLSAoTlNEYXRhICop
ZGF0YQogewotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRv
UHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5s
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCAwODYzYmRlZmFlZDhkYTFlMWRjOWIyZWFjODI2Y2E2NjY0ODc0ZmM0Li45NDRj
NWM4NDIyOTViZDMzN2RiZDZhYzEyNGY5MTM0ZThiZDZmMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEwOCw3ICsxMDgsNiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9SYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1JlbmRlcldpZGdldC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZUZvbnREYXRh
Lmg+CkBAIC0zOTU1LDcgKzM5NTQsNyBAQCAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRpb24KICAgICBOU1VS
TCAqZHJhZ2dpbmdJbWFnZVVSTCA9IG5pbDsKICAgICAKICAgICBpZiAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2UqIHRpZmZSZXNvdXJjZSA9IFtzZWxmIHByb21pc2VkRHJhZ1RJRkZEYXRhU291cmNlXSkg
ewotICAgICAgICBpZiAoUmVzb3VyY2VCdWZmZXIgKmJ1ZmZlciA9IHN0YXRpY19jYXN0PENhY2hl
ZFJlc291cmNlKj4odGlmZlJlc291cmNlKS0+cmVzb3VyY2VCdWZmZXIoKSkgeworICAgICAgICBp
ZiAoYXV0byogYnVmZmVyID0gdGlmZlJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAg
ICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IHRpZmZSZXNvdXJjZS0+cmVzcG9uc2Uo
KS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgICAgICAgICBkcmFnZ2luZ0ltYWdlVVJMID0gW3Jlc3Bv
bnNlIFVSTF07CiAgICAgICAgICAgICB3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDk1NGJiYTQ3NDE5OTIzM2ZhODQ1NmM5
MDE3MWZjYjliNjgwZTg5OTUuLjhlM2UyNTgyZDUyODY3OTQzOTkxMWM1ZDU5MDQ2MjY1ZjdlZGM5
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUlu
Zm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KQEAgLTQwOSwxOCArNDA4LDIwIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKFRpbWVyPE5ldHdvcmtSZXNv
dXJjZUxvYWRlcj4mKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewor
ICAgIEFTU0VSVChidWZmZXIpOwogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAogI2lm
IFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwKQogICAgIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgc2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGU7Ci0gICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFy
ZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVyKHNoYXJlYWJsZVJlc291cmNlSGFuZGxlLCBidWZm
ZXIpOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJv
bVNoYXJlZEJ1ZmZlcihzaGFyZWFibGVSZXNvdXJjZUhhbmRsZSwgKmJ1ZmZlcik7CiAgICAgaWYg
KCFzaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkgewotICAgICAgICAvLyBTaW5jZSB3
ZSdyZSBkZWxpdmVyaW5nIHRoaXMgcmVzb3VyY2UgYnkgb3Vyc2VsdmVzIGFsbCBhdCBvbmNlIGFu
ZCBkb24ndCBuZWVkIGFueW1vcmUgZGF0YSBvciBjYWxsYmFja3MgZnJvbSB0aGUgbmV0d29yayBs
YXllciwgYWJvcnQgdGhlIGxvYWRlci4KKyAgICAgICAgLy8gU2luY2Ugd2UncmUgZGVsaXZlcmlu
ZyB0aGlzIHJlc291cmNlIGJ5IG91cnNlbHZlcyBhbGwgYXQgb25jZSBhbmQgZG9uJ3QgbmVlZCBh
bnkgbW9yZSBkYXRhIG9yIGNhbGxiYWNrcyBmcm9tIHRoZSBuZXR3b3JrIGxheWVyLCBhYm9ydCB0
aGUgbG9hZGVyLgogICAgICAgICBhYm9ydCgpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc291cmNlKHNoYXJlYWJsZVJlc291cmNlSGFuZGxl
LCBjdXJyZW50VGltZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKwogICAg
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiAg
ICAgc2VuZEFib3J0aW5nT25GYWlsdXJlKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
UmVjZWl2ZURhdGEoZGF0YVJlZmVyZW5jZSwgZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggMjczZTEzMTk5ZTgxOTJkM2Y2NjRjODhiMTZiMjg4YmE0ZWFhYzU0Mi4uOWNlZTg2
MThjMmU3MWRjNzYxNWQ5NTUyYzNiNDliM2NmMGEyYzY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTQ2LDcg
KzQ2LDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTsKLWNsYXNzIFJlc291cmNlQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CkBAIC05Miw3ICs5MSw3IEBAIHB1YmxpYzoK
IAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwKQogICAgIHN0YXRpYyB2b2lkIHRyeUdldFNoYXJlYWJs
ZUhhbmRsZUZyb21DRlVSTENhY2hlZFJlc3BvbnNlKFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUm
LCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAgICBzdGF0aWMgdm9pZCB0cnlHZXRTaGFyZWFi
bGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVyKFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICBzdGF0aWMgdm9pZCB0cnlHZXRTaGFyZWFibGVIYW5k
bGVGcm9tU2hhcmVkQnVmZmVyKFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmLCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9D
QUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9O
ZXR3b3JrRGlza0NhY2hlTW9uaXRvci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLmgKaW5kZXggYmQ4YzBiMGJhZThmOTU2YWI5MTFi
NDUyNmVmMzVlMWFjMzM5MDFjZi4uNTgzY2VkYjY1ZmU3MTljNDcxNWY5MWY2ZTFmY2E0MjgzNjlk
NGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtEaXNrQ2FjaGVNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToK
ICAgICBOZXR3b3JrRGlza0NhY2hlTW9uaXRvcihDRkNhY2hlZFVSTFJlc3BvbnNlUmVmLCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIqKTsKIAogICAgIC8vIFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3IK
LSAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlc291cmNl
QmVjYW1lRmlsZUJhY2tlZChXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLm1tIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLm1tCmlu
ZGV4IGEyM2M1OGJjNzZhODJhYWVlNzBkYzkxZmQ5MDdlYWNhNWEzYzUzMGQuLjU1MWQwNzY5MzI3
OWJiZmIxZjQyM2M0ZTUyN2I3ZjIzYWE3NTkzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrRGlza0NhY2hlTW9uaXRvci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IubW0K
QEAgLTU5LDEwICs1OSwxMCBAQCBOZXR3b3JrRGlza0NhY2hlTW9uaXRvcjo6TmV0d29ya0Rpc2tD
YWNoZU1vbml0b3IoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZQogewogfQogCi12b2lk
IE5ldHdvcmtEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIE5ldHdvcmtEaXNrQ2Fj
aGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFj
a2VkQnVmZmVyKQogewogICAgIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOwotICAg
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1
ZmZlcihoYW5kbGUsIGZpbGVCYWNrZWRCdWZmZXIuZ2V0KCkpOworICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihoYW5kbGUsIGZp
bGVCYWNrZWRCdWZmZXIpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtSZXNvdXJjZUxvYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21h
Yy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0KaW5kZXggNDNhZWUwYTUwNzhjZjU5ZmVmMmIy
OWJmZmE2MzhlODZjNDE4ZTYyNy4uZTEzMzdkMDM1M2YzODBkZjZhYjg5OTk5ZThmZGNkMTRkMjYy
ZmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtSZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShTaGFyZWFiCiAgICAgdHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbUNGRGF0YSho
YW5kbGUsIGRhdGEpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hh
cmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBo
YW5kbGUsIFNoYXJlZEJ1ZmZlciogYnVmZmVyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIoU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZSYgaGFuZGxlLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzdGF0aWMgQ0ZV
UkxDYWNoZVJlZiBjYWNoZSA9IENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUoKTsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWFi
bGVSZXNvdQogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGRGF0YVJl
ZiBkYXRhID0gYnVmZmVyLT5leGlzdGluZ0NGRGF0YSgpOworICAgIENGRGF0YVJlZiBkYXRhID0g
YnVmZmVyLmV4aXN0aW5nQ0ZEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47
CiAKQEAgLTEwMiw3ICsxMDIsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0
U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWFibGVSZXNvdQogCiAgICAgdHJ5
R2V0U2hhcmVhYmxlSGFuZGxlRnJvbUNGRGF0YShoYW5kbGUsIGRhdGEpOwogfQotI2VuZGlmIC8v
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorCisjZW5kaWYgLy8gSU9T
IHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogCiBzaXplX3QgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpmaWxlQmFja2VkUmVzb3VyY2VNaW5pbXVtU2l6ZSgpCiB7CkBA
IC0xMTAsNiArMTExLDcgQEAgc2l6ZV90IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZmlsZUJhY2tl
ZFJlc291cmNlTWluaW11bVNpemUoKQogfQogCiAjaWYgVVNFKENGTkVUV09SSykKKwogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogewogICAgIEFT
U0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0gbV9oYW5kbGUpOwpAQCAtMTMzLDYgKzEzNSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2FjCiAKICAgICBtX2hhbmRsZS0+Y29udGludWVXaWxs
Q2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsKIH0KKwogI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JL
KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
RGF0YVJlZmVyZW5jZS5oCmluZGV4IDRmOGY0OGQ1YzFjYTc2ZWMxZTBmNTNhMTI1NmVhZjFkMzhj
NjJjYTMuLmU2ODA2YjA3NDEzYWQyY2UyOTg5ZTk0Mjg5YjlkMTg4MDNhOTI3ZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaApAQCAtODMsMjEgKzgzLDI3
IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc2l6ZTsKIH07CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6IHB1YmxpYyBEYXRhUmVmZXJlbmNlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgOiBwdWJsaWMgRGF0YVJlZmVyZW5jZSB7CiBwdWJsaWM6CisgICAgLy8g
RklYTUU6IFRoaXMgY2xhc3MgZG9lc24ndCBoYW5kbGUgbnVsbCwgc28gdGhlIGFyZ3VtZW50IHNo
b3VsZCBiZSBhIHJlZmVyZW5jZSBvciBQYXNzUmVmLgogICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyKQogICAgIHsKLSAgICAgICAgbV9idWZmZXIgPSBidWZmZXI7CiAgICAgfQogCi0gICAg
c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci0+c2l6ZSgpOyB9Citwcml2YXRl
OgorICAgIC8vIEZJWE1FOiBJdCBpcyBhIGJhZCBpZGVhIHRvIHZpb2xhdGUgdGhlIExpc2tvdiBT
dWJzdGl0dXRpb24gUHJpbmNpcGxlIGFzIHdlIGRvIGhlcmUuCisgICAgLy8gU2luY2Ugd2UgYXJl
IHVzaW5nIERhdGFSZWZlcmVuY2UgYXMgYSBwb2x5bW9wcmhpYyBiYXNlIGNsYXNzIGluIHRoaXMg
ZmFzaGlvbiwKKyAgICAvLyB0aGVuIHdlIG5lZWQgaXQgdG8gYmUgYSBiYXNlIGNsYXNzIHRoYXQg
ZG9lcyBub3QgaGF2ZSBmdW5jdGlvbnMgc3VjaCBhcyBpc0VtcHR5LAorICAgIC8vIHNpemUsIGRh
dGEsIGFuZCB2ZWN0b3IsIGFsbCBvZiB3aGljaCB3aWxsIGRvIHRoZSB3cm9uZyB0aGluZyBpZiB0
aGV5IGFyZSBjYWxsZWQuCisgICAgLy8gRGVsZXRpbmcgdGhlc2UgZnVuY3Rpb25zIGhlcmUgZG9l
cyBub3QgcHJldmVudCB0aGVtIGZyb20gYmVpbmcgY2FsbGVkLgorICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0ID0gZGVsZXRlOworICAgIHNpemVfdCBzaXplKCkgY29uc3QgPSBkZWxldGU7CiAgICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0ID0gZGVsZXRlOwogICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3IoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgflNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UoKSB7IG1fYnVmZmVyID0gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKLXByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUmVzb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlJlc291cmNlQnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRi
OWViMzJlMGFhOTI1MGU3YTQ4NTk0MjRmYjU0OTgzM2NmYWEzMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVz
b3VyY2VCdWZmZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUJ1ZmZlci5oIgot
Ci0jaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
V2ViUmVzb3VyY2VCdWZmZXI6OldlYlJlc291cmNlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVhYmxl
UmVzb3VyY2U+IHJlc291cmNlKQotICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKLXsKLSAgICBB
U1NFUlQobV9yZXNvdXJjZSk7Ci19Ci0KLVdlYlJlc291cmNlQnVmZmVyOjp+V2ViUmVzb3VyY2VC
dWZmZXIoKQotewotfQotCi1jb25zdCBjaGFyKiBXZWJSZXNvdXJjZUJ1ZmZlcjo6ZGF0YSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fcmVzb3Vy
Y2UtPmRhdGEoKSk7Ci19Ci0KLXVuc2lnbmVkIFdlYlJlc291cmNlQnVmZmVyOjpzaXplKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9yZXNvdXJjZS0+c2l6ZSgpOwotfQotCi1ib29sIFdlYlJlc291
cmNlQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fcmVzb3VyY2UgfHwg
IW1fcmVzb3VyY2UtPnNpemUoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlJlc291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVzb3VyY2VCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjliNDk1OWQ1
YzUyZTc2YjVkMjMyYWRjNmQ2MDYyNTk5NzJmYmQxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVzb3VyY2VC
dWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdlYlJlc291cmNlQnVmZmVyX2gKLSNkZWZpbmUgV2ViUmVzb3VyY2VCdWZmZXJfaAotCi0j
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLQotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFNoYXJlYWJsZVJlc291
cmNlOwotCi1jbGFzcyBXZWJSZXNvdXJjZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpSZXNvdXJj
ZUJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVzb3VyY2VCdWZm
ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlJlc291cmNlQnVmZmVyKHJlc291cmNlKSk7IH0KLQotICAgIHZp
cnR1YWwgfldlYlJlc291cmNlQnVmZmVyKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIGRhdGEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNpemUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJy
aWRlOwotCi1wcml2YXRlOgotICAgIFdlYlJlc291cmNlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVh
YmxlUmVzb3VyY2U+KTsKLQotICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gbV9yZXNvdXJj
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJF
QUJMRV9SRVNPVVJDRSkKLQotI2VuZGlmIC8vIFdlYlJlc291cmNlQnVmZmVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhODYy
NDNkMTRkOGRjNjJjZTExNTY2Y2JiYzRmZDNiMDAzMzZjMmZlLi43ZWU3NmIyYzU0MWYyODI5YTZl
ZWU0MDFjZDc2MjMwZGI2N2VmMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MjIsOCArODIyLDYgQEAKIAkJNTEyMTI3QzQx
OTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjEyN0MyMTkwODIzOUEwMERBRjM1
QyAvKiBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmggKi87IH07CiAJCTUxMjE3NDYwMTY0QzIwRTMw
MDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIxNzQ1RTE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVh
YmxlUmVzb3VyY2UuY3BwICovOyB9OwogCQk1MTIxNzQ2MTE2NEMyMEUzMDAzN0E1QzEgLyogU2hh
cmVhYmxlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMjE3NDVGMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5oICov
OyB9OwotCQk1MTIxNzQ2NDE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMTc0NjIx
NjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmNwcCAqLzsgfTsKLQkJNTEyMTc0
NjUxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIxNzQ2MzE2NEMyMTM3MDAzN0E1QzEg
LyogV2ViUmVzb3VyY2VCdWZmZXIuaCAqLzsgfTsKIAkJNTEyM0NGMUIxMzNEMjYwQTAwNTZGODAw
IC8qIFdLSWNvbkRhdGFiYXNlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyM0NGMTkxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNl
Q0cuY3BwICovOyB9OwogCQk1MTIzQ0YxQzEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJh
c2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEy
M0NGMUExMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTI5MDk5MjE4M0FDRUFGMDA1
NTIyQTYgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MDk5MDE4M0FDRUFGMDA1NTIyQTYgLyogV2Vi
SURCU2VydmVyQ29ubmVjdGlvbi5jcHAgKi87IH07CkBAIC0yODU4LDggKzI4NTYsNiBAQAogCQk1
MTIxMjdDMjE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjE3NDVFMTY0QzIwRTMwMDM3QTVDMSAvKiBT
aGFyZWFibGVSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFyZWFibGVSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MjE3NDVGMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWFibGVSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MTIxNzQ2MjE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VC
dWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3Vy
Y2VCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTIxNzQ2MzE2NEMy
MTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUmVzb3VyY2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEyM0NGMTkxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV0tJY29uRGF0YWJhc2VDRy5jcHA7
IHBhdGggPSBjZy9XS0ljb25EYXRhYmFzZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEyM0NGMUExMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJY29uRGF0YWJhc2VDRy5oOyBwYXRoID0g
Y2cvV0tJY29uRGF0YWJhc2VDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5
MDk5MDE4M0FDRUFGMDA1NTIyQTYgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MzksOCArNDUzNSw2IEBACiAJCQkJ
Mzc5NDg0MDIxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRlckxheWVyLmggKi8sCiAJCQkJMzc2
MDg4MUMxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5jcHAgKi8sCiAJCQkJMzc2
MDg4MUQxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oICovLAotCQkJCTUxMjE3
NDYyMTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgKi8sCi0JCQkJNTEy
MTc0NjMxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmggKi8sCiAJCQkJRjYz
NDQ0NTUxMkE4ODVDODAwMDYxMkQ4IC8qIFdlYlNlY3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJQTcy
RDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovLAog
CQkJCUMwMzM3REQ3MTI3QTUxQjYwMDhGRjRGNCAvKiBXZWJUb3VjaEV2ZW50LmNwcCAqLywKQEAg
LTc2MTgsNyArNzYxMiw2IEBACiAJCQkJNTFFMzUxRjYxODBGNUM3NTAwRTUzQkU5IC8qIFdlYklE
QkZhY3RvcnlCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUNEMDE5MkYyQzJFMDA5
ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzYwODgxRjE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1MTIxNzQ2NTE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3Vy
Y2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMzY3NjMwMTMwQzk5OTgwMDZDOURFMiAv
KiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjA4OUIx
OTI2N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMz
Njc2NTYxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtOTMwNCw3ICs5Mjk3LDYgQEAKIAkJCQkzNzk0ODQwMzE1MEMz
NTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQy
OEYzRTYxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkVkaXRvckNsaWVudElPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3NjA4ODFFMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTEyMTc0NjQxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291
cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMzY3NjJGMTMwQzk5OTgwMDZDOURF
MiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTE1
QzcxNDE5MEY4OUU0MDBFQ0M1MTYgLyogRGF0YWJhc2VQcm9jZXNzSU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzNGOUQ1QjkxMzEyRjFFRTAwMEQ2ODNGIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5h
Z2VyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDc3MTk2NDU1ODRjNWMwYWEyYmNmOWNhNTI1NGQzZTg4ZDY1NThiYjcuLjY3MWExN2U1NmM4
NDM1MGZkODhiMmIwZDMzZWRlYjEyMjM5OTJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0zMCwxMiArMzAsMTAgQEAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIApAQCAtOTUsNyArOTMsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXNvdXJjZS0+dHJ5UmVw
bGFjZUVuY29kZWREYXRhKGJ1ZmZlci5yZWxlYXNlKCkpOworICAgIHJlc291cmNlLT50cnlSZXBs
YWNlRW5jb2RlZERhdGEoKmJ1ZmZlcik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAppbmRleCAxYTdmOWMxZTQ0ZjI3MDMzZjFlNDIyMWQ1MWY0MzVkYjQ4NTA4N2RhLi44
OGNiMDY0ZTEwNzI5M2Q3OTA5NjVhMDc0YWRjMTJjZGFjODBkNjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVM
b2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZlcnJlclBvbGljeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdz
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA4NWFkZmJiMmMyMGYzYjJkNzQwN2U5Njg4ZmFlOTkwYjI5
MDViMGE1Li5jNWViNDIzY2IwMmYwNTczNTBkMzZlZGM1NTQwOWI4Y2RkZWQ4OTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkYzlhYTBmNDIzZTkw
NTY4OWY3YzdhYTczMTBhNTJiNzNkYTAxNGJlLi42YjkyODQyNWFmNDdiNTJhMTE0NTYxNGVmOWU5
M2I1NTA1NGMxMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtNDYsNyArNDYsNiBAQCBjbGFzcyBEYXRhUmVm
ZXJlbmNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3MgUmVzb3VyY2VCdWZmZXI7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDkxZjhlOGY2MDJhZWZjNDA3YmZj
YjI0NmM0OWNjZjhkNjNjNTNhYTguLjljZTBiZWZkYmViNTQwYjkzZjY4ZWRmYjY5ZGIwNDVmODJj
YjFhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03NCw3ICs3NCw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bHVnaW5Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAgLTkxOSw3ICs5MTgsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
ICAgICAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgICAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6
IDApLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDU0ZTBiN2Rm
ZjI4N2U3OGFjNDQzZWY4MDg3ZWZkNDI5OTdjYjFhY2QuLjlkY2VlNDZiMGJlYjk1ZGFkZmEzNzIw
M2M1ZjY0YmQ5NzI4N2RkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtNjUsNyArNjUsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlclRyZWVBc1RleHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KQEAgLTMwNSw3ICszMDQsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAg
ICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigp
LmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291
cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNv
dXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxNTZjNGE5OGY4Yjk4
OWQ0YzliNDQwNTAzYmQ1MDNlZTQ4YTdmODIyLi5kZWZmY2Y1ZmFjOTAyMzA1ZDllNDZmMzZhNWU0
MDFiZGY2ZTkxYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0xMzYsNyArMTM2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxh
eWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZW5kZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmg+CkBAIC0yNDMwLDE3ICsyNDI5LDE2IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lE
CiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRz
IHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1
cmluZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0gICAgLy8gUmV0YWluIHRoZSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgYXQgdGhpcyBsZXZlbCBzbyBpdCAoYW5kIHRoZSBpbnRlcm5hbCBkYXRhKSBsaXZl
cwotICAgIC8vIGxvbmcgZW5vdWdoIGZvciB0aGUgRGF0YVJlZmVyZW5jZSB0byBiZSBlbmNvZGVk
IGJ5IHRoZSBzZW50IG1lc3NhZ2UuCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFJlc3VsdFZhbHVlOwotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOwotCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5kb3c6OmNvbW1vblZNKCkpOwog
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdFZhbHVlID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5z
Y3JpcHQoKS5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpKSB7Ci0gICAgICAg
IGlmICgoc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUobV9tYWluRnJhbWUtPmpzQ29udGV4dCgpLCB0b1JlZihtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2Jh
bEV4ZWMoKSwgcmVzdWx0VmFsdWUpLCAwKSkpCi0gICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0g
c2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1fbWFpbkZyYW1lLT5qc0NvbnRl
eHQoKSwKKyAgICAgICAgICAgIHRvUmVmKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0
KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpLCBy
ZXN1bHRWYWx1ZSksIG51bGxwdHIpOwogICAgIH0KIAorICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOworICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCisgICAgICAgIGRh
dGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwg
Y2FsbGJhY2tJRCkpOwogfQogCkBAIC0yNDUzLDE1ICsyNDUxLDE0IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogI2lmIEVOQUJMRShNSFRN
TCkKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFj
a0lELCBib29sIHVzZUJpbmFyeUVuY29kaW5nKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOwotCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gdXNlQmlu
YXJ5RW5jb2RpbmcKICAgICAgICAgPyBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhVXNp
bmdCaW5hcnlFbmNvZGluZyhtX3BhZ2UuZ2V0KCkpCiAgICAgICAgIDogTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkpOwogCisgICAgLy8gRklYTUU6IFVzZSBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLgorICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkp
LCBidWZmZXItPnNpemUoKSk7Ci0KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRh
dGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAjZW5kaWYKQEAgLTI0
ODQsMjAgKzI0ODEsMTcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSog
cGFnZSkKIAogdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
Ci0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJj
aGl2ZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOworICAgIGlmIChGcmFtZSogZnJh
bWUgPSBmcmFtZVdpdGhTZWxlY3Rpb24obV9wYWdlLmdldCgpKSkKKyAgICAgICAgZGF0YSA9IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oZnJhbWUpLT5yYXdEYXRhUmVwcmVz
ZW50YXRpb24oKTsKKyNlbmRpZgogCi0gICAgRnJhbWUqIGZyYW1lID0gZnJhbWVXaXRoU2VsZWN0
aW9uKG1fcGFnZS5nZXQoKSk7Ci0gICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKGZyYW1lKTsKLSAgICAgICAgZGF0
YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpOworICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkYXRhKQog
ICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQ
dHIoZGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7Ci0gICAgfQogI2Vu
ZGlmCi0KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRh
UmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKQEAgLTI1MjAsMjQgKzI1MTQsMjAgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKQogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0KLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZl
cjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwZGZSZXNvdXJjZTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpKSB7Ci0gICAgICAgIGlmIChQbHVnaW5WaWV3KiBw
bHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpIHsKLSAg
ICAgICAgICAgIGlmICgocGRmUmVzb3VyY2UgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRh
KCkpKQotICAgICAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2Uo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGRmUmVzb3VyY2UtPmRhdGEoKSksIHBk
ZlJlc291cmNlLT5zaXplKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRhdGFSZWZlcmVu
Y2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9
IGZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAg
ICAgICAgICAgIGlmICgoYnVmZmVyID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpKQotICAg
ICAgICAgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXpl
KCkpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9
IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpKQorICAgICAgICAgICAgYnVm
ZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0YSgpOworICAgICAgICBpZiAoIWJ1ZmZl
cikgeworICAgICAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+Y29y
ZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgICAgICAgICAgYnVm
ZmVyID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICAvLyBGSVhNRTogVXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuCisgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7
CiB9CiAKQEAgLTI1NTYsMzggKzI1NDYsMzggQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmUKIAog
dm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsK
LSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBVUkwgcmVzb3VyY2VV
UkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKLQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCku
d2ViRnJhbWUoZnJhbWVJRCkpIHsKKyAgICAgICAgVVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNv
dXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZy
YW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwogICAgICAgICBpZiAoIWJ1ZmZlcikgewog
ICAgICAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgcmVzb3VyY2UgZGF0YSBmcm9tIHRoZSBjYWNo
ZS4KICAgICAgICAgICAgIGJ1ZmZlciA9IGNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChyZXNvdXJj
ZVVSTCk7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgZGF0
YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICB9CiAKKyAgICAv
LyBGSVhNRTogVXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuCisgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgZGF0YVJlZmVy
ZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZTsKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRh
dGE7Ci0gICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZy
YW1lKGZyYW1lSUQpKSB7Ci0gICAgICAgIGlmICgoZGF0YSA9IGZyYW1lLT53ZWJBcmNoaXZlRGF0
YSgwLCAwKSkpCi0gICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNl
KENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgp
KSk7Ci0gICAgfQorICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQo
KS53ZWJGcmFtZShmcmFtZUlEKSkKKyAgICAgICAgZGF0YSA9IGZyYW1lLT53ZWJBcmNoaXZlRGF0
YShudWxscHRyLCBudWxscHRyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwog
I2VuZGlmCiAKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6
RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgoZGF0YS5nZXQoKSkpOworI2VuZGlmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggNzU1NzFjYjlhNjE1MTUyNDIxYjRmZGVkYjMyMDlmM2FhNzU0ZjMyZC4uYTQ2ZGQ0MDJmMDZm
YzA4OTI5NzliYmY3MGE0ZWQ1OWI1MWRiNDg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtODEsNyArODEsNiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJU
aGVtZUlPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJs
ZVVuaXRzLmg+CkBAIC0xODQyLDEwICsxODQxLDExIEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXV0b2Nv
cnJlY3Rpb25Db250ZXh0KFN0cmluZyYgY29udGV4dEJlZm9yZSwgU3RyaW5nJiBtYXJrZWRUZXh0
CiAKIHN0YXRpYyBFbGVtZW50KiBjb250YWluaW5nTGlua0VsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCkKIHsKLSAgICBmb3IgKEVsZW1lbnQqIGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudDsgY3VycmVu
dEVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkKLSAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LT5pc0xpbmsoKSkKLSAgICAgICAgICAgIHJl
dHVybiBjdXJyZW50RWxlbWVudDsKLSAgICByZXR1cm4gMDsKKyAgICBmb3IgKGF1dG8mIGN1cnJl
bnRFbGVtZW50IDogZWxlbWVudExpbmVhZ2UoZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGN1cnJl
bnRFbGVtZW50LmlzTGluaygpKQorICAgICAgICAgICAgcmV0dXJuICZjdXJyZW50RWxlbWVudDsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRp
b25JbmZvcm1hdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJiBpbmZvKQpAQCAtMTk0OSw3MyArMTk0OSw3NyBAQCB2b2lkIFdlYlBhZ2U6
OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgIGlmICghaXM8SFRN
TEVsZW1lbnQ+KG1faW50ZXJhY3Rpb25Ob2RlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4obV9pbnRlcmFj
dGlvbk5vZGUuZ2V0KCkpOwotICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICBIVE1M
RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqbV9pbnRlcmFjdGlvbk5v
ZGUpOworICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoc3RhdGljX2Nhc3Q8U2hlZXRBY3Rpb24+KGFjdGlvbikgPT0gU2hlZXRBY3Rpb246OkNv
cHkpIHsKLSAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqZWxlbWVudC0+cmVuZGVyZXIoKSkp
IHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGxpbmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtFbGVt
ZW50KGVsZW1lbnQpOwotICAgICAgICAKKyAgICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqZWxl
bWVudC5yZW5kZXJlcigpKSkgeworICAgICAgICAgICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBj
b250YWluaW5nTGlua0VsZW1lbnQoJmVsZW1lbnQpOwogICAgICAgICAgICAgaWYgKCFsaW5rRWxl
bWVudCkKLSAgICAgICAgICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpLT5lZGl0b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoKSwgKmVsZW1lbnQsIGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVu
dC0+cmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKS0+dXJsKCksIFN0cmluZygpKTsKKyAgICAgICAg
ICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5lZGl0b3IoKS53
cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
KSwgZWxlbWVudCwgZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNh
Y2hlZEltYWdlKCktPnVybCgpLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZWRpdG9yKCku
Y29weVVSTChsaW5rRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMobGlua0VsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6
OmhyZWZBdHRyKSkpLCBsaW5rRWxlbWVudC0+dGV4dENvbnRlbnQoKSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoZWxlbWVudC0+aXNMaW5rKCkpIHsKLSAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2Rl
LT5kb2N1bWVudCgpLmZyYW1lKCktPmVkaXRvcigpLmNvcHlVUkwoZWxlbWVudC0+ZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZWxlbWVudC0+
Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKSksIGVsZW1lbnQtPnRleHRDb250ZW50
KCkpOworICAgICAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmZyYW1l
KCktPmVkaXRvcigpLmNvcHlVUkwobGlua0VsZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwo
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGxpbmtFbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKSksIGxpbmtFbGVtZW50LT50ZXh0Q29udGVudCgp
KTsKKyAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmlzTGluaygpKSB7CisgICAgICAgICAgICBt
X2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5lZGl0b3IoKS5jb3B5VVJMKGVs
ZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKSksIGVs
ZW1lbnQudGV4dENvbnRlbnQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHN0YXRpY19j
YXN0PFNoZWV0QWN0aW9uPihhY3Rpb24pID09IFNoZWV0QWN0aW9uOjpTYXZlSW1hZ2UpIHsKLSAg
ICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKmVsZW1lbnQtPnJlbmRlcmVyKCkpKQorICAgICAg
ICBpZiAoIWlzPFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0
PFJlbmRlckltYWdlPigqZWxlbWVudC0+cmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKSkgewotICAg
ICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwotICAgICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCktPnNo
YXJlZEJ1ZmZlcigpOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgICAg
IHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKLSAgICAgICAgICAgICAgICBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNy
ZWF0ZShidWZmZXJTaXplKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5QnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXJTaXplKTsKLSAgICAgICAgICAgICAg
ICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UmVhZE9ubHkpOwotICAgICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2F2ZUltYWdlVG9MaWJyYXJ5KGhhbmRsZSwgYnVmZmVyU2l6ZSkpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CisgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFJl
bmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpOworICAgICAgICBp
ZiAoIWNhY2hlZEltYWdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBidWZmZXIgPSBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNp
emUoKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0g
U2hhcmVkTWVtb3J5OjpjcmVhdGUoYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbWNweShzaGFyZWRN
ZW1vcnlCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlclNpemUpOworICAgICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZUltYWdlVG9MaWJyYXJ5KGhhbmRsZSwg
YnVmZmVyU2l6ZSkpOwogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzQXNzaXN0YWJs
ZU5vZGUoTm9kZSogbm9kZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0Fzc2lzdGFibGVFbGVtZW50
KEVsZW1lbnQmIG5vZGUpCiB7Ci0gICAgaWYgKGlzPEhUTUxTZWxlY3RFbGVtZW50Pigqbm9kZSkp
CisgICAgaWYgKGlzPEhUTUxTZWxlY3RFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgcmV0
dXJuICFkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Pigqbm9kZSkuaXNSZWFkT25seU5vZGUo
KTsKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7
Ci0gICAgICAgIHJldHVybiAhZWxlbWVudC5pc1JlYWRPbmx5Tm9kZSgpICYmIChlbGVtZW50Lmlz
VGV4dEZpZWxkKCkgfHwgZWxlbWVudC5pc0RhdGVGaWVsZCgpIHx8IGVsZW1lbnQuaXNEYXRlVGlt
ZUxvY2FsRmllbGQoKSB8fCBlbGVtZW50LmlzTW9udGhGaWVsZCgpIHx8IGVsZW1lbnQuaXNUaW1l
RmllbGQoKSk7CisgICAgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG5vZGUpKQorICAgICAg
ICByZXR1cm4gIWRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG5vZGUpLmlzUmVhZE9ubHlO
b2RlKCk7CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpKSB7CisgICAgICAgIEhU
TUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KG5vZGUpOworICAgICAgICAvLyBGSVhNRTogVGhpcyBsYXVuZHJ5IGxpc3Qgb2YgdHlwZXMgaXMg
bm90IGEgZ29vZCB3YXkgdG8gZmFjdG9yIHRoaXMuIE5lZWQgYSBzdWl0YWJsZSBmdW5jdGlvbiBv
biBIVE1MSW5wdXRFbGVtZW50IGl0c2VsZi4KKyAgICAgICAgcmV0dXJuICFpbnB1dEVsZW1lbnQu
aXNSZWFkT25seU5vZGUoKSAmJiAoaW5wdXRFbGVtZW50LmlzVGV4dEZpZWxkKCkgfHwgaW5wdXRF
bGVtZW50LmlzRGF0ZUZpZWxkKCkgfHwgaW5wdXRFbGVtZW50LmlzRGF0ZVRpbWVMb2NhbEZpZWxk
KCkgfHwgaW5wdXRFbGVtZW50LmlzTW9udGhGaWVsZCgpIHx8IGlucHV0RWxlbWVudC5pc1RpbWVG
aWVsZCgpKTsKICAgICB9Ci0KLSAgICByZXR1cm4gbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKTsK
KyAgICByZXR1cm4gbm9kZS5pc0NvbnRlbnRFZGl0YWJsZSgpOwogfQogCi1zdGF0aWMgaW5saW5l
IEVsZW1lbnQqIG5leHRGb2N1c2FibGVFbGVtZW50KE5vZGUqIHN0YXJ0Tm9kZSwgUGFnZSogcGFn
ZSwgYm9vbCBpc0ZvcndhcmQpCitzdGF0aWMgaW5saW5lIEVsZW1lbnQqIG5leHRBc3Npc3RhYmxl
RWxlbWVudChOb2RlKiBzdGFydE5vZGUsIFBhZ2UmIHBhZ2UsIGJvb2wgaXNGb3J3YXJkKQogewor
ICAgIGlmICghaXM8RWxlbWVudD4oc3RhcnROb2RlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKICAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5ID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRl
KCk7CiAKICAgICBFbGVtZW50KiBuZXh0RWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KHN0YXJ0
Tm9kZSk7CiAgICAgZG8gewotICAgICAgICBuZXh0RWxlbWVudCA9IGlzRm9yd2FyZCA/IHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLm5leHRGb2N1c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlvblNj
b3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9mKCZuZXh0RWxlbWVudC0+ZG9jdW1lbnQoKSksIG5l
eHRFbGVtZW50LCBrZXkuZ2V0KCkpCi0gICAgICAgICAgICA6IHBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLnByZXZpb3VzRm9jdXNhYmxlRWxlbWVudChGb2N1c05hdmlnYXRpb25TY29wZTo6Zm9jdXNO
YXZpZ2F0aW9uU2NvcGVPZigmbmV4dEVsZW1lbnQtPmRvY3VtZW50KCkpLCBuZXh0RWxlbWVudCwg
a2V5LmdldCgpKTsKLSAgICB9IHdoaWxlIChuZXh0RWxlbWVudCAmJiAhaXNBc3Npc3RhYmxlTm9k
ZShuZXh0RWxlbWVudCkpOworICAgICAgICBuZXh0RWxlbWVudCA9IGlzRm9yd2FyZAorICAgICAg
ICAgICAgPyBwYWdlLmZvY3VzQ29udHJvbGxlcigpLm5leHRGb2N1c2FibGVFbGVtZW50KEZvY3Vz
TmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9mKCZuZXh0RWxlbWVudC0+ZG9j
dW1lbnQoKSksIG5leHRFbGVtZW50LCBrZXkuZ2V0KCkpCisgICAgICAgICAgICA6IHBhZ2UuZm9j
dXNDb250cm9sbGVyKCkucHJldmlvdXNGb2N1c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlvblNj
b3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9mKCZuZXh0RWxlbWVudC0+ZG9jdW1lbnQoKSksIG5l
eHRFbGVtZW50LCBrZXkuZ2V0KCkpOworICAgIH0gd2hpbGUgKG5leHRFbGVtZW50ICYmICFpc0Fz
c2lzdGFibGVFbGVtZW50KCpuZXh0RWxlbWVudCkpOwogCiAgICAgcmV0dXJuIG5leHRFbGVtZW50
OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaGFzRm9jdXNhYmxlRWxlbWVudChOb2RlKiBzdGFy
dE5vZGUsIFBhZ2UqIHBhZ2UsIGJvb2wgaXNGb3J3YXJkKQorc3RhdGljIGlubGluZSBib29sIGhh
c0Fzc2lzdGFibGVFbGVtZW50KE5vZGUqIHN0YXJ0Tm9kZSwgUGFnZSYgcGFnZSwgYm9vbCBpc0Zv
cndhcmQpCiB7Ci0gICAgcmV0dXJuIG5leHRGb2N1c2FibGVFbGVtZW50KHN0YXJ0Tm9kZSwgcGFn
ZSwgaXNGb3J3YXJkKSAhPSBuaWw7CisgICAgcmV0dXJuIG5leHRBc3Npc3RhYmxlRWxlbWVudChz
dGFydE5vZGUsIHBhZ2UsIGlzRm9yd2FyZCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9jdXNOZXh0
QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkKQogewotICAgIEVsZW1lbnQqIG5leHRFbGVtZW50
ID0gbmV4dEZvY3VzYWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksIG1fcGFnZS5nZXQo
KSwgaXNGb3J3YXJkKTsKKyAgICBFbGVtZW50KiBuZXh0RWxlbWVudCA9IG5leHRBc3Npc3RhYmxl
RWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgaXNGb3J3YXJkKTsKICAgICBt
X3VzZXJJc0ludGVyYWN0aW5nID0gdHJ1ZTsKICAgICBpZiAobmV4dEVsZW1lbnQpCiAgICAgICAg
IG5leHRFbGVtZW50LT5mb2N1cygpOwpAQCAtMjA1Niw4ICsyMDYwLDggQEAgdm9pZCBXZWJQYWdl
OjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5m
b3JtYXRpb24pCiAgICAgaW5mb3JtYXRpb24ubWluaW11bVNjYWxlRmFjdG9yID0gbWluaW11bVBh
Z2VTY2FsZUZhY3RvcigpOwogICAgIGluZm9ybWF0aW9uLm1heGltdW1TY2FsZUZhY3RvciA9IG1h
eGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKICAgICBpbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGlu
ZyA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nKCk7Ci0gICAgaW5m
b3JtYXRpb24uaGFzTmV4dE5vZGUgPSBoYXNGb2N1c2FibGVFbGVtZW50KG1fYXNzaXN0ZWROb2Rl
LmdldCgpLCBtX3BhZ2UuZ2V0KCksIHRydWUpOwotICAgIGluZm9ybWF0aW9uLmhhc1ByZXZpb3Vz
Tm9kZSA9IGhhc0ZvY3VzYWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksIG1fcGFnZS5n
ZXQoKSwgZmFsc2UpOworICAgIGluZm9ybWF0aW9uLmhhc05leHROb2RlID0gaGFzQXNzaXN0YWJs
ZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICptX3BhZ2UsIHRydWUpOworICAgIGluZm9y
bWF0aW9uLmhhc1ByZXZpb3VzTm9kZSA9IGhhc0Fzc2lzdGFibGVFbGVtZW50KG1fYXNzaXN0ZWRO
b2RlLmdldCgpLCAqbV9wYWdlLCBmYWxzZSk7CiAKICAgICBpZiAoaXM8SFRNTFNlbGVjdEVsZW1l
bnQ+KCptX2Fzc2lzdGVkTm9kZSkpIHsKICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1l
bnQgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKm1fYXNzaXN0ZWROb2RlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240673</attachid>
            <date>2014-10-30 08:46:57 -0700</date>
            <delta_ts>2014-10-30 09:08:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138174-20141030084705.patch</filename>
            <type>text/plain</type>
            <size>153395</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ4ZWExMThmMjk3MDg4
YzM3YTM0M2QwYWFlNmU4YjZhMDQxNzdiMi4uYjBkNjg2Yjg2MWJiM2YyZDBkMTU0YTUyZDk3ZDE1
M2E3OTIzZDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAxNC0xMC0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRWxpbWluYXRlIFJlc291cmNl
QnVmZmVyIGFuZCB1c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODE3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCB3aXRoIHRl
c3QgY292ZXJhZ2UgYWNyb3NzIG1hbnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogRGVsZXRlZCBSZXNvdXJjZUJ1ZmZlci5jcHAuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjogUmVtb3ZlZCBSZXNvdXJjZUJ1ZmZlci1yZWxhdGVkIHN5bWJvbHMsIGFuZCB1
cGRhdGVkIHN5bWJvbAorICAgICAgICBmb3Igb25lIGZ1bmN0aW9uIHRoYXQgdXNlZCB0byB0YWtl
IGEgUGFzc1JlZlB0ciBidXQgbm93IHRha2VzIGEgcmVmZXJlbmNlIGluc3RlYWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERlbGV0ZWQgUmVzb3VyY2VC
dWZmZXIubW0vLmNwcC8uaC4KKworICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRl
bnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRh
dGlvbjpdKTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAgICAgKiBlZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJl
Y3RseSwgYW5kCisgICAgICAgIGFsc28gcGFzcyBhIHJlZmVyZW5jZSBvbmx5IGlmIG5vbi1udWxs
IHJhdGhlciB0aGFuIHBhc3NpbmcgYSBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKTogRGl0dG8uIEFkZGVkIGEgbWlzc2luZyBudWxsIGNo
ZWNrLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudCk6
IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6IERpdHRvLgorCisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3Rs
eSwKKyAgICAgICAgYW5kIHVzZSB0aGUgY29weSBmdW5jdGlvbiByYXRoZXIgdGhhbiBhIGhhbmQt
d3JpdHRlbiBhbHRlcm5hdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpt
YXliZUNyZWF0ZUFyY2hpdmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjptYWluUmVzb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpzdWJyZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOiBEaXR0by4KKworICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOiBDaGFuZ2VkIG1haW5SZXNvdXJjZURhdGEgdG8g
cmV0dXJuIGEKKyAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LiBXb3VsZCBiZSBiZXR0
ZXIgaWYgaXQgcmV0dXJuZWQgYSBTaGFyZWRCdWZmZXImLAorICAgICAgICBidXQgaXQgY3VycmVu
dGx5IHJldHVybnMgYSBuZXdseSBjcmVhdGVkIGJ1ZmZlciB3aGVuIHRoZXJlIGlzIHN1YnN0aXR1
dGUKKyAgICAgICAgZGF0YSBhbmQgY2FuIGFsc28gcmV0dXJuIG51bGwsIGV2ZW4gdGhvdWdoIG1h
bnkgY2FsbGVycyBhc3N1bWUgaXQgd2lsbCBub3QhCisKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVy
OjpkYXRhUmVjZWl2ZWQpOiBSZW1vdmVkIGNhbGwgdG8gdW51c2VkIGNsaWVudAorICAgICAgICBm
dW5jdGlvbiBidWZmZXJSZWNlaXZlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogUmVtb3ZlZCB1bnVzZWQgYnVmZmVyCisgICAgICAgIGFy
Z3VtZW50IHRvIGNsaWVudCBmdW5jdGlvbiBsb2FkRmluaXNoZWQuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VCdWZmZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUJ1ZmZlci5oOiBSZW1vdmVkLgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOiBV
c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKTog
VXNlIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIv
VGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6
cHJvY2Vzc05ld0N1ZURhdGEpOiBVc2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UpOiBEaXR0by4K
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6IERpdHRvLgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6IFVzZSBTaGFyZWRCdWZmZXIu
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDogRGl0dG8uCisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oOiBEaXR0by4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50
KTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRS
ZW1vdmVDbGllbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjphZGRJ
bmNyZW1lbnRhbERhdGFCdWZmZXIpOiBEaXR0by4gQ2hhbmdlZCB0byB0YWtlCisgICAgICAgIGEg
cmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjphZGREYXRhQnVmZmVyKTogRGl0dG8uIEFsc28gYWRkZWQgY2FsbCB0aHJvdWdoCisg
ICAgICAgIHRvIGJhc2UgY2xhc3MgYW5kIGNoYW5nZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSByYXRo
ZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6YWRkRGF0
YSk6IERpdHRvLiBBbHNvIGFkZGVkIGNhbGwgdGhyb3VnaCB0byBiYXNlIGNsYXNzLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOiBEaXR0by4KKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDogRGl0dG8uIEFsc28gY2hhbmdlZCB0aGUgdHlw
ZSBvZiBzb21lIGJpdCBmaWVsZHMKKyAgICAgICAgdG8gYmUgdW5zaWduZWQgaW5zdGVhZCBvZiB1
bnNpZ2VuZCBjaGFyLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayk6IFVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcik6IERpdHRvLiBDaGFuZ2VkIHRvIHRha2UK
KyAgICAgICAgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Y2FuUmV1c2UpOiBEaXR0by4KKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDogRGl0dG8uCisKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OkNhY2hlZFJlc291cmNlKTogUmVvcmRlcmVkIGRhdGEgbWVtYmVycyBkdWUgdG8gY2hh
bmdlCisgICAgICAgIGluIGhlYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
OjphZGREYXRhQnVmZmVyKTogQ2hhbmdlZCBhcmd1bWVudCB0eXBlLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQpOiBSZWZhY3RvcmVkIHRvIGVsaW1pbmF0
ZSBvbmUgZXh0cmEgaGFzaAorICAgICAgICB0YWJsZSBsb29rdXAgYnkgdXNpbmcgdGhlIHJldHVy
biB2YWx1ZSBmcm9tIHRoZSByZW1vdmUgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQpOiBVc2Ugc3RkOjptYWtlX3VuaXF1ZSBkaXJlY3Rs
eSBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIGEgZnVuY3Rpb24gbmFtZWQgInNjaGVkdWxlIiB0
byBhbGxvY2F0ZSB0aGUgY2FsbGJhY2sgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2U6OkNhbGxiYWNrOjpDYWxsYmFjayk6IENoYW5nZWQgZnVuY3Rpb24gYW5kIGRhdGEg
bWVtYmVyCisgICAgICAgIG5hbWUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
Q2FsbGJhY2s6OmNhbmNlbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OkNhbGxiYWNrOjp0aW1lckZpcmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKTogQ2hhbmdlZCB0byB0YWtlIGEgU2hh
cmVkQnVmZmVyJi4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOiBD
aGFuZ2VkIHR5cGVzIHRvIHVzZSBTaGFyZWRCdWZmZXIuIEFsc28gbWFkZSBtb3N0CisgICAgICAg
IGRhdGEgbWVtYmVycyBhbmQgb25lIGZ1bmN0aW9uIG1lbWJlciBwcml2YXRlIGluc3RlYWQgb2Yg
cHJvdGVjdGVkLiBBbHNvIHJlbmFtZWQgdGhlCisgICAgICAgIENhY2hlZFJlc291cmNlOjpDYWNo
ZWRSZXNvdXJjZUNhbGxiYWNrIGZ1bmN0aW9uIENhY2hlZFJlc291cmNlOjpDYWxsYmFjayBhbmQg
bW92ZWQKKyAgICAgICAgaXRzIGRlZmluaXRpb24gb3V0IG9mIHRoZSBDYWNoZWRSZXNvdXJjZSBj
bGFzcyBkZWZpbml0aW9uLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Q2xpZW50Lmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdE
b2N1bWVudDo6ZmluaXNoTG9hZGluZyk6IFVzZSBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDogRGl0dG8uIE1hZGUgZGF0YSBtZW1iZXJz
IHByaXZhdGUuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6IFVzZSBTaGFyZWRC
dWZmZXIuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOiBEaXR0by4gQWxz
byBmaXhlZCBpbmRlbnRpbmcgYW5kIHJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgZm9yd2FyZCBk
ZWNsYXJhdGlvbi4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVEYXRhKTogQWRkZWQs
IHNvIHRoYXQgZmluaXNoTG9hZGluZyBkb2VzIG5vdAorICAgICAgICBjYWxsIGFkZERhdGFCdWZm
ZXIuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmFkZERhdGFCdWZmZXIpOiBU
YWtlIFNoYXJlZEJ1ZmZlciwgY2FsbCB1cGRhdGVEYXRhLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5oOiBUYWtlIG91dCB1bm5lZWRlZCBleHBsaWNpdCBvdmVycmlk
ZSBvZiB0aGUKKyAgICAgICAgZGVzdHJ1Y3Rvci4gVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4K
KworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOiBVcGRhdGVk
IHRvIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaDogVG9vayBvdXQgdW5uZWVkZWQgaW5jbHVkZXMsIG1hZGUgZXZlcnl0aGluZwor
ICAgICAgICBwcml2YXRlIHJhdGhlciB0aGFuIHByb3RlY3RlZC4gQWRkZWQgYW4gZXhwbGljaXQg
dmlydHVhbCBjb25zdHJ1Y3RvciBzbyB3ZSBjYW4KKyAgICAgICAgY29tcGlsZSB3aXRob3V0IGtu
b3dpbmcgaG93IHRvIHJlZi9kZXJlZiBUZXh0UmVzb3VyY2VEZWNvZGVyLgorCisgICAgICAgICog
bG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBVcGRhdGVkIHRvIHVzZSBTaGFy
ZWRCdWZmZXIKKyAgICAgICAgYW5kIHRvIGNhbGwgYWRkRGF0YUJ1ZmZlciBvbmx5IGlmIHRoZXJl
IGlzIGEgbmV3IGRhdGEgYnVmZmVyLgorCisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5oOiBVc2UgU2hhcmVkQnVmZmVyJiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIu
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJh
Y2tlZCk6IERpdHRvLgorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6IFVzZSBTaGFyZWRC
dWZmZXIqIGluc3RlYWQgb2YKKyAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPi4KKworICAg
ICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VCdWZmZXIubW06IFJlbW92ZWQuCisKKyAgICAgICAg
KiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBVc2UgU2hhcmVkQnVmZmVyLgorCisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y2xlYXIpOiBVc2UgYSBtb2Rlcm4gZm9yIGxvb3AuCisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkpOiBSZXR1cm4gYSBQYXNzUmVmIGluc3RlYWQgb2YgYSBQ
YXNzUmVmUHRyLCBzaW5jZQorICAgICAgICB0aGlzIG5ldmVyIHJldHVybnMgbnVsbC4gVXNlIG1v
ZGVybiBmb3IgbG9vcHMuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHlCdWZm
ZXJBbmRDbGVhcik6IFVzZSBhIG1vZGVybiBmb3IgbG9vcC4KKworICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oOiBDaGFuZ2VkIGNvcHkgdG8gcmV0dXJuIFBhc3NSZWYgaW5zdGVhZCBv
ZiBQYXNzUmVmUHRyLgorICAgICAgICBDaGFuZ2VkIHRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0
Zm9ybUJ1ZmZlciB0byB0YWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuCisgICAgICAgIGEgcG9p
bnRlci4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3Jt
QnVmZmVyKTogVGFrZSBhIHJlZmVyZW5jZQorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oOiBSZW1vdmVkIHVudXNlZCBmdW5jdGlvbgorICAgICAgICBidWZmZXJSZWNlaXZlZCBhbmQg
dW5uZWVkZWQgYnVmZmVyIGFyZ3VtZW50IGZyb20gbG9hZEZpbmlzaGVkLiBBbHNvIG1hcmtlZCB0
aGUKKyAgICAgICAgY29uc3RydWN0b3IgZXhwbGljaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0
V2l0aFJlc291cmNlKTogVXNlCisgICAgICAgIFNoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5p
c2hlZCk6IFVwZGF0ZWQgZm9yIGNoYW5nZSB0bworICAgICAgICBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bTogUmVtb3ZlZCBpbmNsdWRlIG9mIFJlc291cmNlQnVmZmVyLmguCisKIDIwMTQtMTAtMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCB2aXJ0dWFs
IGZ1bmN0aW9ucyBpbiBodG1sLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDVmNTYyMWZjNDJjYmYyYmZj
YzBkZWRlMjI0YzY1YzZhMzhhYjE0ZTguLmZjYjlkMjQwYjZiNzIyNDMzMTFlNjY0YzQyMTljY2Qx
OGY0ZjE2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0xMC0zMCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRWxpbWluYXRlIFJlc291
cmNlQnVmZmVyIGFuZCB1c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODE3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgICogV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKTogVXNlIFNoYXJlZEJ1
ZmZlciBkaXJlY3RseS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
Ol0pOiBEaXR0by4KKwogMjAxNC0xMC0yOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIG9wdGltaXplZCBmdWxsc2NyZWVuIG1vZGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggY2IwMjY1OWNkMDlmOTE5N2Q1OTc2YWVlOTdiZTE1YzA2OTZlNTM5Zi4uZmQxNjJiMGZkYjIy
YTM4NjY2NmQ4OWEyNGZkMjk5MzBlMWE4N2Q4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBA
CisyMDE0LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBF
bGltaW5hdGUgUmVzb3VyY2VCdWZmZXIgYW5kIHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkgaW5z
dGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4
MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOiBVc2UgYSByZWZlcmVuY2UgaW5z
dGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rp
c2tDYWNoZU1vbml0b3IuaDogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05l
dHdvcmtEaXNrQ2FjaGVNb25pdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGlza0Nh
Y2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKTogRGl0dG8uCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9t
U2hhcmVkQnVmZmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVzb3VyY2VCdWZm
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9XZWJSZXNvdXJjZUJ1ZmZlci5oOiBS
ZW1vdmVkLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBS
ZW1vdmVkIFdlYlJlc291cmNlQnVmZmVyLmNwcC9oLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5j
bHVkZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2Fj
aGVSZXNvdXJjZSk6IFVzZSBhIHJlZmVyZW5jZSBpbnN0ZWFkCisgICAgICAgIG9mIGEgcG9pbnRl
ci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6IFVzZSBT
aGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSk6IERpdHRvLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOiBSZWZhY3RvcmVkIHRvIG1ha2Ug
dGhlIHJlbGF0aW9uc2hpcAorICAgICAgICBiZXR3ZWVuIHRoZSBidWZmZXIgYW5kIHRoZSBEYXRh
UmVmZXJlbmNlIGNsZWFyZXIgYW5kIHRvIGF2b2lkIGhhdmluZyBhIGxvbmctbGl2ZWQKKyAgICAg
ICAgRGF0YVJlZmVyZW5jZSBwb2ludGluZyB0byBhbiB1bmRlcmx5aW5nIGJ1ZmZlciB3aXRoIHVu
Y2xlYXIgbGlmZXRpbWUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRlbnRzQXNT
dHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZSk6IERpdHRvLiBBbHNvIHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0
bHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6
IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0Ojpjb250YWluaW5nTGlua0VsZW1lbnQpOiBVc2UgZWxlbWVudExp
bmVhZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQp
OiBVc2UgcmVmZXJlbmNlcyBhbmQgU2hhcmVkQnVmZmVyLgorICAgICAgICBBTHNvIGRpZCBhIGJp
dCBvZiBvdGhlciBjbGVhbnVwIGluIGhlcmUuCisgICAgICAgIChXZWJLaXQ6OmlzQXNzaXN0YWJs
ZUVsZW1lbnQpOiBUYWtlIEVsZW1lbnQmIGluc3RlYWQgb2YgTm9kZSosIHNpbmNlIHRoYXQncyB3
aGF0CisgICAgICAgIHRoZSBjYWxsZXIgaGFzLgorICAgICAgICAoV2ViS2l0OjpuZXh0QXNzaXN0
YWJsZUVsZW1lbnQpOiBDaGFuZ2VkIG5hbWUgdG8gbWF0Y2ggd2hhdCB0aGUgZnVuY3Rpb24gZG9l
cy4KKyAgICAgICAgQWRkZWQgYW4gb2J2aW91c2x5LW1pc3NpbmcgY2hlY2sgb24gdGhlIHN0YXJ0
Tm9kZSBhcmd1bWVudC4gVXBkYXRlZCBmb3IgY2hhbmdlCisgICAgICAgIHRvIGlzQXNzaXN0YWJs
ZUVsZW1lbnQgYWJvdmUuIFRha2UgYSBQYWdlJiBpbnN0ZWFkIG9mIGEgUGFnZSouCisgICAgICAg
IChXZWJLaXQ6Omhhc0Fzc2lzdGFibGVFbGVtZW50KTogQ2hhbmdlZCBuYW1lIHRvIG1hdGNoIHdo
YXQgdGhlIGZ1bmN0aW9uIGRvZXMuCisgICAgICAgIFVwZGF0ZWQgZm9yIGNoYW5nZSB0byBuZXh0
QXNzaXN0YWJsZUVsZW1lbnQgYWJvdmUuIFRvb2sgb3V0IGluY29ycmVjdCBjb21wYXJpc29uCisg
ICAgICAgIG9mIGEgQysrIHBvaW50ZXIgdG8gdGhlIE9iamVjdGl2ZS1DIG9iamVjdCBwb2ludGVy
IG5pbC4gVGFrZSBhIFBhZ2UmIGluc3RlYWQgb2YgYSBQYWdlKi4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKTogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdl
cy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24p
OiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCiAyMDE0LTEwLTI4ICBUaW5nLVdlaSBMYW4g
IDxsYW50dzQ0QGdtYWlsLmNvbT4KIAogICAgICAgICBDYXN0IHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bi5jb3VudCgpIHRvIGludDY0X3QgaW4gQXJndW1lbnRDb2RlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBkODdlYjAwMzI4ODRhOGU4ZDczMjNiNTU0NmI2Yjk3OTAwZGI4ZGYyLi40MTU3MDFlZDc5
MmM4MDQwZWJiNGNhY2E3MmUyMzBlNDlmMzRjN2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MTgxNiw3ICsxODE2LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9Qb2xpY3lD
YWxsYmFjay5jcHAKICAgICBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKICAgICBsb2FkZXIvUHJv
Z3Jlc3NUcmFja2VyLmNwcAotICAgIGxvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHAKICAgICBsb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IGUyZDg1Mjg1NmYxNmE3OWUzMGRmZDlhYmMwNmE1YzhkNmU5YjQ0NzguLjJiMWE4NjA4
Nzk1N2M2ZTM3OGEzNWU5NDZmZDVkNmNjOTk1M2U4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0zNDAsNyArMzQwLDcgQEAgX19aTjdXZWJDb3JlMTNwb2ludGVyQ3Vyc29yRXYKIF9fWk43V2Vi
Q29yZTEzdG9KU0RPTVdpbmRvd0VOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTRDYWNoZWRS
ZXNvdXJjZTEycmVtb3ZlQ2xpZW50RVBOU18yMENhY2hlZFJlc291cmNlQ2xpZW50RQogX19aTjdX
ZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTE2dW5yZWdpc3RlckhhbmRsZUVQTlNfMjRDYWNoZWRSZXNv
dXJjZUhhbmRsZUJhc2VFCi1fX1pON1dlYkNvcmUxNENhY2hlZFJlc291cmNlMjF0cnlSZXBsYWNl
RW5jb2RlZERhdGFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUUKK19fWk43
V2ViQ29yZTE0Q2FjaGVkUmVzb3VyY2UyMXRyeVJlcGxhY2VFbmNvZGVkRGF0YUVSTlNfMTJTaGFy
ZWRCdWZmZXJFCiBfX1pON1dlYkNvcmUxNENhY2hlZFJlc291cmNlOWFkZENsaWVudEVQTlNfMjBD
YWNoZWRSZXNvdXJjZUNsaWVudEUKIF9fWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVSS04z
V1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9f
Wk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUV2CkBAIC0zODMsMTMgKzM4Myw2IEBAIF9fWk43
V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3RyeUV2CiBfX1pON1dlYkNv
cmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdXZWJDb3Jl
MTRMb2FkZXJTdHJhdGVneTI1bG9hZFJlc291cmNlU3luY2hyb25vdXNseUVQTlNfMTdOZXR3b3Jr
aW5nQ29udGV4dEVtUktOU18xNVJlc291cmNlUmVxdWVzdEVOU18xN1N0b3JlZENyZWRlbnRpYWxz
RU5TXzIyQ2xpZW50Q3JlZGVudGlhbFBvbGljeUVSTlNfMTNSZXNvdXJjZUVycm9yRVJOU18xNlJl
c291cmNlUmVzcG9uc2VFUk4zV1RGNlZlY3RvckljTG0wRU5TQ18xNUNyYXNoT25PdmVyZmxvd0VF
RQogX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEycGx1Z2luV2lkZ2V0RXYKLV9fWk43V2Vi
Q29yZTE0UmVzb3VyY2VCdWZmZXIxMmNyZWF0ZU5TRGF0YUV2Ci1fX1pON1dlYkNvcmUxNFJlc291
cmNlQnVmZmVyNmFwcGVuZEVQS2NqCi1fX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyQzFFUEtj
agotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckMxRXYKLV9fWk43V2ViQ29yZTE0UmVzb3Vy
Y2VCdWZmZXJDMkV2Ci1fX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyRDFFdgotX19aTjdXZWJD
b3JlMTRSZXNvdXJjZUJ1ZmZlckQyRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUxMmZp
cnN0UmVxdWVzdEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTZzZXREZWZlcnNMb2Fk
aW5nRWIKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5n
RXYKQEAgLTE3MTcsOSArMTcxMCw2IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFn
ZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJOM1dURjZWZWN0b3JJTlNfCiBfX1pOSzdX
ZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50RXYKIF9fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXYKIF9fWk5LN1dl
YkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXh0RXYKLV9fWk5LN1dlYkNvcmUxNFJlc291
cmNlQnVmZmVyNGRhdGFFdgotX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2Ci1f
X1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjdpc0VtcHR5RXYKIF9fWk5LN1dlYkNvcmUxNFJl
c291cmNlSGFuZGxlMTBjb25uZWN0aW9uRXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlTG9hZGVy
MTFmcmFtZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUxvYWRlcjMyaXNBbGxvd2Vk
VG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHNFdgpAQCAtMjc4MSw3ICsyNzcxLDYgQEAgX19aTks3V2Vi
Q29yZTE0RnJhbWVTZWxlY3Rpb24yOXJhbmdlQnlNb3ZpbmdDdXJyZW50U2VsZWN0aW9uRWkKIF9f
Wk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzJyYW5nZUJ5RXh0ZW5kaW5nQ3VycmVudFNlbGVj
dGlvbkVpCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM1Y2hhcmFjdGVySW5SZWxhdGlv
blRvQ2FyZXRTZWxlY3Rpb25FaQogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNmVsZW1l
bnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbkV2Ci1fX1pOSzdXZWJDb3JlMTRSZXNvdXJj
ZUJ1ZmZlcjEyc2hhcmVkQnVmZmVyRXYKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luOHRv
U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTIxY29udGVudHNMYXllckZv
ck1lZGlhRXYKIF9fWk5LN1dlYkNvcmUxNVZpc2libGVQb3NpdGlvbjRsZWZ0RWIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjOTFj
MTY2ZjFkYWQ5YmE2ZjZkZTYzYWQwNDE0NWUyNjkxOTIxOGMwLi5lYzliZTQyODk5ZTM5YmI4NzI4
YmU1YzM5Y2MyNTZmNjk2MDcwMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODY3LDkgKzE4NjcsNiBAQAogCQk1MTQwNUM4
OTE5MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQwNUM4NzE5MEIwMTQ0MDA3NTRG
OTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0QjNGNzMwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVT
eXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0QjNGNzYwQzcyMjA1NTAwMDUzMERG
IC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbU1hYy5tbSAq
LzsgfTsKLQkJNTE0QkM4M0YxNjFDRjA0QTAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QkM4M0QxNjFD
RjA0MzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1tICovOyB9OwotCQk1MTRCQzg0MjE2MUNG
MDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QkM4NDAxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291
cmNlQnVmZmVyLmNwcCAqLzsgfTsKLQkJNTE0QkM4NDMxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291
cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRCQzg0MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzYzNzBDRTkyMjVF
MDA3RUYzQ0QgLyogSlNTUUxFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzYzNTBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxFcnJvci5j
cHAgKi87IH07CiAJCTUxNEM3NjM4MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3
NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKIAkJNTE0
Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0MjBDRTkyMzRFMDA3RUYz
Q0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtODk3NSw5ICs4OTcyLDYgQEAKIAkJNTE0MDVDODcxOTBCMDE0
NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1N
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEJDODNEMTYxQ0YwNDMwMDRE
NTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlc291cmNlQnVmZmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MTRCQzg0MDE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdWZmZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRCQzg0MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3Vy
Y2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VCdWZm
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2MzUwQ0U5MjI1RTAwN0VG
M0NEIC8qIEpTU1FMRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNTUUxFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjM2
MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRp
b25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25N
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjIxLDcgKzE3NjE1LDYgQEAK
IAkJCQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICov
LAogCQkJCTY1NkQzNzFBMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oICov
LAogCQkJCTY1NkQzNzFCMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5tbSAq
LywKLQkJCQk1MTRCQzgzRDE2MUNGMDQzMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gKi8s
CiAJCQkJNTFBQTNGNkUwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tICov
LAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CkBAIC0yMTI4Nyw4ICsyMTI4MCw2IEBACiAJCQkJMUEy
QTY4MjEwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5jcHAgKi8sCiAJCQkJMUEy
QTY4MjIwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5oICovLAogCQkJCTFBQ0FE
RDc4MTg4MEQ5MUMwMEQ4QjcxRCAvKiBQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCAqLywKLQkJCQk1
MTRCQzg0MDE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3BwICovLAotCQkJCTUx
NEJDODQxMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5oICovLAogCQkJCTkzRTIy
N0RFMEFGNTg5QUQwMEQ0ODMyNCAvKiBSZXNvdXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3
MjcwQURCQTVERTAwQTQ1NTREIC8qIFJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJRDBBM0E3MzAx
NDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oICovLApAQCAtMjU4NDks
NyArMjU4NDAsNiBAQAogCQkJCTk5Q0MwQjVDMThCRTk4NEEwMDZDRUJDQyAvKiBSZXBsYXlTZXNz
aW9uU2VnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5OEFFQzYxM0Y5RDBFQTAwOTBCMUFB
IC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTVCM0REMDEyNTFGMTJEMDAzRUYyNjkgLyogUmVzZXRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUxNEJDODQzMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0VFNjg0NkExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJyb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzNEY3MTNDMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJj
ZUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzkwQ0U5MjNBMTAwN0VGM0NE
IC8qIFJlc291cmNlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MzE2LDggKzI5MzA2LDYg
QEAKIAkJCQk5OUNDMEI1OTE4QkU5ODRBMDA2Q0VCQ0MgLyogUmVwbGF5U2Vzc2lvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5OUNDMEI1QjE4QkU5ODRBMDA2Q0VCQ0MgLyogUmVwbGF5U2Vzc2lv
blNlZ21lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQ0YxMjUxRjEyRDAwM0VGMjY5
IC8qIFJlc2V0SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNEJDODQyMTYxQ0Yw
NUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTRC
QzgzRjE2MUNGMDRBMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5MzRGNzEzRTBENUE2RjI4MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VFNjg0NkIxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlRXJy
b3JDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MDBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBiOGQ5MzMwNWE5NzMy
MzVjY2E3MzA3MDVlZTNiNGY0M2Q1ZDQ5MWI0Li4yMDFjMjU5YzgzOTZiNjU0ZmYzZjZlYTQyYzE1
ZGQ0NDcxMmNlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtNjIsNyArNjIsNiBAQAogI2ltcG9ydCAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW1wb3J0ICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2ltcG9ydCAiUmVuZGVy
VGV4dC5oIgotI2ltcG9ydCAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZl
ci5oIgogI2ltcG9ydCAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW1wb3J0ICJWaXNpYmxlVW5pdHMu
aCIKQEAgLTQ2NCwyMyArNDYzLDE1IEBAIEBpbXBsZW1lbnRhdGlvbiBET01IVE1MSW1hZ2VFbGVt
ZW50IChXZWJET01IVE1MSW1hZ2VFbGVtZW50T3BlcmF0aW9uc1ByaXZhdGUpCiAKIC0gKE5TRGF0
YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKIHsKLSAgICBXZWJDb3Jl
OjpDYWNoZWRJbWFnZSAqY2FjaGVkSW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJbWFnZSgpOwor
ICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hl
ZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICBXZWJDb3JlOjpJbWFnZSAqaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKKyAgICBXZWJD
b3JlOjpJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciAqZGF0YSA9
IG5pbDsKLSAgICBpZiAocmF3SW1hZ2VEYXRhKSB7Ci0gICAgICAgIFJlc291cmNlQnVmZmVyICpy
ZXNvdXJjZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOwotICAgICAgICBp
ZiAocmVzb3VyY2VCdWZmZXIpCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2VCdWZmZXItPnNo
YXJlZEJ1ZmZlcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGEgPSBpbWFnZS0+ZGF0YSgp
OwotICAgIH0KKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGRhdGEgPSByYXdJbWFnZURhdGEg
PyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQppbmRleCAwMTkyZDVlOTAxMWEyMDI1ZTU3YzZjMGM0ZWQzMWEwODZhMWVkYjIzLi5i
OWViOTZjNmQ3YjdiZTYwNWY2MTQxYjIzODE5NjEwN2M2MTVhNWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiUGFz
dGVib2FyZC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1h
Z2UuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVz
LmgiCkBAIC0zODUsNyArMzg0LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICBwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCA9IGltYWdlRWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJM
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhpbWFnZUVsZW1lbnQuaW1hZ2VTb3Vy
Y2VVUkwoKSkpOwogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKICAgICBw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSA9IHBhc3RlYm9hcmQucmVzb3VyY2VNSU1F
VHlwZShjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKLSAgICBwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJl
ZEJ1ZmZlcigpOworICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFn
ZS0+cmVzb3VyY2VCdWZmZXIoKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZElt
YWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA2ZTQx
OTBmOWI2NTNjNDJiZmUxOTIyZTEzMjI4MDllOGM0MWFiYWJjLi4yOTI3NmZhMDQ0ZTA2MjEzYTBm
YjAzYzdhYmJiM2RjM2EyZTc3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCkBAIC01Miw3ICs1Miw2IEBACiAjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAiUmVu
ZGVyQmxvY2suaCIKICNpbXBvcnQgIlJlbmRlckltYWdlLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUJ1
ZmZlci5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJT
b3VuZC5oIgogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCkBAIC00NDcsNyArNDQ2LDcgQEAg
dm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2Fy
ZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVy
bDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0bGU7CiAgICAgcGFzdGVib2Fy
ZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSBjbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmco
cGFzdGVib2FyZEltYWdlLnVybC51cmwpOwotICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCk7CisgICAg
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gY2FjaGVkSW1hZ2Ut
PnJlc3BvbnNlKCkubWltZVR5cGUoKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2Fy
ZEltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDE3OWVjMTA4
MTY1ZmEzYmExYTUxY2EzMWFjNWRmNmRmNmRkZGMwZGIuLjQwYTdiNTcyMDg3MWRhZGNlOThkOWI1
MzYyMWFkZWRjNjBlMDE0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApA
QCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYXdEYXRhRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiUmVz
b3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xMzQsNyArMTMzLDggQEAgdm9pZCBJbWFnZURvY3VtZW50Ojp1cGRhdGVEdXJpbmdQ
YXJzaW5nKCkKICAgICBpZiAoIW1faW1hZ2VFbGVtZW50KQogICAgICAgICBjcmVhdGVEb2N1bWVu
dFN0cnVjdHVyZSgpOwogCi0gICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmFkZERh
dGFCdWZmZXIobG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKS5nZXQoKSk7CisgICAgaWYgKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkp
CisgICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5hZGREYXRhQnVmZmVyKCpi
dWZmZXIpOwogCiAgICAgaW1hZ2VVcGRhdGVkKCk7CiB9CkBAIC0xNDMsMTEgKzE0MywxMSBAQCB2
b2lkIEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIo
KS0+aXNTdG9wcGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2Um
IGNhY2hlZEltYWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBS
ZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNv
dXJjZURhdGEoKTsKIAogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbXVsdGlwYXJ0IGltYWdlLCBt
YWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBwYXJ0LCBzaW5jZSB0aGUgcmVzb3VyY2UgZGF0YQog
ICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0IHBhcnQuCi0gICAgICAg
IGlmIChsb2FkZXIoKS0+aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpKQorICAgICAgICBpZiAo
ZGF0YSAmJiBsb2FkZXIoKS0+aXNMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpKQogICAgICAgICAg
ICAgZGF0YSA9IGRhdGEtPmNvcHkoKTsKIAogICAgICAgICBjYWNoZWRJbWFnZS5maW5pc2hMb2Fk
aW5nKGRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcAppbmRleCA3ODI4MjZkYzdkOTkwOGNmNGQ5NzU3YzZhODZlNzZiM2JkMDA4
OWQzLi5mOWIyYjIxM2ZhNDBlZmI1ZTRiMzdkNzFlOTNlODUzNmYxMjlmNjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNjIsNyAr
NjIsNiBAQAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKQEAgLTE0MywxMSArMTQyLDkgQEAgYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UsIFMKIAogICAgICpiYXNlNjRFbmNvZGVkID0gIWhhc1RleHRDb250ZW50KGNhY2hlZFJlc291
cmNlKTsKICAgICBpZiAoKmJhc2U2NEVuY29kZWQpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gaGFzWmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIDogY2Fj
aGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpOwotCisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhc1plcm9TaXplID8gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSA6IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgICAgICAqcmVzdWx0
ID0gYmFzZTY0RW5jb2RlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE2Niw3ICsxNjMsNyBAQCBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNv
dXJjZSwgUwogICAgICAgICAgICAgKnJlc3VsdCA9IGRvd25jYXN0PENhY2hlZFNjcmlwdD4oKmNh
Y2hlZFJlc291cmNlKS5zY3JpcHQoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZTogewotICAgICAgICAgICAgUmVzb3Vy
Y2VCdWZmZXIqIGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAg
ICAgICAgICAgYXV0byogYnVmZmVyID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7
CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IGNyZWF0
ZVhIUlRleHREZWNvZGVyKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGNh
Y2hlZFJlc291cmNlLT5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CkBAIC0xNzcsNyAr
MTc0LDcgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChD
YWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIFMKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSZXNvdXJjZUJ1ZmZl
ciogYnVmZmVyID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgICAg
ICBhdXRvKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAg
ICAgICAgIHJldHVybiBkZWNvZGVCdWZmZXIoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIGNhY2hlZFJlc291cmNlLT5lbmNvZGlu
ZygpLCByZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTg2LDEyICsxODMsMTAgQEAgYm9v
bCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UsIFMKIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNv
dXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyog
cmVzdWx0KQogewotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5w
dXRFbmNvZGluZygpOwotCi0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRl
bnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRh
dGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50
KCktPmlucHV0RW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogLy8g
c3RhdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKaW5kZXggMWM1N2E0ZjU3ZWY5NTk5MTE2MWVmYWZhMDhkMDQ3ZjA3Nzg5NTJk
NS4uNDgxYjJiYWQ0MTkyYTQ1MWJmNGQ4MjIwMDIxMzJmYzA0MzljNmU0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAt
NTQsNyArNTQsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgotI2luY2x1ZGUgIlJlc291
cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC00MDUsOCArNDA0
LDkgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQKIAogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJ
ZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKICAgICBpZiAobV9yZXNv
dXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUocmVxdWVzdElkKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6
OkRvY3VtZW50UmVzb3VyY2UpIHsKLSAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZm
ZXIgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJj
ZURhdGEoKTsKLSAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZl
cihyZXF1ZXN0SWQsIGJ1ZmZlciA/IGJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyLCBs
b2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKSk7CisgICAgICAgIG1f
cmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIocmVxdWVzdElkLAorICAgICAg
ICAgICAgbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCksCisgICAgICAgICAgICBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPmlucHV0
RW5jb2RpbmcoKSk7CiAgICAgfQogCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZURlY29kZURh
dGFUb0NvbnRlbnQocmVxdWVzdElkKTsKQEAgLTQzNSw4ICs0MzUsOSBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbnRMbwogICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlVHlwZShyZXF1ZXN0
SWQpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6RG9jdW1lbnRSZXNvdXJjZSkgewogICAgICAgICBG
cmFtZSogZnJhbWUgPSBsb2FkZXIgPyBsb2FkZXItPmZyYW1lKCkgOiBudWxscHRyOwogICAgICAg
ICBpZiAoZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgJiYgZnJhbWUt
PmRvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVy
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsK
LSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIocmVx
dWVzdElkLCBidWZmZXIgPyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogbnVsbHB0ciwgZnJhbWUt
PmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKSk7CisgICAgICAgICAgICBtX3Jlc291cmNlc0Rh
dGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHJlcXVlc3RJZCwKKyAgICAgICAgICAgICAgICBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpLAorICAg
ICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCA0MGFlNTk0NGViZDdmNTQ3Yjk0NWM5NGE3ZDdkMjljOGJmMTlhZDMwLi45NzdlZDE0YjBlMjE2
MzY4YjExMGIyNWMzMjY0ZDEyNTAxM2I2Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUG9saWN5Q2hlY2tlci5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgotI2lu
Y2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCkBA
IC0xNzEsMjAgKzE3MCwyMCBAQCBEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICAg
ICBjbGVhck1haW5SZXNvdXJjZSgpOwogfQogCi1QYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBE
b2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAogewogICAg
IGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFJlc291cmNl
QnVmZmVyOjpjcmVhdGUobV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmRhdGEoKSwgbV9zdWJz
dGl0dXRlRGF0YS5jb250ZW50KCktPnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX3N1YnN0aXR1
dGVEYXRhLmNvbnRlbnQoKS0+Y29weSgpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuIG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiBEb2N1bWVudCogRG9jdW1lbnRMb2FkZXI6OmRv
Y3VtZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpID09IHRoaXMpCiAgICAgICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVu
dCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIERvY3VtZW50TG9hZGVyOjpvcmlnaW5hbFJlcXVlc3QoKSBjb25zdApAQCAt
OTk0LDggKzk5Myw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgp
CiAjZWxzZQogICAgIAogICAgIC8vIEdpdmUgdGhlIGFyY2hpdmUgbWFjaGluZXJ5IGEgY3JhY2sg
YXQgdGhpcyBkb2N1bWVudC4gSWYgdGhlIE1JTUUgdHlwZSBpcyBub3QgYW4gYXJjaGl2ZSB0eXBl
LCBpdCB3aWxsIHJldHVybiAwLgotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291
cmNlQnVmZmVyID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIG1fYXJjaGl2ZSA9IEFyY2hpdmVG
YWN0b3J5OjpjcmVhdGUobV9yZXNwb25zZS51cmwoKSwgbWFpblJlc291cmNlQnVmZmVyID8gbWFp
blJlc291cmNlQnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IDAsIG1fcmVzcG9uc2UubWltZVR5cGUo
KSk7CisgICAgbV9hcmNoaXZlID0gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShtX3Jlc3BvbnNlLnVy
bCgpLCBtYWluUmVzb3VyY2VEYXRhKCkuZ2V0KCksIG1fcmVzcG9uc2UubWltZVR5cGUoKSk7CiAg
ICAgaWYgKCFtX2FyY2hpdmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTEwMTEs
NiArMTAwOSw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiB9
CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKKwogdm9pZCBEb2N1
bWVudExvYWRlcjo6c2V0QXJjaGl2ZShQYXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUpCiB7CiAg
ICAgbV9hcmNoaXZlID0gYXJjaGl2ZTsKQEAgLTEwNTgsNDcgKzEwNTcsNDYgQEAgU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQorCiAjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAKIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRM
b2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIAorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBcmNoaXZlUmVzb3VyY2UqIHJl
c291cmNlID0gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hcmNoaXZlUmVzb3VyY2VGb3JV
UkwodXJsKTsKLQotICAgIHJldHVybiByZXNvdXJjZSAmJiAhcmVzb3VyY2UtPnNob3VsZElnbm9y
ZVdoZW5VbmFyY2hpdmluZygpID8gcmVzb3VyY2UgOiAwOworICAgIGlmICghcmVzb3VyY2UgfHwg
cmVzb3VyY2UtPnNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZygpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gcmVzb3VyY2U7CiB9CiAKIFBhc3NSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByID0gcmVzcG9uc2UoKTsKLSAgICAKLSAgICBSZWZQdHI8UmVz
b3VyY2VCdWZmZXI+IG1haW5SZXNvdXJjZUJ1ZmZlciA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlQnVmZmVyID8gbWFpblJl
c291cmNlQnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IDA7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICAKLSAgICByZXR1cm4gQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoZGF0YSwgci51cmwoKSwgci5taW1lVHlwZSgpLCByLnRleHRFbmNv
ZGluZ05hbWUoKSwgZnJhbWUoKS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSk7CisgICAgYXV0byYgcmVz
cG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOworICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZShkYXRhLCByZXNwb25zZS51cmwoKSwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2Uu
dGV4dEVuY29kaW5nTmFtZSgpLCBmcmFtZSgpLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KIAog
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZShj
b25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIWlzQ29tbWl0dGVkKCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5jYWNoZWRSZXNvdXJjZSh1
cmwpOwogICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5pc0xvYWRlZCgpKQogICAgICAg
ICByZXR1cm4gYXJjaGl2ZVJlc291cmNlRm9yVVJMKHVybCk7CiAKICAgICBpZiAocmVzb3VyY2Ut
PnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZXNvdXJjZUJ1ZmZlciogZGF0YSA9
IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKTsKICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShkYXRhLT5zaGFyZWRCdWZmZXIoKSwgdXJsLCByZXNvdXJjZS0+cmVzcG9uc2UoKSk7CisgICAg
cmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEsIHVybCwgcmVzb3VyY2UtPnJlc3Bv
bnNlKCkpOwogfQogCiBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+IERvY3VtZW50TG9h
ZGVyOjpzdWJyZXNvdXJjZXMoKSBjb25zdApAQCAtMTUxMSw3ICsxNTA5LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAKICAgICBm
cmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNl
OwotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNv
dXJjZURhdGEoKTsKICAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJj
ZURhdGEtPnNpemUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
aW5kZXggNDAzZTE5NTcxYzZkNjZkZmQwNzc2ZjY3NTA5NzUzZWE5MTU5MjU1Ni4uNzY5OGZmYjg0
ZmJmNzAyZTg0ZjFjMWQyZmUwZDllMWJhYzUyNTk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKQEAgLTY4LDcgKzY4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEZyYW1lTG9hZGVyOwogICAgIGNsYXNzIFBhZ2U7Ci0g
ICAgY2xhc3MgUmVzb3VyY2VCdWZmZXI7CiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiAgICAg
Y2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIGNsYXNzIFN1YnN0aXR1dGVSZXNvdXJjZTsKQEAgLTkz
LDcgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JU
IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9S
VCBSZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEo
KSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIERvY3VtZW50V3Jp
dGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODA3NTZmMTNiYjAxNzY2
ZjRhY2Y5YmJmM2E4ZTYzOTY3NTMyYmNmNC4uMTdmNWY3YTZlOTJkYjRlN2Q1NDFmMDAyOTFkNDdh
ZTQ5Y2I4NGFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiTWVkaWFSZXNvdXJjZUxvYWRl
ci5oIgogCiAjaWYgRU5BQkxFKFZJREVPKQorCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2Uu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CkBAIC0xMTYsOSArMTE2LDYgQEAgdm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXQKIAogICAgIFJlZlB0
cjxNZWRpYVJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwogICAgIG1fY2xpZW50LT5kYXRh
UmVjZWl2ZWQoZGF0YSwgZGF0YUxlbmd0aCk7Ci0KLSAgICBpZiAoU2hhcmVkQnVmZmVyKiBidWZm
ZXIgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSA/IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZl
cigpLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIpCi0gICAgICAgIG1fY2xpZW50LT5idWZmZXJS
ZWNlaXZlZChidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKQEAgLTEyOSw3ICsxMjYsNyBAQCB2b2lk
IE1lZGlhUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKICAgICBpZiAocmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpCiAgICAgICAg
IG1fY2xpZW50LT5sb2FkRmFpbGVkKHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOwogICAgIGVs
c2UKLSAgICAgICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZChyZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSA/IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxw
dHIpOworICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVkKCk7CiAgICAgc3RvcCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTZiYThjZTU1ZDEyN2RlM2E2MjZiMTM3NTU5ODkyMGJjNzYyNjM1Mi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKLQotI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlc291cmNlQnVmZmVy
OjpSZXNvdXJjZUJ1ZmZlcigpCi0gICAgOiBtX3NoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpKQotewotfQotCi1SZXNvdXJjZUJ1ZmZlcjo6UmVzb3VyY2VCdWZmZXIoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKLSAgICA6IG1fc2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIHNpemUpKQotewotfQotCi1SZXNvdXJjZUJ1ZmZlcjo6UmVzb3VyY2VC
dWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlcikKLSAgICA6IG1fc2hh
cmVkQnVmZmVyKHNoYXJlZEJ1ZmZlcikKLXsKLSAgICBBU1NFUlQobV9zaGFyZWRCdWZmZXIpOwot
fQotICAgIAotUmVzb3VyY2VCdWZmZXI6On5SZXNvdXJjZUJ1ZmZlcigpCi17Ci19Ci0KLVBhc3NS
ZWZQdHI8UmVzb3VyY2VCdWZmZXI+IFJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcihQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkKQotewotICAgIHJldHVybiBzaGFyZWQgPyBh
ZG9wdFJlZihuZXcgUmVzb3VyY2VCdWZmZXIoc2hhcmVkKSkgOiBudWxscHRyOwotfQotCi1jb25z
dCBjaGFyKiBSZXNvdXJjZUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hh
cmVkQnVmZmVyLT5kYXRhKCk7Ci19Ci0KLXVuc2lnbmVkIFJlc291cmNlQnVmZmVyOjpzaXplKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPnNpemUoKTsKLX0KLQotYm9vbCBS
ZXNvdXJjZUJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hhcmVkQnVm
ZmVyLT5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VCdWZmZXI6OmFwcGVuZChjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQotewotICAgIG1fc2hhcmVkQnVmZmVyLT5hcHBlbmQo
ZGF0YSwgc2l6ZSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VCdWZmZXI6OmFwcGVuZChTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKLXsKLSAgICBtX3NoYXJlZEJ1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci19Ci0K
LSNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCi12b2lkIFJlc291cmNlQnVm
ZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCi17Ci0gICAgQVNTRVJUKG1fc2hhcmVkQnVmZmVy
KTsKLSAgICBtX3NoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGEpOwotfQotI2VuZGlmCi0KLXZvaWQg
UmVzb3VyY2VCdWZmZXI6OmNsZWFyKCkKLXsKLSAgICBtX3NoYXJlZEJ1ZmZlci0+Y2xlYXIoKTsK
LX0KLQotdW5zaWduZWQgUmVzb3VyY2VCdWZmZXI6OmdldFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBk
YXRhLCB1bnNpZ25lZCBwb3NpdGlvbikgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZm
ZXItPmdldFNvbWVEYXRhKGRhdGEsIHBvc2l0aW9uKTsKLX0KLQotU2hhcmVkQnVmZmVyKiBSZXNv
dXJjZUJ1ZmZlcjo6c2hhcmVkQnVmZmVyKCkgY29uc3QKLXsKLSAgICAvLyBDdXJyZW50bHkgYWxs
IFJlc291cmNlQnVmZmVycyBhcmUgYmFja2VkIGJ5IFNoYXJlZEJ1ZmZlcnMuCi0gICAgLy8gSW4g
dGhlIGZ1dHVyZSB3ZSBtaWdodCBoYXZlIHRvIGNyZWF0ZSB0aGUgU2hhcmVkQnVmZmVyIG9uIGRl
bWFuZCBoZXJlLgotICAgIC8vIFdlIHNob3VsZCBhbHNvIHBoYXNlIG91dCBhcyBtdWNoIHVzZSBv
ZiB0aGlzIGFjY2Vzc29yIGFzIHBvc3NpYmxlIGFuZCBoYXZlIGNsaWVudHMKLSAgICAvLyBlaXRo
ZXIgdXNlIHRoZSBSZXNvdXJjZUJ1ZmZlciBkaXJlY3RseSBvciB1c2UgZ2V0U29tZURhdGEoKSB3
aGVuIHNlbnNpY2FsLgotICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci5nZXQoKTsKLX0KLQotUGFz
c1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gUmVzb3VyY2VCdWZmZXI6OmNvcHkoKSBjb25zdAotewot
ICAgIHJldHVybiBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIobV9zaGFyZWRCdWZm
ZXItPmNvcHkoKSk7Ci19Ci0KLSNpZiBVU0UoQ0YpCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBSZXNv
dXJjZUJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXIt
PmNyZWF0ZUNGRGF0YSgpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU2M2IwOGFiMWI0ODI5YjY1NzFhNWI2MDQzOWIyOWQxOWVhYTEyYmEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZXNvdXJj
ZUJ1ZmZlcl9oCi0jZGVmaW5lIFJlc291cmNlQnVmZmVyX2gKLQotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYgVVNFKEZPVU5EQVRJT04p
Ci1PQkpDX0NMQVNTIE5TRGF0YTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKLQotY2xhc3MgUmVzb3VyY2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxSZXNvdXJjZUJ1ZmZlcj4gewotcHVibGljOgotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVzb3VyY2VCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZXNvdXJjZUJ1
ZmZlcik7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZXNv
dXJjZUJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJj
ZUJ1ZmZlcj4gYWRvcHRTaGFyZWRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlc291cmNlQnVmZmVyKCk7Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKLSAgICB2b2lkIGFwcGVuZChTaGFyZWRC
dWZmZXIqKTsKLSNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCi0gICAgdm9p
ZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKLSNlbmRpZgotICAgIHZvaWQgY2xlYXIoKTsKLSAgICAKLSAg
ICB1bnNpZ25lZCBnZXRTb21lRGF0YShjb25zdCBjaGFyKiYgZGF0YSwgdW5zaWduZWQgcG9zaXRp
b24gPSAwKSBjb25zdDsKLSAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHNo
YXJlZEJ1ZmZlcigpIGNvbnN0OwotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIHZvaWQgdHJ5UmVw
bGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKFNoYXJlZEJ1ZmZlciopOwotI2VuZGlmCi0gICAgUGFz
c1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gY29weSgpIGNvbnN0OwotCi0jaWYgVVNFKEZPVU5EQVRJ
T04pCi0gICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCk7
Ci0jZW5kaWYKLSNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZE
YXRhKCk7Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNl
QnVmZmVyKCk7Ci0KLXByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VCdWZmZXIo
Y29uc3QgY2hhciosIHVuc2lnbmVkKTsKLSAgICBSZXNvdXJjZUJ1ZmZlcihQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pOwotCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zaGFyZWRCdWZmZXI7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZUJ1ZmZl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAyYzgxZmEz
NGM2NmNiMGRkYzMzZjhmNDYyNzMyNWNlM2MwMTBlNWJmLi40M2I5YzNmMDg4YmFmMzRmODE5ODBh
ZDM4MzkxMTllODI1Njg5NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVk
ZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIK
QEAgLTIyMiwxMiArMjIxLDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291
cmNlKSB7Ci0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyID8gUmVzb3VyY2VCdWZmZXI6
OmFkb3B0U2hhcmVkQnVmZmVyKGJ1ZmZlcikgOiBSZXNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGxlbmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyID8gYnVmZmVyIDogU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAgICAgCiAgICAgaWYgKCFtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBidWZmZXIgPyBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIoYnVmZmVyKSA6
IFJlc291cmNlQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEgPSBidWZmZXIgPyBidWZmZXIgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5n
dGgpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoYnVmZmVyKQogICAgICAgICAgICAgbV9yZXNv
dXJjZURhdGEtPmFwcGVuZChidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA4ZDA5NGM2NGVmODE3ZjFkZmJmMTZlOWU5YmIzNTEyM2FlMDlkZjE2Li4xNjE1
ZjZkOWJmOGRjMzRhNGU5YmNmNDZiYjYzYjY4ZjZjZmRhMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtNDcsNyArNDcsNiBAQCBjbGFzcyBEb2N1bWVudExvYWRl
cjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBVUkw7Ci1jbGFzcyBS
ZXNvdXJjZUJ1ZmZlcjsKIAogI2lmIFVTRShRVUlDS19MT09LKQogY2xhc3MgUXVpY2tMb29rSGFu
ZGxlOwpAQCAtODgsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VS
ZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
OwogCi0gICAgUmVzb3VyY2VCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBj
b25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJSZXNv
dXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigp
OwpAQCAtMjA0LDcgKzIwMyw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3Jl
IHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOwogICAgIAogICAgIHVuc2ln
bmVkIGxvbmcgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAppbmRleCA3ZDQwZTYzNWQ0ZDA0NmQ2OThkMTExNjAxNjhkMTg2NDFjYWRm
M2MxLi4yNmEzNGUyM2ViOWRmOWNiYzQ3NmRjNGY5ZTRjMmJjN2M1NWVmNWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM4LDcgKzM4LDYgQEAK
ICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
YWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0yMzMsMTEgKzIzMiwxMCBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSZWZQdHI8UmVz
b3VyY2VCdWZmZXI+IGJ1ZmZlciA9IHJlc291cmNlRGF0YSgpOworICAgIGF1dG8qIGJ1ZmZlciA9
IHJlc291cmNlRGF0YSgpOwogICAgIGlmIChtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50ICYmIGJ1
ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewogICAgICAgICAvLyBUaGUgcmVzb3VyY2UgZGF0YSB3
aWxsIGNoYW5nZSBhcyB0aGUgbmV4dCBwYXJ0IGlzIGxvYWRlZCwgc28gd2UgbmVlZCB0byBtYWtl
IGEgY29weS4KLSAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBjb3BpZWREYXRhID0gUmVz
b3VyY2VCdWZmZXI6OmNyZWF0ZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAg
ICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKGNvcGllZERhdGEuZ2V0KCkpOworICAgICAg
ICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKCZidWZmZXItPmNvcHkoKS5nZXQoKSk7CiAgICAg
ICAgIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgIC8vIFNpbmNlIGEgc3VicmVzb3VyY2Ug
bG9hZGVyIGRvZXMgbm90IGxvYWQgbXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHksIGRh
dGEgd2FzIGRlbGl2ZXJlZCB0byB0aGUgbG9hZGVyIGFsbCBhdCBvbmNlLiAgICAgICAgCiAgICAg
ICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBtdWx0aXBhcnQgc2VjdGlvbiBpcyBjb21wbGV0ZSwgc2ln
bmFsIHRvIGRlbGVnYXRlcyB0aGF0IHRoaXMgbG9hZCBpcyAiZmluaXNoZWQiIApAQCAtMjczLDgg
KzI3MSw4IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgUGFzCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIsIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgaWYgKCFtX2xvYWRpbmdNdWx0aXBhcnRDb250
ZW50KSB7Ci0gICAgICAgIGlmIChSZXNvdXJjZUJ1ZmZlciogcmVzb3VyY2VEYXRhID0gdGhpcy0+
cmVzb3VyY2VEYXRhKCkpCi0gICAgICAgICAgICBtX3Jlc291cmNlLT5hZGREYXRhQnVmZmVyKHJl
c291cmNlRGF0YSk7CisgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNv
dXJjZURhdGEoKSkKKyAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZERhdGFCdWZmZXIoKnJlc291
cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZERhdGEo
YnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IGxlbmd0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cAppbmRleCAzNTNjZWYyNzM0MmNlZDhmZTFkN2IyZTU4NjNiNWY0NWM5MmRhNTRlLi4wZjI3Yjky
ODA3ZjM5MWNmNDBlZjhmZWJlMzg5MTU3MzdmMDM1YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIkNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJWVFRDdWUu
aCIKICNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKIApAQCAtODcsNyArODcsNyBAQCB2b2lkIFRl
eHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KQogICAgIGlmIChtX3N0YXRlID09IEZhaWxlZCB8fCAhcmVzb3VyY2UtPnJlc291cmNlQnVmZmVy
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZXNvdXJjZUJ1ZmZlciogYnVmZmVyID0g
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgYXV0byogYnVmZmVyID0gcmVzb3VyY2Ut
PnJlc291cmNlQnVmZmVyKCk7CiAgICAgaWYgKG1fcGFyc2VPZmZzZXQgPT0gYnVmZmVyLT5zaXpl
KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA2MzQyMTk0Y2U3OGYx
MDVmZTMzYWFmZTQ5YzFhNjU0ZGI1NTA2NjUyLi5lOTU0YTMzN2UwODI3NzdjODNjNTNiNmNlYWI5
NDlkNmQ4NTA1NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk1hbmlmZXN0UGFyc2Vy
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0yNTQsMTEgKzI1Myw4IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKICAgICAgICAgICAgICAgICByZXNvdXJjZS0+YWRkVHlwZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6Ok1hc3Rlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFyZXNvdXJjZS0+c3Rv
cmFnZUlEKCkpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
UmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKLSAgICAgICAgICAgIG1fbmV3ZXN0Q2FjaGUtPmFkZFJlc291cmNlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgbG9hZGVyLT5yZXNwb25zZSgpLCBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6Ok1hc3RlciwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IDAp
KTsKLSAgICAgICAgfQotCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9uZXdlc3RDYWNo
ZS0+YWRkUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUodXJsLCBsb2Fk
ZXItPnJlc3BvbnNlKCksIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6TWFzdGVyLCBsb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZhaWx1cmU6
CiAgICAgICAgIC8vIENhY2hlIHVwZGF0ZSBoYXMgYmVlbiBhIGZhaWx1cmUsIHNvIHRoZXJlIGlz
IG5vIHJlYXNvbiB0byBrZWVwIHRoZSBkb2N1bWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGluY29t
cGxldGUgY2FjaGUKQEAgLTI3NiwxMCArMjcyLDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ICAgICAgICAgICAgICAgIHJlc291cmNlLT5hZGRUeXBlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6TWFzdGVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXJlc291cmNlLT5zdG9yYWdlSUQo
KSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8
UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAg
ICAgICAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+YWRkUmVzb3VyY2UoQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUodXJsLCBsb2FkZXItPnJlc3BvbnNlKCksIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6TWFzdGVyLCBidWZmZXIgPyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMCkp
OwotICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jYWNoZUJlaW5nVXBk
YXRlZC0+YWRkUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUodXJsLCBs
b2FkZXItPnJlc3BvbnNlKCksIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6TWFzdGVyLCBsb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKSkpOwogICAgICAgICAvLyBUaGUgImNhY2hlZCIgZXZlbnQg
d2lsbCBiZSBwb3N0ZWQgdG8gYWxsIGFzc29jaWF0ZWQgZG9jdW1lbnRzIG9uY2UgdXBkYXRlIGlz
IGNvbXBsZXRlLgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IDI0Y2Y0YmVl
ZGVkZjZlNDM2YTlkZTgyNGIzYzNjZTVlOTdjYzkzNjMuLjk3MjM0NmEwMDgzYmE2ZTQ0ZTNlMjQ4
MjRjZWFhMzRkMGEzNzFlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
LSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC01NTAsOSAr
NTQ5LDcgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICNlbmRpZgogICAgICAgICAgICAgICAg
IENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNl
Rm9yUmVxdWVzdChyZXF1ZXN0LCBmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGNhY2hlZFJlc291cmNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlc291
cmNlQnVmZmVyKiBkYXRhID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YSA/IGRhdGEtPnNoYXJlZEJ1ZmZlcigpIDogMCwg
c3VicmVzb3VyY2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZShjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSwgc3VicmVz
b3VyY2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChXVEY6Om1vdmUocmVzb3VyY2UpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAK
aW5kZXggYTIwODFiZWE0Y2E1NjNiODUwNDY1M2JkMWRiNTAwOTFhYTkzNDJhZi4uZTM3MDEzOGVi
MDhlOTkwMDRhNGNmZWZlZmM0ZTA5ZTRmYWNiMDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtMzMsNyArMzMsNyBA
QAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgi
CiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5o
IgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KQEAgLTkwLDEzICs5MCwxMyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVT
aGVldDo6c2hlZXRUZXh0KGJvb2wgZW5mb3JjZU1JTUVUeXBlLCBib29sKiBoYXNWYWxpZAogICAg
IHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhS
ZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKICAgICAvLyBEZWNvZGUgdGhlIGRh
dGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3Vu
ZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChtX2RhdGEpCi0gICAgICAgIG1fZGVjb2Rl
ZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkoKTsKICAgICAvLyBDbGVh
ciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlh
dGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDgwZjk5NGNiMzAy
ZjIzYjY1NzgyZGQzZjYzOTI2M2U2YjFhOWEyZDcuLjk0MGZkMWYxOWQ3ZmNlODIzODIxZmJlYzM5
N2VhZDFmMDc2YjQzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciopIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBv
dmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJy
aWRlOwogCiAgICAgcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCmluZGV4IDEzNjgyZmEyNzc4ZGZkZjYxYWNlZDljM2I5NTA0ZjY2N2U3MzdmZjYu
LjFlZjYyMmUyNGJkZTZiNTk0ZTM4YjdmNGQ1MWY5MjZlMmRiOTZjNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNs
dWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCkBAIC03
Niw3ICs3NSw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50KiBjKQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Kj4oYyktPmZv
bnRMb2FkZWQodGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhSZXNv
dXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOwpAQCAtOTUsMzAgKzk0LDI3IEBAIHZv
aWQgQ2FjaGVkRm9udDo6YmVnaW5Mb2FkSWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGRs
KQogYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSgpCiB7CiAgICAgaWYgKCFt
X2ZvbnREYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGluZygpICYmIG1fZGF0YSkg
ewotICAgICAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlciA9IG1fZGF0YS5nZXQoKS0+c2hhcmVkQnVm
ZmVyKCk7Ci0gICAgICAgIEFTU0VSVChidWZmZXIpOwotCisgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IG1fZGF0YTsKICAgICAgICAgYm9vbCBmb250SXNXT0ZGID0gZmFsc2U7
CisKICNpZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8PSAxMDkwKSAmJiAoIVBMQVRGT1JNKElPUykgfHwgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCA4MDAwMCkKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2ZudEJ1ZmZl
cjsKLQotICAgICAgICBmb250SXNXT0ZGID0gaXNXT0ZGKGJ1ZmZlcik7Ci0gICAgICAgIGlmIChm
b250SXNXT0ZGKSB7Ci0gICAgICAgICAgICBWZWN0b3I8Y2hhcj4gc2ZudDsKLSAgICAgICAgICAg
IGlmIChjb252ZXJ0V09GRlRvU2ZudChidWZmZXIsIHNmbnQpKSB7Ci0gICAgICAgICAgICAgICAg
c2ZudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3Ioc2ZudCk7Ci0gICAgICAgICAg
ICAgICAgYnVmZmVyID0gc2ZudEJ1ZmZlci5nZXQoKTsKLSAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICBpZiAoaXNXT0ZGKGJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxjaGFy
PiBjb252ZXJ0ZWRGb250OworICAgICAgICAgICAgaWYgKCFjb252ZXJ0V09GRlRvU2ZudChidWZm
ZXIuZ2V0KCksIGNvbnZlcnRlZEZvbnQpKQogICAgICAgICAgICAgICAgIGJ1ZmZlciA9IG51bGxw
dHI7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmFkb3B0VmVjdG9yKGNvbnZlcnRlZEZvbnQpOworICAgICAgICAgICAgICAgIGZvbnRJ
c1dPRkYgPSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKIAogICAgICAg
ICBtX2ZvbnREYXRhID0gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVm
ZmVyKSA6IG51bGxwdHI7Ci0gICAgICAgIGlmIChtX2ZvbnREYXRhKQotICAgICAgICAgICAgbV9o
YXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jlc291cmNlID0gIWZvbnRJc1dPRkY7Ci0gICAgICAg
IGVsc2UKKyAgICAgICAgbV9oYXNDcmVhdGVkRm9udERhdGFXcmFwcGluZ1Jlc291cmNlID0gbV9m
b250RGF0YSAmJiAhZm9udElzV09GRjsKKyAgICAgICAgaWYgKCFtX2ZvbnREYXRhKQogICAgICAg
ICAgICAgc2V0U3RhdHVzKERlY29kZUVycm9yKTsKICAgICB9CisKICAgICByZXR1cm4gbV9mb250
RGF0YS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgK
aW5kZXggZDk0MzczMDU1MDY0MzE5MmM5NjYzNTcxYTVmZGQ0ZDI0MDliYjZmYi4uMmEyNjdjY2Ni
MTUxMTEyNzc1NTkwNWM5ZTE3NDdmMThlYzdiZWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVu
dHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IGIwZmRhMTg0OWM2YTcyNjRjZDkyNzNkNmQ5YjYyM2M0MzZjYjYx
NmQuLmRiMmFlOTdmMjk3OGE1MGZhYjg4YjJmYWRlZTg5Yzg1NzA2YzA3NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMzcsNyArMzcsNiBAQAog
I2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJl
bmRlckVsZW1lbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNW
R0ltYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgpAQCAtMTE2LDMxICsxMTUsMzEgQEAgdm9pZCBDYWNoZWRJbWFnZTo6bG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmMKICAgICAg
ICAgc2V0TG9hZGluZyhmYWxzZSk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogewogICAgIGlmIChtX2RhdGEgJiYgIW1f
aW1hZ2UgJiYgIWVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICBjcmVhdGVJbWFnZSgpOwotICAg
ICAgICBtX2ltYWdlLT5zZXREYXRhKG1fZGF0YS0+c2hhcmVkQnVmZmVyKCksIHRydWUpOworICAg
ICAgICBtX2ltYWdlLT5zZXREYXRhKG1fZGF0YSwgdHJ1ZSk7CiAgICAgfQogICAgIAotICAgIEFT
U0VSVChjLT5yZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNsaWVudDo6ZXhwZWN0
ZWRUeXBlKCkpOworICAgIEFTU0VSVChjbGllbnQtPnJlc291cmNlQ2xpZW50VHlwZSgpID09IENh
Y2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CiAgICAgaWYgKG1faW1hZ2UgJiYgIW1f
aW1hZ2UtPmlzTnVsbCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZUNsaWVudCo+
KGMpLT5pbWFnZUNoYW5nZWQodGhpcyk7CisgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEltYWdl
Q2xpZW50Kj4oY2xpZW50KS0+aW1hZ2VDaGFuZ2VkKHRoaXMpOwogCi0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OmRpZEFkZENsaWVudChjKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KGNs
aWVudCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJlbW92ZUNsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCogYykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJlbW92ZUNsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCogY2xpZW50KQogewotICAgIEFTU0VSVChjKTsKLSAgICBBU1NFUlQoYy0+
cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgp
KTsKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBBU1NFUlQoY2xpZW50LT5yZXNvdXJjZUNsaWVu
dFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNsaWVudDo6ZXhwZWN0ZWRUeXBlKCkpOwogCi0gICAgbV9w
ZW5kaW5nQ29udGFpbmVyU2l6ZVJlcXVlc3RzLnJlbW92ZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFn
ZUNsaWVudCo+KGMpKTsKKyAgICBtX3BlbmRpbmdDb250YWluZXJTaXplUmVxdWVzdHMucmVtb3Zl
KHN0YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50Kj4oY2xpZW50KSk7CiAKICAgICBpZiAobV9z
dmdJbWFnZUNhY2hlKQotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUtPnJlbW92ZUNsaWVudEZyb21D
YWNoZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZUNsaWVudCo+KGMpKTsKKyAgICAgICAgbV9zdmdJ
bWFnZUNhY2hlLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2VD
bGllbnQqPihjbGllbnQpKTsKIAotICAgIENhY2hlZFJlc291cmNlOjpkaWRSZW1vdmVDbGllbnQo
Yyk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZFJlbW92ZUNsaWVudChjbGllbnQpOwogfQogCiB2
b2lkIENhY2hlZEltYWdlOjpzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkKQEAg
LTM2NSwxOCArMzY0LDE2IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
ICAgICBtX2ltYWdlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmFkZEluY3JlbWVu
dGFsRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmFk
ZEluY3JlbWVudGFsRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybjsKKyAgICBtX2RhdGEgPSAm
ZGF0YTsKIAogICAgIGNyZWF0ZUltYWdlKCk7CiAKICAgICAvLyBIYXZlIHRoZSBpbWFnZSB1cGRh
dGUgaXRzIGRhdGEgZnJvbSBpdHMgaW50ZXJuYWwgYnVmZmVyLgogICAgIC8vIEl0IHdpbGwgbm90
IGRvIGFueXRoaW5nIG5vdywgYnV0IHdpbGwgZGVsYXkgZGVjb2RpbmcgdW50aWwKICAgICAvLyBx
dWVyaWVkIGZvciBpbmZvIChsaWtlIHNpemUgb3Igc3BlY2lmaWMgaW1hZ2UgZnJhbWVzKS4KLSAg
ICBib29sIHNpemVBdmFpbGFibGUgPSBtX2ltYWdlLT5zZXREYXRhKG1fZGF0YS0+c2hhcmVkQnVm
ZmVyKCksIGZhbHNlKTsKKyAgICBib29sIHNpemVBdmFpbGFibGUgPSBtX2ltYWdlLT5zZXREYXRh
KCZkYXRhLCBmYWxzZSk7CiAgICAgaWYgKCFzaXplQXZhaWxhYmxlKQogICAgICAgICByZXR1cm47
CiAKQEAgLTM5OCwyNiArMzk1LDI4IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmFkZEluY3JlbWVudGFs
RGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciogZGF0YSkKICAgICBzZXRFbmNvZGVkU2l6ZShtX2lt
YWdlLT5kYXRhKCkgPyBtX2ltYWdlLT5kYXRhKCktPnNpemUoKSA6IDApOwogfQogCi12b2lkIENh
Y2hlZEltYWdlOjphZGREYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNo
ZWRJbWFnZTo6YWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7CisgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJEYXRhKTsKICAgICBhZGRJbmNyZW1l
bnRhbERhdGFCdWZmZXIoZGF0YSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZmZXIo
ZGF0YSk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmFkZERhdGEoY29uc3QgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogewotICAgIEFTU0VSVChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERvTm90QnVmZmVyRGF0YSk7Ci0gICAgYWRkSW5jcmVtZW50YWxEYXRhQnVmZmVy
KFJlc291cmNlQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKS5nZXQoKSk7CisgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpOworICAgIGFkZEluY3Jl
bWVudGFsRGF0YUJ1ZmZlcigqU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2U6OmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNo
ZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVk
SW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGF0YSA9
IGRhdGE7CiAgICAgaWYgKCFtX2ltYWdlICYmIGRhdGEpCiAgICAgICAgIGNyZWF0ZUltYWdlKCk7
CiAKICAgICBpZiAobV9pbWFnZSkKLSAgICAgICAgbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEtPnNo
YXJlZEJ1ZmZlcigpLCB0cnVlKTsKKyAgICAgICAgbV9pbWFnZS0+c2V0RGF0YShkYXRhLCB0cnVl
KTsKIAogICAgIGlmICghbV9pbWFnZSB8fCBtX2ltYWdlLT5pc051bGwoKSkgewogICAgICAgICAv
LyBJbWFnZSBkZWNvZGluZyBmYWlsZWQ7IHRoZSBpbWFnZSBkYXRhIGlzIG1hbGZvcm1lZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZmVlZjQ1MmM2Y2Zk
MzY3MjQ3ODk0OWMxNmFjNjkwNjkzMzE1NDMzOC4uNTZkMmFhMWYzMzA4NmIyMzcwZGY0NjI1Yzdl
NGNiOGI3YWI1NDE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmgKQEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCkgY29uc3Q7CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJp
ZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC05NCw3ICs5
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZSgpOwogICAgIHZvaWQgY2xlYXJJ
bWFnZSgpOwogICAgIC8vIElmIG5vdCBudWxsLCBjaGFuZ2VSZWN0IGlzIHRoZSBjaGFuZ2VkIHBh
cnQgb2YgdGhlIGltYWdlLgotICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEludFJlY3Qq
IGNoYW5nZVJlY3QgPSAwKTsKKyAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhjb25zdCBJbnRSZWN0
KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGVja1Nob3VsZFBhaW50QnJva2Vu
SW1hZ2UoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJl
c291cmNlKCkgb3ZlcnJpZGU7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0aW9uQWR2YW5jZWQoY29uc3QgSW1hZ2UqKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSosIGNvbnN0IEludFJlY3QmKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgYWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKFJlc291cmNlQnVm
ZmVyKik7CisgICAgdm9pZCBhZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJik7
CiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxMYXlvdXRTaXplLCBmbG9hdD4gU2l6ZUFuZFpvb207
CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENhY2hlZEltYWdlQ2xpZW50KiwgU2l6ZUFuZFpv
b20+IENvbnRhaW5lclNpemVSZXF1ZXN0czsKQEAgLTEzMCw4ICsxMzAsOCBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdJbWFn
ZUNhY2hlPiBtX3N2Z0ltYWdlQ2FjaGU7Ci0gICAgdW5zaWduZWQgY2hhciBtX2lzTWFudWFsbHlD
YWNoZWQgOiAxOwotICAgIHVuc2lnbmVkIGNoYXIgbV9zaG91bGRQYWludEJyb2tlbkltYWdlIDog
MTsKKyAgICB1bnNpZ25lZCBtX2lzTWFudWFsbHlDYWNoZWQgOiAxOworICAgIHVuc2lnbmVkIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA6IDE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cAppbmRleCA1ZjI4MTMyYWU4ZGNlZGIzMTExZGY3MzljMjZkOTQxOTExNzVkNmVjLi42OGU3N2Zl
YjA4MDk4MTcxN2FlMWUwMTQ1ZWRmNjlkNDdmMDZiNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCi0jaW5jbHVk
ZSAiUmVzb3VyY2VCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpAQCAtNDYsNyArNDYsNyBAQCBDYWNoZWRSYXdS
ZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIFR5cGUgdHlwZQogICAgIEFTU0VSVChpc01haW5PclJhd1Jlc291cmNlKCkpOwogfQogCi1j
b25zdCBjaGFyKiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoUmVzb3VyY2VCdWZmZXIqIGRhdGEsIHVuc2lnbmVkJiBpbmNyZW1lbnRhbERhdGFMZW5ndGgp
Citjb25zdCBjaGFyKiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
Q2h1bmsoU2hhcmVkQnVmZmVyKiBkYXRhLCB1bnNpZ25lZCYgaW5jcmVtZW50YWxEYXRhTGVuZ3Ro
KQogewogICAgIGluY3JlbWVudGFsRGF0YUxlbmd0aCA9IDA7CiAgICAgaWYgKCFkYXRhKQpAQCAt
NTgsMzQgKzU4LDM2IEBAIGNvbnN0IGNoYXIqIENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhSZXNvdXJjZUJ1ZmZlciogZGF0CiAgICAgcmV0dXJuIGRhdGEt
PmRhdGEoKSArIHByZXZpb3VzRGF0YUxlbmd0aDsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6YWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OmFkZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRoaXMpOwotICAgIEFTU0VS
VChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOwotICAgIG1f
ZGF0YSA9IGRhdGE7CisgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJE
YXRhKTsKKyAgICBtX2RhdGEgPSAmZGF0YTsKIAogICAgIHVuc2lnbmVkIGluY3JlbWVudGFsRGF0
YUxlbmd0aDsKLSAgICBjb25zdCBjaGFyKiBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhkYXRhLCBpbmNyZW1lbnRhbERhdGFMZW5ndGgpOwotICAgIGlmIChk
YXRhKQotICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIGNvbnN0IGNo
YXIqIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCZkYXRh
LCBpbmNyZW1lbnRhbERhdGFMZW5ndGgpOworICAgIHNldEVuY29kZWRTaXplKGRhdGEuc2l6ZSgp
KTsKICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YSwgaW5j
cmVtZW50YWxEYXRhTGVuZ3RoKTsKLSAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpIHsKKyAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERvTm90QnVmZmVyRGF0YSkgewogICAgICAgICBpZiAobV9sb2FkZXIpCiAgICAgICAgICAg
ICBtX2xvYWRlci0+c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEb05vdEJ1ZmZlckRhdGEpOwogICAg
ICAgICBjbGVhcigpOwogICAgIH0KKworICAgIENhY2hlZFJlc291cmNlOjphZGREYXRhQnVmZmVy
KGRhdGEpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjphZGREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBBU1NFUlQobV9vcHRpb25zLmRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpOworICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKTsKICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGRhdGEsIGxlbmd0aCk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmFkZERhdGEoZGF0
YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhS
ZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRoaXMpOwotICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0
YUJ1ZmZlcmluZ1BvbGljeSA9IG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CisgICAg
RGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IEJ1ZmZlckRhdGEp
IHsKICAgICAgICAgbV9kYXRhID0gZGF0YTsKIApAQCAtOTksNyArMTAxLDcgQEAgdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciogZGF0YSkKICAgICBt
X2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudCA9ICFtX2xvYWRlci0+aXNRdWlja0xvb2tSZXNv
dXJjZSgpOwogCiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7Ci0gICAg
aWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gQnVmZmVyRGF0YSAmJiBtX29wdGlvbnMuZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVmZmVyRGF0YSkgeworICAgIGlmIChkYXRhQnVmZmVy
aW5nUG9saWN5ID09IEJ1ZmZlckRhdGEgJiYgdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERvTm90QnVmZmVyRGF0YSkgewogICAgICAgICBpZiAobV9sb2FkZXIpCiAgICAgICAgICAgICBt
X2xvYWRlci0+c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEb05vdEJ1ZmZlckRhdGEpOwogICAgICAg
ICBjbGVhcigpOwpAQCAtMjIyLDcgKzIyNCw3IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZUhl
YWRlckZvckNhY2hlUmV1c2UoSFRUUEhlYWRlck5hbWUgbmFtZSkKIAogYm9vbCBDYWNoZWRSYXdS
ZXNvdXJjZTo6Y2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSBjb25z
dAogewotICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVm
ZmVyRGF0YSkKKyAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVmZmVyRGF0
YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2VSZXF1ZXN0Lmh0
dHBNZXRob2QoKSAhPSBuZXdSZXF1ZXN0Lmh0dHBNZXRob2QoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggZjNjNjY4ZjJiZGI5ZmU0
NmU5MzYyZTQyYjlkNjM3MjJkMDZjMmUyNy4uMmNkNDU1YWNiMjUxZDA4MWZjMzRlYzBjYzA2YmI5
OWUzNTFhMTFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VC
dWZmZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3Rh
dHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTY0LDcgKzY0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGNvbnN0IGNoYXIqIGNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUNodW5rKFJlc291cmNlQnVmZmVyKiwgdW5zaWduZWQmIGluY3JlbWVudGFsRGF0YUxl
bmd0aCk7CisgICAgY29uc3QgY2hhciogY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoU2hh
cmVkQnVmZmVyKiwgdW5zaWduZWQmIGluY3JlbWVudGFsRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBu
b3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKICNpZiBVU0UoU09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDdmNGZhNWE1MDQ2NDIxMzBmZjkyZTEzODdmNzZhZTIw
ZjU4YmNiODYuLjQ3MzJlNWE4MzVjZDY0ODRmODZkNTZiYTUzNGZjZmYxMGMzYzVhZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNDAs
NyArNDAsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgpAQCAtMTYyLDEwICsx
NjEsMTAgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFJlZkNvdW50ZWRMZWFrQ291bnRlciwg
Y2FjaGVkUmVzb3VyY2VMZWFrQ291bnRlciwgKCJDYWMKIAogQ2FjaGVkUmVzb3VyY2U6OkNhY2hl
ZFJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlLCBTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIDogbV9yZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkKKyAgICAs
IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyKHRoaXMsICZDYWNoZWRSZXNvdXJjZTo6ZGVjb2Rl
ZERhdGFEZWxldGlvblRpbWVyRmlyZWQsIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWxG
b3JSZXNvdXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAg
LCBtX2xvYWRQcmlvcml0eShkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUodHlwZSkpCiAg
ICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCi0gICAgLCBtX2RlY29kZWRE
YXRhRGVsZXRpb25UaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2U6OmRlY29kZWREYXRhRGVsZXRp
b25UaW1lckZpcmVkLCBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsRm9yUmVzb3VyY2VU
eXBlKHR5cGUpKQogICAgICwgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUoMCkKICAgICAsIG1fbG9h
ZEZpbmlzaFRpbWUoMCkKICAgICAsIG1fZW5jb2RlZFNpemUoMCkKQEAgLTM0MiwyMiArMzQxLDIy
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KCkKICAgICBpZiAoaXNMb2FkaW5n
KCkgfHwgc3RpbGxOZWVkc0xvYWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKLSAg
ICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+
bm90aWZ5RmluaXNoZWQodGhpcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2Fj
aGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOworICAgIHdoaWxlIChDYWNoZWRS
ZXNvdXJjZUNsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKKyAgICAgICAgY2xpZW50LT5u
b3RpZnlGaW5pc2hlZCh0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YUJ1
ZmZlcihSZXNvdXJjZUJ1ZmZlciopCit2b2lkIENhY2hlZFJlc291cmNlOjphZGREYXRhQnVmZmVy
KFNoYXJlZEJ1ZmZlciYpCiB7Ci0gICAgQVNTRVJUKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gQnVmZmVyRGF0YSk7CisgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBCdWZmZXJEYXRhKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YShjb25zdCBj
aGFyKiwgdW5zaWduZWQpCiB7Ci0gICAgQVNTRVJUKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNr
Tm90aWZ5KCk7CkBAIC00NzIsMTcgKzQ3MSwxNSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjphZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKICAgICAgICAgZGlkQWRkQ2xpZW50
KGNsaWVudCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCogYykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNo
ZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogewogICAgIGlmIChtX2RlY29kZWREYXRhRGVsZXRp
b25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5z
dG9wKCk7CiAKLSAgICBpZiAobV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5jb250YWlucyhjKSkg
ewotICAgICAgICBtX2NsaWVudHMuYWRkKGMpOwotICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0Nh
bGxiYWNrLnJlbW92ZShjKTsKLSAgICB9CisgICAgaWYgKG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJh
Y2sucmVtb3ZlKGNsaWVudCkpCisgICAgICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKICAgICBp
ZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQotICAgICAgICBjLT5ub3RpZnlG
aW5pc2hlZCh0aGlzKTsKKyAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKIH0K
IAogYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGNsaWVudCkKQEAgLTUwNCw3ICs1MDEsNyBAQCBib29sIENhY2hlZFJlc291cmNlOjphZGRD
bGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICAvLyBUaGVy
ZWZvcmUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IHNlbmRpbmcgY2FsbGJhY2tzIG9uIGEgY2Fj
aGUgaGl0IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3VyY2VzLAogICAgICAgICAvLyB3ZSBzY2hlZHVs
ZSB0aGUgY2FsbGJhY2tzIGFuZCBlbnN1cmUgd2UgbmV2ZXIgZmluaXNoIHN5bmNocm9ub3VzbHku
CiAgICAgICAgIEFTU0VSVCghbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5jb250YWlucyhjbGll
bnQpKTsKLSAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoY2xpZW50LCBDYWNo
ZWRSZXNvdXJjZUNhbGxiYWNrOjpzY2hlZHVsZSh0aGlzLCBjbGllbnQpKTsKKyAgICAgICAgbV9j
bGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoY2xpZW50LCBzdGQ6Om1ha2VfdW5pcXVlPENhbGxi
YWNrPigqdGhpcywgKmNsaWVudCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC04MzEsMjcgKzgyOCwyOCBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHko
UmVzb3VyY2VMb2FkUHJpb3JpdHkgbG9hZFByaW9yaXR5KQogICAgIG1fbG9hZFByaW9yaXR5ID0g
bG9hZFByaW9yaXR5OwogfQogCi1DYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2VDYWxsYmFj
azo6Q2FjaGVkUmVzb3VyY2VDYWxsYmFjayhDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIENhY2hl
ZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCitpbmxpbmUgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNr
OjpDYWxsYmFjayhDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIENhY2hlZFJlc291cmNlQ2xpZW50
JiBjbGllbnQpCiAgICAgOiBtX3Jlc291cmNlKHJlc291cmNlKQogICAgICwgbV9jbGllbnQoY2xp
ZW50KQotICAgICwgbV9jYWxsYmFja1RpbWVyKHRoaXMsICZDYWNoZWRSZXNvdXJjZUNhbGxiYWNr
Ojp0aW1lckZpcmVkKQorICAgICwgbV90aW1lcih0aGlzLCAmQ2FsbGJhY2s6OnRpbWVyRmlyZWQp
CiB7Ci0gICAgbV9jYWxsYmFja1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2VD
YWxsYmFjazo6Y2FuY2VsKCkKK2lubGluZSB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6
Y2FuY2VsKCkKIHsKLSAgICBpZiAobV9jYWxsYmFja1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAg
IG1fY2FsbGJhY2tUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgbV90aW1lci5zdG9wKCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJl
c291cmNlQ2FsbGJhY2s6OnRpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVzb3VyY2VDYWxsYmFjaz4m
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoVGltZXI8Q2FsbGJh
Y2s+JikKIHsKLSAgICBtX3Jlc291cmNlLT5kaWRBZGRDbGllbnQobV9jbGllbnQpOworICAgIG1f
cmVzb3VyY2UuZGlkQWRkQ2xpZW50KCZtX2NsaWVudCk7CiB9CiAKICNpZiBVU0UoRk9VTkRBVElP
TikKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbmV3QnVmZmVyKQorCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBs
YWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAgICAgaWYgKCFtX2Rh
dGEpCiAgICAgICAgIHJldHVybjsKQEAgLTg2MiwxMSArODYwLDEyIEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbmV3
QnVmZmVyKQogICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhlIG1lbWNtcCBiZWNhdXNlIHdlIGNhbid0
IHRlbGwgaWYgdGhlIHJlcGxhY2VtZW50IGZpbGUgYmFja2VkIGRhdGEgaXMgZm9yIHRoZQogICAg
IC8vIHNhbWUgcmVzb3VyY2Ugb3IgaWYgd2UgbWFkZSBhIHNlY29uZCByZXF1ZXN0IHdpdGggdGhl
IHNhbWUgVVJMIHdoaWNoIGdhdmUgdXMgYSBkaWZmZXJlbnQKICAgICAvLyByZXNvdXJjZS4gV2Ug
aGF2ZSBzZWVuIHRoaXMgaGFwcGVuIGZvciBjYWNoZWQgUE9TVCByZXNvdXJjZXMuCi0gICAgaWYg
KG1fZGF0YS0+c2l6ZSgpICE9IG5ld0J1ZmZlci0+c2l6ZSgpIHx8IG1lbWNtcChtX2RhdGEtPmRh
dGEoKSwgbmV3QnVmZmVyLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSkKKyAgICBpZiAobV9kYXRh
LT5zaXplKCkgIT0gbmV3QnVmZmVyLnNpemUoKSB8fCBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG5l
d0J1ZmZlci5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9kYXRhLT50cnlSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMobmV3QnVmZmVyLmdldCgpKTsK
KyAgICBtX2RhdGEtPnRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihuZXdCdWZm
ZXIpOwogfQorCiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCBmNDBkZDg5NmU0OGU0MTMwNjgyMThhODRkYTYxZDkyM2ViMjI1
YTgwLi5iYTYxM2RkNjI2Nzg0OWMyZmE4Mzc0NGI1MjZjM2NkOTA4NmQ1YjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDYsNyArNDYsNiBA
QCBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgSW5zcGVjdG9yUmVzb3Vy
Y2U7Ci1jbGFzcyBSZXNvdXJjZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CkBAIC0xMDEsOSArMTAwLDkg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
IHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5n
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciopOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJy
b3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3Io
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0xOTIs
NyArMTkxLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAg
IFJlc291cmNlQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5n
ZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI1MCw1NSAr
MjQ5LDM1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgVVNFKEZPVU5EQVRJT04p
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgVVNFKFNPVVApCi0gICAgdmly
dHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IC8qIHJlcXVlc3RlZFNpemUg
Ki8sIHNpemVfdCYgLyogYWN0dWFsU2l6ZSAqLykgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
Y2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKiByZXF1ZXN0ZWRTaXplICovLCBz
aXplX3QmIC8qIGFjdHVhbFNpemUgKi8pIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiBw
cm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCk7Ci0KICAgICB2b2lkIHNl
dEVuY29kZWRTaXplKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldERlY29kZWRTaXplKHVuc2lnbmVk
KTsKICAgICB2b2lkIGRpZEFjY2Vzc0RlY29kZWREYXRhKGRvdWJsZSB0aW1lU3RhbXApOwogCisg
ICAgLy8gRklYTUU6IE1ha2UgdGhlIHJlc3Qgb2YgdGhlc2UgZGF0YSBtZW1iZXJzIHByaXZhdGUg
YW5kIHVzZSBmdW5jdGlvbnMgaW4gZGVyaXZlZCBjbGFzc2VzIGluc3RlYWQuCiAgICAgSGFzaENv
dW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7Ci0KLSAgICBjbGFzcyBD
YWNoZWRSZXNvdXJjZUNhbGxiYWNrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIENhY2hlZFJlc291
cmNlQ2FsbGJhY2soQ2FjaGVkUmVzb3VyY2UqLCBDYWNoZWRSZXNvdXJjZUNsaWVudCopOwotCi0g
ICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUmVzb3VyY2VDYWxsYmFjaz4gc2No
ZWR1bGUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xp
ZW50KSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlQ2FsbGJhY2s+KHJl
c291cmNlLCBjbGllbnQpOyB9Ci0gICAgICAgIHZvaWQgY2FuY2VsKCk7Ci0gICAgcHJpdmF0ZToK
LSAgICAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbGJhY2s+Jik7
Ci0KLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVzb3VyY2U7Ci0gICAgICAgIENhY2hlZFJl
c291cmNlQ2xpZW50KiBtX2NsaWVudDsKLSAgICAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VDYWxs
YmFjaz4gbV9jYWxsYmFja1RpbWVyOwotICAgIH07Ci0gICAgSGFzaE1hcDxDYWNoZWRSZXNvdXJj
ZUNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRSZXNvdXJjZUNhbGxiYWNrPj4gbV9jbGll
bnRzQXdhaXRpbmdDYWxsYmFjazsKLQogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVx
dWVzdDsKLSAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgU3RyaW5nIG1fYWNjZXB0Owog
ICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CiAgICAgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zIG1fb3B0aW9uczsKLSAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX2xvYWRQcmlv
cml0eTsKLQogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBkb3VibGUgbV9y
ZXNwb25zZVRpbWVzdGFtcDsKLQotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbV9kYXRhOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBEZWZlcnJhYmxlT25lU2hvdFRp
bWVyIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOwogCiBwcml2YXRlOgorICAgIGNsYXNzIENh
bGxiYWNrOworCiAgICAgYm9vbCBhZGRDbGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCop
OwogCiAgICAgdm9pZCBkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCgpOwogCisgICAgdmly
dHVhbCB2b2lkIGNoZWNrTm90aWZ5KCk7CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VF
bmNvZGVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBkb3VibGUgZnJlc2hu
ZXNzTGlmZXRpbWUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0OwpAQCAtMzA2LDYgKzI4
NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKENh
Y2hlZFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKIAor
ICAgIEhhc2hNYXA8Q2FjaGVkUmVzb3VyY2VDbGllbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGJh
Y2s+PiBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrOworICAgIFNlc3Npb25JRCBtX3Nlc3Npb25J
RDsKKyAgICBTdHJpbmcgbV9hY2NlcHQ7CisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2Fk
UHJpb3JpdHk7CisgICAgZG91YmxlIG1fcmVzcG9uc2VUaW1lc3RhbXA7CisKICAgICBTdHJpbmcg
bV9mcmFnbWVudElkZW50aWZpZXJGb3JSZXF1ZXN0OwogCiAgICAgUmVzb3VyY2VFcnJvciBtX2Vy
cm9yOwpAQCAtMzQzLDcgKzMyOCw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkUmVzb3VyY2UqIG1f
bmV4dEluTGl2ZVJlc291cmNlc0xpc3Q7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcHJldkluTGl2
ZVJlc291cmNlc0xpc3Q7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbV9vd25pbmdDYWNo
ZWRSZXNvdXJjZUxvYWRlcjsgLy8gb25seSBub24tMCBmb3IgcmVzb3VyY2VzIHRoYXQgYXJlIG5v
dCBpbiB0aGUgY2FjaGUKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbV9vd25pbmdDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsgLy8gb25seSBub24tbnVsbCBmb3IgcmVzb3VyY2VzIHRoYXQgYXJlIG5v
dCBpbiB0aGUgY2FjaGUKICAgICAKICAgICAvLyBJZiB0aGlzIGZpZWxkIGlzIG5vbi1udWxsIHdl
IGFyZSB1c2luZyB0aGUgcmVzb3VyY2UgYXMgYSBwcm94eSBmb3IgY2hlY2tpbmcgd2hldGhlciBh
biBleGlzdGluZyByZXNvdXJjZSBpcyBzdGlsbCB1cCB0byBkYXRlCiAgICAgLy8gdXNpbmcgSFRU
UCBJZi1Nb2RpZmllZC1TaW5jZS9JZi1Ob25lLU1hdGNoIGhlYWRlcnMuIElmIHRoZSByZXNwb25z
ZSBpcyAzMDQgYWxsIGNsaWVudHMgb2YgdGhpcyByZXNvdXJjZSBhcmUgbW92ZWQKQEAgLTM2MSw2
ICszNDYsMjAgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9yZWRpcmVjdENoYWluRW5kT2ZWYWxp
ZGl0eTsKIH07CiAKK2NsYXNzIENhY2hlZFJlc291cmNlOjpDYWxsYmFjayB7CitwdWJsaWM6Cisg
ICAgQ2FsbGJhY2soQ2FjaGVkUmVzb3VyY2UmLCBDYWNoZWRSZXNvdXJjZUNsaWVudCYpOworCisg
ICAgdm9pZCBjYW5jZWwoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8
Q2FsbGJhY2s+Jik7CisKKyAgICBDYWNoZWRSZXNvdXJjZSYgbV9yZXNvdXJjZTsKKyAgICBDYWNo
ZWRSZXNvdXJjZUNsaWVudCYgbV9jbGllbnQ7CisgICAgVGltZXI8Q2FsbGJhY2s+IG1fdGltZXI7
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19DQUNIRURfUkVTT1VSQ0UoVG9DbGFzc05hbWUsIENhY2hlZFJlc291cmNlVHlwZSkg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaAppbmRleCA5NjkzM2UxM2Q1NGQ3M2MyYzY0YTRiMTdjYzg0NzdjYzQ4MWU5NzlkLi43NTk1
MTEwNDk3MTZkMjg4YjNkZmE0YThlYzhmYjcxNjAyMzY4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaApAQCAtMjUsOSArMjUs
OCBAQAogI2lmbmRlZiBDYWNoZWRSZXNvdXJjZUNsaWVudF9oCiAjZGVmaW5lIENhY2hlZFJlc291
cmNlQ2xpZW50X2gKIAotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKKwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiAKIGNsYXNzIENhY2hlZFJlc291cmNl
Q2xpZW50IHsKQEAgLTQ0LDEzICs0MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVk
UmVzb3VyY2VDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVwcmVjYXRlZERpZFJlY2VpdmVD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopIHsgfQotICAgIAorCiAgICAgc3RhdGljIENh
Y2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBCYXNlUmVzb3Vy
Y2VUeXBlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VD
bGllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KIAogcHJvdGVjdGVk
OgogICAgIENhY2hlZFJlc291cmNlQ2xpZW50KCkgeyB9CiB9OworCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5k
ZXggMzJhNjFiM2IzYTkzOTgwNjlhMWQyZmJmZjVkNzZlOTZmODRiNTdiYi4uYTUyMzAyMDFiMGY3
MTBkMzlhNWJkYmIxYTZkNmEyYjg1MjYwN2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC0yMywxMCArMjMsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCiAKLSNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFu
ZGxlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTEsNyArNDgsNyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVu
Y29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsK
IH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
dG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRv
IHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggYzFjNjAzZjM0MjljYzFlYzhiYTU1MGMwYzU1MDBm
YjlhYmMyNjZhYi4uYTc5MWNkODMxZDM2ZmE1YzhlZmE3NTZjZWUyYmMxYzA3Y2FjZDM3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAg
LTM3LDE1ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBTVkdEb2N1bWVudCogZG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAKLXByb3RlY3RlZDoKLSAgICBSZWZQ
dHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Ci0gICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKLQogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFj
ZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8U1ZHRG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVj
b2RlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggZjcxYTVlOGFhZWNlOGIzYWIxOTVkZTY1
NGUxNDExZDM3OTVlYTAwMy4uZjhiYzMzYzdiMzI1MWRjNDIzODBmNWM0NjgzZmY0ZTk0ZTM0OWQ5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAg
LTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUgIlJlc291
cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNzYsMTQgKzc2LDEzIEBAIGNvbnN0IFN0cmlu
ZyYgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQogICAgICAgICBzZXREZWNvZGVkU2l6ZShtX3Njcmlw
dC5zaXplSW5CeXRlcygpKTsKICAgICB9CiAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIu
cmVzdGFydCgpOwotICAgIAogICAgIHJldHVybiBtX3NjcmlwdDsKIH0KIAotdm9pZCBDYWNoZWRT
Y3JpcHQ6OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFNj
cmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6
IDApOworICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkxYzk4NmEyNTRiOWMzNzFjMmZkMTlm
M2RmOTg5NDU3NDdlOWJlMDYuLjkzOGU5MTg3Y2VhNGMwOWMyZDcwYmU2MjE3YTY0OWJkZDc3MzIz
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTMw
LDM2ICszMCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKLSAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOworY2xhc3MgVGV4
dFJlc291cmNlRGVjb2RlcjsKIAotICAgIGNsYXNzIENhY2hlZFNjcmlwdCBmaW5hbCA6IHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZSB7Ci0gICAgcHVibGljOgotICAgICAgICBDYWNoZWRTY3JpcHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBTZXNzaW9uSUQpOwot
ICAgICAgICB2aXJ0dWFsIH5DYWNoZWRTY3JpcHQoKTsKK2NsYXNzIENhY2hlZFNjcmlwdCBmaW5h
bCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgQ2FjaGVkU2NyaXB0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgU2Vzc2lvbklEKTsK
KyAgICB2aXJ0dWFsIH5DYWNoZWRTY3JpcHQoKTsKIAotICAgICAgICBjb25zdCBTdHJpbmcmIHNj
cmlwdCgpOworICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCk7CiAKLSAgICAgICAgU3RyaW5nIG1p
bWVUeXBlKCkgY29uc3Q7CisgICAgU3RyaW5nIG1pbWVUeXBlKCkgY29uc3Q7CiAKICNpZiBFTkFC
TEUoTk9TTklGRikKLSAgICAgICAgYm9vbCBtaW1lVHlwZUFsbG93ZWRCeU5vc25pZmYoKSBjb25z
dDsKKyAgICBib29sIG1pbWVUeXBlQWxsb3dlZEJ5Tm9zbmlmZigpIGNvbnN0OwogI2VuZGlmCiAK
LSAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWRE
YXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVz
Q29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25v
cmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCi0gICAgICAgIFN0cmluZyBtX3NjcmlwdDsKLSAgICAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICB9OworICAgIFN0
cmluZyBtX3NjcmlwdDsKKyAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVy
OworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IDcwOWZhZDg0NDNiN2JjMWEzOGYx
ZWE4MGQyNjRmZjBkMjkzZDk5NzAuLjcxNTU5MjIwNTdlZWFlZGYxZjA1ZDBkMDdmZGYwYjUwZTZk
ZGZhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDQsMjQgKzQzLDI2IEBAIENhY2hlZFRleHRUcmFj
azo6Q2FjaGVkVGV4dFRyYWNrKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
LCBTZXNzaW9uCiB7CiB9CiAKLUNhY2hlZFRleHRUcmFjazo6fkNhY2hlZFRleHRUcmFjaygpCit2
b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlRGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiB7Ci19
Ci0KLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjphZGREYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKiBk
YXRhKQotewotICAgIEFTU0VSVChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1
ZmZlckRhdGEpOworICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0
YSk7CiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkg
PyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291
cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKLSAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VD
bGllbnQgKmNsaWVudCA9IHdhbGtlci5uZXh0KCkpCisgICAgd2hpbGUgKENhY2hlZFJlc291cmNl
Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0
ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UodGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0
VHJhY2s6OmFkZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQoreworICAgIHVwZGF0ZURh
dGEoJmRhdGEpOworICAgIENhY2hlZFJlc291cmNlOjphZGREYXRhQnVmZmVyKGRhdGEpOworfQor
Cit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEp
CiB7Ci0gICAgYWRkRGF0YUJ1ZmZlcihkYXRhKTsKKyAgICB1cGRhdGVEYXRhKGRhdGEpOwogICAg
IENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggNGMzZjM4YWQ0NjhlMTUx
YTgwMTJhOWQ5Y2U5MTRmYjM4YjNiMmQ1Mi4uM2MxMTI3ZTgzYjg5OWI0M2IzODBhOTYzYjk2NmQ2
M2VlNmJjYWRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suaApAQCAtMzYsMTIgKzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENh
Y2hlZFRleHRUcmFjayBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CiBwdWJsaWM6CiAg
ICAgQ2FjaGVkVGV4dFRyYWNrKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlc3Npb25JRCk7Ci0g
ICAgdmlydHVhbCB+Q2FjaGVkVGV4dFRyYWNrKCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciopIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHVwZGF0ZURhdGEoU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggNjZmMWVjNWE3YWU0YmViMzE0NTMxNThk
ZGUyZjk5NmQxOWI0MmU3NS4uNzc5NTJiOGFjYzAxMmU3M2U5ZTc5YTlmNGI4NzYzODI3NDgwMzdm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgiCi0jaW5j
bHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBA
IC00Niw2ICs0NiwxMCBAQCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpDYWNoZWRYU0xTdHlsZVNoZWV0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LAogICAgIHNldEFjY2VwdCgi
dGV4dC94bWwsIGFwcGxpY2F0aW9uL3htbCwgYXBwbGljYXRpb24veGh0bWwreG1sLCB0ZXh0L3hz
bCwgYXBwbGljYXRpb24vcnNzK3htbCwgYXBwbGljYXRpb24vYXRvbSt4bWwiKTsKIH0KIAorQ2Fj
aGVkWFNMU3R5bGVTaGVldDo6fkNhY2hlZFhTTFN0eWxlU2hlZXQoKQoreworfQorCiB2b2lkIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykK
IHsgIAogICAgIEFTU0VSVChjLT5yZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRTdHlsZVNo
ZWV0Q2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CkBAIC02MywxMiArNjcsMTIgQEAgU3RyaW5nIENh
Y2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVy
LT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0
OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRh
OwotICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7
Ci0gICAgaWYgKG1fZGF0YS5nZXQoKSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAg
bV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVk
U2l6ZSgpKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgK
aW5kZXggZDk5MjFjMmM1ODAzMTY3MmRhMjM4N2E4YzZiNzJkYTUyMjVjNDViOC4uMGUwMGU2NzY2
NmE0MDRhMWZhZDI5YWEyOTUzOWYzZThiZjU0MWM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBAIC0yOSwzNCArMjksMjkgQEAK
ICNpZiBFTkFCTEUoWFNMVCkKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCi0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjsKLSAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOworY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKIAotICAgIGNsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQgZmlu
YWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVk
WFNMU3R5bGVTaGVldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOworY2xhc3Mg
Q2FjaGVkWFNMU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CitwdWJs
aWM6CisgICAgQ2FjaGVkWFNMU3R5bGVTaGVldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNz
aW9uSUQpOworICAgIHZpcnR1YWwgfkNhY2hlZFhTTFN0eWxlU2hlZXQoKTsKIAotICAgICAgICBj
b25zdCBTdHJpbmcmIHNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zaGVldDsgfQorICAgIGNvbnN0
IFN0cmluZyYgc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0OyB9CiAKLSAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRlOworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlk
ZTsKIAotICAgICAgICBTdHJpbmcgbV9zaGVldDsKLSAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+IG1fZGVjb2RlcjsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCopIG92ZXJyaWRlOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VCdWZmZXIqKSBvdmVycmlkZTsKLSAgICB9OworICAgIFN0cmluZyBtX3NoZWV0OworICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Cit9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNv
dXJjZUxvYWRlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxv
YWRlckNGLmNwcAppbmRleCA1NzY3NjA0YWVkNTM5ZWM5OWUxODBkNTk3ZGU5ZTk4N2NkM2VmODhi
Li42OWUyOTk3ZjRlY2Y1YjE0YzA1NTBlMmExOWUxYTg2MTE2ZThkMWZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCkBAIC01MSw4ICs1
MSw4IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJh
eVJlZiBkYXRhQXJyYXkpCiAgICAgICAgICAgICAvLyBiZWluZyBjYW5jZWxsZWQuIEJhaWwgb3V0
IGlmIHdlIG5vIGxvbmdlciBoYXZlIGEgY2FjaGVkIHJlc291cmNlLgogICAgICAgICAgICAgaWYg
KCFtX3Jlc291cmNlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChS
ZXNvdXJjZUJ1ZmZlciogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCi0gICAg
ICAgICAgICAgICAgbV9yZXNvdXJjZS0+YWRkRGF0YUJ1ZmZlcihyZXNvdXJjZURhdGEpOworICAg
ICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQor
ICAgICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZERhdGFCdWZmZXIoKnJlc291cmNlRGF0YSk7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBDRkRhdGFSZWYgY2ZEYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZGF0YUFy
cmF5LCBpKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhciAqPihDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4
IGYxMmUzOTk4MmE0ODMyNjNlOTFlY2MxYTVkM2Y1YjYxMjcwMGQxZDAuLmEzNTM5YjhiMTdmMDgx
Y2Y4MjFlNzc4YTA2MjJiNTg4ZmQ3N2E2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERpc2tDYWNoZU1vbml0b3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2Vk
KFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXgg
Y2E2MDhmN2Q2NTE3OTFlOTI1Yzg5ZWI0MjY3ZGNiZjQ2OWI2ZDVjZi4uMWMxYmQ1ZWU5MGYwZWE4
YWUyNzRkYWJjNzcxZWZiMTBkZDM4NzE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAg
RGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFNlc3Npb25JRCBzZXMKICAgICAgICAgaWYgKCFmaWxlQmFja2VkQnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1vbml0b3ItPnJlc291cmNlQmVjYW1lRmls
ZUJhY2tlZChmaWxlQmFja2VkQnVmZmVyKTsKKyAgICAgICAgbW9uaXRvci0+cmVzb3VyY2VCZWNh
bWVGaWxlQmFja2VkKCpmaWxlQmFja2VkQnVmZmVyKTsKICAgICB9OwogCiAjaWYgVVNFKFdFQl9U
SFJFQUQpCkBAIC0xMjEsNyArMTIxLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9u
aXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXMKICAgICBf
Q0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hl
ZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAot
dm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6
OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIp
CiB7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3Vy
Y2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFy
ZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5kZXgg
NTQwMmViMDg2M2M1OGMyYWYyYjA0OGJhOWFjNzQ0NzdmYzE5MzQ3OC4uNTY5MjFjZDkzNzdmYzEy
ZTBlZTFkMDNkOTM0NDA3MWM0YWI0Y2JmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkxvYWRlci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJJY29uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNp
bmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
QEAgLTg1LDE2ICs4NCwxNiBAQCB2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSkKIAogICAgIC8vIElmIHdlIGdvdCBhIHN0YXR1cyBjb2RlIGlu
ZGljYXRpbmcgYW4gaW52YWxpZCByZXNwb25zZSwgdGhlbiBsZXRzCiAgICAgLy8gaWdub3JlIHRo
ZSBkYXRhIGFuZCBub3QgdHJ5IHRvIGRlY29kZSB0aGUgZXJyb3IgcGFnZSBhcyBhbiBpY29uLgot
ICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gZGF0YSA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZl
cigpOworICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICBp
bnQgc3RhdHVzID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBp
ZiAoc3RhdHVzICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkKLSAgICAgICAgZGF0
YSA9IDA7CisgICAgICAgIGRhdGEgPSBudWxscHRyOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIg
cGRmTWFnaWNOdW1iZXJbXSA9ICIlUERGIjsKICAgICBzdGF0aWMgdW5zaWduZWQgcGRmTWFnaWNO
dW1iZXJMZW5ndGggPSBzaXplb2YocGRmTWFnaWNOdW1iZXIpIC0gMTsKICAgICBpZiAoZGF0YSAm
JiBkYXRhLT5zaXplKCkgPj0gcGRmTWFnaWNOdW1iZXJMZW5ndGggJiYgIW1lbWNtcChkYXRhLT5k
YXRhKCksIHBkZk1hZ2ljTnVtYmVyLCBwZGZNYWdpY051bWJlckxlbmd0aCkpIHsKICAgICAgICAg
TE9HKEljb25EYXRhYmFzZSwgIkljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIElnbm9yaW5n
IGljb24gYXQgJXMgYmVjYXVzZSBpdCBhcHBlYXJzIHRvIGJlIGEgUERGIiwgcmVzb3VyY2UtPnVy
bCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgZGF0YSA9IDA7CisgICAgICAg
IGRhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9h
ZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2Ui
LCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMTAyLDcgKzEw
MSw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQogICAgIC8vIFNldHRpbmcgdGhlIGljb24gZGF0YSBvbmx5IGFmdGVyIGNvbW1pdHRp
bmcgdG8gdGhlIGRhdGFiYXNlIGVuc3VyZXMgdGhhdCB0aGUgZGF0YSBpcwogICAgIC8vIGtlcHQg
aW4gbWVtb3J5IChzbyBpdCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJh
c2UgYXN5bmNocm9ub3VzbHkpLCBzaW5jZQogICAgIC8vIHRoZXJlIGlzIGEgcGFnZSBVUkwgcmVm
ZXJlbmNpbmcgaXQuCi0gICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRh
dGEgPyBkYXRhLT5zaGFyZWRCdWZmZXIoKSA6IDAsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKSk7
CisgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIHJlc291cmNl
LT51cmwoKS5zdHJpbmcoKSk7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRj
aERpZFJlY2VpdmVJY29uKCk7CiAgICAgc3RvcExvYWRpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VCdWZmZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL1Jlc291cmNlQnVmZmVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1NGNmOWI3OTA5YzM3OTQyZGJjZDFhZjFlZDNiZjYyZWRiNGMxYmNlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9tYWMvUmVzb3VyY2VCdWZmZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCi0KLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZXRhaW5QdHI8TlNEYXRhPiBSZXNv
dXJjZUJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXIt
PmNyZWF0ZU5TRGF0YSgpOwotfQotCi12b2lkIFJlc291cmNlQnVmZmVyOjp0cnlSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoU2hhcmVkQnVmZmVyKiBuZXdDb250ZW50cykKLXsKLSAgICBpZiAo
IW1fc2hhcmVkQnVmZmVyKQotICAgICAgICBtX3NoYXJlZEJ1ZmZlciA9IG5ld0NvbnRlbnRzOwot
ICAgIGVsc2UKLSAgICAgICAgbV9zaGFyZWRCdWZmZXItPnRyeVJlcGxhY2VDb250ZW50c1dpdGhQ
bGF0Zm9ybUJ1ZmZlcihuZXdDb250ZW50cyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCmluZGV4
IGEwMTVlOTg3YjYwMzJkYTdlMTE2OGUyNjcyNGU4YzFiM2ZhMDkwODguLjNlY2Q1OTdmZjI5NWY3
ZDY3MDg2ODZmNzU4NDRjOWQ2Y2RmODhjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAKICNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJB
Q0spCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiUmVz
b3VyY2VCdWZmZXIuaCIKICNlbmRpZgogCiAjaWYgVVNFKENGTkVUV09SSykKQEAgLTgzLDcgKzgz
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVm
IGRhdGFBcnJheSkKIAogICAgICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBCdWZmZXJEYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1fcmVzb3VyY2VEYXRhKQotICAg
ICAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYTE2MTJkYjdmNDZm
M2M0OTdlZTZhOWNkMjA0ZTM0Y2YxZjI0MWMyOS4uMDZiZGIzOGI1OTA2ZDhlYzExNGYwYzIxNWNh
M2VkMWQzNGIxMjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNFKE5FVFdP
UktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2VnbWVu
dFNpemUgPSAweDEwMDA7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2VnbWVudFBvc2l0aW9uTWFz
ayA9IDB4MEZGRjsKIApAQCAtNTYsNiArNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZVNl
Z21lbnQoY2hhciogcCkKIHsKICAgICBmYXN0RnJlZShwKTsKIH0KKwogI2VuZGlmCiAKIFNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKQEAgLTIxNCw5ICsyMTYsOCBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6Y2xlYXIoKQogICAgIGNsZWFyUGxhdGZvcm1EYXRhKCk7CiAgICAgCiAjaWYgIVVTRShO
RVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgZnJlZVNlZ21lbnQobV9zZWdtZW50
c1tpXSk7Ci0KKyAgICBmb3IgKGNoYXIqIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICBm
cmVlU2VnbWVudChzZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAjZWxzZQogICAg
IG1fZGF0YUFycmF5LmNsZWFyKCk7CkBAIC0yMjYsMjQgKzIyNywyNiBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6Y2xlYXIoKQogICAgIGNsZWFyRGF0YUJ1ZmZlcigpOwogfQogCi1QYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKK1Bhc3NSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNsb25lKGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIpKTsKKyAgICBQYXNzUmVmPFNoYXJl
ZEJ1ZmZlcj4gY2xvbmUgeyBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcikgfTsKICAgICBpZiAo
aGFzUGxhdGZvcm1EYXRhKCkpIHsKLSAgICAgICAgY2xvbmUtPmFwcGVuZChkYXRhKCksIHNpemUo
KSk7CisgICAgICAgIGNsb25lLmdldCgpLmFwcGVuZChkYXRhKCksIHNpemUoKSk7CiAgICAgICAg
IHJldHVybiBjbG9uZTsKICAgICB9CiAKLSAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwotICAg
IGNsb25lLT5tX2J1ZmZlci0+ZGF0YS5yZXNlcnZlQ2FwYWNpdHkobV9zaXplKTsKLSAgICBjbG9u
ZS0+bV9idWZmZXItPmRhdGEuYXBwZW5kKG1fYnVmZmVyLT5kYXRhLmRhdGEoKSwgbV9idWZmZXIt
PmRhdGEuc2l6ZSgpKTsKKyAgICBjbG9uZS5nZXQoKS5tX3NpemUgPSBtX3NpemU7CisgICAgY2xv
bmUuZ2V0KCkubV9idWZmZXItPmRhdGEucmVzZXJ2ZUNhcGFjaXR5KG1fc2l6ZSk7CisgICAgY2xv
bmUuZ2V0KCkubV9idWZmZXItPmRhdGEuYXBwZW5kKG1fYnVmZmVyLT5kYXRhLmRhdGEoKSwgbV9i
dWZmZXItPmRhdGEuc2l6ZSgpKTsKKwogI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FM
TEJBQ0spCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGNsb25lLT5tX2J1ZmZlci0+ZGF0YS5hcHBlbmQobV9zZWdtZW50c1tpXSwg
c2VnbWVudFNpemUpOworICAgIGZvciAoY2hhciogc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAg
ICAgIGNsb25lLmdldCgpLm1fYnVmZmVyLT5kYXRhLmFwcGVuZChzZWdtZW50LCBzZWdtZW50U2l6
ZSk7CiAjZWxzZQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGFBcnJheS5zaXpl
KCk7ICsraSkKLSAgICAgICAgY2xvbmUtPmFwcGVuZChtX2RhdGFBcnJheVtpXS5nZXQoKSk7Cisg
ICAgZm9yIChhdXRvJiBkYXRhIDogbV9kYXRhQXJyYXkpCisgICAgICAgIGNsb25lLmdldCgpLmFw
cGVuZChkYXRhLmdldCgpKTsKICNlbmRpZgorCiAgICAgcmV0dXJuIGNsb25lOwogfQogCkBAIC0y
NzUsMTcgKzI3OCwxOSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXJEYXRhQnVmZmVyKCkKIH0K
IAogI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisKIHZvaWQgU2hhcmVk
QnVmZmVyOjpjb3B5QnVmZmVyQW5kQ2xlYXIoY2hhciogZGVzdGluYXRpb24sIHVuc2lnbmVkIGJ5
dGVzVG9Db3B5KSBjb25zdAogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NlZ21l
bnRzLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChjaGFyKiBzZWdtZW50IDogbV9zZWdtZW50cykg
ewogICAgICAgICB1bnNpZ25lZCBlZmZlY3RpdmVCeXRlc1RvQ29weSA9IHN0ZDo6bWluKGJ5dGVz
VG9Db3B5LCBzZWdtZW50U2l6ZSk7Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgbV9zZWdt
ZW50c1tpXSwgZWZmZWN0aXZlQnl0ZXNUb0NvcHkpOworICAgICAgICBtZW1jcHkoZGVzdGluYXRp
b24sIHNlZ21lbnQsIGVmZmVjdGl2ZUJ5dGVzVG9Db3B5KTsKICAgICAgICAgZGVzdGluYXRpb24g
Kz0gZWZmZWN0aXZlQnl0ZXNUb0NvcHk7CiAgICAgICAgIGJ5dGVzVG9Db3B5IC09IGVmZmVjdGl2
ZUJ5dGVzVG9Db3B5OwotICAgICAgICBmcmVlU2VnbWVudChtX3NlZ21lbnRzW2ldKTsKKyAgICAg
ICAgZnJlZVNlZ21lbnQoc2VnbWVudCk7CiAgICAgfQogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsK
IH0KKwogI2VuZGlmCiAKIGNvbnN0IFZlY3RvcjxjaGFyPiYgU2hhcmVkQnVmZmVyOjpidWZmZXIo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjY2IwMjlk
Nzk4MThmNmQ5Y2JkN2FmYmU2NTUwNGUwNTY2OWI3M2U5Li5mNTkxMjlhMTNhZDg2MTljYjY0NmUz
NDczM2UwYjZlOGMwNThmODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYp
OwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0Owor
ICAgIFBhc3NSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0
dXJuIHRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgYnl0ZXMgYWZ0ZXIgInBvc2l0aW9uIi4gImRh
dGEiCiAgICAgLy8gcG9pbnRzIHRvIHRoZSBmaXJzdCBieXRlLgpAQCAtMTE4LDcgKzExOCw3IEBA
IHB1YmxpYzoKICAgICAvLyAgICAgIH0KICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBnZXRT
b21lRGF0YShjb25zdCBjaGFyKiYgZGF0YSwgdW5zaWduZWQgcG9zaXRpb24gPSAwKSBjb25zdDsK
IAotICAgIHZvaWQgdHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1
ZmZlciopOworICAgIHZvaWQgdHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzUGxhdGZvcm1EYXRhKCkg
Y29uc3Q7CiAKICAgICBzdHJ1Y3QgRGF0YUJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhQnVmZmVyPiB7CkBAIC0xNTgsNiArMTU4LDcgQEAgcHJpdmF0ZToKICNlbHNlCiAg
ICAgbXV0YWJsZSBWZWN0b3I8Y2hhcio+IG1fc2VnbWVudHM7CiAjZW5kaWYKKwogI2lmIFVTRShD
RikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcAppbmRleCA1Njc3MDdiZmM3ZmI5N2FkZTUxY2I5MzNiNTZjOGVkMGI1OGZh
ZmU1Li5iYmYxODVlMDA3MjNiMTNlNzYwOTNmYzJjMTY1MWQzNjY1M2VlMDdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC05MiwxMyArOTIs
MTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkKICAgICBtX2NmRGF0
YSA9IDA7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjp0cnlSZXBsYWNlQ29udGVudHNXaXRoUGxh
dGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyKiBuZXdDb250ZW50cykKK3ZvaWQgU2hhcmVkQnVmZmVy
Ojp0cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyJiBuZXdD
b250ZW50cykKIHsKLSAgICBpZiAoIW5ld0NvbnRlbnRzLT5tX2NmRGF0YSkKKyAgICBpZiAoIW5l
d0NvbnRlbnRzLm1fY2ZEYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBjbGVhcigpOwotICAg
IG1fY2ZEYXRhID0gbmV3Q29udGVudHMtPm1fY2ZEYXRhOworICAgIG1fY2ZEYXRhID0gbmV3Q29u
dGVudHMubV9jZkRhdGE7CiB9CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjptYXliZUFwcGVuZFBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXIqIG5ld0NvbnRlbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA1ODkxZDhjNzcxYzNmNTY1N2I2MzJjYjE2OThiZjdmZGUyZjY5MmViLi41MzJh
Yzg0MGE3OWVhNmE3NmMwNWNkMzc1YzkxZGVmZDgxOGY5NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXJfaAogCiAjaWYgRU5BQkxFKFZJREVPKQorCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzUsNyArMzYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQz
LDEwICs0Myw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKGNvbnN0IGNoYXIqLCBpbnQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJSZWNlaXZl
ZChTaGFyZWRCdWZmZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRGaW5p
c2hlZChTaGFyZWRCdWZmZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKCkg
eyB9CiAjaWYgVVNFKFNPVVApCiAgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZm
ZXIoc2l6ZV90IC8qcmVxdWVzdGVkU2l6ZSovLCBzaXplX3QmIC8qYWN0dWFsU2l6ZSovKSB7IHJl
dHVybiBudWxscHRyOyB9OwogI2VuZGlmCkBAIC02OCw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQor
ICAgIGV4cGxpY2l0IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCiAgICAgICAgIDogbV9j
bGllbnQoV1RGOjptb3ZlKGNsaWVudCkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBmMjBlNmEwNTg0
YzhkNGZkMWNhNjA4YjA0YmFjYzg1MGM4MThlZWQ2Li4zZTY1YTUxODkxY2MwZDMxNzM5ZGI1N2U0
OTFmMmMyN2NhM2IzOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1w
b3J0ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgiCi0jaW1wb3J0ICJSZXNv
dXJjZUJ1ZmZlci5oIgogI2ltcG9ydCAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW1wb3J0
ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCkBAIC0xNTIsNyArMTUx
LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0V2l0aFJl
c291cmNlKENhY2hlZFJlc291cmNlKiByZXNvdXIKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGRhdGEgPSByZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSA/IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKSA6
IDA7CisgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggZjlkNzk5MTIzYWIyYTQ1ZTU4MTg4YjY3NTFj
YzhlY2IzZTE4YTFhNS4uMTJmZGViYTliNjdmMjU2ZWE0Y2U4M2NlYTA4MTlhNWQ0Y2RjMjM2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTc0LDcg
Kzc0LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgZmluYWwgOiBwdWJs
aWMgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2wKICAgICAgICAgdmlydHVhbCB2b2lkIGRh
dGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChTaGFyZWRCdWZm
ZXIqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZCgpIG92ZXJy
aWRlOwogfTsKIAogY2xhc3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMg
UmVzb3VyY2VIYW5kbGVDbGllbnQsIHB1YmxpYyBTdHJlYW1pbmdDbGllbnQgewpAQCAtMTAzMSw3
ICsxMDMxLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZhaWxl
ZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3Ry
ZWFtKHNyYy0+cHJpdi0+YXBwc3JjKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6bG9hZEZpbmlzaGVkKFNoYXJlZEJ1ZmZlciopCit2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmluaXNoZWQoKQogewogICAgIGhhbmRsZU5vdGlmeUZpbmlz
aGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IGNlYTkwNDg1MzVhZjMzOTEwNDQ1NTM2YWY4YTUwZDc4NzMxMDJkZjguLjUwMWEzOGNh
NTcyOWVjYjdhOTgxNjQ0OTQ3ZDcxZDMyN2YxZjJmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0ICJQ
YXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lt
cG9ydCAiUmVuZGVySW1hZ2UuaCIKLSNpbXBvcnQgIlJlc291cmNlQnVmZmVyLmgiCiAjaW1wb3J0
ICJUZXh0LmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tCmluZGV4IGIwMjJjNzE1M2I4Mzg5ZTdjZGM3NjkwYmI5YTk2OWNiOGEy
MTc3YjcuLmRkYjhiNjIxN2MwNzI4YTBmYjYzZDgzZmM0Y2FiZjE1YTZhNDc3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTUzLDcgKzUzLDYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hp
dmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVPYmpDRXh0cmFzLmg+CkBAIC00NTksNyArNDU4LDcgQEAgLSAodm9pZClmaW5hbGl6ZQog
CiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWluUmVz
b3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0
ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJl
c291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gbWFpblJlc291cmNl
RGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDA4NjNiZGVmYWVkOGRhMWUxZGM5YjJlYWM4MjZjYTY2
NjQ4NzRmYzQuLjk0NGM1Yzg0MjI5NWJkMzM3ZGJkNmFjMTI0ZjkxMzRlOGJkNmYxMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTA4LDcgKzEwOCw2IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jl
c291cmNlQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2ltcGxlRm9udERhdGEuaD4KQEAgLTM5NTUsNyArMzk1NCw3IEBAIC0gKE5TQXJyYXkgKiluYW1l
c09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5h
dGlvbgogICAgIE5TVVJMICpkcmFnZ2luZ0ltYWdlVVJMID0gbmlsOwogICAgIAogICAgIGlmIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZSogdGlmZlJlc291cmNlID0gW3NlbGYgcHJvbWlzZWREcmFnVElG
RkRhdGFTb3VyY2VdKSB7Ci0gICAgICAgIGlmIChSZXNvdXJjZUJ1ZmZlciAqYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Q2FjaGVkUmVzb3VyY2UqPih0aWZmUmVzb3VyY2UpLT5yZXNvdXJjZUJ1ZmZlcigp
KSB7CisgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSB0aWZmUmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCkpIHsKICAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gdGlmZlJlc291
cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAgICAgICAgIGRyYWdnaW5nSW1h
Z2VVUkwgPSBbcmVzcG9uc2UgVVJMXTsKICAgICAgICAgICAgIHdyYXBwZXIgPSBbW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOTU0YmJhNDc0
MTk5MjMzZmE4NDU2YzkwMTcxZmNiOWI2ODBlODk5NS4uOGUzZTI1ODJkNTI4Njc5NDM5OTExYzVk
NTkwNDYyNjVmN2VkYzk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NlcnRpZmljYXRlSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oPgpAQCAtNDA5LDE4ICs0MDgs
MjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoVGlt
ZXI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiYpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CisgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9u
b3VzKCkpOwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTApCiAgICAgU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZSBzaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIoc2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGUsIGJ1ZmZlcik7CisgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFy
ZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVyKHNoYXJlYWJsZVJlc291cmNlSGFuZGxlLCAqYnVm
ZmVyKTsKICAgICBpZiAoIXNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIC8vIFNpbmNlIHdlJ3JlIGRlbGl2ZXJpbmcgdGhpcyByZXNvdXJjZSBieSBvdXJzZWx2ZXMg
YWxsIGF0IG9uY2UgYW5kIGRvbid0IG5lZWQgYW55bW9yZSBkYXRhIG9yIGNhbGxiYWNrcyBmcm9t
IHRoZSBuZXR3b3JrIGxheWVyLCBhYm9ydCB0aGUgbG9hZGVyLgorICAgICAgICAvLyBTaW5jZSB3
ZSdyZSBkZWxpdmVyaW5nIHRoaXMgcmVzb3VyY2UgYnkgb3Vyc2VsdmVzIGFsbCBhdCBvbmNlIGFu
ZCBkb24ndCBuZWVkIGFueSBtb3JlIGRhdGEgb3IgY2FsbGJhY2tzIGZyb20gdGhlIG5ldHdvcmsg
bGF5ZXIsIGFib3J0IHRoZSBsb2FkZXIuCiAgICAgICAgIGFib3J0KCk7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzb3VyY2Uoc2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGUsIGN1cnJlbnRUaW1lKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgorCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVu
Y2UoYnVmZmVyKTsKICAgICBzZW5kQWJvcnRpbmdPbkZhaWx1cmUoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YShkYXRhUmVmZXJlbmNlLCBlbmNvZGVkRGF0YUxlbmd0
aCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAppbmRleCAyNzNlMTMxOTllODE5MmQzZjY2NGM4OGIxNmIyODhiYTRl
YWFjNTQyLi45Y2VlODYxOGMyZTcxZGM3NjE1ZDk1NTJjM2I0OWIzY2YwYTJjNjdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNDYsNyArNDYsNiBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxS
ZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwotY2xhc3MgUmVzb3VyY2VCdWZmZXI7CiBjbGFz
cyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KQEAgLTkyLDcgKzkx
LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTApCiAgICAgc3RhdGljIHZvaWQg
dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSYsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyB2b2lk
IHRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIoU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZSYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopOworICAgIHN0YXRpYyB2b2lkIHRyeUdl
dFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIoU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICNpZiBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IuaAppbmRleCBiZDhjMGIw
YmFlOGY5NTZhYjkxMWI0NTI2ZWYzNWUxYWMzMzkwMWNmLi41ODNjZWRiNjVmZTcxOWM0NzE1Zjkx
ZjZlMWZjYTQyODM2OWQ0Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IuaApAQCAtNDgsNyArNDgs
NyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtEaXNrQ2FjaGVNb25pdG9yKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciopOwogCiAgICAgLy8gV2ViQ29yZTo6RGlz
a0NhY2hlTW9uaXRvcgotICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQo
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgdmlydHVhbCBJUEM6OkNv
bm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rpc2tDYWNoZU1vbml0
b3IubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rpc2tDYWNo
ZU1vbml0b3IubW0KaW5kZXggYTIzYzU4YmM3NmE4MmFhZWU3MGRjOTFmZDkwN2VhY2E1YTNjNTMw
ZC4uNTUxZDA3NjkzMjc5YmJmYjFmNDIzYzRlNTI3YjdmMjNhYTc1OTNmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9y
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrRGlza0Nh
Y2hlTW9uaXRvci5tbQpAQCAtNTksMTAgKzU5LDEwIEBAIE5ldHdvcmtEaXNrQ2FjaGVNb25pdG9y
OjpOZXR3b3JrRGlza0NhY2hlTW9uaXRvcihDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJl
CiB7CiB9CiAKLXZvaWQgTmV0d29ya0Rpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmls
ZUJhY2tlZChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQg
TmV0d29ya0Rpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRC
dWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSBoYW5kbGU7Ci0gICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5k
bGVGcm9tU2hhcmVkQnVmZmVyKGhhbmRsZSwgZmlsZUJhY2tlZEJ1ZmZlci5nZXQoKSk7CisgICAg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVm
ZmVyKGhhbmRsZSwgZmlsZUJhY2tlZEJ1ZmZlcik7CiAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbQppbmRleCA0M2FlZTBh
NTA3OGNmNTlmZWYyYjI5YmZmYTYzOGU4NmM0MThlNjI3Li5lMTMzN2QwMzUzZjM4MGRmNmFiODk5
OTllOGZkY2QxNGQyNjJmZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0KQEAgLTg0LDcg
Kzg0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRs
ZUZyb21DRlVSTENhY2hlZFJlc3BvbnNlKFNoYXJlYWIKICAgICB0cnlHZXRTaGFyZWFibGVIYW5k
bGVGcm9tQ0ZEYXRhKGhhbmRsZSwgZGF0YSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVyKFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUmIGhhbmRsZSwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIHN0YXRpYyBDRlVSTENhY2hlUmVmIGNhY2hlID0gQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxD
YWNoZSgpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVk
QnVmZmVyKFNoYXJlYWJsZVJlc291CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ0ZEYXRhUmVmIGRhdGEgPSBidWZmZXItPmV4aXN0aW5nQ0ZEYXRhKCk7CisgICAgQ0ZE
YXRhUmVmIGRhdGEgPSBidWZmZXIuZXhpc3RpbmdDRkRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTAyLDcgKzEwMiw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVyKFNoYXJlYWJsZVJl
c291CiAKICAgICB0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tQ0ZEYXRhKGhhbmRsZSwgZGF0YSk7
CiB9Ci0jZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCisK
KyNlbmRpZiAvLyBJT1MgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkw
CiAKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmZpbGVCYWNrZWRSZXNvdXJjZU1pbmlt
dW1TaXplKCkKIHsKQEAgLTExMCw2ICsxMTEsNyBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpmaWxlQmFja2VkUmVzb3VyY2VNaW5pbXVtU2l6ZSgpCiB9CiAKICNpZiBVU0UoQ0ZORVRX
T1JLKQorCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbENhY2hlUmVzcG9uc2VBc3lu
YyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNmUmVzcG9u
c2UpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBtX2hhbmRsZSk7CkBA
IC0xMzMsNiArMTM1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJl
c3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWMKIAogICAgIG1faGFuZGxl
LT5jb250aW51ZVdpbGxDYWNoZVJlc3BvbnNlKG5zUmVzcG9uc2UpOwogfQorCiAjZW5kaWYgLy8g
IVVTRShDRk5FVFdPUkspCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKaW5kZXggNGY4ZjQ4ZDVjMWNhNzZlYzFlMGY1
M2ExMjU2ZWFmMWQzOGM2MmNhMy4uZTY4MDZiMDc0MTNhZDJjZTI5ODllOTQyODliOWQxODgwM2E5
MjdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVu
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCkBA
IC04MywyMSArODMsMjcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zaXplOwogfTsKIAotY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTogcHVibGljIERhdGFSZWZlcmVuY2UgeworY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSA6IHB1YmxpYyBEYXRhUmVmZXJlbmNlIHsKIHB1
YmxpYzoKKyAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBkb2Vzbid0IGhhbmRsZSBudWxsLCBzbyB0
aGUgYXJndW1lbnQgc2hvdWxkIGJlIGEgcmVmZXJlbmNlIG9yIFBhc3NSZWYuCiAgICAgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKKyAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIpCiAgICAgewotICAgICAgICBtX2J1ZmZlciA9IGJ1ZmZlcjsK
ICAgICB9CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLT5zaXpl
KCk7IH0KK3ByaXZhdGU6CisgICAgLy8gRklYTUU6IEl0IGlzIGEgYmFkIGlkZWEgdG8gdmlvbGF0
ZSB0aGUgTGlza292IFN1YnN0aXR1dGlvbiBQcmluY2lwbGUgYXMgd2UgZG8gaGVyZS4KKyAgICAv
LyBTaW5jZSB3ZSBhcmUgdXNpbmcgRGF0YVJlZmVyZW5jZSBhcyBhIHBvbHltb3ByaGljIGJhc2Ug
Y2xhc3MgaW4gdGhpcyBmYXNoaW9uLAorICAgIC8vIHRoZW4gd2UgbmVlZCBpdCB0byBiZSBhIGJh
c2UgY2xhc3MgdGhhdCBkb2VzIG5vdCBoYXZlIGZ1bmN0aW9ucyBzdWNoIGFzIGlzRW1wdHksCisg
ICAgLy8gc2l6ZSwgZGF0YSwgYW5kIHZlY3RvciwgYWxsIG9mIHdoaWNoIHdpbGwgZG8gdGhlIHdy
b25nIHRoaW5nIGlmIHRoZXkgYXJlIGNhbGxlZC4KKyAgICAvLyBEZWxldGluZyB0aGVzZSBmdW5j
dGlvbnMgaGVyZSBkb2VzIG5vdCBwcmV2ZW50IHRoZW0gZnJvbSBiZWluZyBjYWxsZWQuCisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgPSBkZWxldGU7CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCA9
IGRlbGV0ZTsKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgPSBkZWxldGU7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcigpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB+U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSgpIHsgbV9idWZmZXIgPSAwOyB9CisgICAgdmlydHVhbCB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXImKSBjb25zdCBvdmVycmlkZTsKIAotcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZXNvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUmVzb3VyY2VCdWZmZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1NGI5ZWIzMmUwYWE5MjUwZTdhNDg1OTQyNGZiNTQ5ODMzY2ZhYTMwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJSZXNvdXJjZUJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlJlc291
cmNlQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotCi0jaW5jbHVk
ZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCi0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1XZWJSZXNvdXJjZUJ1ZmZlcjo6V2ViUmVzb3VyY2VCdWZmZXIoUGFzc1Jl
ZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UpCi0gICAgOiBtX3Jlc291cmNlKHJlc291
cmNlKQotewotICAgIEFTU0VSVChtX3Jlc291cmNlKTsKLX0KLQotV2ViUmVzb3VyY2VCdWZmZXI6
On5XZWJSZXNvdXJjZUJ1ZmZlcigpCi17Ci19Ci0KLWNvbnN0IGNoYXIqIFdlYlJlc291cmNlQnVm
ZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4obV9yZXNvdXJjZS0+ZGF0YSgpKTsKLX0KLQotdW5zaWduZWQgV2ViUmVzb3VyY2VCdWZm
ZXI6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3Jlc291cmNlLT5zaXplKCk7Ci19Ci0K
LWJvb2wgV2ViUmVzb3VyY2VCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiAh
bV9yZXNvdXJjZSB8fCAhbV9yZXNvdXJjZS0+c2l6ZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVzb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJSZXNvdXJjZUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2OWI0OTU5ZDVjNTJlNzZiNWQyMzJhZGM2ZDYwNjI1OTk3MmZiZDE0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJSZXNvdXJjZUJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViUmVzb3VyY2VCdWZmZXJfaAotI2RlZmluZSBXZWJSZXNvdXJj
ZUJ1ZmZlcl9oCi0KLSNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotCi0jaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
U2hhcmVhYmxlUmVzb3VyY2U7Ci0KLWNsYXNzIFdlYlJlc291cmNlQnVmZmVyIDogcHVibGljIFdl
YkNvcmU6OlJlc291cmNlQnVmZmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJSZXNvdXJjZUJ1ZmZlcj4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJl
c291cmNlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViUmVzb3VyY2VCdWZmZXIocmVzb3VyY2Up
KTsgfQotCi0gICAgdmlydHVhbCB+V2ViUmVzb3VyY2VCdWZmZXIoKSBvdmVycmlkZTsKLQotICAg
IHZpcnR1YWwgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dW5zaWduZWQgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgV2ViUmVzb3VyY2VCdWZmZXIoUGFz
c1JlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4pOwotCi0gICAgUmVmUHRyPFNoYXJlYWJsZVJlc291
cmNlPiBtX3Jlc291cmNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotCi0jZW5kaWYgLy8gV2ViUmVzb3VyY2VCdWZm
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGE4NjI0M2QxNGQ4ZGM2MmNlMTE1NjZjYmJjNGZkM2IwMDMzNmMyZmUuLjdlZTc2
YjJjNTQxZjI4MjlhNmVlZTQwMWNkNzYyMzBkYjY3ZWYzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyMiw4ICs4MjIsNiBA
QAogCQk1MTIxMjdDNDE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMTI3QzIx
OTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3RlYm9hcmRPdmVycmlkZXMuaCAqLzsgfTsKIAkJNTEy
MTc0NjAxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjE3NDVFMTY0QzIwRTMwMDM3
QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi87IH07CiAJCTUxMjE3NDYxMTY0QzIwRTMw
MDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMTc0NUYxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJs
ZVJlc291cmNlLmggKi87IH07Ci0JCTUxMjE3NDY0MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNv
dXJjZUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTIxNzQ2MjE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuY3BwICov
OyB9OwotCQk1MTIxNzQ2NTE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjE3NDYzMTY0
QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5oICovOyB9OwogCQk1MTIzQ0YxQjEz
M0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIzQ0YxOTEzM0QyNjBBMDA1NkY4MDAgLyog
V0tJY29uRGF0YWJhc2VDRy5jcHAgKi87IH07CiAJCTUxMjNDRjFDMTMzRDI2MEEwMDU2RjgwMCAv
KiBXS0ljb25EYXRhYmFzZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTIzQ0YxQTEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMjkw
OTkyMTgzQUNFQUYwMDU1MjJBNiAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkwOTkwMTgzQUNFQUYw
MDU1MjJBNiAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTI4NTgsOCAr
Mjg1Niw2IEBACiAJCTUxMjEyN0MyMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhc3RlYm9hcmRP
dmVycmlkZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyMTc0NUUxNjRDMjBF
MzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNoYXJlYWJsZVJlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEyMTc0NUYxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlYWJsZVJlc291cmNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMjE3NDYyMTY0QzIxMzcwMDM3QTVDMSAv
KiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJSZXNvdXJjZUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTUxMjE3NDYzMTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUJ1ZmZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTIzQ0YxOTEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0
YWJhc2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXS0ljb25E
YXRhYmFzZUNHLmNwcDsgcGF0aCA9IGNnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTIzQ0YxQTEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0
YWJhc2VDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0ljb25EYXRhYmFz
ZUNHLmg7IHBhdGggPSBjZy9XS0ljb25EYXRhYmFzZUNHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMjkwOTkwMTgzQUNFQUYwMDU1MjJBNiAvKiBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYklEQlNlcnZl
ckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUzOSw4ICs0
NTM1LDYgQEAKIAkJCQkzNzk0ODQwMjE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIu
aCAqLywKIAkJCQkzNzYwODgxQzE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmNw
cCAqLywKIAkJCQkzNzYwODgxRDE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0Lmgg
Ki8sCi0JCQkJNTEyMTc0NjIxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmNw
cCAqLywKLQkJCQk1MTIxNzQ2MzE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIu
aCAqLywKIAkJCQlGNjM0NDQ1NTEyQTg4NUM4MDAwNjEyRDggLyogV2ViU2VjdXJpdHlPcmlnaW4u
aCAqLywKIAkJCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggKi8sCiAJCQkJQzAzMzdERDcxMjdBNTFCNjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZl
bnQuY3BwICovLApAQCAtNzYxOCw3ICs3NjEyLDYgQEAKIAkJCQk1MUUzNTFGNjE4MEY1Qzc1MDBF
NTNCRTkgLyogV2ViSURCRmFjdG9yeUJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMjlF
Q0QwMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjA4ODFGMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJS
ZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMjE3NDY1MTY0QzIxMzcwMDM3QTVD
MSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMzNjc2MzAxMzBD
OTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUFGMDg5QjE5MjY3RUU1MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMzM2NzY1NjEzMEM5RUNBMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzA0LDcgKzkyOTcsNiBAQAogCQkJ
CTM3OTQ4NDAzMTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDI4RjNFNjE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRWRpdG9yQ2xpZW50SU9T
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc2MDg4MUUxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJl
bmRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTIxNzQ2NDE2NEMyMTM3MDAzN0E1
QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2MkYx
MzBDOTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxMTVDNzE0MTkwRjg5RTQwMEVDQzUxNiAvKiBEYXRhYmFzZVByb2Nlc3NJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzM0Y5RDVCOTEzMTJGMUVFMDAwRDY4M0YgLyogV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKaW5kZXggNzcxOTY0NTU4NGM1YzBhYTJiY2Y5Y2E1MjU0ZDNlODhkNjU1OGJi
Ny4uNjcxYTE3ZTU2Yzg0MzUwZmQ4OGIyYjBkMzNlZGViMTIyMzk5MmFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMwLDEyICszMCwxMCBAQAogI2luY2x1ZGUgIk5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNo
ZWRSZXNvdXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCkBAIC05NSw3ICs5Myw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJl
c291cmNlLT50cnlSZXBsYWNlRW5jb2RlZERhdGEoYnVmZmVyLnJlbGVhc2UoKSk7CisgICAgcmVz
b3VyY2UtPnRyeVJlcGxhY2VFbmNvZGVkRGF0YSgqYnVmZmVyKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDFhN2Y5YzFlNDRmMjcwMzNmMWU0MjIxZDUxZjQz
NWRiNDg1MDg3ZGEuLjg4Y2IwNjRlMTA3MjkzZDc5MDk2NWEwNzRhZGMxMmNkYWM4MGQ2OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZmVycmVyUG9saWN5Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2V0dGluZ3MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg1YWRmYmIyYzIwZjNiMmQ3NDA3
ZTk2ODhmYWU5OTBiMjkwNWIwYTUuLmM1ZWI0MjNjYjAyZjA1NzM1MGQzNmVkYzU1NDA5YjhjZGRl
ZDg5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvQXBwbGljYXRpb25DYWNoZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRl
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4
IGRjOWFhMGY0MjNlOTA1Njg5ZjdjN2FhNzMxMGE1MmI3M2RhMDE0YmUuLjZiOTI4NDI1YWY0N2I1
MmExMTQ1NjE0ZWY5ZTkzYjU1MDU0YzEzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC00Niw3ICs0Niw2IEBA
IGNsYXNzIERhdGFSZWZlcmVuY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDZXJ0aWZp
Y2F0ZUluZm87CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7Ci1jbGFzcyBSZXNvdXJjZUJ1ZmZlcjsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOTFmOGU4
ZjYwMmFlZmM0MDdiZmNiMjQ2YzQ5Y2NmOGQ2M2M1M2FhOC4uOWNlMGJlZmRiZWI1NDBiOTNmNjhl
ZGZiNjlkYjA0NWY4MmNiMWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTc0LDcgKzc0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVz
c1RyYWNrZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtOTE5LDcgKzkxOCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCk7CiAgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+ZGF0YSgpIDogMCksIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5z
aXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVy
LT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
aW5kZXggNTRlMGI3ZGZmMjg3ZTc4YWM0NDNlZjgwODdlZmQ0Mjk5N2NiMWFjZC4uOWRjZWU0NmIw
YmViOTVkYWRmYTM3MjAzYzVmNjRiZDk3Mjg3ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC02NSw3ICs2NSw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgpAQCAtMzA1LDcgKzMwNCw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291
cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVG
cmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50
TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPFJlc291cmNlQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRM
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5k
ZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDE1NmM0YTk4ZjhiOTg5ZDRjOWI0NDA1MDNiZDUwM2VlNDhhN2Y4MjIuLmRlZmZjZjVmYWM5MDIz
MDVkOWU0NmYzNmE1ZTQwMWJkZjZlOTFiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzNiw3ICsxMzYsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUmVuZGVyTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KQEAgLTI0MzAsMTcgKzI0MjksMTYgQEAgdm9pZCBXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBy
dW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAv
LyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICAvLyBSZXRhaW4gdGhl
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBhdCB0aGlzIGxldmVsIHNvIGl0IChhbmQgdGhlIGludGVy
bmFsIGRhdGEpIGxpdmVzCi0gICAgLy8gbG9uZyBlbm91Z2ggZm9yIHRoZSBEYXRhUmVmZXJlbmNl
IHRvIGJlIGVuY29kZWQgYnkgdGhlIHNlbnQgbWVzc2FnZS4KICAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7Ci0gICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGFSZWZlcmVuY2U7Ci0KICAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6
Y29tbW9uVk0oKSk7CiAgICAgaWYgKEpTVmFsdWUgcmVzdWx0VmFsdWUgPSBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKS5qc1ZhbHVl
KCkpIHsKLSAgICAgICAgaWYgKChzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShtX21haW5GcmFtZS0+anNDb250ZXh0KCksIHRvUmVmKG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKS0+Z2xvYmFsRXhlYygpLCByZXN1bHRWYWx1ZSksIDApKSkKLSAgICAgICAgICAgIGRh
dGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKTsKKyAgICAgICAgc2Vy
aWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUobV9tYWlu
RnJhbWUtPmpzQ29udGV4dCgpLAorICAgICAgICAgICAgdG9SZWYobV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5n
bG9iYWxFeGVjKCksIHJlc3VsdFZhbHVlKSwgbnVsbHB0cik7CiAgICAgfQogCisgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgaWYgKHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZSkKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgp
OwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhk
YXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKQEAgLTI0NTMsMTUgKzI0NTEsMTQgQEAg
dm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAj
aWYgRU5BQkxFKE1IVE1MKQogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKHVp
bnQ2NF90IGNhbGxiYWNrSUQsIGJvb2wgdXNlQmluYXJ5RW5jb2RpbmcpCiB7Ci0gICAgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0KICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSB1c2VCaW5hcnlFbmNvZGluZwogICAgICAgICA/IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGFVc2luZ0JpbmFyeUVuY29kaW5nKG1fcGFnZS5nZXQoKSkKICAgICAgICAgOiBN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSk7CiAKKyAgICAvLyBG
SVhNRTogVXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuCisgICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgZGF0YVJlZmVyZW5j
ZSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
dWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKLQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0K
ICNlbmRpZgpAQCAtMjQ4NCwyMCArMjQ4MSwxNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNl
bGVjdGlvbihQYWdlKiBwYWdlKQogCiB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKLQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBhcmNoaXZlOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CisgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGZyYW1lV2l0aFNlbGVjdGlvbihtX3BhZ2UuZ2V0KCkpKQorICAg
ICAgICBkYXRhID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihmcmFtZSkt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpOworI2VuZGlmCiAKLSAgICBGcmFtZSogZnJhbWUgPSBm
cmFtZVdpdGhTZWxlY3Rpb24obV9wYWdlLmdldCgpKTsKLSAgICBpZiAoZnJhbWUpIHsKLSAgICAg
ICAgYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oZnJhbWUp
OwotICAgICAgICBkYXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CisgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgaWYgKGRhdGEpCiAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2Uo
Q0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkp
KTsKLSAgICB9CiAjZW5kaWYKLQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0
YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIApAQCAtMjUyMCwyNCAr
MjUxNCwyMCBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLQotICAgIFJlZlB0cjxSZXNvdXJj
ZUJ1ZmZlcj4gYnVmZmVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBkZlJlc291cmNlOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKLSAgICAgICAgaWYg
KFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVG
cmFtZSgpKSkgewotICAgICAgICAgICAgaWYgKChwZGZSZXNvdXJjZSA9IHBsdWdpblZpZXctPmxp
dmVSZXNvdXJjZURhdGEoKSkpCi0gICAgICAgICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6
RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwZGZSZXNvdXJj
ZS0+ZGF0YSgpKSwgcGRmUmVzb3VyY2UtPnNpemUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmIChEb2N1bWVudExv
YWRlciogbG9hZGVyID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChidWZmZXIgPSBsb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKSkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkp
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChQbHVnaW5WaWV3
KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCisg
ICAgICAgICAgICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CisgICAg
ICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKKyAgICAg
ICAgICAgICAgICBidWZmZXIgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIEZJWE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4K
KyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBpZiAoYnVmZmVyKQor
ICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2Us
IGNhbGxiYWNrSUQpKTsKIH0KIApAQCAtMjU1NiwzOCArMjU0NiwzOCBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiByZQogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCB1aW50NjRfdCBj
YWxsYmFja0lEKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAg
IFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwotCiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkgeworICAgICAgICBVUkwgcmVzb3VyY2VV
UkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VE
YXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CiAgICAgICAgIGlm
ICghYnVmZmVyKSB7CiAgICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSByZXNvdXJjZSBkYXRh
IGZyb20gdGhlIGNhY2hlLgogICAgICAgICAgICAgYnVmZmVyID0gY2FjaGVkUmVzcG9uc2VEYXRh
Rm9yVVJMKHJlc291cmNlVVJMKTsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChidWZmZXIpCi0g
ICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwog
ICAgIH0KIAorICAgIC8vIEZJWE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4KKyAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBpZiAoYnVmZmVyKQorICAg
ICAgICBkYXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlOwotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6
c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKLSAgICAgICAgaWYgKChkYXRhID0gZnJhbWUt
PndlYkFyY2hpdmVEYXRhKDAsIDApKSkKLSAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6
OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEuZ2V0KCkpKTsKLSAgICB9CisgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpKQorICAgICAgICBkYXRhID0gZnJhbWUt
PndlYkFyY2hpdmVEYXRhKG51bGxwdHIsIG51bGxwdHIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CiAjZW5kaWYKIAorICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkYXRhKQorICAgICAgICBkYXRhUmVm
ZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CisjZW5kaWYKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQppbmRleCA3NTU3MWNiOWE2MTUxNTI0MjFiNGZkZWRiMzIwOWYzYWE3NTRmMzJk
Li5hNDZkZDQwMmYwNmZjMDg5Mjk3OWJiZjcwYTRlZDU5YjUxZGI0ODU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC04
MSw3ICs4MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckltYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1JlbmRlclRoZW1lSU9TLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4KQEAgLTE4NDIsMTAgKzE4NDEsMTEgQEAgdm9pZCBXZWJQ
YWdlOjpnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBjb250ZXh0QmVmb3JlLCBTdHJp
bmcmIG1hcmtlZFRleHQKIAogc3RhdGljIEVsZW1lbnQqIGNvbnRhaW5pbmdMaW5rRWxlbWVudChF
bGVtZW50KiBlbGVtZW50KQogewotICAgIGZvciAoRWxlbWVudCogY3VycmVudEVsZW1lbnQgPSBl
bGVtZW50OyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC0+
cGFyZW50RWxlbWVudCgpKQotICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQtPmlzTGluaygpKQot
ICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRFbGVtZW50OwotICAgIHJldHVybiAwOworICAgIGZv
ciAoYXV0byYgY3VycmVudEVsZW1lbnQgOiBlbGVtZW50TGluZWFnZShlbGVtZW50KSkgeworICAg
ICAgICBpZiAoY3VycmVudEVsZW1lbnQuaXNMaW5rKCkpCisgICAgICAgICAgICByZXR1cm4gJmN1
cnJlbnRFbGVtZW50OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCkBAIC0xOTQ5LDczICsxOTQ5LDc3IEBA
IHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAg
ICAgaWYgKCFpczxIVE1MRWxlbWVudD4obV9pbnRlcmFjdGlvbk5vZGUuZ2V0KCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVt
ZW50PihtX2ludGVyYWN0aW9uTm9kZS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50LT5yZW5kZXJl
cigpKQorICAgIEhUTUxFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpt
X2ludGVyYWN0aW9uTm9kZSk7CisgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChzdGF0aWNfY2FzdDxTaGVldEFjdGlvbj4oYWN0aW9uKSA9PSBT
aGVldEFjdGlvbjo6Q29weSkgewotICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+KCplbGVtZW50
LT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBjb250
YWluaW5nTGlua0VsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIAorICAgICAgICBpZiAoaXM8UmVu
ZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpKSB7CisgICAgICAgICAgICBFbGVtZW50KiBs
aW5rRWxlbWVudCA9IGNvbnRhaW5pbmdMaW5rRWxlbWVudCgmZWxlbWVudCk7CiAgICAgICAgICAg
ICBpZiAoIWxpbmtFbGVtZW50KQotICAgICAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5k
b2N1bWVudCgpLmZyYW1lKCktPmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCAqZWxlbWVudCwgZG93bmNhc3Q8UmVuZGVy
SW1hZ2U+KCplbGVtZW50LT5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpLT51cmwoKSwgU3RyaW5n
KCkpOworICAgICAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmZyYW1l
KCktPmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZSgpLCBlbGVtZW50LCBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQu
cmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKS0+dXJsKCksIFN0cmluZygpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpLT5lZGl0b3IoKS5jb3B5VVJMKGxpbmtFbGVtZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJM
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhsaW5rRWxlbWVudC0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKSksIGxpbmtFbGVtZW50LT50ZXh0Q29udGVudCgpKTsK
LSAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LT5pc0xpbmsoKSkgewotICAgICAgICAgICAgbV9p
bnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZWRpdG9yKCkuY29weVVSTChlbGVt
ZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpKSwgZWxlbWVu
dC0+dGV4dENvbnRlbnQoKSk7CisgICAgICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRv
Y3VtZW50KCkuZnJhbWUoKS0+ZWRpdG9yKCkuY29weVVSTChsaW5rRWxlbWVudC0+ZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobGlua0VsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpKSwgbGlua0VsZW1lbnQt
PnRleHRDb250ZW50KCkpOworICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuaXNMaW5rKCkpIHsK
KyAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPmVkaXRv
cigpLmNvcHlVUkwoZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhlbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpo
cmVmQXR0cikpKSwgZWxlbWVudC50ZXh0Q29udGVudCgpKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoc3RhdGljX2Nhc3Q8U2hlZXRBY3Rpb24+KGFjdGlvbikgPT0gU2hlZXRBY3Rpb246OlNh
dmVJbWFnZSkgewotICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqZWxlbWVudC0+cmVuZGVy
ZXIoKSkpCisgICAgICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LT5yZW5kZXJlcigpKS5jYWNoZWRJ
bWFnZSgpKSB7Ci0gICAgICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7Ci0gICAg
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyKSB7Ci0g
ICAgICAgICAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAg
ICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6Y3JlYXRlKGJ1ZmZlclNpemUpOwotICAgICAgICAgICAgICAgIG1lbWNweShz
aGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlclNpemUpOwot
ICAgICAgICAgICAgICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpSZWFkT25seSk7Ci0gICAgICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTYXZlSW1hZ2VUb0xpYnJhcnkoaGFuZGxlLCBidWZmZXJTaXplKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdl
ID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNhY2hlZEltYWdl
KCk7CisgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICBpZiAo
IWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdWludDY0X3QgYnVmZmVyU2l6
ZSA9IGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRN
ZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShidWZmZXJTaXplKTsKKyAgICAgICAg
bWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVy
U2l6ZSk7CisgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgc2hh
cmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRP
bmx5KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlSW1hZ2VUb0xp
YnJhcnkoaGFuZGxlLCBidWZmZXJTaXplKSk7CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGJv
b2wgaXNBc3Npc3RhYmxlTm9kZShOb2RlKiBub2RlKQorc3RhdGljIGlubGluZSBib29sIGlzQXNz
aXN0YWJsZUVsZW1lbnQoRWxlbWVudCYgbm9kZSkKIHsKLSAgICBpZiAoaXM8SFRNTFNlbGVjdEVs
ZW1lbnQ+KCpub2RlKSkKKyAgICBpZiAoaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KG5vZGUpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKm5vZGUp
KQotICAgICAgICByZXR1cm4gIWRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCpub2RlKS5p
c1JlYWRPbmx5Tm9kZSgpOwotICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkpIHsK
LSAgICAgICAgSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgcmV0dXJuICFlbGVtZW50LmlzUmVhZE9ubHlOb2RlKCkg
JiYgKGVsZW1lbnQuaXNUZXh0RmllbGQoKSB8fCBlbGVtZW50LmlzRGF0ZUZpZWxkKCkgfHwgZWxl
bWVudC5pc0RhdGVUaW1lTG9jYWxGaWVsZCgpIHx8IGVsZW1lbnQuaXNNb250aEZpZWxkKCkgfHwg
ZWxlbWVudC5pc1RpbWVGaWVsZCgpKTsKKyAgICBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4o
bm9kZSkpCisgICAgICAgIHJldHVybiAhZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4obm9k
ZSkuaXNSZWFkT25seU5vZGUoKTsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkp
IHsKKyAgICAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXRFbGVtZW50ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4obm9kZSk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGxhdW5kcnkgbGlz
dCBvZiB0eXBlcyBpcyBub3QgYSBnb29kIHdheSB0byBmYWN0b3IgdGhpcy4gTmVlZCBhIHN1aXRh
YmxlIGZ1bmN0aW9uIG9uIEhUTUxJbnB1dEVsZW1lbnQgaXRzZWxmLgorICAgICAgICByZXR1cm4g
IWlucHV0RWxlbWVudC5pc1JlYWRPbmx5Tm9kZSgpICYmIChpbnB1dEVsZW1lbnQuaXNUZXh0Rmll
bGQoKSB8fCBpbnB1dEVsZW1lbnQuaXNEYXRlRmllbGQoKSB8fCBpbnB1dEVsZW1lbnQuaXNEYXRl
VGltZUxvY2FsRmllbGQoKSB8fCBpbnB1dEVsZW1lbnQuaXNNb250aEZpZWxkKCkgfHwgaW5wdXRF
bGVtZW50LmlzVGltZUZpZWxkKCkpOwogICAgIH0KLQotICAgIHJldHVybiBub2RlLT5pc0NvbnRl
bnRFZGl0YWJsZSgpOworICAgIHJldHVybiBub2RlLmlzQ29udGVudEVkaXRhYmxlKCk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgRWxlbWVudCogbmV4dEZvY3VzYWJsZUVsZW1lbnQoTm9kZSogc3RhcnRO
b2RlLCBQYWdlKiBwYWdlLCBib29sIGlzRm9yd2FyZCkKK3N0YXRpYyBpbmxpbmUgRWxlbWVudCog
bmV4dEFzc2lzdGFibGVFbGVtZW50KE5vZGUqIHN0YXJ0Tm9kZSwgUGFnZSYgcGFnZSwgYm9vbCBp
c0ZvcndhcmQpCiB7CisgICAgaWYgKCFpczxFbGVtZW50PihzdGFydE5vZGUpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKwogICAgIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBrZXkgPSBLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUoKTsKIAogICAgIEVsZW1lbnQqIG5leHRFbGVtZW50ID0gZG93bmNhc3Q8
RWxlbWVudD4oc3RhcnROb2RlKTsKICAgICBkbyB7Ci0gICAgICAgIG5leHRFbGVtZW50ID0gaXNG
b3J3YXJkID8gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkubmV4dEZvY3VzYWJsZUVsZW1lbnQoRm9j
dXNOYXZpZ2F0aW9uU2NvcGU6OmZvY3VzTmF2aWdhdGlvblNjb3BlT2YoJm5leHRFbGVtZW50LT5k
b2N1bWVudCgpKSwgbmV4dEVsZW1lbnQsIGtleS5nZXQoKSkKLSAgICAgICAgICAgIDogcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkucHJldmlvdXNGb2N1c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlv
blNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9mKCZuZXh0RWxlbWVudC0+ZG9jdW1lbnQoKSks
IG5leHRFbGVtZW50LCBrZXkuZ2V0KCkpOwotICAgIH0gd2hpbGUgKG5leHRFbGVtZW50ICYmICFp
c0Fzc2lzdGFibGVOb2RlKG5leHRFbGVtZW50KSk7CisgICAgICAgIG5leHRFbGVtZW50ID0gaXNG
b3J3YXJkCisgICAgICAgICAgICA/IHBhZ2UuZm9jdXNDb250cm9sbGVyKCkubmV4dEZvY3VzYWJs
ZUVsZW1lbnQoRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OmZvY3VzTmF2aWdhdGlvblNjb3BlT2YoJm5l
eHRFbGVtZW50LT5kb2N1bWVudCgpKSwgbmV4dEVsZW1lbnQsIGtleS5nZXQoKSkKKyAgICAgICAg
ICAgIDogcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5wcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnQoRm9j
dXNOYXZpZ2F0aW9uU2NvcGU6OmZvY3VzTmF2aWdhdGlvblNjb3BlT2YoJm5leHRFbGVtZW50LT5k
b2N1bWVudCgpKSwgbmV4dEVsZW1lbnQsIGtleS5nZXQoKSk7CisgICAgfSB3aGlsZSAobmV4dEVs
ZW1lbnQgJiYgIWlzQXNzaXN0YWJsZUVsZW1lbnQoKm5leHRFbGVtZW50KSk7CiAKICAgICByZXR1
cm4gbmV4dEVsZW1lbnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNGb2N1c2FibGVFbGVt
ZW50KE5vZGUqIHN0YXJ0Tm9kZSwgUGFnZSogcGFnZSwgYm9vbCBpc0ZvcndhcmQpCitzdGF0aWMg
aW5saW5lIGJvb2wgaGFzQXNzaXN0YWJsZUVsZW1lbnQoTm9kZSogc3RhcnROb2RlLCBQYWdlJiBw
YWdlLCBib29sIGlzRm9yd2FyZCkKIHsKLSAgICByZXR1cm4gbmV4dEZvY3VzYWJsZUVsZW1lbnQo
c3RhcnROb2RlLCBwYWdlLCBpc0ZvcndhcmQpICE9IG5pbDsKKyAgICByZXR1cm4gbmV4dEFzc2lz
dGFibGVFbGVtZW50KHN0YXJ0Tm9kZSwgcGFnZSwgaXNGb3J3YXJkKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQpCiB7Ci0gICAgRWxlbWVu
dCogbmV4dEVsZW1lbnQgPSBuZXh0Rm9jdXNhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQo
KSwgbV9wYWdlLmdldCgpLCBpc0ZvcndhcmQpOworICAgIEVsZW1lbnQqIG5leHRFbGVtZW50ID0g
bmV4dEFzc2lzdGFibGVFbGVtZW50KG1fYXNzaXN0ZWROb2RlLmdldCgpLCAqbV9wYWdlLCBpc0Zv
cndhcmQpOwogICAgIG1fdXNlcklzSW50ZXJhY3RpbmcgPSB0cnVlOwogICAgIGlmIChuZXh0RWxl
bWVudCkKICAgICAgICAgbmV4dEVsZW1lbnQtPmZvY3VzKCk7CkBAIC0yMDU2LDggKzIwNjAsOCBA
QCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uKEFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uJiBpbmZvcm1hdGlvbikKICAgICBpbmZvcm1hdGlvbi5taW5pbXVtU2NhbGVGYWN0
b3IgPSBtaW5pbXVtUGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgaW5mb3JtYXRpb24ubWF4aW11bVNj
YWxlRmFjdG9yID0gbWF4aW11bVBhZ2VTY2FsZUZhY3RvcigpOwogICAgIGluZm9ybWF0aW9uLmFs
bG93c1VzZXJTY2FsaW5nID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uYWxsb3dzVXNlclNjYWxp
bmcoKTsKLSAgICBpbmZvcm1hdGlvbi5oYXNOZXh0Tm9kZSA9IGhhc0ZvY3VzYWJsZUVsZW1lbnQo
bV9hc3Npc3RlZE5vZGUuZ2V0KCksIG1fcGFnZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgaW5mb3JtYXRp
b24uaGFzUHJldmlvdXNOb2RlID0gaGFzRm9jdXNhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5n
ZXQoKSwgbV9wYWdlLmdldCgpLCBmYWxzZSk7CisgICAgaW5mb3JtYXRpb24uaGFzTmV4dE5vZGUg
PSBoYXNBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgdHJ1
ZSk7CisgICAgaW5mb3JtYXRpb24uaGFzUHJldmlvdXNOb2RlID0gaGFzQXNzaXN0YWJsZUVsZW1l
bnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICptX3BhZ2UsIGZhbHNlKTsKIAogICAgIGlmIChpczxI
VE1MU2VsZWN0RWxlbWVudD4oKm1fYXNzaXN0ZWROb2RlKSkgewogICAgICAgICBIVE1MU2VsZWN0
RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PigqbV9hc3Npc3Rl
ZE5vZGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240675</attachid>
            <date>2014-10-30 09:08:32 -0700</date>
            <delta_ts>2014-10-30 09:43:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138174-20141030090838.patch</filename>
            <type>text/plain</type>
            <size>159225</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIzOGUzYzRjZmJjZjE0
Y2RiODc2ZTYxM2RmYjc3M2JmZjE4NjBkMC4uMzQ5ZDJlNDAwZDcwYjdhNzY1YmM1NDZhNTA4NDc4
Mzc3NmExMzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMiBAQAorMjAxNC0xMC0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRWxpbWluYXRlIFJlc291cmNl
QnVmZmVyIGFuZCB1c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODE3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCB3aXRoIHRl
c3QgY292ZXJhZ2UgYWNyb3NzIG1hbnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogRGVsZXRlZCBSZXNvdXJjZUJ1ZmZlci5jcHAuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjogUmVtb3ZlZCBSZXNvdXJjZUJ1ZmZlci1yZWxhdGVkIHN5bWJvbHMsIGFuZCB1
cGRhdGVkIHN5bWJvbAorICAgICAgICBmb3Igb25lIGZ1bmN0aW9uIHRoYXQgdXNlZCB0byB0YWtl
IGEgUGFzc1JlZlB0ciBidXQgbm93IHRha2VzIGEgcmVmZXJlbmNlIGluc3RlYWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBEZWxldGVkIFJlc291cmNlQnVm
ZmVyLmNwcC8uaC4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnM6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGVsZXRlZCBSZXNvdXJjZUJ1ZmZlci5tbS8uY3BwLy5oLgorCisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOiBVc2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5Lgor
ICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRv
UGFzdGVib2FyZCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcpOiBV
c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5LCBhbmQKKyAgICAgICAgYWxzbyBwYXNzIGEgcmVmZXJl
bmNlIG9ubHkgaWYgbm9uLW51bGwgcmF0aGVyIHRoYW4gcGFzc2luZyBhIHBvaW50ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOiBEaXR0by4gQWRk
ZWQgYSBtaXNzaW5nIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VDb250ZW50KTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6IERpdHRv
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxM
b2FkaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEpOiBVc2Ug
U2hhcmVkQnVmZmVyIGRpcmVjdGx5LAorICAgICAgICBhbmQgdXNlIHRoZSBjb3B5IGZ1bmN0aW9u
IHJhdGhlciB0aGFuIGEgaGFuZC13cml0dGVuIGFsdGVybmF0aXZlLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dCk6IERpdHRvLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6IENoYW5nZWQg
bWFpblJlc291cmNlRGF0YSB0byByZXR1cm4gYQorICAgICAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4uIFdvdWxkIGJlIGJldHRlciBpZiBpdCByZXR1cm5lZCBhIFNoYXJlZEJ1ZmZlciYsCisg
ICAgICAgIGJ1dCBpdCBjdXJyZW50bHkgcmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgYnVmZmVyIHdo
ZW4gdGhlcmUgaXMgc3Vic3RpdHV0ZQorICAgICAgICBkYXRhIGFuZCBjYW4gYWxzbyByZXR1cm4g
bnVsbCwgZXZlbiB0aG91Z2ggbWFueSBjYWxsZXJzIGFzc3VtZSBpdCB3aWxsIG5vdCEKKworICAg
ICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6IFJlbW92ZWQgY2FsbCB0byB1bnVz
ZWQgY2xpZW50CisgICAgICAgIGZ1bmN0aW9uIGJ1ZmZlclJlY2VpdmVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOiBSZW1vdmVkIHVudXNl
ZCBidWZmZXIKKyAgICAgICAgYXJndW1lbnQgdG8gY2xpZW50IGZ1bmN0aW9uIGxvYWRGaW5pc2hl
ZC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlQnVmZmVyLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcik6IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEpOiBVc2UgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBVc2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOiBEaXR0by4K
KworICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YSk6IFVzZSBTaGFyZWRCdWZmZXIu
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9hZGluZ01h
aW5SZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6IERpdHRv
LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6IERpdHRvLgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjpkaWRBZGRDbGllbnQpOiBVc2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmRpZFJlbW92ZUNsaWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcik6IERpdHRvLiBDaGFuZ2Vk
IHRvIHRha2UKKyAgICAgICAgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmFkZERhdGFCdWZmZXIpOiBEaXR0by4gQWxzbyBh
ZGRlZCBjYWxsIHRocm91Z2gKKyAgICAgICAgdG8gYmFzZSBjbGFzcyBhbmQgY2hhbmdlZCB0byB0
YWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjphZGREYXRhKTogRGl0dG8uIEFsc28gYWRkZWQgY2FsbCB0aHJvdWdoIHRv
IGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGlu
Zyk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOiBEaXR0by4g
QWxzbyBjaGFuZ2VkIHRoZSB0eXBlIG9mIHNvbWUgYml0IGZpZWxkcworICAgICAgICB0byBiZSB1
bnNpZ25lZCBpbnN0ZWFkIG9mIHVuc2lnZW5kIGNoYXIuCisKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKTogVXNlIFNoYXJlZEJ1ZmZlci4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjphZGREYXRhQnVmZmVyKTogRGl0
dG8uIENoYW5nZWQgdG8gdGFrZQorICAgICAgICBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBv
aW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYW5SZXVzZSk6
IERpdHRvLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOiBEaXR0
by4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UpOiBSZW9yZGVyZWQgZGF0
YSBtZW1iZXJzIGR1ZSB0byBjaGFuZ2UKKyAgICAgICAgaW4gaGVhZGVyLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZmZXIpOiBDaGFuZ2VkIGFyZ3VtZW50IHR5
cGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6IFJl
ZmFjdG9yZWQgdG8gZWxpbWluYXRlIG9uZSBleHRyYSBoYXNoCisgICAgICAgIHRhYmxlIGxvb2t1
cCBieSB1c2luZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlbW92ZSBmdW5jdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6IFVzZSBzdGQ6
Om1ha2VfdW5pcXVlIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgb2YgdXNpbmcgYSBmdW5jdGlv
biBuYW1lZCAic2NoZWR1bGUiIHRvIGFsbG9jYXRlIHRoZSBjYWxsYmFjayBvYmplY3QuCisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OkNhbGxiYWNrKTogQ2hhbmdl
ZCBmdW5jdGlvbiBhbmQgZGF0YSBtZW1iZXIKKyAgICAgICAgbmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6Y2FuY2VsKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEpOiBD
aGFuZ2VkIHRvIHRha2UgYSBTaGFyZWRCdWZmZXImLgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmg6IENoYW5nZWQgdHlwZXMgdG8gdXNlIFNoYXJlZEJ1ZmZlci4gQWxz
byBtYWRlIG1vc3QKKyAgICAgICAgZGF0YSBtZW1iZXJzIGFuZCBvbmUgZnVuY3Rpb24gbWVtYmVy
IHByaXZhdGUgaW5zdGVhZCBvZiBwcm90ZWN0ZWQuIEFsc28gcmVuYW1lZCB0aGUKKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2sgZnVuY3Rpb24gQ2FjaGVkUmVz
b3VyY2U6OkNhbGxiYWNrIGFuZCBtb3ZlZAorICAgICAgICBpdHMgZGVmaW5pdGlvbiBvdXQgb2Yg
dGhlIENhY2hlZFJlc291cmNlIGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgor
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKTogVXNlIFNoYXJlZEJ1
ZmZlci4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOiBEaXR0
by4gTWFkZSBkYXRhIG1lbWJlcnMgcHJpdmF0ZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0Lmg6IERpdHRvLiBBbHNvIGZpeGVkIGluZGVudGluZyBhbmQgcmVtb3ZlZCB1bm5lZWRl
ZAorICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9uLgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OnVwZGF0ZURhdGEpOiBBZGRlZCwgc28gdGhhdCBmaW5pc2hMb2FkaW5nIGRvZXMgbm90CisgICAg
ICAgIGNhbGwgYWRkRGF0YUJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFj
azo6YWRkRGF0YUJ1ZmZlcik6IFRha2UgU2hhcmVkQnVmZmVyLCBjYWxsIHVwZGF0ZURhdGEuCisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOiBEaXR0by4K
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6IFRha2Ugb3V0IHVubmVl
ZGVkIGV4cGxpY2l0IG92ZXJyaWRlIG9mIHRoZQorICAgICAgICBkZXN0cnVjdG9yLiBVcGRhdGVk
IGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyk6IFVwZGF0ZWQgdG8gdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOiBUb29rIG91dCB1bm5lZWRlZCBpbmNsdWRl
cywgbWFkZSBldmVyeXRoaW5nCisgICAgICAgIHByaXZhdGUgcmF0aGVyIHRoYW4gcHJvdGVjdGVk
LiBBZGRlZCBhbiBleHBsaWNpdCB2aXJ0dWFsIGNvbnN0cnVjdG9yIHNvIHdlIGNhbgorICAgICAg
ICBjb21waWxlIHdpdGhvdXQga25vd2luZyBob3cgdG8gcmVmL2RlcmVmIFRleHRSZXNvdXJjZURl
Y29kZXIuCisKKyAgICAgICAgKiBsb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6
IFVwZGF0ZWQgdG8gdXNlIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgdG8gY2FsbCBhZGREYXRh
QnVmZmVyIG9ubHkgaWYgdGhlcmUgaXMgYSBuZXcgZGF0YSBidWZmZXIuCisKKyAgICAgICAgKiBs
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6IFVzZSBTaGFyZWRCdWZmZXImIGlu
c3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6RGlza0Nh
Y2hlTW9uaXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKTogVXNlIFNoYXJlZEJ1ZmZlciogaW5zdGVhZCBvZgorICAgICAgICBSZWZQdHI8UmVz
b3VyY2VCdWZmZXI+LgorCisgICAgICAgICogbG9hZGVyL21hYy9SZXNvdXJjZUJ1ZmZlci5tbTog
UmVtb3ZlZC4KKworICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6IFVz
ZSBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjbGVhcik6IFVzZSBhIG1vZGVybiBmb3Ig
bG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSk6IFJldHVybiBhIFBh
c3NSZWYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIsIHNpbmNlCisgICAgICAgIHRoaXMgbmV2ZXIg
cmV0dXJucyBudWxsLiBVc2UgbW9kZXJuIGZvciBsb29wcy4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKTogVXNlIGEgbW9kZXJuIGZvciBsb29wLgor
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6IENoYW5nZWQgY29weSB0byByZXR1
cm4gUGFzc1JlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisgICAgICAgIENoYW5nZWQgdHJ5UmVw
bGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyIHRvIHRha2UgYSByZWZlcmVuY2UgcmF0aGVy
IHRoYW4KKyAgICAgICAgYSBwb2ludGVyLgorCisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlSZXBsYWNl
Q29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIpOiBUYWtlIGEgcmVmZXJlbmNlCisgICAgICAgIGlu
c3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmg6IFJlbW92ZWQgdW51c2VkIGZ1bmN0aW9uCisgICAgICAg
IGJ1ZmZlclJlY2VpdmVkIGFuZCB1bm5lZWRlZCBidWZmZXIgYXJndW1lbnQgZnJvbSBsb2FkRmlu
aXNoZWQuIEFsc28gbWFya2VkIHRoZQorICAgICAgICBjb25zdHJ1Y3RvciBleHBsaWNpdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgUmVtb3ZlZCBpbmNsdWRlIG9mIFJlc291cmNlQnVm
ZmVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZSk6IFVzZQorICAgICAgICBT
aGFyZWRCdWZmZXIgZGlyZWN0bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmluaXNoZWQpOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8K
KyAgICAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50LgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06IFJlbW92ZWQgaW5jbHVkZSBvZiBSZXNvdXJj
ZUJ1ZmZlci5oLgorCiAyMDE0LTEwLTI0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBWaWRlbyByZXNvbHV0aW9uIGNoYW5nZXMg
dHJpZ2dlciBhIGNyYXNoIGluIHRoZSBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
NWY1NjIxZmM0MmNiZjJiZmNjMGRlZGUyMjRjNjVjNmEzOGFiMTRlOC4uZmNiOWQyNDBiNmI3MjI0
MzMxMWU2NjRjNDIxOWNjZDE4ZjRmMTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE0LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBFbGltaW5hdGUgUmVzb3VyY2VCdWZmZXIgYW5kIHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkg
aW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM4MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0
YV0pOiBVc2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRN
TFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJv
cHBlZEF0RGVzdGluYXRpb246XSk6IERpdHRvLgorCiAyMDE0LTEwLTI4ICBKZXJlbXkgSm9uZXMg
IDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgb3B0aW1pemVkIGZ1bGxzY3JlZW4g
bW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAzYTNiMjAxZjg3NTZlODcyZDE2OTJiNGIyYTAyNGM2
NjNhNzRmOGVjLi40MzRjNTdjMWI1YWIwYmY4YmEwMWViODE5NTVhZDYzNGJlZDY1OGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMTAtMzAgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEVsaW1pbmF0ZSBSZXNvdXJjZUJ1ZmZlciBhbmQg
dXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViRGF0YVNvdXJjZTo6ZGF0YSk6IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAg
IChXZWJEYXRhU291cmNlOjpzdWJyZXNvdXJjZUZvclVSTCk6IERpdHRvLgorCiAyMDE0LTEwLTIw
ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5D
YWlyb10gQ3Jhc2ggaW4gQVRJIGRpc3BsYXkgZHJpdmVyIGluIGFjY2VsZXJhdGVkIGNvbXBvc2l0
aW5nIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjkwYTY0NmUyYWY4YThkODhmNDQ4OTNiMjg3MjEyNWE4
NzBhZDFkNy4uY2FmMDcxMzBhNjEzYjJjOWZiMTQzZGI2NjA4NzFlZDFjZWViOTdhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBFbGltaW5hdGUgUmVzb3VyY2VCdWZmZXIgYW5kIHVzZSBTaGFy
ZWRCdWZmZXIgZGlyZWN0bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlZCBXZWJSZXNvdXJjZUJ1
ZmZlci5jcHAuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZm
ZXIpOiBVc2UgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOiBEaXR0by4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IuaDogRGl0dG8uCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFj
a2VkKTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJj
ZUxvYWRlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0
cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVyKTogRGl0dG8uCisKKyAgICAgICAg
KiBTaGFyZWQvV2ViUmVzb3VyY2VCdWZmZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJl
ZC9XZWJSZXNvdXJjZUJ1ZmZlci5oOiBSZW1vdmVkLgorCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIFdlYlJlc291cmNlQnVmZmVyLmNwcC9oLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZSk6IFVzZSBhIHJlZmVyZW5jZSBpbnN0
ZWFkCisgICAgICAgIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUu
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDogRGl0
dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6IERp
dHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZyk6IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWU6OnNvdXJjZSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUpOiBSZWZhY3RvcmVkIHRvIG1ha2UgdGhlIHJlbGF0aW9uc2hpcAorICAgICAgICBiZXR3ZWVu
IHRoZSBidWZmZXIgYW5kIHRoZSBEYXRhUmVmZXJlbmNlIGNsZWFyZXIgYW5kIHRvIGF2b2lkIGhh
dmluZyBhIGxvbmctbGl2ZWQKKyAgICAgICAgRGF0YVJlZmVyZW5jZSBwb2ludGluZyB0byBhbiB1
bmRlcmx5aW5nIGJ1ZmZlciB3aXRoIHVuY2xlYXIgbGlmZXRpbWUuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSk6IERpdHRvLiBBbHNv
IHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dFJlc291cmNlRGF0YUZyb21GcmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb250YWluaW5nTGlu
a0VsZW1lbnQpOiBVc2UgZWxlbWVudExpbmVhZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQpOiBVc2UgcmVmZXJlbmNlcyBhbmQgU2hhcmVkQnVmZmVy
LgorICAgICAgICBBTHNvIGRpZCBhIGJpdCBvZiBvdGhlciBjbGVhbnVwIGluIGhlcmUuCisgICAg
ICAgIChXZWJLaXQ6OmlzQXNzaXN0YWJsZUVsZW1lbnQpOiBUYWtlIEVsZW1lbnQmIGluc3RlYWQg
b2YgTm9kZSosIHNpbmNlIHRoYXQncyB3aGF0CisgICAgICAgIHRoZSBjYWxsZXIgaGFzLgorICAg
ICAgICAoV2ViS2l0OjpuZXh0QXNzaXN0YWJsZUVsZW1lbnQpOiBDaGFuZ2VkIG5hbWUgdG8gbWF0
Y2ggd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KKyAgICAgICAgQWRkZWQgYW4gb2J2aW91c2x5LW1p
c3NpbmcgY2hlY2sgb24gdGhlIHN0YXJ0Tm9kZSBhcmd1bWVudC4gVXBkYXRlZCBmb3IgY2hhbmdl
CisgICAgICAgIHRvIGlzQXNzaXN0YWJsZUVsZW1lbnQgYWJvdmUuIFRha2UgYSBQYWdlJiBpbnN0
ZWFkIG9mIGEgUGFnZSouCisgICAgICAgIChXZWJLaXQ6Omhhc0Fzc2lzdGFibGVFbGVtZW50KTog
Q2hhbmdlZCBuYW1lIHRvIG1hdGNoIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMuCisgICAgICAgIFVw
ZGF0ZWQgZm9yIGNoYW5nZSB0byBuZXh0QXNzaXN0YWJsZUVsZW1lbnQgYWJvdmUuIFRvb2sgb3V0
IGluY29ycmVjdCBjb21wYXJpc29uCisgICAgICAgIG9mIGEgQysrIHBvaW50ZXIgdG8gdGhlIE9i
amVjdGl2ZS1DIG9iamVjdCBwb2ludGVyIG5pbC4gVGFrZSBhIFBhZ2UmIGluc3RlYWQgb2YgYSBQ
YWdlKi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKTog
VXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24pOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCiAy
MDE0LTEwLTI5ICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gVXNlIG1vZGVybiBmb3ItbG9vcHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYWYzNDcwMTFiMTEyZjIwZTJkNTFjYzdjNDA3M2Q1NTY4MjBkNzVjZi4u
MWIxMjg3OGFlOTZiNzRjMDQxY2E4ZmY2MDQ1YzkwNzM3MjhkMTdjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE4MTYsNyArMTgxNiw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2Fk
ZXIvUG9saWN5Q2FsbGJhY2suY3BwCiAgICAgbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCiAgICAg
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKLSAgICBsb2FkZXIvUmVzb3VyY2VCdWZmZXIuY3Bw
CiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAogICAgIGxvYWRlci9SZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCAzN2RiYWRhYzhhZTU1MWE5ZGUwMWU3YWRkMGQ2MWZlYjFiZjczM2Rj
Li40YmQ5NGMwYTRiNjk0YWY0YzQ2OTQ5NWUyOWRjYjdmNjkzMTFhODIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMzQwLDcgKzM0MCw3IEBAIF9fWk43V2ViQ29yZTEzcG9pbnRlckN1cnNvckV2
CiBfX1pON1dlYkNvcmUxM3RvSlNET01XaW5kb3dFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29y
ZTE0Q2FjaGVkUmVzb3VyY2UxMnJlbW92ZUNsaWVudEVQTlNfMjBDYWNoZWRSZXNvdXJjZUNsaWVu
dEUKIF9fWk43V2ViQ29yZTE0Q2FjaGVkUmVzb3VyY2UxNnVucmVnaXN0ZXJIYW5kbGVFUE5TXzI0
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlRQotX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTIx
dHJ5UmVwbGFjZUVuY29kZWREYXRhRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVy
RUVFCitfX1pON1dlYkNvcmUxNENhY2hlZFJlc291cmNlMjF0cnlSZXBsYWNlRW5jb2RlZERhdGFF
Uk5TXzEyU2hhcmVkQnVmZmVyRQogX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTlhZGRDbGll
bnRFUE5TXzIwQ2FjaGVkUmVzb3VyY2VDbGllbnRFCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RM
aXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJm
bG93RUVFCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdgpAQCAtMzgzLDEzICszODMs
NiBAQCBfX1pON1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVhdGVCbG9iUmVnaXN0cnlFdgog
X19aTjdXZWJDb3JlMTRMb2FkZXJTdHJhdGVneTIxcmVzb3VyY2VMb2FkU2NoZWR1bGVyRXYKIF9f
Wk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kyNWxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlFUE5T
XzE3TmV0d29ya2luZ0NvbnRleHRFbVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFTlNfMTdTdG9yZWRD
cmVkZW50aWFsc0VOU18yMkNsaWVudENyZWRlbnRpYWxQb2xpY3lFUk5TXzEzUmVzb3VyY2VFcnJv
ckVSTlNfMTZSZXNvdXJjZVJlc3BvbnNlRVJOM1dURjZWZWN0b3JJY0xtMEVOU0NfMTVDcmFzaE9u
T3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQxMnBsdWdpbldpZGdldEV2
Ci1fX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyMTJjcmVhdGVOU0RhdGFFdgotX19aTjdXZWJD
b3JlMTRSZXNvdXJjZUJ1ZmZlcjZhcHBlbmRFUEtjagotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1
ZmZlckMxRVBLY2oKLV9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJDMUV2Ci1fX1pON1dlYkNv
cmUxNFJlc291cmNlQnVmZmVyQzJFdgotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckQxRXYK
LV9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJEMkV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNl
SGFuZGxlMTJmaXJzdFJlcXVlc3RFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTE2c2V0
RGVmZXJzTG9hZGluZ0ViCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRl
bnRTbmlmZmluZ0V2CkBAIC0xNzI1LDkgKzE3MTgsNiBAQCBfX1pOSzdXZWJDb3JlMTRGcmFtZVNl
bGVjdGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlc0VSTjNXVEY2VmVjdG9ySU5T
XwogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2
CiBfX1pOSzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRlbTEwbWFya2VyVGV4dEV2Ci1fX1pOSzdXZWJD
b3JlMTRSZXNvdXJjZUJ1ZmZlcjRkYXRhRXYKLV9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVy
NHNpemVFdgotX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI3aXNFbXB0eUV2CiBfX1pOSzdX
ZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEwY29ubmVjdGlvbkV2CiBfX1pOSzdXZWJDb3JlMTRSZXNv
dXJjZUxvYWRlcjExZnJhbWVMb2FkZXJFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIz
MmlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzRXYKQEAgLTI3OTgsNyArMjc4OCw2IEBA
IF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMjlyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVj
dGlvbkVpCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMycmFuZ2VCeUV4dGVuZGluZ0N1
cnJlbnRTZWxlY3Rpb25FaQogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNWNoYXJhY3Rl
ckluUmVsYXRpb25Ub0NhcmV0U2VsZWN0aW9uRWkKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0
aW9uMzZlbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb25FdgotX19aTks3V2ViQ29y
ZTE0UmVzb3VyY2VCdWZmZXIxMnNoYXJlZEJ1ZmZlckV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0
eU9yaWdpbjh0b1N0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMWNvbnRl
bnRzTGF5ZXJGb3JNZWRpYUV2CiBfX1pOSzdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb240bGVmdEVi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA4MjMzNjY0YTBiNTlhNjhhNDk4MTRiYmI1MTliZGVhMWJiYjg2YTdkLi5kYmMxNmRkMDQzNGIz
MjMyMjAxOGU3NTMxYWZkMDdkOWM0MjRiNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTcyNTEsNyArNzI1MSw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcUG9saWN5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFBvbGljeUNoZWNrZXIuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFByb2dyZXNzVHJhY2tlci5jcHAiIC8+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcUmVzb3VyY2VCdWZmZXIuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlTG9hZGVyLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxjZlxSZXNvdXJjZUxvYWRlckNGTmV0LmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAiIC8+CkBAIC0xOTI1NCw3ICsxOTI1Myw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2tlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cbG9hZGVyXFByb2dyZXNzVHJhY2tlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cbG9hZGVyXFByb2dyZXNzVHJhY2tlckNsaWVudC5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlQnVmZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2FkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWROb3RpZmllci5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IDMyMmI3MGM2ZWZkZWQ4YjNhOWQxYWUwYTMxMWQ0MDBhMDFlZWJmMGEuLmM1ZjY5
YmU2ZTAyOGE0NGMwM2M5MTA5ZDk4YTA0MzA2ZjQ2NjA1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTky
Nyw5ICs5MjcsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFByb2dyZXNz
VHJhY2tlci5jcHAiPgogICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUJ1ZmZlci5j
cHAiPgotICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRlci5jcHAiPgogICAg
ICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc5NTAsOSAr
Nzk0Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50LmgiPgogICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUJ1ZmZlci5o
Ij4KLSAgICAgIDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2FkZXIuaCI+CiAgICAgICA8
RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyOWI5YzMwYzkz
YmZjODQ4ZTRmMzhkYTZiNzlkZGQyNjc5NmYyOTYuLjk2ODg1YTY2ZWQ4OGFlMzMxN2RmMzkxYWMw
Y2M2YzEyNTRhZWU1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NjgsOSArMTg2OCw2IEBACiAJCTUxNDA1Qzg5MTkwQjAx
NDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDA1Qzg3MTkwQjAxNDQwMDc1NEY5NCAvKiBT
ZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QjNGNzIw
QzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRCM0Y3NjBDNzIyMDU1MDAwNTMwREYgLyogRmls
ZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1tICovOyB9Owot
CQk1MTRCQzgzRjE2MUNGMDRBMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCQzgzRDE2MUNGMDQzMDA0
RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gKi87IH07Ci0JCTUxNEJDODQyMTYxQ0YwNUMwMDRE
NTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTRCQzg0MDE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZm
ZXIuY3BwICovOyB9OwotCQk1MTRCQzg0MzE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJD
ODQxMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjM3MENFOTIyNUUwMDdFRjND
RCAvKiBKU1NRTEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNEM3NjM1MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTEVycm9yLmNwcCAqLzsg
fTsKIAkJNTE0Qzc2MzgwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2MzYwQ0U5
MjI1RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwICovOyB9OwogCQk1MTRDNzY0QzBD
RTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBB
dXRoZW50aWNhdGlvbk1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC04OTc5LDkgKzg5NzYsNiBAQAogCQk1MTQwNUM4NzE5MEIwMTQ0MDA3NTRG
OTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNlbGVjdGlvblJlY3RHYXRoZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QkM4M0QxNjFDRjA0MzAwNEQ1MkY0IC8q
IFJlc291cmNlQnVmZmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUmVzb3VyY2VCdWZmZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEJD
ODQwMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUxNEJDODQxMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUJ1ZmZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzYzNTBDRTkyMjVFMDA3RUYzQ0QgLyog
SlNTUUxFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NR
TEVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2MzYwQ0U5MjI1
RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc2MjgsNyArMTc2MjIsNiBAQAogCQkJCTFD
MjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8sCiAJCQkJ
NjU2RDM3MUEwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLmggKi8sCiAJCQkJ
NjU2RDM3MUIwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLm1tICovLAotCQkJ
CTUxNEJDODNEMTYxQ0YwNDMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSAqLywKIAkJCQk1
MUFBM0Y2RTBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gKi8sCiAJCQkp
OwogCQkJcGF0aCA9IG1hYzsKQEAgLTIxMjk2LDggKzIxMjg5LDYgQEAKIAkJCQkxQTJBNjgyMTBC
NUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmNwcCAqLywKIAkJCQkxQTJBNjgyMjBC
NUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggKi8sCiAJCQkJMUFDQURENzgxODgw
RDkxQzAwRDhCNzFEIC8qIFByb2dyZXNzVHJhY2tlckNsaWVudC5oICovLAotCQkJCTUxNEJDODQw
MTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5jcHAgKi8sCi0JCQkJNTE0QkM4NDEx
NjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmggKi8sCiAJCQkJOTNFMjI3REUwQUY1
ODlBRDAwRDQ4MzI0IC8qIFJlc291cmNlTG9hZGVyLmNwcCAqLywKIAkJCQk2NTZEMzcyNzBBREJB
NURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQlEMEEzQTczMDE0MDVBMzk4
MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggKi8sCkBAIC0yNTg2MCw3ICsyNTg1
MSw2IEBACiAJCQkJOTlDQzBCNUMxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheVNlc3Npb25TZWdt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTk4QUVDNjEzRjlEMEVBMDA5MEIxQUEgLyogUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREQw
MTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTE0QkM4NDMxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JC
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3OTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVz
b3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjkzMjgsOCArMjkzMTgsNiBAQAogCQkJ
CTk5Q0MwQjU5MThCRTk4NEEwMDZDRUJDQyAvKiBSZXBsYXlTZXNzaW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5Q0MwQjVCMThCRTk4NEEwMDZDRUJDQyAvKiBSZXBsYXlTZXNzaW9uU2VnbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RDRjEyNTFGMTJEMDAzRUYyNjkgLyogUmVz
ZXRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE0QkM4NDIxNjFDRjA1QzAwNEQ1
MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNEJDODNGMTYx
Q0YwNEEwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkz
NEY3MTNFMEQ1QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJj
ZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGI4ZDkzMzA1YTk3MzIzNWNjYTcz
MDcwNWVlM2I0ZjQzZDVkNDkxYjQuLjIwMWMyNTljODM5NmI2NTRmZjNmNmVhNDJjMTVkZDQ0NzEy
Y2U3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRF
eHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRF
eHRlbnNpb25zLm1tCkBAIC02Miw3ICs2Miw2IEBACiAjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIK
ICNpbXBvcnQgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW1wb3J0ICJSZW5kZXJUZXh0Lmgi
Ci0jaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAj
aW1wb3J0ICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbXBvcnQgIlZpc2libGVVbml0cy5oIgpAQCAt
NDY0LDIzICs0NjMsMTUgQEAgQGltcGxlbWVudGF0aW9uIERPTUhUTUxJbWFnZUVsZW1lbnQgKFdl
YkRPTUhUTUxJbWFnZUVsZW1lbnRPcGVyYXRpb25zUHJpdmF0ZSkKIAogLSAoTlNEYXRhICopZGF0
YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogewotICAgIFdlYkNvcmU6OkNhY2hl
ZEltYWdlICpjYWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hlZEltYWdlKCk7CisgICAgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2Uo
KTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFdlYkNv
cmU6OkltYWdlICppbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOworICAgIFdlYkNvcmU6Oklt
YWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyICpkYXRhID0gbmlsOwot
ICAgIGlmIChyYXdJbWFnZURhdGEpIHsKLSAgICAgICAgUmVzb3VyY2VCdWZmZXIgKnJlc291cmNl
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgICAgIGlmIChyZXNv
dXJjZUJ1ZmZlcikKLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZUJ1ZmZlci0+c2hhcmVkQnVm
ZmVyKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YSA9IGltYWdlLT5kYXRhKCk7Ci0gICAg
fQorICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0KICAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCku
YXV0b3JlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CmluZGV4IDAxOTJkNWU5MDExYTIwMjVlNTdjNmMwYzRlZDMxYTA4NmExZWRiMjMuLmI5ZWI5NmM2
ZDdiN2JlNjA1ZjYxNDFiMjM4MTk2MTA3YzYxNWE1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW0KQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJQYXN0ZWJvYXJk
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgot
I2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKQEAg
LTM4NSw3ICszODQsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJ
bWFnZS51cmwudXJsID0gaW1hZ2VFbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGltYWdlRWxlbWVudC5pbWFnZVNvdXJjZVVSTCgp
KSk7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwogICAgIHBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gcGFzdGVib2FyZC5yZXNvdXJjZU1JTUVUeXBlKGNh
Y2hlZEltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwotICAgIHBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVy
KCk7CisgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpOwogCiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDZlNDE5MGY5YjY1
M2M0MmJmZTE5MjJlMTMyMjgwOWU4YzQxYWJhYmMuLjI5Mjc2ZmEwNDRlMDYyMTNhMGZiMDNjN2Fi
YmIzZGMzYTJlNzc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
QEAgLTUyLDcgKzUyLDYgQEAKICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJCbG9j
ay5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKLSNpbXBvcnQgIlJlc291cmNlQnVmZmVyLmgi
CiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNvdW5kLmgi
CiAjaW1wb3J0ICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTQ0Nyw3ICs0NDYsNyBAQCB2b2lkIEVk
aXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVt
ZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXJsID0gdXJsOwogICAg
IHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKICAgICBwYXN0ZWJvYXJkSW1hZ2Uu
dXJsLnVzZXJWaXNpYmxlRm9ybSA9IGNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJv
YXJkSW1hZ2UudXJsLnVybCk7Ci0gICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNh
Y2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKTsKKyAgICBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAg
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpOwogCiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggMTc5ZWMxMDgxNjVmYTNi
YTFhNTFjYTMxYWM1ZGY2ZGY2ZGRkYzBkYi4uNDBhN2I1NzIwODcxZGFkY2U5OGQ5YjUzNjIxYWRl
ZGM2MGUwMTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC00NSw3
ICs0NSw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhd0RhdGFEb2N1bWVudFBh
cnNlci5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTEzNCw3ICsxMzMsOCBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmco
KQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3RydWN0
dXJlKCk7CiAKLSAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+YWRkRGF0YUJ1ZmZl
cihsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpLmdldCgpKTsKKyAgICBpZiAoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICAg
ICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmFkZERhdGFCdWZmZXIoKmJ1ZmZlcik7
CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsKIH0KQEAgLTE0MywxMSArMTQzLDExIEBAIHZvaWQgSW1h
Z2VEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0
b3BwZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVk
SW1hZ2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxS
ZXNvdXJjZUJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0
YSgpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBj
b3B5IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAgICAgICAg
IC8vIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KLSAgICAgICAgaWYgKGxv
YWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCisgICAgICAgIGlmIChkYXRhICYm
IGxvYWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCiAgICAgICAgICAgICBkYXRh
ID0gZGF0YS0+Y29weSgpOwogCiAgICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCmluZGV4IDc4MjgyNmRjN2Q5OTA4Y2Y0ZDk3NTdjNmE4NmU3NmIzYmQwMDg5ZDMuLmY5
YjJiMjEzZmE0MGVmYjVlNGIzN2Q3MWU5M2U4NTM2ZjEyOWY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC02Miw3ICs2Miw2IEBA
CiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgpAQCAtMTQzLDExICsxNDIsOSBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6
Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwog
CiAgICAgKmJhc2U2NEVuY29kZWQgPSAhaGFzVGV4dENvbnRlbnQoY2FjaGVkUmVzb3VyY2UpOwog
ICAgIGlmICgqYmFzZTY0RW5jb2RlZCkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBoYXNaZXJvU2l6ZSA/IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgOiBjYWNoZWRSZXNv
dXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCk7Ci0KKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFzWmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpIDogY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgICpyZXN1bHQgPSBiYXNl
NjRFbmNvZGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTY2LDcgKzE2Myw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBT
CiAgICAgICAgICAgICAqcmVzdWx0ID0gZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PigqY2FjaGVkUmVz
b3VyY2UpLnNjcmlwdCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOiB7Ci0gICAgICAgICAgICBSZXNvdXJjZUJ1ZmZl
ciogYnVmZmVyID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgICAg
ICBhdXRvKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAg
ICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gY3JlYXRlWEhSVGV4
dERlY29kZXIoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgY2FjaGVkUmVz
b3VyY2UtPnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKQEAgLTE3Nyw3ICsxNzQsNyBA
QCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJl
c291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJlc291cmNlQnVmZmVyKiBidWZm
ZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgICAgIGF1dG8q
IGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICAgICAg
cmV0dXJuIGRlY29kZUJ1ZmZlcihidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1
ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgY2FjaGVkUmVzb3VyY2UtPmVuY29kaW5nKCksIHJl
c3VsdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xODYsMTIgKzE4MywxMCBAQCBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSwgUwogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29u
dGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQp
CiB7Ci0gICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVz
b3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29k
aW5nKCk7Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRF
bmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRl
bnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5w
dXRFbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiAvLyBzdGF0aWMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAppbmRleCAxYzU3YTRmNTdlZjk1OTkxMTYxZWZhZmEwOGQwNDdmMDc3ODk1MmQ1Li40ODFi
MmJhZDQxOTJhNDUxYmY0ZDgyMjAwMjEzMmZjMDQzOWM2ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC01NCw3ICs1
NCw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlc0RhdGEuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTQwNSw4ICs0MDQsOSBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudAogCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogICAgIGlmIChtX3Jlc291cmNlc0Rh
dGEtPnJlc291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6RG9jdW1l
bnRSZXNvdXJjZSkgewotICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IGxv
YWRlci0+ZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
OwotICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHJlcXVl
c3RJZCwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIsIGxvYWRlci0+
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsKKyAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQsCisgICAgICAgICAgICBs
b2FkZXItPmZyYW1lTG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KSwKKyAgICAgICAgICAgIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGlu
ZygpKTsKICAgICB9CiAKICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlRGVjb2RlRGF0YVRvQ29u
dGVudChyZXF1ZXN0SWQpOwpAQCAtNDM1LDggKzQzNSw5IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvCiAgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBlKHJlcXVlc3RJZCkgPT0g
SW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlKSB7CiAgICAgICAgIEZyYW1lKiBm
cmFtZSA9IGxvYWRlciA/IGxvYWRlci0+ZnJhbWUoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChm
cmFtZSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+ZG9jdW1l
bnQoKSkgewotICAgICAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSBmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyLCBmcmFtZS0+ZG9jdW1l
bnQoKS0+aW5wdXRFbmNvZGluZygpKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRk
UmVzb3VyY2VTaGFyZWRCdWZmZXIocmVxdWVzdElkLAorICAgICAgICAgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCksCisgICAgICAgICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDQwYWU1
OTQ0ZWJkN2Y1NDdiOTQ1Yzk0YTdkN2QyOWM4YmYxOWFkMzAuLjk3N2VkMTRiMGUyMTYzNjhiMTEw
YjI1YzMyNjRkMTI1MDEzYjZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
b2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVkZSAi
UmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKQEAgLTE3MSwy
MCArMTcwLDIwIEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogICAgIGNsZWFy
TWFpblJlc291cmNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IERvY3VtZW50
TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VCdWZmZXI6
OmNyZWF0ZShtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVE
YXRhLmNvbnRlbnQoKS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEu
Y29udGVudCgpLT5jb3B5KCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlKQogICAgICAgICByZXR1
cm4gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIERvY3VtZW50KiBEb2N1bWVudExvYWRlcjo6ZG9jdW1lbnQo
KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkgPT0gdGhpcykKICAgICAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCk7Ci0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgRG9jdW1lbnRMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0CkBAIC05OTQsOCAr
OTkzLDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICNlbHNl
CiAgICAgCiAgICAgLy8gR2l2ZSB0aGUgYXJjaGl2ZSBtYWNoaW5lcnkgYSBjcmFjayBhdCB0aGlz
IGRvY3VtZW50LiBJZiB0aGUgTUlNRSB0eXBlIGlzIG5vdCBhbiBhcmNoaXZlIHR5cGUsIGl0IHdp
bGwgcmV0dXJuIDAuCi0gICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VCdWZm
ZXIgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgbV9hcmNoaXZlID0gQXJjaGl2ZUZhY3Rvcnk6
OmNyZWF0ZShtX3Jlc3BvbnNlLnVybCgpLCBtYWluUmVzb3VyY2VCdWZmZXIgPyBtYWluUmVzb3Vy
Y2VCdWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMCwgbV9yZXNwb25zZS5taW1lVHlwZSgpKTsKKyAg
ICBtX2FyY2hpdmUgPSBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKG1fcmVzcG9uc2UudXJsKCksIG1h
aW5SZXNvdXJjZURhdGEoKS5nZXQoKSwgbV9yZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICBpZiAo
IW1fYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMTAxMSw2ICsxMDA5
LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKIH0KIAogI2lm
IEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQorCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzZXRBcmNoaXZlKFBhc3NSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZSkKIHsKICAgICBtX2Fy
Y2hpdmUgPSBhcmNoaXZlOwpAQCAtMTA1OCw0NyArMTA1Nyw0NiBAQCBTaGFyZWRCdWZmZXIqIERv
Y3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJ
VkUpIHx8IEVOQUJMRShNSFRNTCkKIAogQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6
YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICgh
bV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2Ug
PSBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFyY2hpdmVSZXNvdXJjZUZvclVSTCh1cmwp
OwotCi0gICAgcmV0dXJuIHJlc291cmNlICYmICFyZXNvdXJjZS0+c2hvdWxkSWdub3JlV2hlblVu
YXJjaGl2aW5nKCkgPyByZXNvdXJjZSA6IDA7CisgICAgaWYgKCFyZXNvdXJjZSB8fCByZXNvdXJj
ZS0+c2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAogUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHIgPSByZXNwb25zZSgpOwotICAgIAotICAgIFJlZlB0cjxSZXNvdXJjZUJ1
ZmZlcj4gbWFpblJlc291cmNlQnVmZmVyID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VCdWZmZXIgPyBtYWluUmVzb3VyY2VC
dWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
ID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIAotICAgIHJldHVybiBBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZShkYXRhLCByLnVybCgpLCByLm1pbWVUeXBlKCksIHIudGV4dEVuY29kaW5nTmFt
ZSgpLCBmcmFtZSgpLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKKyAgICBhdXRvJiByZXNwb25zZSA9
IHRoaXMtPnJlc3BvbnNlKCk7CisgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRh
dGEsIHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5j
b2RpbmdOYW1lKCksIGZyYW1lKCktPnRyZWUoKS51bmlxdWVOYW1lKCkpOwogfQogCiBQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogewogICAgIGlmICghaXNDb21taXR0ZWQoKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlZFJlc291cmNlKHVybCk7CiAg
ICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3VyY2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVy
biBhcmNoaXZlUmVzb3VyY2VGb3JVUkwodXJsKTsKIAogICAgIGlmIChyZXNvdXJjZS0+dHlwZSgp
ID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlc291cmNlQnVmZmVyKiBkYXRhID0gcmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgYXV0byogZGF0YSA9IHJlc291cmNlLT5yZXNvdXJj
ZUJ1ZmZlcigpOwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEt
PnNoYXJlZEJ1ZmZlcigpLCB1cmwsIHJlc291cmNlLT5yZXNwb25zZSgpKTsKKyAgICByZXR1cm4g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YSwgdXJsLCByZXNvdXJjZS0+cmVzcG9uc2UoKSk7
CiB9CiAKIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gRG9jdW1lbnRMb2FkZXI6OnN1
YnJlc291cmNlcygpIGNvbnN0CkBAIC0xNTExLDcgKzE1MDksNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAgIGZyYW1lTG9h
ZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7Ci0gICAg
UmVmUHRyPFJlc291cmNlQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0
YSgpOwogICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA0
MDNlMTk1NzFjNmQ2NmRmZDA3NzZmNjc1MDk3NTNlYTkxNTkyNTU2Li43Njk4ZmZiODRmYmY3MDJl
ODRmMWMxZDJmZTBkOWUxYmFjNTI1OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaApAQCAtNjgsNyArNjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
RnJhbWU7CiAgICAgY2xhc3MgRnJhbWVMb2FkZXI7CiAgICAgY2xhc3MgUGFnZTsKLSAgICBjbGFz
cyBSZXNvdXJjZUJ1ZmZlcjsKICAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKICAgICBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAgICAgY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwpAQCAtOTMsNyArOTIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVM
b2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlc291
cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0
OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSgpIGNvbnN0OwogICAgICAgICAKICAgICAgICAgRG9jdW1lbnRXcml0ZXImIHdy
aXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4MDc1NmYxM2JiMDE3NjZmNGFjZjli
YmYzYThlNjM5Njc1MzJiY2Y0Li4xN2Y1ZjdhNmU5MmRiNGU3ZDU0MWYwMDI5MWQ0N2FlNDljYjg0
YWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJNZWRpYVJlc291cmNlTG9hZGVyLmgiCiAK
ICNpZiBFTkFCTEUoVklERU8pCisKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTEx
Niw5ICsxMTYsNiBAQCB2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdAogCiAgICAgUmVmUHRyPE1lZGlh
UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZl
ZChkYXRhLCBkYXRhTGVuZ3RoKTsKLQotICAgIGlmIChTaGFyZWRCdWZmZXIqIGJ1ZmZlciA9IHJl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpID8gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNo
YXJlZEJ1ZmZlcigpIDogbnVsbHB0cikKLSAgICAgICAgbV9jbGllbnQtPmJ1ZmZlclJlY2VpdmVk
KGJ1ZmZlcik7CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAtMTI5LDcgKzEyNiw3IEBAIHZvaWQgTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQog
ICAgIGlmIChyZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkKICAgICAgICAgbV9jbGll
bnQtPmxvYWRGYWlsZWQocmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVkKHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpID8g
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpIDogbnVsbHB0cik7Cisg
ICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKTsKICAgICBzdG9wKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhNmJhOGNlNTVkMTI3ZGUzYTYyNmIxMzc1NTk4OTIwYmM3NjI2MzUyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUJ1ZmZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgotCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVzb3VyY2VCdWZmZXI6OlJlc291
cmNlQnVmZmVyKCkKLSAgICA6IG1fc2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkp
Ci17Ci19Ci0KLVJlc291cmNlQnVmZmVyOjpSZXNvdXJjZUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBzaXplKQotICAgIDogbV9zaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgc2l6ZSkpCi17Ci19Ci0KLVJlc291cmNlQnVmZmVyOjpSZXNvdXJjZUJ1ZmZlcihQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyKQotICAgIDogbV9zaGFyZWRCdWZm
ZXIoc2hhcmVkQnVmZmVyKQotewotICAgIEFTU0VSVChtX3NoYXJlZEJ1ZmZlcik7Ci19Ci0gICAg
Ci1SZXNvdXJjZUJ1ZmZlcjo6flJlc291cmNlQnVmZmVyKCkKLXsKLX0KLQotUGFzc1JlZlB0cjxS
ZXNvdXJjZUJ1ZmZlcj4gUmVzb3VyY2VCdWZmZXI6OmFkb3B0U2hhcmVkQnVmZmVyKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWQpCi17Ci0gICAgcmV0dXJuIHNoYXJlZCA/IGFkb3B0UmVm
KG5ldyBSZXNvdXJjZUJ1ZmZlcihzaGFyZWQpKSA6IG51bGxwdHI7Ci19Ci0KLWNvbnN0IGNoYXIq
IFJlc291cmNlQnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZm
ZXItPmRhdGEoKTsKLX0KLQotdW5zaWduZWQgUmVzb3VyY2VCdWZmZXI6OnNpemUoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci0+c2l6ZSgpOwotfQotCi1ib29sIFJlc291cmNl
QnVmZmVyOjppc0VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmlz
RW1wdHkoKTsKLX0KLQotdm9pZCBSZXNvdXJjZUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIHVuc2lnbmVkIHNpemUpCi17Ci0gICAgbV9zaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhLCBz
aXplKTsKLX0KLQotdm9pZCBSZXNvdXJjZUJ1ZmZlcjo6YXBwZW5kKFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQotewotICAgIG1fc2hhcmVkQnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLX0KLQotI2lmIFVT
RShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLXZvaWQgUmVzb3VyY2VCdWZmZXI6OmFw
cGVuZChDRkRhdGFSZWYgZGF0YSkKLXsKLSAgICBBU1NFUlQobV9zaGFyZWRCdWZmZXIpOwotICAg
IG1fc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YSk7Ci19Ci0jZW5kaWYKLQotdm9pZCBSZXNvdXJj
ZUJ1ZmZlcjo6Y2xlYXIoKQotewotICAgIG1fc2hhcmVkQnVmZmVyLT5jbGVhcigpOwotfQotCi11
bnNpZ25lZCBSZXNvdXJjZUJ1ZmZlcjo6Z2V0U29tZURhdGEoY29uc3QgY2hhciomIGRhdGEsIHVu
c2lnbmVkIHBvc2l0aW9uKSBjb25zdAotewotICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci0+Z2V0
U29tZURhdGEoZGF0YSwgcG9zaXRpb24pOwotfQotCi1TaGFyZWRCdWZmZXIqIFJlc291cmNlQnVm
ZmVyOjpzaGFyZWRCdWZmZXIoKSBjb25zdAotewotICAgIC8vIEN1cnJlbnRseSBhbGwgUmVzb3Vy
Y2VCdWZmZXJzIGFyZSBiYWNrZWQgYnkgU2hhcmVkQnVmZmVycy4KLSAgICAvLyBJbiB0aGUgZnV0
dXJlIHdlIG1pZ2h0IGhhdmUgdG8gY3JlYXRlIHRoZSBTaGFyZWRCdWZmZXIgb24gZGVtYW5kIGhl
cmUuCi0gICAgLy8gV2Ugc2hvdWxkIGFsc28gcGhhc2Ugb3V0IGFzIG11Y2ggdXNlIG9mIHRoaXMg
YWNjZXNzb3IgYXMgcG9zc2libGUgYW5kIGhhdmUgY2xpZW50cwotICAgIC8vIGVpdGhlciB1c2Ug
dGhlIFJlc291cmNlQnVmZmVyIGRpcmVjdGx5IG9yIHVzZSBnZXRTb21lRGF0YSgpIHdoZW4gc2Vu
c2ljYWwuCi0gICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLmdldCgpOwotfQotCi1QYXNzUmVmUHRy
PFJlc291cmNlQnVmZmVyPiBSZXNvdXJjZUJ1ZmZlcjo6Y29weSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcihtX3NoYXJlZEJ1ZmZlci0+Y29w
eSgpKTsKLX0KLQotI2lmIFVTRShDRikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFJlc291cmNlQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKQotewotICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci0+Y3JlYXRl
Q0ZEYXRhKCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTYzYjA4YWIxYjQ4MjliNjU3MWE1YjYwNDM5YjI5ZDE5ZWFhMTJiYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJlc291cmNlQnVmZmVy
X2gKLSNkZWZpbmUgUmVzb3VyY2VCdWZmZXJfaAotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLU9CSkNf
Q0xBU1MgTlNEYXRhOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2hh
cmVkQnVmZmVyOwotCi1jbGFzcyBSZXNvdXJjZUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
c291cmNlQnVmZmVyPiB7Ci1wdWJsaWM6Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJj
ZUJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlQnVmZmVyKTsg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlQnVm
ZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVy
PiBhZG9wdFNoYXJlZEJ1ZmZlcihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VCdWZmZXIoKTsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVu
ZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOwotICAgIHZvaWQgYXBwZW5kKFNoYXJlZEJ1ZmZlciop
OwotI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICB2b2lkIGFwcGVu
ZChDRkRhdGFSZWYpOwotI2VuZGlmCi0gICAgdm9pZCBjbGVhcigpOwotICAgIAotICAgIHVuc2ln
bmVkIGdldFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBkYXRhLCB1bnNpZ25lZCBwb3NpdGlvbiA9IDAp
IGNvbnN0OwotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyKCkgY29uc3Q7Ci0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgdm9pZCB0cnlSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoU2hhcmVkQnVmZmVyKik7Ci0jZW5kaWYKLSAgICBQYXNzUmVmUHRy
PFJlc291cmNlQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKTsKLSNlbmRp
ZgotI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKTsK
LSNlbmRpZgotCi1wcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VCdWZmZXIo
KTsKLQotcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUJ1ZmZlcihjb25zdCBj
aGFyKiwgdW5zaWduZWQpOwotICAgIFJlc291cmNlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPik7Ci0KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NoYXJlZEJ1ZmZlcjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlQnVmZmVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDJjODFmYTM0YzY2Y2Iw
ZGRjMzNmOGY0NjI3MzI1Y2UzYzAxMGU1YmYuLjQzYjljM2YwODhiYWYzNGY4MTk4MGFkMzgzOTEx
OWU4MjU2ODk1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApA
QCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNpbmNsdWRlICJSZXNv
dXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgpAQCAtMjIy
LDEyICsyMjEsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnUKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsK
LSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXIgPyBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRT
aGFyZWRCdWZmZXIoYnVmZmVyKSA6IFJlc291cmNlQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3Ro
KTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXIgPyBidWZmZXIgOiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAg
ICAKICAgICBpZiAoIW1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1
ZmZlciA/IFJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcihidWZmZXIpIDogUmVzb3Vy
Y2VCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOworICAgICAgICBtX3Jlc291cmNlRGF0YSA9
IGJ1ZmZlciA/IGJ1ZmZlciA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGlmIChidWZmZXIpCiAgICAgICAgICAgICBtX3Jlc291cmNlRGF0
YS0+YXBwZW5kKGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IDhkMDk0YzY0ZWY4MTdmMWRmYmYxNmU5ZTliYjM1MTIzYWUwOWRmMTYuLjE2MTVmNmQ5YmY4
ZGMzNGE0ZTliY2Y0NmJiNjNiNjhmNmNmZGEwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5oCkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xh
c3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIFVSTDsKLWNsYXNzIFJlc291cmNl
QnVmZmVyOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBjbGFzcyBRdWlja0xvb2tIYW5kbGU7CkBA
IC04OCw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNl
cygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Q7CiAKLSAg
ICBSZXNvdXJjZUJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZURhdGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0
YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCk7CkBAIC0y
MDQsNyArMjAzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJl
Y3RzLgotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgdW5zaWduZWQgbG9u
ZyBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDdkNDBlNjM1ZDRkMDQ2ZDY5OGQxMTE2MDE2OGQxODY0MWNhZGYzYzEuLjI2
YTM0ZTIzZWI5ZGY5Y2JjNDc2ZGM0ZjllNGMyYmM3YzU1ZWY1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1
ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTIzMywxMSArMjMyLDEwIEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxSZXNvdXJjZUJ1
ZmZlcj4gYnVmZmVyID0gcmVzb3VyY2VEYXRhKCk7CisgICAgYXV0byogYnVmZmVyID0gcmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQgJiYgYnVmZmVyICYm
IGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBkYXRhIHdpbGwgY2hh
bmdlIGFzIHRoZSBuZXh0IHBhcnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBjb3B5
LgotICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGNvcGllZERhdGEgPSBSZXNvdXJjZUJ1
ZmZlcjo6Y3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgIG1f
cmVzb3VyY2UtPmZpbmlzaExvYWRpbmcoY29waWVkRGF0YS5nZXQoKSk7CisgICAgICAgIG1fcmVz
b3VyY2UtPmZpbmlzaExvYWRpbmcoJmJ1ZmZlci0+Y29weSgpLmdldCgpKTsKICAgICAgICAgY2xl
YXJSZXNvdXJjZURhdGEoKTsKICAgICAgICAgLy8gU2luY2UgYSBzdWJyZXNvdXJjZSBsb2FkZXIg
ZG9lcyBub3QgbG9hZCBtdWx0aXBhcnQgc2VjdGlvbnMgcHJvZ3Jlc3NpdmVseSwgZGF0YSB3YXMg
ZGVsaXZlcmVkIHRvIHRoZSBsb2FkZXIgYWxsIGF0IG9uY2UuICAgICAgICAKICAgICAgICAgLy8g
QWZ0ZXIgdGhlIGZpcnN0IG11bHRpcGFydCBzZWN0aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8g
ZGVsZWdhdGVzIHRoYXQgdGhpcyBsb2FkIGlzICJmaW5pc2hlZCIgCkBAIC0yNzMsOCArMjcxLDgg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBQYXMKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsK
LSAgICAgICAgaWYgKFJlc291cmNlQnVmZmVyKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJj
ZURhdGEoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZERhdGFCdWZmZXIocmVzb3VyY2VE
YXRhKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0
YSgpKQorICAgICAgICAgICAgbV9yZXNvdXJjZS0+YWRkRGF0YUJ1ZmZlcigqcmVzb3VyY2VEYXRh
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+YWRkRGF0YShidWZmZXIg
PyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4
IDM1M2NlZjI3MzQyY2VkOGZlMWQ3YjJlNTg2M2I1ZjQ1YzkyZGE1NGUuLjBmMjdiOTI4MDdmMzkx
Y2Y0MGVmOGZlYmUzODkxNTczN2YwMzVjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlZUVEN1ZS5oIgogI2lu
Y2x1ZGUgIldlYlZUVFBhcnNlci5oIgogCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgVGV4dFRyYWNr
TG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAg
aWYgKG1fc3RhdGUgPT0gRmFpbGVkIHx8ICFyZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlc291cmNlQnVmZmVyKiBidWZmZXIgPSByZXNvdXJj
ZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICBhdXRvKiBidWZmZXIgPSByZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKTsKICAgICBpZiAobV9wYXJzZU9mZnNldCA9PSBidWZmZXItPnNpemUoKSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDYzNDIxOTRjZTc4ZjEwNWZlMzNh
YWZlNDljMWE2NTRkYjU1MDY2NTIuLmU5NTRhMzM3ZTA4Mjc3N2M4M2M1M2I2Y2VhYjk0OWQ2ZDg1
MDU2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKICNp
bmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKQEAgLTI1NCwxMSArMjUzLDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ICAgICAgICAgICAgICAgIHJlc291cmNlLT5hZGRUeXBlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6TWFzdGVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXJlc291cmNlLT5zdG9yYWdlSUQo
KSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8
UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAg
ICAgICAgICAgbV9uZXdlc3RDYWNoZS0+YWRkUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjpjcmVhdGUodXJsLCBsb2FkZXItPnJlc3BvbnNlKCksIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6TWFzdGVyLCBidWZmZXIgPyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMCkpOwotICAg
ICAgICB9Ci0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX25ld2VzdENhY2hlLT5hZGRS
ZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSh1cmwsIGxvYWRlci0+cmVz
cG9uc2UoKSwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0ZXIsIGxvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmFpbHVyZToKICAgICAg
ICAgLy8gQ2FjaGUgdXBkYXRlIGhhcyBiZWVuIGEgZmFpbHVyZSwgc28gdGhlcmUgaXMgbm8gcmVh
c29uIHRvIGtlZXAgdGhlIGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5jb21wbGV0ZSBj
YWNoZQpAQCAtMjc2LDEwICsyNzIsOCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Zmlu
aXNoZWRMb2FkaW5nTWFpblJlc291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAg
ICAgICAgICAgcmVzb3VyY2UtPmFkZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0
ZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghcmVzb3VyY2UtPnN0b3JhZ2VJRCgpKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxSZXNvdXJj
ZUJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAg
ICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5hZGRSZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmNyZWF0ZSh1cmwsIGxvYWRlci0+cmVzcG9uc2UoKSwgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjpNYXN0ZXIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiAwKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5h
ZGRSZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSh1cmwsIGxvYWRlci0+
cmVzcG9uc2UoKSwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0ZXIsIGxvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpKSk7CiAgICAgICAgIC8vIFRoZSAiY2FjaGVkIiBldmVudCB3aWxsIGJl
IHBvc3RlZCB0byBhbGwgYXNzb2NpYXRlZCBkb2N1bWVudHMgb25jZSB1cGRhdGUgaXMgY29tcGxl
dGUuCiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggMjRjZjRiZWVkZWRmNmU0
MzZhOWRlODI0YjNjM2NlNWU5N2NjOTM2My4uOTcyMzQ2YTAwODNiYTZlNDRlM2UyNDgyNGNlYWEz
NGQwYTM3MWUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJNZW1v
cnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1
ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJt
YXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTU1MCw5ICs1NDksNyBA
QCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogI2VuZGlmCiAgICAgICAgICAgICAgICAgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JSZXF1
ZXN0KHJlcXVlc3QsIGZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VCdWZm
ZXIqIGRhdGEgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKLQotICAgICAgICAg
ICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZShkYXRhID8gZGF0YS0+c2hhcmVkQnVmZmVyKCkgOiAwLCBzdWJyZXNv
dXJjZVVSTCwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLCBzdWJyZXNvdXJjZVVS
TCwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzdWJyZXNvdXJjZXMuYXBwZW5kKFdURjo6bW92ZShyZXNvdXJjZSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCBh
MjA4MWJlYTRjYTU2M2I4NTA0NjUzYmQxZGI1MDA5MWFhOTM0MmFmLi5lMzcwMTM4ZWIwOGU5OTAw
NGE0Y2ZlZmVmYzRlMDllNGZhY2IwMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5j
bHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNs
dWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgpAQCAtOTAsMTMgKzkwLDEzIEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpz
aGVldFRleHQoYm9vbCBlbmZvcmNlTUlNRVR5cGUsIGJvb2wqIGhhc1ZhbGlkCiAgICAgcmV0dXJu
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFJlc291cmNl
QnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgc2V0RW5jb2RlZFNp
emUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKG1fZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRU
ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIGlmIChkYXRhKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSgpOwogICAgIC8vIENsZWFyIHRoZSBk
ZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFn
YWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggODBmOTk0Y2IzMDJmMjNiNjU3
ODJkZDNmNjM5MjYzZTZiMWE5YTJkNy4uOTQwZmQxZjE5ZDdmY2U4MjM4MjFmYmVjMzk3ZWFkMWYw
NzZiNDNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRl
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAK
ICAgICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKaW5kZXggMTM2ODJmYTI3NzhkZmRmNjFhY2VkOWMzYjk1MDRmNjY3ZTczN2ZmNi4uMWVmNjIy
ZTI0YmRlNmI1OTRlMzhiN2Y0ZDUxZjkyNmUyZGI5NmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkZv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAj
aW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
ICNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKQEAgLTc2LDcgKzc1
LDcgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQq
IGMpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQqPihjKS0+Zm9udExvYWRl
ZCh0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVm
ZmVyKiBkYXRhKQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5n
ZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CkBAIC05NSwzMCArOTQsMjcgQEAgdm9pZCBDYWNo
ZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlciogZGwpCiBib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKCkKIHsKICAgICBpZiAoIW1fZm9udERh
dGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7Ci0gICAg
ICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyID0gbV9kYXRhLmdldCgpLT5zaGFyZWRCdWZmZXIoKTsK
LSAgICAgICAgQVNTRVJUKGJ1ZmZlcik7Ci0KKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbV9kYXRhOwogICAgICAgICBib29sIGZvbnRJc1dPRkYgPSBmYWxzZTsKKwogI2lm
ICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEw
OTApICYmICghUExBVEZPUk0oSU9TKSB8fCBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDgwMDAwKQotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZm50QnVmZmVyOwotCi0g
ICAgICAgIGZvbnRJc1dPRkYgPSBpc1dPRkYoYnVmZmVyKTsKLSAgICAgICAgaWYgKGZvbnRJc1dP
RkYpIHsKLSAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBzZm50OwotICAgICAgICAgICAgaWYgKGNv
bnZlcnRXT0ZGVG9TZm50KGJ1ZmZlciwgc2ZudCkpIHsKLSAgICAgICAgICAgICAgICBzZm50QnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihzZm50KTsKLSAgICAgICAgICAgICAgICBi
dWZmZXIgPSBzZm50QnVmZmVyLmdldCgpOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAgIGlm
IChpc1dPRkYoYnVmZmVyLmdldCgpKSkgeworICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNvbnZl
cnRlZEZvbnQ7CisgICAgICAgICAgICBpZiAoIWNvbnZlcnRXT0ZGVG9TZm50KGJ1ZmZlci5nZXQo
KSwgY29udmVydGVkRm9udCkpCiAgICAgICAgICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
YWRvcHRWZWN0b3IoY29udmVydGVkRm9udCk7CisgICAgICAgICAgICAgICAgZm9udElzV09GRiA9
IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIG1fZm9u
dERhdGEgPSBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIpIDog
bnVsbHB0cjsKLSAgICAgICAgaWYgKG1fZm9udERhdGEpCi0gICAgICAgICAgICBtX2hhc0NyZWF0
ZWRGb250RGF0YVdyYXBwaW5nUmVzb3VyY2UgPSAhZm9udElzV09GRjsKLSAgICAgICAgZWxzZQor
ICAgICAgICBtX2hhc0NyZWF0ZWRGb250RGF0YVdyYXBwaW5nUmVzb3VyY2UgPSBtX2ZvbnREYXRh
ICYmICFmb250SXNXT0ZGOworICAgICAgICBpZiAoIW1fZm9udERhdGEpCiAgICAgICAgICAgICBz
ZXRTdGF0dXMoRGVjb2RlRXJyb3IpOwogICAgIH0KKwogICAgIHJldHVybiBtX2ZvbnREYXRhLmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBk
OTQzNzMwNTUwNjQzMTkyYzk2NjM1NzFhNWZkZDRkMjQwOWJiNmZiLi4yYTI2N2NjY2IxNTExMTI3
NzU1OTA1YzllMTc0N2YxOGVjN2JlYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYp
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291
cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92
ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKaW5kZXggYjBmZGExODQ5YzZhNzI2NGNkOTI3M2Q2ZDliNjIzYzQzNmNiNjE2ZC4uZGIy
YWU5N2YyOTc4YTUwZmFiODhiMmZhZGVlODljODU3MDZjMDc3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxl
bWVudC5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2Uu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBA
IC0xMTYsMzEgKzExNSwzMSBAQCB2b2lkIENhY2hlZEltYWdlOjpsb2FkKENhY2hlZFJlc291cmNl
TG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyYwogICAgICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50KiBjKQordm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgaWYgKG1fZGF0YSAmJiAhbV9pbWFnZSAm
JiAhZXJyb3JPY2N1cnJlZCgpKSB7CiAgICAgICAgIGNyZWF0ZUltYWdlKCk7Ci0gICAgICAgIG1f
aW1hZ2UtPnNldERhdGEobV9kYXRhLT5zaGFyZWRCdWZmZXIoKSwgdHJ1ZSk7CisgICAgICAgIG1f
aW1hZ2UtPnNldERhdGEobV9kYXRhLCB0cnVlKTsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKGMt
PnJlc291cmNlQ2xpZW50VHlwZSgpID09IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUo
KSk7CisgICAgQVNTRVJUKGNsaWVudC0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1h
Z2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKICAgICBpZiAobV9pbWFnZSAmJiAhbV9pbWFnZS0+
aXNOdWxsKCkpCi0gICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50Kj4oYyktPmlt
YWdlQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2VDbGllbnQq
PihjbGllbnQpLT5pbWFnZUNoYW5nZWQodGhpcyk7CiAKLSAgICBDYWNoZWRSZXNvdXJjZTo6ZGlk
QWRkQ2xpZW50KGMpOworICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoY2xpZW50KTsK
IH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZGlkUmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjKQordm9pZCBDYWNoZWRJbWFnZTo6ZGlkUmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgQVNTRVJUKGMpOwotICAgIEFTU0VSVChjLT5yZXNvdXJj
ZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNsaWVudDo6ZXhwZWN0ZWRUeXBlKCkpOworICAg
IEFTU0VSVChjbGllbnQpOworICAgIEFTU0VSVChjbGllbnQtPnJlc291cmNlQ2xpZW50VHlwZSgp
ID09IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CiAKLSAgICBtX3BlbmRpbmdD
b250YWluZXJTaXplUmVxdWVzdHMucmVtb3ZlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50
Kj4oYykpOworICAgIG1fcGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0cy5yZW1vdmUoc3RhdGlj
X2Nhc3Q8Q2FjaGVkSW1hZ2VDbGllbnQqPihjbGllbnQpKTsKIAogICAgIGlmIChtX3N2Z0ltYWdl
Q2FjaGUpCi0gICAgICAgIG1fc3ZnSW1hZ2VDYWNoZS0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHN0
YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50Kj4oYykpOworICAgICAgICBtX3N2Z0ltYWdlQ2Fj
aGUtPnJlbW92ZUNsaWVudEZyb21DYWNoZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZUNsaWVudCo+
KGNsaWVudCkpOwogCi0gICAgQ2FjaGVkUmVzb3VyY2U6OmRpZFJlbW92ZUNsaWVudChjKTsKKyAg
ICBDYWNoZWRSZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KGNsaWVudCk7CiB9CiAKIHZvaWQgQ2Fj
aGVkSW1hZ2U6OnN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKQpAQCAtMzY1LDE4
ICszNjQsMTYgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1f
aW1hZ2UuY2xlYXIoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6YWRkSW5jcmVtZW50YWxEYXRh
QnVmZmVyKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6YWRkSW5jcmVt
ZW50YWxEYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSBkYXRh
OwotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fZGF0YSA9ICZkYXRhOwog
CiAgICAgY3JlYXRlSW1hZ2UoKTsKIAogICAgIC8vIEhhdmUgdGhlIGltYWdlIHVwZGF0ZSBpdHMg
ZGF0YSBmcm9tIGl0cyBpbnRlcm5hbCBidWZmZXIuCiAgICAgLy8gSXQgd2lsbCBub3QgZG8gYW55
dGhpbmcgbm93LCBidXQgd2lsbCBkZWxheSBkZWNvZGluZyB1bnRpbAogICAgIC8vIHF1ZXJpZWQg
Zm9yIGluZm8gKGxpa2Ugc2l6ZSBvciBzcGVjaWZpYyBpbWFnZSBmcmFtZXMpLgotICAgIGJvb2wg
c2l6ZUF2YWlsYWJsZSA9IG1faW1hZ2UtPnNldERhdGEobV9kYXRhLT5zaGFyZWRCdWZmZXIoKSwg
ZmFsc2UpOworICAgIGJvb2wgc2l6ZUF2YWlsYWJsZSA9IG1faW1hZ2UtPnNldERhdGEoJmRhdGEs
IGZhbHNlKTsKICAgICBpZiAoIXNpemVBdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIApAQCAt
Mzk4LDI2ICszOTUsMjggQEAgdm9pZCBDYWNoZWRJbWFnZTo6YWRkSW5jcmVtZW50YWxEYXRhQnVm
ZmVyKFJlc291cmNlQnVmZmVyKiBkYXRhKQogICAgIHNldEVuY29kZWRTaXplKG1faW1hZ2UtPmRh
dGEoKSA/IG1faW1hZ2UtPmRhdGEoKS0+c2l6ZSgpIDogMCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OmFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdl
OjphZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQobV9vcHRp
b25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJEYXRhKTsKKyAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOwogICAgIGFkZEluY3JlbWVudGFsRGF0
YUJ1ZmZlcihkYXRhKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihkYXRhKTsK
IH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6YWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRG9Ob3RCdWZmZXJEYXRhKTsKLSAgICBhZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoUmVzb3Vy
Y2VCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKKyAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVmZmVyRGF0YSk7CisgICAgYWRkSW5jcmVtZW50YWxE
YXRhQnVmZmVyKCpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsKKyAgICBDYWNo
ZWRSZXNvdXJjZTo6YWRkRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdl
OjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsK
ICAgICBpZiAoIW1faW1hZ2UgJiYgZGF0YSkKICAgICAgICAgY3JlYXRlSW1hZ2UoKTsKIAogICAg
IGlmIChtX2ltYWdlKQotICAgICAgICBtX2ltYWdlLT5zZXREYXRhKG1fZGF0YS0+c2hhcmVkQnVm
ZmVyKCksIHRydWUpOworICAgICAgICBtX2ltYWdlLT5zZXREYXRhKGRhdGEsIHRydWUpOwogCiAg
ICAgaWYgKCFtX2ltYWdlIHx8IG1faW1hZ2UtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIEltYWdl
IGRlY29kaW5nIGZhaWxlZDsgdGhlIGltYWdlIGRhdGEgaXMgbWFsZm9ybWVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBmZWVmNDUyYzZjZmQzNjcyNDc4
OTQ5YzE2YWM2OTA2OTMzMTU0MzM4Li41NmQyYWExZjMzMDg2YjIzNzBkZjQ2MjVjN2U0Y2I4Yjdh
YjU0MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAt
NzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBj
b25zdDsKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKIAog
ICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTk0LDcgKzk0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUltYWdlKCk7CiAgICAgdm9pZCBjbGVhckltYWdlKCk7
CiAgICAgLy8gSWYgbm90IG51bGwsIGNoYW5nZVJlY3QgaXMgdGhlIGNoYW5nZWQgcGFydCBvZiB0
aGUgaW1hZ2UuCi0gICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCogY2hhbmdl
UmVjdCA9IDApOworICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEludFJlY3QqIGNoYW5n
ZVJlY3QgPSBudWxscHRyKTsKICAgICB2b2lkIGNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2Uo
KSBvdmVycmlkZTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBhbmltYXRpb25BZHZhbmNlZChjb25zdCBJbWFnZSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlKiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBhZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKTsK
KyAgICB2b2lkIGFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKIAogICAg
IHR5cGVkZWYgc3RkOjpwYWlyPExheW91dFNpemUsIGZsb2F0PiBTaXplQW5kWm9vbTsKICAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBTaXplQW5kWm9vbT4gQ29u
dGFpbmVyU2l6ZVJlcXVlc3RzOwpAQCAtMTMwLDggKzEzMCw4IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0ltYWdlQ2FjaGU+
IG1fc3ZnSW1hZ2VDYWNoZTsKLSAgICB1bnNpZ25lZCBjaGFyIG1faXNNYW51YWxseUNhY2hlZCA6
IDE7Ci0gICAgdW5zaWduZWQgY2hhciBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgOiAxOworICAg
IHVuc2lnbmVkIG1faXNNYW51YWxseUNhY2hlZCA6IDE7CisgICAgdW5zaWduZWQgbV9zaG91bGRQ
YWludEJyb2tlbkltYWdlIDogMTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4
IDVmMjgxMzJhZThkY2VkYjMxMTFkZjczOWMyNmQ5NDE5MTE3NWQ2ZWMuLjY4ZTc3ZmViMDgwOTgx
NzE3YWUxZTAxNDVlZGY2OWQ0N2YwNmI2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIKLSNpbmNsdWRlICJSZXNv
dXJjZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC00Niw3ICs0Niw3IEBAIENhY2hlZFJhd1Jlc291cmNl
OjpDYWNoZWRSYXdSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgVHlw
ZSB0eXBlCiAgICAgQVNTRVJUKGlzTWFpbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLWNvbnN0IGNo
YXIqIENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhSZXNv
dXJjZUJ1ZmZlciogZGF0YSwgdW5zaWduZWQmIGluY3JlbWVudGFsRGF0YUxlbmd0aCkKK2NvbnN0
IGNoYXIqIENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhT
aGFyZWRCdWZmZXIqIGRhdGEsIHVuc2lnbmVkJiBpbmNyZW1lbnRhbERhdGFMZW5ndGgpCiB7CiAg
ICAgaW5jcmVtZW50YWxEYXRhTGVuZ3RoID0gMDsKICAgICBpZiAoIWRhdGEpCkBAIC01OCwzNCAr
NTgsMzYgQEAgY29uc3QgY2hhciogQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUNodW5rKFJlc291cmNlQnVmZmVyKiBkYXQKICAgICByZXR1cm4gZGF0YS0+ZGF0YSgp
ICsgcHJldmlvdXNEYXRhTGVuZ3RoOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjphZGRE
YXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
YWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3QodGhpcyk7Ci0gICAgQVNTRVJUKG1fb3B0
aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOwor
ICAgIG1fZGF0YSA9ICZkYXRhOwogCiAgICAgdW5zaWduZWQgaW5jcmVtZW50YWxEYXRhTGVuZ3Ro
OwotICAgIGNvbnN0IGNoYXIqIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUNodW5rKGRhdGEsIGluY3JlbWVudGFsRGF0YUxlbmd0aCk7Ci0gICAgaWYgKGRhdGEpCi0g
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgY29uc3QgY2hhciogaW5j
cmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoJmRhdGEsIGluY3Jl
bWVudGFsRGF0YUxlbmd0aCk7CisgICAgc2V0RW5jb2RlZFNpemUoZGF0YS5zaXplKCkpOwogICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLCBpbmNyZW1lbnRh
bERhdGFMZW5ndGgpOwotICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERvTm90QnVmZmVyRGF0YSkgeworICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9O
b3RCdWZmZXJEYXRhKSB7CiAgICAgICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgICAgIG1fbG9h
ZGVyLT5zZXREYXRhQnVmZmVyaW5nUG9saWN5KERvTm90QnVmZmVyRGF0YSk7CiAgICAgICAgIGNs
ZWFyKCk7CiAgICAgfQorCisgICAgQ2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZmZXIoZGF0YSk7
CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGEoY29uc3QgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogewotICAgIEFTU0VSVChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERvTm90QnVmZmVyRGF0YSk7CisgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xp
Y3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpOwogICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YShkYXRhLCBsZW5n
dGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFJlc291cmNl
QnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+IHByb3RlY3QodGhpcyk7Ci0gICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVy
aW5nUG9saWN5ID0gbV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKKyAgICBEYXRhQnVm
ZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9s
aWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gQnVmZmVyRGF0YSkgewogICAg
ICAgICBtX2RhdGEgPSBkYXRhOwogCkBAIC05OSw3ICsxMDEsNyBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQogICAgIG1fYWxsb3dF
bmNvZGVkRGF0YVJlcGxhY2VtZW50ID0gIW1fbG9hZGVyLT5pc1F1aWNrTG9va1Jlc291cmNlKCk7
CiAKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKLSAgICBpZiAoZGF0
YUJ1ZmZlcmluZ1BvbGljeSA9PSBCdWZmZXJEYXRhICYmIG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKSB7CisgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xp
Y3kgPT0gQnVmZmVyRGF0YSAmJiB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RC
dWZmZXJEYXRhKSB7CiAgICAgICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgICAgIG1fbG9hZGVy
LT5zZXREYXRhQnVmZmVyaW5nUG9saWN5KERvTm90QnVmZmVyRGF0YSk7CiAgICAgICAgIGNsZWFy
KCk7CkBAIC0yMjIsNyArMjI0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlSGVhZGVyRm9y
Q2FjaGVSZXVzZShIVFRQSGVhZGVyTmFtZSBuYW1lKQogCiBib29sIENhY2hlZFJhd1Jlc291cmNl
OjpjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRh
KQorICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9yZXNvdXJjZVJlcXVlc3QuaHR0cE1ldGhv
ZCgpICE9IG5ld1JlcXVlc3QuaHR0cE1ldGhvZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCBmM2M2NjhmMmJkYjlmZTQ2ZTkzNjJl
NDJiOWQ2MzcyMmQwNmMyZTI3Li4yY2Q0NTVhY2IyNTFkMDgxZmMzNGVjMGNjMDZiYjk5ZTM1MWEx
MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaApAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciop
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2Rl
RXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBib29sIGNhblJldXNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgY29uc3QgY2hhciogY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
Q2h1bmsoUmVzb3VyY2VCdWZmZXIqLCB1bnNpZ25lZCYgaW5jcmVtZW50YWxEYXRhTGVuZ3RoKTsK
KyAgICBjb25zdCBjaGFyKiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhTaGFyZWRCdWZm
ZXIqLCB1bnNpZ25lZCYgaW5jcmVtZW50YWxEYXRhTGVuZ3RoKTsKICAgICB2b2lkIG5vdGlmeUNs
aWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsK
IAogI2lmIFVTRShTT1VQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKaW5kZXggNWE0ZTRhNzdjOGYyZDg3ODlmMDkwMWQ3YTNhYzg4MDQ0Y2I5OTk4
Ny4uY2VlZTU4YzAzMjQ2ZjhjOGFkZWZkZjE1MTM3NmYyYjFjZTljMzhiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC00MCw3ICs0MCw2
IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVk
dWxlci5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCkBAIC0xMDgsMTAgKzEwNywxMCBA
QCBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoUmVmQ291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRS
ZXNvdXJjZUxlYWtDb3VudGVyLCAoIkNhYwogCiBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUeXBlIHR5cGUsIFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBtX3Jlc291cmNlUmVxdWVzdChyZXF1ZXN0KQorICAgICwgbV9kZWNv
ZGVkRGF0YURlbGV0aW9uVGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlOjpkZWNvZGVkRGF0YURl
bGV0aW9uVGltZXJGaXJlZCwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbEZvclJlc291
cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fbG9h
ZFByaW9yaXR5KGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1f
cmVzcG9uc2VUaW1lc3RhbXAoY3VycmVudFRpbWUoKSkKLSAgICAsIG1fZGVjb2RlZERhdGFEZWxl
dGlvblRpbWVyKHRoaXMsICZDYWNoZWRSZXNvdXJjZTo6ZGVjb2RlZERhdGFEZWxldGlvblRpbWVy
RmlyZWQsIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWxGb3JSZXNvdXJjZVR5cGUodHlw
ZSkpCiAgICAgLCBtX2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9sb2FkRmluaXNo
VGltZSgwKQogICAgICwgbV9lbmNvZGVkU2l6ZSgwKQpAQCAtMjg2LDIyICsyODUsMjIgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQogICAgIGlmIChpc0xvYWRpbmcoKSB8fCBz
dGlsbE5lZWRzTG9hZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwotICAgIHdoaWxl
IChDYWNoZWRSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5ub3RpZnlG
aW5pc2hlZCh0aGlzKTsKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNv
dXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CisgICAgd2hpbGUgKENhY2hlZFJlc291cmNl
Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQorICAgICAgICBjbGllbnQtPm5vdGlmeUZp
bmlzaGVkKHRoaXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjphZGREYXRhQnVmZmVyKFJl
c291cmNlQnVmZmVyKikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZmZXIoU2hhcmVk
QnVmZmVyJikKIHsKLSAgICBBU1NFUlQobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBCdWZmZXJEYXRhKTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZl
ckRhdGEpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlOjphZGREYXRhKGNvbnN0IGNoYXIqLCB1
bnNpZ25lZCkKIHsKLSAgICBBU1NFUlQobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEb05vdEJ1ZmZlckRhdGEpOworICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUJ1ZmZlciopCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciopCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnko
KTsKQEAgLTM5MSwxNyArMzkwLDE1IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICBkaWRBZGRDbGllbnQoY2xpZW50
KTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50KiBjKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291
cmNlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgaWYgKG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVy
LmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyLnN0b3AoKTsK
IAotICAgIGlmIChtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmNvbnRhaW5zKGMpKSB7Ci0gICAg
ICAgIG1fY2xpZW50cy5hZGQoYyk7Ci0gICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2su
cmVtb3ZlKGMpOwotICAgIH0KKyAgICBpZiAobV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5yZW1v
dmUoY2xpZW50KSkKKyAgICAgICAgbV9jbGllbnRzLmFkZChjbGllbnQpOwogICAgIGlmICghaXNM
b2FkaW5nKCkgJiYgIXN0aWxsTmVlZHNMb2FkKCkpCi0gICAgICAgIGMtPm5vdGlmeUZpbmlzaGVk
KHRoaXMpOworICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOwogfQogCiBib29s
IENhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xp
ZW50KQpAQCAtNDIzLDcgKzQyMCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRv
U2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiAgICAgICAgIC8vIFRoZXJlZm9yZSwg
cmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2VuZGluZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBoaXQg
bGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMsCiAgICAgICAgIC8vIHdlIHNjaGVkdWxlIHRoZSBj
YWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZlciBmaW5pc2ggc3luY2hyb25vdXNseS4KICAgICAg
ICAgQVNTRVJUKCFtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmNvbnRhaW5zKGNsaWVudCkpOwot
ICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZChjbGllbnQsIENhY2hlZFJlc291
cmNlQ2FsbGJhY2s6OnNjaGVkdWxlKHRoaXMsIGNsaWVudCkpOworICAgICAgICBtX2NsaWVudHNB
d2FpdGluZ0NhbGxiYWNrLmFkZChjbGllbnQsIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2s+KCp0
aGlzLCAqY2xpZW50KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTczMSwy
NyArNzI4LDI4IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldExvYWRQcmlvcml0eShSZXNvdXJj
ZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkpCiAgICAgbV9sb2FkUHJpb3JpdHkgPSBsb2FkUHJp
b3JpdHk7CiB9CiAKLUNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNrOjpDYWNo
ZWRSZXNvdXJjZUNhbGxiYWNrKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQqIGNsaWVudCkKK2lubGluZSBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OkNhbGxi
YWNrKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVu
dCkKICAgICA6IG1fcmVzb3VyY2UocmVzb3VyY2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0g
ICAgLCBtX2NhbGxiYWNrVGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlQ2FsbGJhY2s6OnRpbWVy
RmlyZWQpCisgICAgLCBtX3RpbWVyKHRoaXMsICZDYWxsYmFjazo6dGltZXJGaXJlZCkKIHsKLSAg
ICBtX2NhbGxiYWNrVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fdGltZXIuc3RhcnRPbmVT
aG90KDApOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNr
OjpjYW5jZWwoKQoraW5saW5lIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrOjpjYW5jZWwo
KQogewotICAgIGlmIChtX2NhbGxiYWNrVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9jYWxs
YmFja1RpbWVyLnN0b3AoKTsKKyAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBt
X3RpbWVyLnN0b3AoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2VD
YWxsYmFjazo6dGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUNhbGxiYWNrPiYpCit2b2lk
IENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZChUaW1lcjxDYWxsYmFjaz4mKQog
ewotICAgIG1fcmVzb3VyY2UtPmRpZEFkZENsaWVudChtX2NsaWVudCk7CisgICAgbV9yZXNvdXJj
ZS5kaWRBZGRDbGllbnQoJm1fY2xpZW50KTsKIH0KIAogI2lmIFVTRShGT1VOREFUSU9OKQotdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBuZXdCdWZmZXIpCisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzYyLDExICs3NjAsMTIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBuZXdCdWZmZXIp
CiAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGUgbWVtY21wIGJlY2F1c2Ugd2UgY2FuJ3QgdGVsbCBp
ZiB0aGUgcmVwbGFjZW1lbnQgZmlsZSBiYWNrZWQgZGF0YSBpcyBmb3IgdGhlCiAgICAgLy8gc2Ft
ZSByZXNvdXJjZSBvciBpZiB3ZSBtYWRlIGEgc2Vjb25kIHJlcXVlc3Qgd2l0aCB0aGUgc2FtZSBV
Ukwgd2hpY2ggZ2F2ZSB1cyBhIGRpZmZlcmVudAogICAgIC8vIHJlc291cmNlLiBXZSBoYXZlIHNl
ZW4gdGhpcyBoYXBwZW4gZm9yIGNhY2hlZCBQT1NUIHJlc291cmNlcy4KLSAgICBpZiAobV9kYXRh
LT5zaXplKCkgIT0gbmV3QnVmZmVyLT5zaXplKCkgfHwgbWVtY21wKG1fZGF0YS0+ZGF0YSgpLCBu
ZXdCdWZmZXItPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKQorICAgIGlmIChtX2RhdGEtPnNpemUo
KSAhPSBuZXdCdWZmZXIuc2l6ZSgpIHx8IG1lbWNtcChtX2RhdGEtPmRhdGEoKSwgbmV3QnVmZmVy
LmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEt
PnRyeVJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cyhuZXdCdWZmZXIuZ2V0KCkpOworICAgIG1f
ZGF0YS0+dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKG5ld0J1ZmZlcik7CiB9
CisKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCmluZGV4IDlmYjliMTRmN2QwNDQ5NjU4YzZiNWEzZDQ1OWM0ZDBjOTRiODc0Y2QuLmJm
NmU5OTc0MTBlYzIzNzAxODY5MjI4YWQwYzU4ZGI0MGRhMjk2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNz
IENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKLWNs
YXNzIFJlc291cmNlQnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTk2LDkgKzk1LDkgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciopOworICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCBh
ZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVk
UmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0xODcsNyArMTg2LDcg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFJlc291cmNl
QnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQor
ICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
Z2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI0NSw1NSArMjQ0LDM1IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShT
aGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYgVVNFKFNPVVApCi0gICAgdmlydHVhbCBjaGFy
KiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IC8qIHJlcXVlc3RlZFNpemUgKi8sIHNpemVf
dCYgLyogYWN0dWFsU2l6ZSAqLykgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgY2hhciogZ2V0
T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKiByZXF1ZXN0ZWRTaXplICovLCBzaXplX3QmIC8q
IGFjdHVhbFNpemUgKi8pIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiBwcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCk7Ci0KICAgICB2b2lkIHNldEVuY29kZWRT
aXplKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldERlY29kZWRTaXplKHVuc2lnbmVkKTsKICAgICB2
b2lkIGRpZEFjY2Vzc0RlY29kZWREYXRhKGRvdWJsZSB0aW1lU3RhbXApOwogCisgICAgLy8gRklY
TUU6IE1ha2UgdGhlIHJlc3Qgb2YgdGhlc2UgZGF0YSBtZW1iZXJzIHByaXZhdGUgYW5kIHVzZSBm
dW5jdGlvbnMgaW4gZGVyaXZlZCBjbGFzc2VzIGluc3RlYWQuCiAgICAgSGFzaENvdW50ZWRTZXQ8
Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7Ci0KLSAgICBjbGFzcyBDYWNoZWRSZXNv
dXJjZUNhbGxiYWNrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIENhY2hlZFJlc291cmNlQ2FsbGJh
Y2soQ2FjaGVkUmVzb3VyY2UqLCBDYWNoZWRSZXNvdXJjZUNsaWVudCopOwotCi0gICAgICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUmVzb3VyY2VDYWxsYmFjaz4gc2NoZWR1bGUoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KSB7IHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlQ2FsbGJhY2s+KHJlc291cmNlLCBj
bGllbnQpOyB9Ci0gICAgICAgIHZvaWQgY2FuY2VsKCk7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCB0aW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbGJhY2s+Jik7Ci0KLSAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVzb3VyY2U7Ci0gICAgICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50KiBtX2NsaWVudDsKLSAgICAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VDYWxsYmFjaz4gbV9j
YWxsYmFja1RpbWVyOwotICAgIH07Ci0gICAgSGFzaE1hcDxDYWNoZWRSZXNvdXJjZUNsaWVudCos
IHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRSZXNvdXJjZUNhbGxiYWNrPj4gbV9jbGllbnRzQXdhaXRp
bmdDYWxsYmFjazsKLQogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVxdWVzdDsKLSAg
ICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgU3RyaW5nIG1fYWNjZXB0OwogICAgIFJlZlB0
cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25z
IG1fb3B0aW9uczsKLSAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBtX2xvYWRQcmlvcml0eTsKLQog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBkb3VibGUgbV9yZXNwb25zZVRp
bWVzdGFtcDsKLQotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyIG1fZGVj
b2RlZERhdGFEZWxldGlvblRpbWVyOwogCiBwcml2YXRlOgorICAgIGNsYXNzIENhbGxiYWNrOwor
CiAgICAgYm9vbCBhZGRDbGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCopOwogCiAgICAg
dm9pZCBkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCgpOwogCisgICAgdmlydHVhbCB2b2lk
IGNoZWNrTm90aWZ5KCk7CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBkb3VibGUgZnJlc2huZXNzTGlmZXRp
bWUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0OwpAQCAtMzAxLDYgKzI4MCwxMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKENhY2hlZFJlc291
cmNlTG9hZGVyKik7CiAgICAgdm9pZCBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKIAorICAgIEhhc2hN
YXA8Q2FjaGVkUmVzb3VyY2VDbGllbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbGJhY2s+PiBtX2Ns
aWVudHNBd2FpdGluZ0NhbGxiYWNrOworICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBT
dHJpbmcgbV9hY2NlcHQ7CisgICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7
CisgICAgZG91YmxlIG1fcmVzcG9uc2VUaW1lc3RhbXA7CisKICAgICBTdHJpbmcgbV9mcmFnbWVu
dElkZW50aWZpZXJGb3JSZXF1ZXN0OwogCiAgICAgUmVzb3VyY2VFcnJvciBtX2Vycm9yOwpAQCAt
MzM4LDcgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fbmV4dEluTGl2
ZVJlc291cmNlc0xpc3Q7CiAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcHJldkluTGl2ZVJlc291cmNl
c0xpc3Q7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbV9vd25pbmdDYWNoZWRSZXNvdXJj
ZUxvYWRlcjsgLy8gb25seSBub24tMCBmb3IgcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBpbiB0aGUg
Y2FjaGUKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogbV9vd25pbmdDYWNoZWRSZXNvdXJjZUxv
YWRlcjsgLy8gb25seSBub24tbnVsbCBmb3IgcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBpbiB0aGUg
Y2FjaGUKICAgICAKICAgICAvLyBJZiB0aGlzIGZpZWxkIGlzIG5vbi1udWxsIHdlIGFyZSB1c2lu
ZyB0aGUgcmVzb3VyY2UgYXMgYSBwcm94eSBmb3IgY2hlY2tpbmcgd2hldGhlciBhbiBleGlzdGlu
ZyByZXNvdXJjZSBpcyBzdGlsbCB1cCB0byBkYXRlCiAgICAgLy8gdXNpbmcgSFRUUCBJZi1Nb2Rp
ZmllZC1TaW5jZS9JZi1Ob25lLU1hdGNoIGhlYWRlcnMuIElmIHRoZSByZXNwb25zZSBpcyAzMDQg
YWxsIGNsaWVudHMgb2YgdGhpcyByZXNvdXJjZSBhcmUgbW92ZWQKQEAgLTM1NSw2ICszNDAsMjAg
QEAgcHJpdmF0ZToKICAgICBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMgbV9yZWRpcmVjdENoYWlu
Q2FjaGVTdGF0dXM7CiB9OwogCitjbGFzcyBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2sgeworcHVi
bGljOgorICAgIENhbGxiYWNrKENhY2hlZFJlc291cmNlJiwgQ2FjaGVkUmVzb3VyY2VDbGllbnQm
KTsKKworICAgIHZvaWQgY2FuY2VsKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB0aW1lckZpcmVk
KFRpbWVyPENhbGxiYWNrPiYpOworCisgICAgQ2FjaGVkUmVzb3VyY2UmIG1fcmVzb3VyY2U7Cisg
ICAgQ2FjaGVkUmVzb3VyY2VDbGllbnQmIG1fY2xpZW50OworICAgIFRpbWVyPENhbGxiYWNrPiBt
X3RpbWVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQ0FDSEVEX1JFU09VUkNFKFRvQ2xhc3NOYW1lLCBDYWNoZWRSZXNvdXJj
ZVR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlQ2xpZW50LmgKaW5kZXggOTY5MzNlMTNkNTRkNzNjMmM2NGE0YjE3Y2M4NDc3Y2M0ODFlOTc5
ZC4uNzU5NTExMDQ5NzE2ZDI4OGIzZGZhNGE4ZWM4ZmI3MTYwMjM2OGJjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKQEAgLTI1
LDkgKzI1LDggQEAKICNpZm5kZWYgQ2FjaGVkUmVzb3VyY2VDbGllbnRfaAogI2RlZmluZSBDYWNo
ZWRSZXNvdXJjZUNsaWVudF9oCiAKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIENhY2hlZFJlc291cmNlOwogCiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7CkBAIC00NCwxMyArNDMsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fkNhY2hlZFJlc291cmNlQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRS
ZWNlaXZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKSB7IH0KLSAgICAKKwogICAgIHN0
YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFz
ZVJlc291cmNlVHlwZTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJl
c291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudCgpIHsgfQogfTsKKwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwCmluZGV4IDMyYTYxYjNiM2E5Mzk4MDY5YTFkMmZiZmY1ZDc2ZTk2Zjg0YjU3YmIuLmE1MjMw
MjAxYjBmNzEwZDM5YTViZGJiMWE2ZDZhMmI4NTI2MDdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtMjMsMTAgKzIzLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgog
Ci0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDcgKzQ4LDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3Vt
ZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoUmVzb3Vy
Y2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24n
dCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVs
b25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGMxYzYwM2YzNDI5Y2MxZWM4YmE1NTBj
MGM1NTAwZmI5YWJjMjY2YWIuLmE3OTFjZDgzMWQzNmZhNWM4ZWZhNzU2Y2VlMmJjMWMwN2NhY2Qz
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5oCkBAIC0zNywxNSArMzcsMTQgQEAgcHVibGljOgogCiAgICAgU1ZHRG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogCi1wcm90ZWN0ZWQ6Ci0g
ICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwotICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1heVRy
eVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOworCisgICAgUmVmUHRy
PFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVy
PiBtX2RlY29kZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IGY3MWE1ZThhYWVjZThiM2Fi
MTk1ZGU2NTRlMTQxMWQzNzk1ZWEwMDMuLmY4YmMzM2M3YjMyNTFkYzQyMzgwZjVjNDY4M2ZmNGU5
NGUzNDlkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKLSNpbmNsdWRl
ICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29k
ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTc2LDE0ICs3NiwxMyBAQCBjb25z
dCBTdHJpbmcmIENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKICAgICAgICAgc2V0RGVjb2RlZFNpemUo
bV9zY3JpcHQuc2l6ZUluQnl0ZXMoKSk7CiAgICAgfQogICAgIG1fZGVjb2RlZERhdGFEZWxldGlv
blRpbWVyLnJlc3RhcnQoKTsKLSAgICAKICAgICByZXR1cm4gbV9zY3JpcHQ7CiB9CiAKLXZvaWQg
Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBD
YWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MWM5ODZhMjU0YjljMzcx
YzJmZDE5ZjNkZjk4OTQ1NzQ3ZTliZTA2Li45MzhlOTE4N2NlYTRjMDljMmQ3MGJlNjIxN2E2NDli
ZGQ3NzMyM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CkBAIC0zMCwzNiArMzAsMzUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI7Ci0gICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKK2Ns
YXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKLSAgICBjbGFzcyBDYWNoZWRTY3JpcHQgZmluYWwg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkU2Ny
aXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgU2Vzc2lv
bklEKTsKLSAgICAgICAgdmlydHVhbCB+Q2FjaGVkU2NyaXB0KCk7CitjbGFzcyBDYWNoZWRTY3Jp
cHQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVibGljOgorICAgIENhY2hlZFNj
cmlwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFNlc3Np
b25JRCk7CisgICAgdmlydHVhbCB+Q2FjaGVkU2NyaXB0KCk7CiAKLSAgICAgICAgY29uc3QgU3Ry
aW5nJiBzY3JpcHQoKTsKKyAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpOwogCi0gICAgICAgIFN0
cmluZyBtaW1lVHlwZSgpIGNvbnN0OworICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogCiAj
aWYgRU5BQkxFKE5PU05JRkYpCi0gICAgICAgIGJvb2wgbWltZVR5cGVBbGxvd2VkQnlOb3NuaWZm
KCkgY29uc3Q7CisgICAgYm9vbCBtaW1lVHlwZUFsbG93ZWRCeU5vc25pZmYoKSBjb25zdDsKICNl
bmRpZgogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VF
bmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRU
UFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
ICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAotICAgICAgICBTdHJpbmcgbV9zY3JpcHQ7
Ci0gICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgfTsK
KyAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCA3MDlmYWQ4NDQzYjdi
YzFhMzhmMWVhODBkMjY0ZmYwZDI5M2Q5OTcwLi43MTU1OTIyMDU3ZWVhZWRmMWYwNWQwZDA3ZmRm
MGI1MGU2ZGRmYWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ0LDI0ICs0MywyNiBAQCBDYWNoZWRU
ZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCwgU2Vzc2lvbgogewogfQogCi1DYWNoZWRUZXh0VHJhY2s6On5DYWNoZWRUZXh0VHJh
Y2soKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZURhdGEoU2hhcmVkQnVmZmVyKiBkYXRh
KQogewotfQotCi12b2lkIENhY2hlZFRleHRUcmFjazo6YWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1
ZmZlciogZGF0YSkKLXsKLSAgICBBU1NFUlQobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBCdWZmZXJEYXRhKTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1
ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRh
LmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8g
ZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7Ci0gICAgd2hpbGUgKENhY2hlZFJl
c291cmNlQ2xpZW50ICpjbGllbnQgPSB3YWxrZXIubmV4dCgpKQorICAgIHdoaWxlIChDYWNoZWRS
ZXNvdXJjZUNsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5k
ZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKHRoaXMpOwogfQogCi12b2lkIENhY2hl
ZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjphZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3sKKyAgICB1
cGRhdGVEYXRhKCZkYXRhKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihkYXRh
KTsKK30KKwordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhKQogewotICAgIGFkZERhdGFCdWZmZXIoZGF0YSk7CisgICAgdXBkYXRlRGF0YShkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IDRjM2YzOGFk
NDY4ZTE1MWE4MDEyYTlkOWNlOTE0ZmIzOGIzYjJkNTIuLjNjMTEyN2U4M2I4OTliNDNiMzgwYTk2
M2I5NjZkNjNlZTZiY2FkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKQEAgLTM2LDEyICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBDYWNoZWRUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVi
bGljOgogICAgIENhY2hlZFRleHRUcmFjayhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9u
SUQpOwotICAgIHZpcnR1YWwgfkNhY2hlZFRleHRUcmFjaygpOwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZm
ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1
ZmZlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciopIG92ZXJyaWRlOworCisgICAgdm9pZCB1cGRhdGVEYXRhKFNoYXJlZEJ1ZmZlciopOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IDY2ZjFlYzVhN2FlNGJlYjMx
NDUzMTU4ZGRlMmY5OTZkMTliNDJlNzUuLjc3OTUyYjhhY2MwMTJlNzNlOWU3OWE5ZjRiODc2Mzgy
NzQ4MDM3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5o
IgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIApAQCAtNDYsNiArNDYsMTAgQEAgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Q2FjaGVkWFNMU3R5
bGVTaGVldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwKICAgICBzZXRB
Y2NlcHQoInRleHQveG1sLCBhcHBsaWNhdGlvbi94bWwsIGFwcGxpY2F0aW9uL3hodG1sK3htbCwg
dGV4dC94c2wsIGFwcGxpY2F0aW9uL3Jzcyt4bWwsIGFwcGxpY2F0aW9uL2F0b20reG1sIik7CiB9
CiAKK0NhY2hlZFhTTFN0eWxlU2hlZXQ6On5DYWNoZWRYU0xTdHlsZVNoZWV0KCkKK3sKK30KKwog
dm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGMpCiB7ICAKICAgICBBU1NFUlQoYy0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVk
U3R5bGVTaGVldENsaWVudDo6ZXhwZWN0ZWRUeXBlKCkpOwpAQCAtNjMsMTIgKzY3LDEyIEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkWFNMU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRh
ID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUo
KSA6IDApOwotICAgIGlmIChtX2RhdGEuZ2V0KCkpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnko
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5oCmluZGV4IGQ5OTIxYzJjNTgwMzE2NzJkYTIzODdhOGM2YjcyZGE1MjI1YzQ1YjguLjBl
MDBlNjc2NjZhNDA0YTFmYWQyOWFhMjk1MzlmM2U4YmY1NDFjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtMjksMzQgKzI5
LDI5IEBACiAjaWYgRU5BQkxFKFhTTFQpCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7Ci0gICAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsK
K2NsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKLSAgICBjbGFzcyBDYWNoZWRYU0xTdHlsZVNo
ZWV0IGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IENhY2hlZFhTTFN0eWxlU2hlZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklEKTsK
K2NsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2Ug
eworcHVibGljOgorICAgIENhY2hlZFhTTFN0eWxlU2hlZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgU2Vzc2lvbklEKTsKKyAgICB2aXJ0dWFsIH5DYWNoZWRYU0xTdHlsZVNoZWV0KCk7CiAKLSAg
ICAgICAgY29uc3QgU3RyaW5nJiBzaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQ7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zaGVldDsgfQogCi0gICAg
cHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKSBvdmVycmlkZTsK
K3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291
cmNlQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikg
b3ZlcnJpZGU7CiAKLSAgICAgICAgU3RyaW5nIG1fc2hlZXQ7Ci0gICAgICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQqKSBvdmVycmlkZTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5n
KFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7Ci0gICAgfTsKKyAgICBTdHJpbmcgbV9zaGVldDsK
KyAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Yv
U3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVz
b3VyY2VMb2FkZXJDRi5jcHAKaW5kZXggNTc2NzYwNGFlZDUzOWVjOTllMTgwZDU5N2RlOWU5ODdj
ZDNlZjg4Yi4uNjllMjk5N2Y0ZWNmNWIxNGMwNTUwZTJhMTllMWE4NjExNmU4ZDFmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcApAQCAt
NTEsOCArNTEsOCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5
KENGQXJyYXlSZWYgZGF0YUFycmF5KQogICAgICAgICAgICAgLy8gYmVpbmcgY2FuY2VsbGVkLiBC
YWlsIG91dCBpZiB3ZSBubyBsb25nZXIgaGF2ZSBhIGNhY2hlZCByZXNvdXJjZS4KICAgICAgICAg
ICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBpZiAoUmVzb3VyY2VCdWZmZXIqIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgp
KQotICAgICAgICAgICAgICAgIG1fcmVzb3VyY2UtPmFkZERhdGFCdWZmZXIocmVzb3VyY2VEYXRh
KTsKKyAgICAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURh
dGEoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc291cmNlLT5hZGREYXRhQnVmZmVyKCpyZXNvdXJj
ZURhdGEpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQ0ZEYXRhUmVmIGNm
RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGRhdGFBcnJheSwgaSkpOwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2Eu
aAppbmRleCBmMTJlMzk5ODJhNDgzMjYzZTkxZWNjMWE1ZDNmNWI2MTI3MDBkMWQwLi5hMzUzOWI4
YjE3ZjA4MWNmODIxZTc3OGEwNjIyYjU4OGZkNzdhNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC00NSw3ICs0NSw3
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBEaXNrQ2FjaGVNb25p
dG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPik7CisgICAgdmlydHVhbCB2b2lkIHJlc291cmNlQmVjYW1lRmls
ZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1t
CmluZGV4IGNhNjA4ZjdkNjUxNzkxZTkyNWM4OWViNDI2N2RjYmY0NjliNmQ1Y2YuLjFjMWJkNWVl
OTBmMGVhOGFlMjc0ZGFiYzc3MWVmYjEwZGQzODcxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtMTAzLDcgKzEw
Myw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2VzCiAgICAgICAgIGlmICghZmlsZUJhY2tlZEJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtb25pdG9yLT5yZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoZmlsZUJhY2tlZEJ1ZmZlcik7CisgICAgICAgIG1vbml0b3ItPnJlc291
cmNlQmVjYW1lRmlsZUJhY2tlZCgqZmlsZUJhY2tlZEJ1ZmZlcik7CiAgICAgfTsKIAogI2lmIFVT
RShXRUJfVEhSRUFEKQpAQCAtMTIxLDcgKzEyMSw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tD
YWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vz
CiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9j
ayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7
CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVN
b25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2Vk
QnVmZmVyKQogewogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCkt
PnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAg
IGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3Bw
CmluZGV4IDU0MDJlYjA4NjNjNThjMmFmMmIwNDhiYTlhYzc0NDc3ZmMxOTM0NzguLjU2OTIxY2Q5
Mzc3ZmMxMmUwZWUxZDAzZDkzNDQwNzFjNGFiNGNiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSWNvbkNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC04NSwxNiArODQsMTYgQEAgdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKICAgICAvLyBJZiB3ZSBnb3QgYSBzdGF0dXMg
Y29kZSBpbmRpY2F0aW5nIGFuIGludmFsaWQgcmVzcG9uc2UsIHRoZW4gbGV0cwogICAgIC8vIGln
bm9yZSB0aGUgZGF0YSBhbmQgbm90IHRyeSB0byBkZWNvZGUgdGhlIGVycm9yIHBhZ2UgYXMgYW4g
aWNvbi4KLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGRhdGEgPSByZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKTsKKyAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7
CiAgICAgaW50IHN0YXR1cyA9IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7
CiAgICAgaWYgKHN0YXR1cyAmJiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpCi0gICAg
ICAgIGRhdGEgPSAwOworICAgICAgICBkYXRhID0gbnVsbHB0cjsKIAogICAgIHN0YXRpYyBjb25z
dCBjaGFyIHBkZk1hZ2ljTnVtYmVyW10gPSAiJVBERiI7CiAgICAgc3RhdGljIHVuc2lnbmVkIHBk
Zk1hZ2ljTnVtYmVyTGVuZ3RoID0gc2l6ZW9mKHBkZk1hZ2ljTnVtYmVyKSAtIDE7CiAgICAgaWYg
KGRhdGEgJiYgZGF0YS0+c2l6ZSgpID49IHBkZk1hZ2ljTnVtYmVyTGVuZ3RoICYmICFtZW1jbXAo
ZGF0YS0+ZGF0YSgpLCBwZGZNYWdpY051bWJlciwgcGRmTWFnaWNOdW1iZXJMZW5ndGgpKSB7CiAg
ICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBJ
Z25vcmluZyBpY29uIGF0ICVzIGJlY2F1c2UgaXQgYXBwZWFycyB0byBiZSBhIFBERiIsIHJlc291
cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGRhdGEgPSAwOwor
ICAgICAgICBkYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBMT0coSWNvbkRhdGFiYXNlLCAi
SWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRh
dGFiYXNlIiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTEw
Miw3ICsxMDEsNyBAQCB2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKICAgICAvLyBTZXR0aW5nIHRoZSBpY29uIGRhdGEgb25seSBhZnRlciBj
b21taXR0aW5nIHRvIHRoZSBkYXRhYmFzZSBlbnN1cmVzIHRoYXQgdGhlIGRhdGEgaXMKICAgICAv
LyBrZXB0IGluIG1lbW9yeSAoc28gaXQgZG9lcyBub3QgaGF2ZSB0byBiZSByZWFkIGZyb20gdGhl
IGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5KSwgc2luY2UKICAgICAvLyB0aGVyZSBpcyBhIHBhZ2Ug
VVJMIHJlZmVyZW5jaW5nIGl0LgotICAgIGljb25EYXRhYmFzZSgpLnNldEljb25EYXRhRm9ySWNv
blVSTChkYXRhID8gZGF0YS0+c2hhcmVkQnVmZmVyKCkgOiAwLCByZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkpOworICAgIGljb25EYXRhYmFzZSgpLnNldEljb25EYXRhRm9ySWNvblVSTChkYXRhLCBy
ZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCku
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHN0b3BMb2FkaW5nKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlQnVmZmVyLm1tIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUJ1ZmZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTRjZjliNzkwOWMzNzk0MmRiY2QxYWYxZWQzYmY2MmVkYjRjMWJjZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL1Jlc291cmNlQnVmZmVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgotCi0jaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmV0YWluUHRyPE5TRGF0
YT4gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpCi17Ci0gICAgcmV0dXJuIG1fc2hhcmVk
QnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKLX0KLQotdm9pZCBSZXNvdXJjZUJ1ZmZlcjo6dHJ5UmVw
bGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKFNoYXJlZEJ1ZmZlciogbmV3Q29udGVudHMpCi17Ci0g
ICAgaWYgKCFtX3NoYXJlZEJ1ZmZlcikKLSAgICAgICAgbV9zaGFyZWRCdWZmZXIgPSBuZXdDb250
ZW50czsKLSAgICBlbHNlCi0gICAgICAgIG1fc2hhcmVkQnVmZmVyLT50cnlSZXBsYWNlQ29udGVu
dHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3Q29udGVudHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9h
ZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5t
bQppbmRleCBhMDE1ZTk4N2I2MDMyZGE3ZTExNjhlMjY3MjRlOGMxYjNmYTA5MDg4Li4zZWNkNTk3
ZmYyOTVmN2Q2NzA4Njg2Zjc1ODQ0YzlkNmNkZjg4Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KQEAgLTMxLDEwICszMSwxMCBAQAogCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZ
X0NBTExCQUNLKQogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1
ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjZW5kaWYKIAogI2lmIFVTRShDRk5FVFdPUkspCkBAIC04
Myw3ICs4Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZB
cnJheVJlZiBkYXRhQXJyYXkpCiAKICAgICAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gQnVmZmVyRGF0YSkgewogICAgICAgICAgICAgaWYgKCFtX3Jlc291cmNlRGF0
YSkKLSAgICAgICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFJlc291cmNlQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGExNjEy
ZGI3ZjQ2ZjNjNDk3ZWU2YTljZDIwNGUzNGNmMWYyNDFjMjkuLjA2YmRiMzhiNTkwNmQ4ZWMxMTRm
MGMyMTVjYTNlZDFkMzRiMTIwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVVT
RShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKKwogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNlZ21lbnRTaXplID0gMHgxMDAwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlZ21lbnRQb3Np
dGlvbk1hc2sgPSAweDBGRkY7CiAKQEAgLTU2LDYgKzU3LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IGZyZWVTZWdtZW50KGNoYXIqIHApCiB7CiAgICAgZmFzdEZyZWUocCk7CiB9CisKICNlbmRpZgog
CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCkBAIC0yMTQsOSArMjE2LDggQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmNsZWFyKCkKICAgICBjbGVhclBsYXRmb3JtRGF0YSgpOwogICAgIAogI2lm
ICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGZyZWVTZWdtZW50KG1f
c2VnbWVudHNbaV0pOwotCisgICAgZm9yIChjaGFyKiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAg
ICAgICAgZnJlZVNlZ21lbnQoc2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOwogI2Vs
c2UKICAgICBtX2RhdGFBcnJheS5jbGVhcigpOwpAQCAtMjI2LDI0ICsyMjcsMjYgQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmNsZWFyKCkKICAgICBjbGVhckRhdGFCdWZmZXIoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitQYXNzUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjbG9uZShhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKSk7CisgICAgUGFzc1Jl
ZjxTaGFyZWRCdWZmZXI+IGNsb25lIHsgYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpIH07CiAg
ICAgaWYgKGhhc1BsYXRmb3JtRGF0YSgpKSB7Ci0gICAgICAgIGNsb25lLT5hcHBlbmQoZGF0YSgp
LCBzaXplKCkpOworICAgICAgICBjbG9uZS5nZXQoKS5hcHBlbmQoZGF0YSgpLCBzaXplKCkpOwog
ICAgICAgICByZXR1cm4gY2xvbmU7CiAgICAgfQogCi0gICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6
ZTsKLSAgICBjbG9uZS0+bV9idWZmZXItPmRhdGEucmVzZXJ2ZUNhcGFjaXR5KG1fc2l6ZSk7Ci0g
ICAgY2xvbmUtPm1fYnVmZmVyLT5kYXRhLmFwcGVuZChtX2J1ZmZlci0+ZGF0YS5kYXRhKCksIG1f
YnVmZmVyLT5kYXRhLnNpemUoKSk7CisgICAgY2xvbmUuZ2V0KCkubV9zaXplID0gbV9zaXplOwor
ICAgIGNsb25lLmdldCgpLm1fYnVmZmVyLT5kYXRhLnJlc2VydmVDYXBhY2l0eShtX3NpemUpOwor
ICAgIGNsb25lLmdldCgpLm1fYnVmZmVyLT5kYXRhLmFwcGVuZChtX2J1ZmZlci0+ZGF0YS5kYXRh
KCksIG1fYnVmZmVyLT5kYXRhLnNpemUoKSk7CisKICNpZiAhVVNFKE5FVFdPUktfQ0ZEQVRBX0FS
UkFZX0NBTExCQUNLKQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NlZ21lbnRzLnNp
emUoKTsgKytpKQotICAgICAgICBjbG9uZS0+bV9idWZmZXItPmRhdGEuYXBwZW5kKG1fc2VnbWVu
dHNbaV0sIHNlZ21lbnRTaXplKTsKKyAgICBmb3IgKGNoYXIqIHNlZ21lbnQgOiBtX3NlZ21lbnRz
KQorICAgICAgICBjbG9uZS5nZXQoKS5tX2J1ZmZlci0+ZGF0YS5hcHBlbmQoc2VnbWVudCwgc2Vn
bWVudFNpemUpOwogI2Vsc2UKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRhQXJy
YXkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNsb25lLT5hcHBlbmQobV9kYXRhQXJyYXlbaV0uZ2V0
KCkpOworICAgIGZvciAoYXV0byYgZGF0YSA6IG1fZGF0YUFycmF5KQorICAgICAgICBjbG9uZS5n
ZXQoKS5hcHBlbmQoZGF0YS5nZXQoKSk7CiAjZW5kaWYKKwogICAgIHJldHVybiBjbG9uZTsKIH0K
IApAQCAtMjc1LDE3ICsyNzgsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyRGF0YUJ1ZmZl
cigpCiB9CiAKICNpZiAhVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQorCiB2b2lk
IFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBieXRlc1RvQ29weSkgY29uc3QKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9zZWdtZW50cy5zaXplKCk7ICsraSkgeworICAgIGZvciAoY2hhciogc2VnbWVudCA6IG1fc2Vn
bWVudHMpIHsKICAgICAgICAgdW5zaWduZWQgZWZmZWN0aXZlQnl0ZXNUb0NvcHkgPSBzdGQ6Om1p
bihieXRlc1RvQ29weSwgc2VnbWVudFNpemUpOwotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24s
IG1fc2VnbWVudHNbaV0sIGVmZmVjdGl2ZUJ5dGVzVG9Db3B5KTsKKyAgICAgICAgbWVtY3B5KGRl
c3RpbmF0aW9uLCBzZWdtZW50LCBlZmZlY3RpdmVCeXRlc1RvQ29weSk7CiAgICAgICAgIGRlc3Rp
bmF0aW9uICs9IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5OwogICAgICAgICBieXRlc1RvQ29weSAtPSBl
ZmZlY3RpdmVCeXRlc1RvQ29weTsKLSAgICAgICAgZnJlZVNlZ21lbnQobV9zZWdtZW50c1tpXSk7
CisgICAgICAgIGZyZWVTZWdtZW50KHNlZ21lbnQpOwogICAgIH0KICAgICBtX3NlZ21lbnRzLmNs
ZWFyKCk7CiB9CisKICNlbmRpZgogCiBjb25zdCBWZWN0b3I8Y2hhcj4mIFNoYXJlZEJ1ZmZlcjo6
YnVmZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXgg
Y2NiMDI5ZDc5ODE4ZjZkOWNiZDdhZmJlNjU1MDRlMDU2NjliNzNlOS4uZjU5MTI5YTEzYWQ4NjE5
Y2I2NDZlMzQ3MzNlMGI2ZThjMDU4Zjg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdDsKKyAgICBQYXNzUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwogICAgIAogICAg
IC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGJ5dGVzIGFmdGVyICJwb3NpdGlv
biIuICJkYXRhIgogICAgIC8vIHBvaW50cyB0byB0aGUgZmlyc3QgYnl0ZS4KQEAgLTExOCw3ICsx
MTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gICAgICB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWdu
ZWQgZ2V0U29tZURhdGEoY29uc3QgY2hhciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihT
aGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIHRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1
ZmZlcihTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3Jt
RGF0YSgpIGNvbnN0OwogCiAgICAgc3RydWN0IERhdGFCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8RGF0YUJ1ZmZlcj4gewpAQCAtMTU4LDYgKzE1OCw3IEBAIHByaXZhdGU6CiAj
ZWxzZQogICAgIG11dGFibGUgVmVjdG9yPGNoYXIqPiBtX3NlZ21lbnRzOwogI2VuZGlmCisKICNp
ZiBVU0UoQ0YpCiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gbV9jZkRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNTY3NzA3YmZjN2ZiOTdhZGU1MWNiOTMzYjU2Yzhl
ZDBiNThmYWZlNS4uYmJmMTg1ZTAwNzIzYjEzZTc2MDkzZmMyYzE2NTFkMzY2NTNlZTA3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtOTIs
MTMgKzkyLDEzIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiAgICAg
bV9jZkRhdGEgPSAwOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRz
V2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciogbmV3Q29udGVudHMpCit2b2lkIFNoYXJl
ZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgbmV3Q29udGVudHMpCiB7Ci0gICAgaWYgKCFuZXdDb250ZW50cy0+bV9jZkRhdGEpCisgICAg
aWYgKCFuZXdDb250ZW50cy5tX2NmRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2xlYXIo
KTsKLSAgICBtX2NmRGF0YSA9IG5ld0NvbnRlbnRzLT5tX2NmRGF0YTsKKyAgICBtX2NmRGF0YSA9
IG5ld0NvbnRlbnRzLm1fY2ZEYXRhOwogfQogCiBib29sIFNoYXJlZEJ1ZmZlcjo6bWF5YmVBcHBl
bmRQbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBuZXdDb250ZW50cykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyLmgKaW5kZXggNTg5MWQ4Yzc3MWMzZjU2NTdiNjMyY2IxNjk4YmY3ZmRlMmY2OTJl
Yi4uNTMyYWM4NDBhNzllYTZhNzZjMDVjZDM3NWM5MWRlZmQ4MThmOTZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyX2gKIAogI2lmIEVOQUJMRShWSURFTykKKwogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM1LDcgKzM2
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6
CkBAIC00MywxMCArNDMsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRh
dGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVy
UmVjZWl2ZWQoU2hhcmVkQnVmZmVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBs
b2FkRmluaXNoZWQoU2hhcmVkQnVmZmVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5p
c2hlZCgpIHsgfQogI2lmIFVTRShTT1VQKQogICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKHNpemVfdCAvKnJlcXVlc3RlZFNpemUqLywgc2l6ZV90JiAvKmFjdHVhbFNpemUq
LykgeyByZXR1cm4gbnVsbHB0cjsgfTsKICNlbmRpZgpAQCAtNjgsNyArNjcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyKHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+IGNs
aWVudCkKKyAgICBleHBsaWNpdCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQogICAgICAg
ICA6IG1fY2xpZW50KFdURjo6bW92ZShjbGllbnQpKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29y
ZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNWY0
YmI5N2NjNTdiZDBmYThlNWUzZDBlMjFjN2QxNWQ5YTFlMWMyMi4uOTcyZDYxMzVlZDYzYjBiODBl
MjM4ZDczODkyZTA5OTI5YTYyYmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9X
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJS
ZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXgg
ZjIwZTZhMDU4NGM4ZDRmZDFjYTYwOGIwNGJhY2M4NTBjODE4ZWVkNi4uM2U2NWE1MTg5MWNjMGQz
MTczOWRiNTdlNDkxZjJjMjdjYTNiMzlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9y
dCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlUmVxdWVz
dC5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIgotI2lt
cG9ydCAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbXBvcnQgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5o
IgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgpAQCAt
MTUyLDcgKzE1MSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpmdWxmaWxsUmVx
dWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyCiAgICAgaWYgKCFkYXRhUmVx
dWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gcmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCkgPyByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVk
QnVmZmVyKCkgOiAwOworICAgIFNoYXJlZEJ1ZmZlciogZGF0YSA9IHJlc291cmNlLT5yZXNvdXJj
ZUJ1ZmZlcigpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGY5ZDc5OTEyM2FiMmE0NWU1
ODE4OGI2NzUxY2M4ZWNiM2UxOGExYTUuLjEyZmRlYmE5YjY3ZjI1NmVhNGNlODNjZWEwODE5YTVk
NGNkYzIzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50IGZp
bmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQo
U2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNo
ZWQoKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50
IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50LCBwdWJsaWMgU3RyZWFtaW5nQ2xpZW50IHsK
QEAgLTEwMzEsNyArMTAzMSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgZ3N0X2FwcF9zcmNf
ZW5kX29mX3N0cmVhbShzcmMtPnByaXYtPmFwcHNyYyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hlZChTaGFyZWRCdWZmZXIqKQordm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKCkKIHsKICAgICBoYW5kbGVO
b3RpZnlGaW5pc2hlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQppbmRleCBjZWE5MDQ4NTM1YWYzMzkxMDQ0NTUzNmFmOGE1MGQ3ODczMTAyZGY4
Li41MDFhMzhjYTU3MjllY2I3YTk4MTY0NDk0N2Q3MWQzMjdmMWYyZjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtNTEsNyArNTEsNiBAQAog
I2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKICNpbXBvcnQgIlJlbmRlckltYWdlLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5o
IgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCiAj
aW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCBiMDIyYzcxNTNiODM4OWU3Y2RjNzY5MGJi
OWE5NjljYjhhMjE3N2I3Li5kZGI4YjYyMTdjMDcyOGEwZmI2M2Q4M2ZjNGNhYmYxNWE2YTQ3Nzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC01Myw3
ICs1Myw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MZWdh
Y3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgpAQCAtNDU5LDcgKzQ1OCw3IEBAIC0gKHZvaWQp
ZmluYWxpemUKIAogLSAoTlNEYXRhICopZGF0YQogewotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEg
PSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBp
ZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIG1h
aW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAwODYzYmRlZmFlZDhkYTFlMWRjOWIy
ZWFjODI2Y2E2NjY0ODc0ZmM0Li45NDRjNWM4NDIyOTViZDMzN2RiZDZhYzEyNGY5MTM0ZThiZDZm
MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEwOCw3
ICsxMDgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlcldpZGdldC5oPgotI2ltcG9ydCA8
V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CkBAIC0zOTU1LDcgKzM5NTQsNyBAQCAtIChOU0Fy
cmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilk
cm9wRGVzdGluYXRpb24KICAgICBOU1VSTCAqZHJhZ2dpbmdJbWFnZVVSTCA9IG5pbDsKICAgICAK
ICAgICBpZiAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIHRpZmZSZXNvdXJjZSA9IFtzZWxmIHByb21p
c2VkRHJhZ1RJRkZEYXRhU291cmNlXSkgewotICAgICAgICBpZiAoUmVzb3VyY2VCdWZmZXIgKmJ1
ZmZlciA9IHN0YXRpY19jYXN0PENhY2hlZFJlc291cmNlKj4odGlmZlJlc291cmNlKS0+cmVzb3Vy
Y2VCdWZmZXIoKSkgeworICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gdGlmZlJlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9
IHRpZmZSZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgICAgICAgICBk
cmFnZ2luZ0ltYWdlVVJMID0gW3Jlc3BvbnNlIFVSTF07CiAgICAgICAgICAgICB3cmFwcGVyID0g
W1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKaW5kZXggNGZiZDk5NjAxOGIzMDNmYmQ1MmUwM2I4YTdhYTM5YzAxZmJjMTA0
Yi4uOTA3NDUxOTkwNDBiOGE3NGIxYWY5YWVmODBlOWRhNjdlYjIzMTBjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTgxLDggKzE4MCw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6ZGF0YSgKICAgICBpZiAoIW1fbG9hZGVyKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIg
PSBtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgIHJldHVybiBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKGJ1ZmZlciA/IGJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiAwKS5jb3B5
UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSht
X2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJF
U1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbigvKiBbcmV0dmFsXVtvdXRdICovIElX
ZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpAQCAtMzAzLDggKzMwMSw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6c3VicmVzb3VyY2VGb3JVUkwoCiAg
ICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFJl
c291cmNlQnVmZmVyKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsK
LSAgICAqcmVzb3VyY2UgPSBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoYnVmZmVyID8gYnVm
ZmVyLT5zaGFyZWRCdWZmZXIoKSA6IDAsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKTsKKyAg
ICAqcmVzb3VyY2UgPSBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoY2FjaGVkUmVzb3VyY2Ut
PnJlc291cmNlQnVmZmVyKCksIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBhNzYwODQyYTU0MDcwYjdiOWVi
YThiYzczOTA2N2E4NTBhNzYxMzExLi5lZTg0YWM0ZTQ5ZjA1NjA3ODg1NDI3NGFiMDRkZmU3ODJl
MjU3MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMjM1LDcgKzIzNSw2IEBAIHNldChXZWJL
aXQyX1NPVVJDRVMKICAgICBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
ICAgICBTaGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCiAgICAgU2hhcmVkL1dlYlJlbmRlck9iamVj
dC5jcHAKLSAgICBTaGFyZWQvV2ViUmVzb3VyY2VCdWZmZXIuY3BwCiAgICAgU2hhcmVkL1dlYlRv
dWNoRXZlbnQuY3BwCiAgICAgU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDk1NGJiYTQ3NDE5OTIzM2ZhODQ1NmM5MDE3MWZjYjliNjgwZTg5OTUuLjhlM2UyNTgy
ZDUyODY3OTQzOTkxMWM1ZDU5MDQ2MjY1ZjdlZGM5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDUs
NyArNDUsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4K
QEAgLTQwOSwxOCArNDA4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJp
bmdUaW1lckZpcmVkKFRpbWVyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4mKQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogeworICAgIEFTU0VSVChidWZmZXIpOwogICAgIEFT
U0VSVCghaXNTeW5jaHJvbm91cygpKTsKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwKQogICAgIFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUgc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7Ci0gICAgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVy
KHNoYXJlYWJsZVJlc291cmNlSGFuZGxlLCBidWZmZXIpOworICAgIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihzaGFyZWFibGVSZXNv
dXJjZUhhbmRsZSwgKmJ1ZmZlcik7CiAgICAgaWYgKCFzaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5p
c051bGwoKSkgewotICAgICAgICAvLyBTaW5jZSB3ZSdyZSBkZWxpdmVyaW5nIHRoaXMgcmVzb3Vy
Y2UgYnkgb3Vyc2VsdmVzIGFsbCBhdCBvbmNlIGFuZCBkb24ndCBuZWVkIGFueW1vcmUgZGF0YSBv
ciBjYWxsYmFja3MgZnJvbSB0aGUgbmV0d29yayBsYXllciwgYWJvcnQgdGhlIGxvYWRlci4KKyAg
ICAgICAgLy8gU2luY2Ugd2UncmUgZGVsaXZlcmluZyB0aGlzIHJlc291cmNlIGJ5IG91cnNlbHZl
cyBhbGwgYXQgb25jZSBhbmQgZG9uJ3QgbmVlZCBhbnkgbW9yZSBkYXRhIG9yIGNhbGxiYWNrcyBm
cm9tIHRoZSBuZXR3b3JrIGxheWVyLCBhYm9ydCB0aGUgbG9hZGVyLgogICAgICAgICBhYm9ydCgp
OwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJl
c291cmNlKHNoYXJlYWJsZVJlc291cmNlSGFuZGxlLCBjdXJyZW50VGltZSgpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKKwogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiAgICAgc2VuZEFib3J0aW5nT25GYWlsdXJlKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoZGF0YVJlZmVyZW5jZSwg
ZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMjczZTEzMTk5ZTgxOTJkM2Y2
NjRjODhiMTZiMjg4YmE0ZWFhYzU0Mi4uOWNlZTg2MThjMmU3MWRjNzYxNWQ5NTUyYzNiNDliM2Nm
MGEyYzY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKLWNsYXNzIFJlc291
cmNlQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiB9CkBAIC05Miw3ICs5MSw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwKQog
ICAgIHN0YXRpYyB2b2lkIHRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21DRlVSTENhY2hlZFJlc3Bv
bnNlKFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsK
LSAgICBzdGF0aWMgdm9pZCB0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVyKFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICBz
dGF0aWMgdm9pZCB0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVkQnVmZmVyKFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAj
aWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrRGlza0NhY2hlTW9uaXRvci5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9y
LmgKaW5kZXggYmQ4YzBiMGJhZThmOTU2YWI5MTFiNDUyNmVmMzVlMWFjMzM5MDFjZi4uNTgzY2Vk
YjY1ZmU3MTljNDcxNWY5MWY2ZTFmY2E0MjgzNjlkNGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLmgKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9y
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrRGlza0NhY2hlTW9uaXRv
cihDRkNhY2hlZFVSTFJlc3BvbnNlUmVmLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIqKTsKIAogICAg
IC8vIFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3IKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VC
ZWNhbWVGaWxlQmFja2VkKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAg
IHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtEaXNrQ2FjaGVNb25pdG9yLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLm1tCmluZGV4IGEyM2M1OGJjNzZhODJhYWVlNzBkYzkx
ZmQ5MDdlYWNhNWEzYzUzMGQuLjU1MWQwNzY5MzI3OWJiZmIxZjQyM2M0ZTUyN2I3ZjIzYWE3NTkz
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
RGlza0NhY2hlTW9uaXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IubW0KQEAgLTU5LDEwICs1OSwxMCBAQCBOZXR3b3Jr
RGlza0NhY2hlTW9uaXRvcjo6TmV0d29ya0Rpc2tDYWNoZU1vbml0b3IoQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjYWNoZWRSZQogewogfQogCi12b2lkIE5ldHdvcmtEaXNrQ2FjaGVNb25pdG9yOjpy
ZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVCYWNr
ZWRCdWZmZXIpCit2b2lkIE5ldHdvcmtEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOwotICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5
R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihoYW5kbGUsIGZpbGVCYWNrZWRCdWZm
ZXIuZ2V0KCkpOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFu
ZGxlRnJvbVNoYXJlZEJ1ZmZlcihoYW5kbGUsIGZpbGVCYWNrZWRCdWZmZXIpOwogICAgIGlmICho
YW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMu
bW0KaW5kZXggNDNhZWUwYTUwNzhjZjU5ZmVmMmIyOWJmZmE2MzhlODZjNDE4ZTYyNy4uZTEzMzdk
MDM1M2YzODBkZjZhYjg5OTk5ZThmZGNkMTRkMjYyZmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVy
TWFjLm1tCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlH
ZXRTaGFyZWFibGVIYW5kbGVGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShTaGFyZWFiCiAgICAgdHJ5
R2V0U2hhcmVhYmxlSGFuZGxlRnJvbUNGRGF0YShoYW5kbGUsIGRhdGEpOwogfQogCi12b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZl
cihTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUsIFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21T
aGFyZWRCdWZmZXIoU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlLCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBzdGF0aWMgQ0ZVUkxDYWNoZVJlZiBjYWNoZSA9IENGVVJMQ2Fj
aGVDb3B5U2hhcmVkVVJMQ2FjaGUoKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAt
OTMsNyArOTMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxl
SGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWFibGVSZXNvdQogICAgIGlmICghY2FjaGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIENGRGF0YVJlZiBkYXRhID0gYnVmZmVyLT5leGlzdGluZ0NG
RGF0YSgpOworICAgIENGRGF0YVJlZiBkYXRhID0gYnVmZmVyLmV4aXN0aW5nQ0ZEYXRhKCk7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMiw3ICsxMDIsOCBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1
ZmZlcihTaGFyZWFibGVSZXNvdQogCiAgICAgdHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbUNGRGF0
YShoYW5kbGUsIGRhdGEpOwogfQotI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA5MAorCisjZW5kaWYgLy8gSU9TIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA5MAogCiBzaXplX3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpmaWxlQmFj
a2VkUmVzb3VyY2VNaW5pbXVtU2l6ZSgpCiB7CkBAIC0xMTAsNiArMTExLDcgQEAgc2l6ZV90IE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZmlsZUJhY2tlZFJlc291cmNlTWluaW11bVNpemUoKQogfQog
CiAjaWYgVVNFKENGTkVUV09SSykKKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxD
YWNoZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZiBjZlJlc3BvbnNlKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUg
PT0gbV9oYW5kbGUpOwpAQCAtMTMzLDYgKzEzNSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIE5TQ2Fj
CiAKICAgICBtX2hhbmRsZS0+Y29udGludWVXaWxsQ2FjaGVSZXNwb25zZShuc1Jlc3BvbnNlKTsK
IH0KKwogI2VuZGlmIC8vICFVU0UoQ0ZORVRXT1JLKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCmluZGV4IDRmOGY0
OGQ1YzFjYTc2ZWMxZTBmNTNhMTI1NmVhZjFkMzhjNjJjYTMuLmU2ODA2YjA3NDEzYWQyY2UyOTg5
ZTk0Mjg5YjlkMTg4MDNhOTI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Rh
dGFSZWZlcmVuY2UuaApAQCAtODMsMjEgKzgzLDI3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1f
c2l6ZTsKIH07CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U6IHB1YmxpYyBEYXRh
UmVmZXJlbmNlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgOiBwdWJsaWMgRGF0
YVJlZmVyZW5jZSB7CiBwdWJsaWM6CisgICAgLy8gRklYTUU6IFRoaXMgY2xhc3MgZG9lc24ndCBo
YW5kbGUgbnVsbCwgc28gdGhlIGFyZ3VtZW50IHNob3VsZCBiZSBhIHJlZmVyZW5jZSBvciBQYXNz
UmVmLgogICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQogICAgIHsKLSAgICAgICAgbV9i
dWZmZXIgPSBidWZmZXI7CiAgICAgfQogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci0+c2l6ZSgpOyB9Citwcml2YXRlOgorICAgIC8vIEZJWE1FOiBJdCBpcyBhIGJh
ZCBpZGVhIHRvIHZpb2xhdGUgdGhlIExpc2tvdiBTdWJzdGl0dXRpb24gUHJpbmNpcGxlIGFzIHdl
IGRvIGhlcmUuCisgICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIERhdGFSZWZlcmVuY2UgYXMgYSBw
b2x5bW9wcmhpYyBiYXNlIGNsYXNzIGluIHRoaXMgZmFzaGlvbiwKKyAgICAvLyB0aGVuIHdlIG5l
ZWQgaXQgdG8gYmUgYSBiYXNlIGNsYXNzIHRoYXQgZG9lcyBub3QgaGF2ZSBmdW5jdGlvbnMgc3Vj
aCBhcyBpc0VtcHR5LAorICAgIC8vIHNpemUsIGRhdGEsIGFuZCB2ZWN0b3IsIGFsbCBvZiB3aGlj
aCB3aWxsIGRvIHRoZSB3cm9uZyB0aGluZyBpZiB0aGV5IGFyZSBjYWxsZWQuCisgICAgLy8gRGVs
ZXRpbmcgdGhlc2UgZnVuY3Rpb25zIGhlcmUgZG9lcyBub3QgcHJldmVudCB0aGVtIGZyb20gYmVp
bmcgY2FsbGVkLgorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0ID0gZGVsZXRlOworICAgIHNpemVf
dCBzaXplKCkgY29uc3QgPSBkZWxldGU7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
ID0gZGVsZXRlOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IoKSBjb25zdCA9IGRlbGV0ZTsK
IAotICAgIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgflNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoKSB7IG1fYnVmZmVyID0gMDsgfQor
ICAgIHZpcnR1YWwgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJikgY29uc3Qgb3ZlcnJpZGU7
CiAKLXByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVzb3VyY2VCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlc291cmNlQnVmZmVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRiOWViMzJlMGFhOTI1MGU3YTQ4NTk0MjRmYjU0
OTgzM2NmYWEzMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVzb3VyY2VCdWZmZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJSZXNvdXJjZUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNP
VVJDRSkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJj
ZS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViUmVzb3VyY2VCdWZmZXI6OldlYlJlc291
cmNlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlKQotICAgIDog
bV9yZXNvdXJjZShyZXNvdXJjZSkKLXsKLSAgICBBU1NFUlQobV9yZXNvdXJjZSk7Ci19Ci0KLVdl
YlJlc291cmNlQnVmZmVyOjp+V2ViUmVzb3VyY2VCdWZmZXIoKQotewotfQotCi1jb25zdCBjaGFy
KiBXZWJSZXNvdXJjZUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1fcmVzb3VyY2UtPmRhdGEoKSk7Ci19Ci0KLXVuc2lnbmVk
IFdlYlJlc291cmNlQnVmZmVyOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yZXNvdXJj
ZS0+c2l6ZSgpOwotfQotCi1ib29sIFdlYlJlc291cmNlQnVmZmVyOjppc0VtcHR5KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1fcmVzb3VyY2UgfHwgIW1fcmVzb3VyY2UtPnNpemUoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlc291cmNlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVzb3VyY2VCdWZmZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjliNDk1OWQ1YzUyZTc2YjVkMjMyYWRjNmQ2MDYyNTk5NzJm
YmQxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVzb3VyY2VCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlJlc291cmNlQnVmZmVyX2gKLSNk
ZWZpbmUgV2ViUmVzb3VyY2VCdWZmZXJfaAotCi0jaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJD
RSkKLQotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwotCi1jbGFzcyBXZWJSZXNvdXJjZUJ1
ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUmVzb3VyY2VCdWZmZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJl
YWJsZVJlc291cmNlPiByZXNvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlJlc291cmNl
QnVmZmVyKHJlc291cmNlKSk7IH0KLQotICAgIHZpcnR1YWwgfldlYlJlc291cmNlQnVmZmVyKCkg
b3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNpemUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIFdlYlJl
c291cmNlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+KTsKLQotICAgIFJlZlB0
cjxTaGFyZWFibGVSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLQotI2VuZGlmIC8v
IFdlYlJlc291cmNlQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOGE0ZWJjYzU1Mjk3NDVlZWJlZjVhYzBhMmY4OTZj
MWQyY2NjNGUxLi40ZGJmNjZhODQ2Y2ViYTA1MzU2Y2U3MGRjY2E5NjFkNzllYmJhNjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC04MjIsOCArODIyLDYgQEAKIAkJNTEyMTI3QzQxOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBhc3Rl
Ym9hcmRPdmVycmlkZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMjEyN0MyMTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVz
LmggKi87IH07CiAJCTUxMjE3NDYwMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIx
NzQ1RTE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuY3BwICovOyB9OwogCQk1
MTIxNzQ2MTE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjE3NDVGMTY0QzIwRTMwMDM3
QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5oICovOyB9OwotCQk1MTIxNzQ2NDE2NEMyMTM3MDAz
N0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMTc0NjIxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291
cmNlQnVmZmVyLmNwcCAqLzsgfTsKLQkJNTEyMTc0NjUxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJl
c291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTIxNzQ2MzE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuaCAqLzsg
fTsKIAkJNTEyM0NGMUIxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyM0NGMTkxMzNE
MjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuY3BwICovOyB9OwogCQk1MTIzQ0YxQzEz
M0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyM0NGMUExMzNEMjYwQTAwNTZGODAwIC8qIFdL
SWNvbkRhdGFiYXNlQ0cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTI5MDk5MjE4M0FDRUFGMDA1NTIyQTYgLyogV2ViSURCU2VydmVyQ29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTI5MDk5MDE4M0FDRUFGMDA1NTIyQTYgLyogV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAgKi87
IH07CkBAIC0yODU4LDggKzI4NTYsNiBAQAogCQk1MTIxMjdDMjE5MDgyMzlBMDBEQUYzNUMgLyog
V2ViUGFzdGVib2FyZE92ZXJyaWRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMjE3NDVFMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWFibGVSZXNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjE3NDVGMTY0QzIwRTMwMDM3QTVDMSAvKiBT
aGFyZWFibGVSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFy
ZWFibGVSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTIxNzQ2MjE2
NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MTIxNzQ2MzE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VC
dWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VCdWZm
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyM0NGMTkxMzNEMjYwQTAwNTZG
ODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV0tJY29uRGF0YWJhc2VDRy5jcHA7IHBhdGggPSBjZy9XS0ljb25EYXRhYmFzZUNH
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyM0NGMUExMzNEMjYwQTAwNTZG
ODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tJY29uRGF0YWJhc2VDRy5oOyBwYXRoID0gY2cvV0tJY29uRGF0YWJhc2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5MDk5MDE4M0FDRUFGMDA1NTIyQTYgLyogV2Vi
SURCU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ1MzksOCArNDUzNSw2IEBACiAJCQkJMzc5NDg0MDIxNTBDMzUwNjAwRTUyQ0U5IC8q
IFdlYlJlbmRlckxheWVyLmggKi8sCiAJCQkJMzc2MDg4MUMxNTA0MTNFOTAwRkM4MkM3IC8qIFdl
YlJlbmRlck9iamVjdC5jcHAgKi8sCiAJCQkJMzc2MDg4MUQxNTA0MTNFOTAwRkM4MkM3IC8qIFdl
YlJlbmRlck9iamVjdC5oICovLAotCQkJCTUxMjE3NDYyMTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJS
ZXNvdXJjZUJ1ZmZlci5jcHAgKi8sCi0JCQkJNTEyMTc0NjMxNjRDMjEzNzAwMzdBNUMxIC8qIFdl
YlJlc291cmNlQnVmZmVyLmggKi8sCiAJCQkJRjYzNDQ0NTUxMkE4ODVDODAwMDYxMkQ4IC8qIFdl
YlNlY3VyaXR5T3JpZ2luLmggKi8sCiAJCQkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1IC8qIFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovLAogCQkJCUMwMzM3REQ3MTI3QTUxQjYwMDhGRjRG
NCAvKiBXZWJUb3VjaEV2ZW50LmNwcCAqLywKQEAgLTc2MTgsNyArNzYxMiw2IEBACiAJCQkJNTFF
MzUxRjYxODBGNUM3NTAwRTUzQkU5IC8qIFdlYklEQkZhY3RvcnlCYWNrZW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDI5RUNEMDE5MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlz
cGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzYwODgxRjE1MDQxM0U5
MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTIxNzQ2
NTE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzMzY3NjMwMTMwQzk5OTgwMDZDOURFMiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjA4OUIxOTI2N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNj
cmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMzNjc2NTYxMzBDOUVDQTAwNkM5REUyIC8qIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTMwNCw3
ICs5Mjk3LDYgQEAKIAkJCQkzNzk0ODQwMzE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyOEYzRTYxODg1Q0NDMTAwNEI5RUFFIC8qIFdl
YkVkaXRvckNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NjA4ODFFMTUwNDEzRTkw
MEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEyMTc0
NjQxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMzMzY3NjJGMTMwQzk5OTgwMDZDOURFMiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTE1QzcxNDE5MEY4OUU0MDBFQ0M1MTYgLyogRGF0
YWJhc2VQcm9jZXNzSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNGOUQ1QjkxMzEyRjFFRTAw
MEQ2ODNGIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDc3MTk2NDU1ODRjNWMwYWEyYmNmOWNh
NTI1NGQzZTg4ZDY1NThiYjcuLjY3MWExN2U1NmM4NDM1MGZkODhiMmIwZDMzZWRlYjEyMjM5OTJh
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMCwxMiArMzAsMTAgQEAKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2lu
Y2x1ZGUgIldlYlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNh
Y2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIApA
QCAtOTUsNyArOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVS
ZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICByZXNvdXJjZS0+dHJ5UmVwbGFjZUVuY29kZWREYXRhKGJ1ZmZlci5yZWxl
YXNlKCkpOworICAgIHJlc291cmNlLT50cnlSZXBsYWNlRW5jb2RlZERhdGEoKmJ1ZmZlcik7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCAxYTdmOWMxZTQ0ZjI3
MDMzZjFlNDIyMWQ1MWY0MzVkYjQ4NTA4N2RhLi44OGNiMDY0ZTEwNzI5M2Q3OTA5NjVhMDc0YWRj
MTJjZGFjODBkNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtNDYsNyArNDYs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZlcnJl
clBvbGljeS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NWFk
ZmJiMmMyMGYzYjJkNzQwN2U5Njg4ZmFlOTkwYjI5MDViMGE1Li5jNWViNDIzY2IwMmYwNTczNTBk
MzZlZGM1NTQwOWI4Y2RkZWQ4OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM4LDcgKzM4LDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCBkYzlhYTBmNDIzZTkwNTY4OWY3YzdhYTczMTBhNTJiNzNkYTAxNGJl
Li42YjkyODQyNWFmNDdiNTJhMTE0NTYxNGVmOWU5M2I1NTA1NGMxMzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApA
QCAtNDYsNyArNDYsNiBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwotY2xhc3Mg
UmVzb3VyY2VCdWZmZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDkxZjhlOGY2MDJhZWZjNDA3YmZjYjI0NmM0OWNjZjhkNjNjNTNhYTguLjljZTBi
ZWZkYmViNTQwYjkzZjY4ZWRmYjY5ZGIwNDVmODJjYjFhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC03NCw3ICs3NCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVn
aW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1
ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
QEAgLTkxOSw3ICs5MTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgIGlmICghd2ViUGFnZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1
ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOwogICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFpblJlc291cmNlRGF0
YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6IDApLCBtYWluUmVzb3VyY2VEYXRhID8gbWFp
blJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVu
dFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVm
ZXJlbmNlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCmluZGV4IDU0ZTBiN2RmZjI4N2U3OGFjNDQzZWY4MDg3ZWZkNDI5OTdj
YjFhY2QuLjlkY2VlNDZiMGJlYjk1ZGFkZmEzNzIwM2M1ZjY0YmQ5NzI4N2RkN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNjUsNyAr
NjUsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1
Z2luRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTMwNSw3ICszMDQsNyBAQCBTdHJp
bmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAg
ICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJl
ZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWlu
UmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGRlY29k
ZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291
cmNlRGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAxMTdkMDcyN2EzNzFhNjMzNGQzNWFkODM5YzI4MTMxZTQ3N2I3NjVi
Li40MzljOWU4ZTAyNTliMjAzM2FkMDFkOGNiZDU4ZDVjOGFlNzA1ZWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzYsNyArMTM2LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZW5kZXJUcmVlQXNUZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CkBAIC0yNDI2LDE3ICsyNDI1
LDE2IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lECiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBi
ZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5k
IG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0g
ICAgLy8gUmV0YWluIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgYXQgdGhpcyBsZXZlbCBzbyBp
dCAoYW5kIHRoZSBpbnRlcm5hbCBkYXRhKSBsaXZlcwotICAgIC8vIGxvbmcgZW5vdWdoIGZvciB0
aGUgRGF0YVJlZmVyZW5jZSB0byBiZSBlbmNvZGVkIGJ5IHRoZSBzZW50IG1lc3NhZ2UuCiAgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVlOwotICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soSlNET01XaW5kb3c6OmNvbW1vblZNKCkpOwogICAgIGlmIChKU1ZhbHVlIHJlc3VsdFZhbHVl
ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0KHNjcmlw
dCwgdHJ1ZSkuanNWYWx1ZSgpKSB7Ci0gICAgICAgIGlmICgoc2VyaWFsaXplZFJlc3VsdFZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUobV9tYWluRnJhbWUtPmpzQ29udGV4dCgp
LCB0b1JlZihtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgcmVzdWx0VmFsdWUpLCAwKSkp
Ci0gICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRh
KCk7CisgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKG1fbWFpbkZyYW1lLT5qc0NvbnRleHQoKSwKKyAgICAgICAgICAgIHRvUmVmKG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpLCByZXN1bHRWYWx1ZSksIG51bGxwdHIpOwogICAg
IH0KIAorICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIGlmIChzZXJp
YWxpemVkUmVzdWx0VmFsdWUpCisgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVz
dWx0VmFsdWUtPmRhdGEoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlw
dFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCkBAIC0yNDQ5
LDE1ICsyNDQ3LDE0IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRf
dCBjYWxsYmFja0lEKQogI2lmIEVOQUJMRShNSFRNTCkKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVu
dHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBib29sIHVzZUJpbmFyeUVuY29kaW5n
KQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotCiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gdXNlQmluYXJ5RW5jb2RpbmcKICAgICAgICAgPyBNSFRN
TEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhVXNpbmdCaW5hcnlFbmNvZGluZyhtX3BhZ2UuZ2V0
KCkpCiAgICAgICAgIDogTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0
KCkpOwogCisgICAgLy8gRklYTUU6IFVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLgorICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogICAgIGlmIChidWZmZXIpCiAgICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7Ci0KICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBj
YWxsYmFja0lEKSk7CiB9CiAjZW5kaWYKQEAgLTI0ODAsMjAgKzI0NzcsMTcgQEAgc3RhdGljIEZy
YW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKIAogdm9pZCBXZWJQYWdlOjpnZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhOworICAgIGlmIChGcmFtZSogZnJhbWUgPSBmcmFtZVdpdGhTZWxlY3Rpb24obV9w
YWdlLmdldCgpKSkKKyAgICAgICAgZGF0YSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21T
ZWxlY3Rpb24oZnJhbWUpLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKTsKKyNlbmRpZgogCi0gICAg
RnJhbWUqIGZyYW1lID0gZnJhbWVXaXRoU2VsZWN0aW9uKG1fcGFnZS5nZXQoKSk7Ci0gICAgaWYg
KGZyYW1lKSB7Ci0gICAgICAgIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9t
U2VsZWN0aW9uKGZyYW1lKTsKLSAgICAgICAgZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNl
bnRhdGlvbigpOworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIGlmIChkYXRhKQogICAgICAgICBkYXRhUmVmZXJlbmNlID0gSVBD
OjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSksIENGRGF0YUdldExl
bmd0aChkYXRhLmdldCgpKSk7Ci0gICAgfQogI2VuZGlmCi0KICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9
CiAKQEAgLTI1MTYsMjQgKzI1MTAsMjAgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQogCiB2b2lkIFdlYlBhZ2U6
OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiB7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0KLSAg
ICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwZGZSZXNvdXJjZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQp
KSB7Ci0gICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZy
YW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpIHsKLSAgICAgICAgICAgIGlmICgocGRmUmVzb3VyY2Ug
PSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCkpKQotICAgICAgICAgICAgICAgIGRhdGFS
ZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4ocGRmUmVzb3VyY2UtPmRhdGEoKSksIHBkZlJlc291cmNlLT5zaXplKCkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICAgICAgICAgIGlmICgoYnVmZmVyID0gbG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpKQotICAgICAgICAgICAgICAgICAgICBkYXRhUmVmZXJl
bmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwotICAgICAgICAgICAgfQorICAgICAg
ICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+
Y29yZUZyYW1lKCkpKQorICAgICAgICAgICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291
cmNlRGF0YSgpOworICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICAgICAgaWYgKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpCisgICAgICAgICAgICAgICAgYnVmZmVyID0gbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBGSVhNRTogVXNlIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuCisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Cisg
ICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5j
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFj
ayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKQEAgLTI1NTIsMzggKzI1NDIsMzgg
QEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmUKIAogdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0
cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZTsKLSAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5n
KTsKLQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUq
IGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKKyAgICAg
ICAgVVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1
ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VV
UkwpOwogICAgICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICAgICAgLy8gVHJ5IHRvIGdldCB0
aGUgcmVzb3VyY2UgZGF0YSBmcm9tIHRoZSBjYWNoZS4KICAgICAgICAgICAgIGJ1ZmZlciA9IGNh
Y2hlZFJlc3BvbnNlRGF0YUZvclVSTChyZXNvdXJjZVVSTCk7CiAgICAgICAgIH0KLQotICAgICAg
ICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVy
ZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogVXNlIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuCisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAg
aWYgKGJ1ZmZlcikKKyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+
c2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhk
YXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLQogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7Ci0gICAgaWYgKFdlYkZyYW1lKiBmcmFt
ZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpKSB7Ci0gICAgICAgIGlm
ICgoZGF0YSA9IGZyYW1lLT53ZWJBcmNoaXZlRGF0YSgwLCAwKSkpCi0gICAgICAgICAgICBkYXRh
UmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQo
KSksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7Ci0gICAgfQorICAgIGlmIChXZWJGcmFt
ZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkKKyAgICAg
ICAgZGF0YSA9IGZyYW1lLT53ZWJBcmNoaXZlRGF0YShudWxscHRyLCBudWxscHRyKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogI2VuZGlmCiAKKyAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoZGF0YSkK
KyAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRl
UHRyKGRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOworI2VuZGlmCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5j
ZSwgY2FsbGJhY2tJRCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzU1NzFjYjlhNjE1MTUyNDIxYjRmZGVk
YjMyMDlmM2FhNzU0ZjMyZC4uYTQ2ZGQ0MDJmMDZmYzA4OTI5NzliYmY3MGE0ZWQ1OWI1MWRiNDg1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtODEsNyArODEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJJbWFn
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJUaGVtZUlPUy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZW5kZXJWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0
b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CkBAIC0xODQyLDEwICsxODQx
LDExIEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmluZyYgY29u
dGV4dEJlZm9yZSwgU3RyaW5nJiBtYXJrZWRUZXh0CiAKIHN0YXRpYyBFbGVtZW50KiBjb250YWlu
aW5nTGlua0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBmb3IgKEVsZW1lbnQqIGN1
cnJlbnRFbGVtZW50ID0gZWxlbWVudDsgY3VycmVudEVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50ID0g
Y3VycmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkKLSAgICAgICAgaWYgKGN1cnJlbnRFbGVt
ZW50LT5pc0xpbmsoKSkKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50RWxlbWVudDsKLSAgICBy
ZXR1cm4gMDsKKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRFbGVtZW50IDogZWxlbWVudExpbmVhZ2Uo
ZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmlzTGluaygpKQorICAgICAg
ICAgICAgcmV0dXJuICZjdXJyZW50RWxlbWVudDsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRQb2lu
dCYgcG9pbnQsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJiBpbmZvKQpAQCAtMTk0
OSw3MyArMTk0OSw3NyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWlu
dDMyX3QgYWN0aW9uKQogICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KG1faW50ZXJhY3Rpb25Ob2Rl
LmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MRWxlbWVudD4obV9pbnRlcmFjdGlvbk5vZGUuZ2V0KCkpOwotICAgIGlmICgh
ZWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0
PEhUTUxFbGVtZW50PigqbV9pbnRlcmFjdGlvbk5vZGUpOworICAgIGlmICghZWxlbWVudC5yZW5k
ZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoc3RhdGljX2Nhc3Q8U2hlZXRBY3Rp
b24+KGFjdGlvbikgPT0gU2hlZXRBY3Rpb246OkNvcHkpIHsKLSAgICAgICAgaWYgKGlzPFJlbmRl
ckltYWdlPigqZWxlbWVudC0+cmVuZGVyZXIoKSkpIHsKLSAgICAgICAgICAgIEVsZW1lbnQqIGxp
bmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtFbGVtZW50KGVsZW1lbnQpOwotICAgICAgICAKKyAg
ICAgICAgaWYgKGlzPFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKSkgeworICAgICAg
ICAgICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0VsZW1lbnQoJmVsZW1l
bnQpOwogICAgICAgICAgICAgaWYgKCFsaW5rRWxlbWVudCkKLSAgICAgICAgICAgICAgICBtX2lu
dGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5lZGl0b3IoKS53cml0ZUltYWdlVG9Q
YXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSwgKmVsZW1lbnQs
IGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC0+cmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2Uo
KS0+dXJsKCksIFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpLT5lZGl0b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKSwgZWxlbWVudCwgZG93bmNhc3Q8UmVuZGVy
SW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCktPnVybCgpLCBTdHJpbmco
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUt
PmRvY3VtZW50KCkuZnJhbWUoKS0+ZWRpdG9yKCkuY29weVVSTChsaW5rRWxlbWVudC0+ZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobGlua0Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBsaW5rRWxlbWVudC0+
dGV4dENvbnRlbnQoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC0+aXNMaW5rKCkpIHsK
LSAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPmVkaXRv
cigpLmNvcHlVUkwoZWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJl
ZkF0dHIpKSksIGVsZW1lbnQtPnRleHRDb250ZW50KCkpOworICAgICAgICAgICAgICAgIG1faW50
ZXJhY3Rpb25Ob2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPmVkaXRvcigpLmNvcHlVUkwobGlua0Vs
ZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGxpbmtFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIp
KSksIGxpbmtFbGVtZW50LT50ZXh0Q29udGVudCgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChlbGVt
ZW50LmlzTGluaygpKSB7CisgICAgICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQo
KS5mcmFtZSgpLT5lZGl0b3IoKS5jb3B5VVJMKGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZWxlbWVudC5mYXN0R2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKSksIGVsZW1lbnQudGV4dENvbnRlbnQoKSk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgaWYgKHN0YXRpY19jYXN0PFNoZWV0QWN0aW9uPihhY3Rpb24pID09
IFNoZWV0QWN0aW9uOjpTYXZlSW1hZ2UpIHsKLSAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4o
KmVsZW1lbnQtPnJlbmRlcmVyKCkpKQorICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPigqZWxl
bWVudC5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC0+cmVu
ZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKSkgewotICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5k
bGUgaGFuZGxlOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpOwotICAgICAgICAgICAg
aWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGJ1ZmZlclNpemUgPSBidWZm
ZXItPnNpemUoKTsKLSAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRN
ZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShidWZmZXJTaXplKTsKLSAgICAgICAg
ICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXJTaXplKTsKLSAgICAgICAgICAgICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0
ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOwotICAgICAgICAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZUltYWdlVG9MaWJyYXJ5KGhhbmRsZSwg
YnVmZmVyU2l6ZSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJl
cigpKS5jYWNoZWRJbWFnZSgpOworICAgICAgICBpZiAoIWNhY2hlZEltYWdlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KTsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHVp
bnQ2NF90IGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoYnVmZmVy
U2l6ZSk7CisgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlclNpemUpOworICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5k
bGU7CisgICAgICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpSZWFkT25seSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2F2ZUltYWdlVG9MaWJyYXJ5KGhhbmRsZSwgYnVmZmVyU2l6ZSkpOwogICAgIH0KIH0KIAot
c3RhdGljIGlubGluZSBib29sIGlzQXNzaXN0YWJsZU5vZGUoTm9kZSogbm9kZSkKK3N0YXRpYyBp
bmxpbmUgYm9vbCBpc0Fzc2lzdGFibGVFbGVtZW50KEVsZW1lbnQmIG5vZGUpCiB7Ci0gICAgaWYg
KGlzPEhUTUxTZWxlY3RFbGVtZW50Pigqbm9kZSkpCisgICAgaWYgKGlzPEhUTUxTZWxlY3RFbGVt
ZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGlzPEhUTUxUZXh0QXJl
YUVsZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgcmV0dXJuICFkb3duY2FzdDxIVE1MVGV4dEFyZWFF
bGVtZW50Pigqbm9kZSkuaXNSZWFkT25seU5vZGUoKTsKLSAgICBpZiAoaXM8SFRNTElucHV0RWxl
bWVudD4oKm5vZGUpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSk7Ci0gICAgICAgIHJldHVybiAhZWxlbWVudC5p
c1JlYWRPbmx5Tm9kZSgpICYmIChlbGVtZW50LmlzVGV4dEZpZWxkKCkgfHwgZWxlbWVudC5pc0Rh
dGVGaWVsZCgpIHx8IGVsZW1lbnQuaXNEYXRlVGltZUxvY2FsRmllbGQoKSB8fCBlbGVtZW50Lmlz
TW9udGhGaWVsZCgpIHx8IGVsZW1lbnQuaXNUaW1lRmllbGQoKSk7CisgICAgaWYgKGlzPEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+KG5vZGUpKQorICAgICAgICByZXR1cm4gIWRvd25jYXN0PEhUTUxUZXh0
QXJlYUVsZW1lbnQ+KG5vZGUpLmlzUmVhZE9ubHlOb2RlKCk7CisgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KG5vZGUpKSB7CisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0RWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpOworICAgICAgICAvLyBGSVhNRTog
VGhpcyBsYXVuZHJ5IGxpc3Qgb2YgdHlwZXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gZmFjdG9yIHRo
aXMuIE5lZWQgYSBzdWl0YWJsZSBmdW5jdGlvbiBvbiBIVE1MSW5wdXRFbGVtZW50IGl0c2VsZi4K
KyAgICAgICAgcmV0dXJuICFpbnB1dEVsZW1lbnQuaXNSZWFkT25seU5vZGUoKSAmJiAoaW5wdXRF
bGVtZW50LmlzVGV4dEZpZWxkKCkgfHwgaW5wdXRFbGVtZW50LmlzRGF0ZUZpZWxkKCkgfHwgaW5w
dXRFbGVtZW50LmlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkgfHwgaW5wdXRFbGVtZW50LmlzTW9udGhG
aWVsZCgpIHx8IGlucHV0RWxlbWVudC5pc1RpbWVGaWVsZCgpKTsKICAgICB9Ci0KLSAgICByZXR1
cm4gbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKTsKKyAgICByZXR1cm4gbm9kZS5pc0NvbnRlbnRF
ZGl0YWJsZSgpOwogfQogCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIG5leHRGb2N1c2FibGVFbGVt
ZW50KE5vZGUqIHN0YXJ0Tm9kZSwgUGFnZSogcGFnZSwgYm9vbCBpc0ZvcndhcmQpCitzdGF0aWMg
aW5saW5lIEVsZW1lbnQqIG5leHRBc3Npc3RhYmxlRWxlbWVudChOb2RlKiBzdGFydE5vZGUsIFBh
Z2UmIHBhZ2UsIGJvb2wgaXNGb3J3YXJkKQogeworICAgIGlmICghaXM8RWxlbWVudD4oc3RhcnRO
b2RlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBSZWZQdHI8S2V5Ym9hcmRFdmVu
dD4ga2V5ID0gS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKCk7CiAKICAgICBFbGVtZW50KiBuZXh0RWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KHN0YXJ0Tm9kZSk7CiAgICAgZG8gewotICAgICAgICBu
ZXh0RWxlbWVudCA9IGlzRm9yd2FyZCA/IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLm5leHRGb2N1
c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9m
KCZuZXh0RWxlbWVudC0+ZG9jdW1lbnQoKSksIG5leHRFbGVtZW50LCBrZXkuZ2V0KCkpCi0gICAg
ICAgICAgICA6IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnByZXZpb3VzRm9jdXNhYmxlRWxlbWVu
dChGb2N1c05hdmlnYXRpb25TY29wZTo6Zm9jdXNOYXZpZ2F0aW9uU2NvcGVPZigmbmV4dEVsZW1l
bnQtPmRvY3VtZW50KCkpLCBuZXh0RWxlbWVudCwga2V5LmdldCgpKTsKLSAgICB9IHdoaWxlIChu
ZXh0RWxlbWVudCAmJiAhaXNBc3Npc3RhYmxlTm9kZShuZXh0RWxlbWVudCkpOworICAgICAgICBu
ZXh0RWxlbWVudCA9IGlzRm9yd2FyZAorICAgICAgICAgICAgPyBwYWdlLmZvY3VzQ29udHJvbGxl
cigpLm5leHRGb2N1c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmln
YXRpb25TY29wZU9mKCZuZXh0RWxlbWVudC0+ZG9jdW1lbnQoKSksIG5leHRFbGVtZW50LCBrZXku
Z2V0KCkpCisgICAgICAgICAgICA6IHBhZ2UuZm9jdXNDb250cm9sbGVyKCkucHJldmlvdXNGb2N1
c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9m
KCZuZXh0RWxlbWVudC0+ZG9jdW1lbnQoKSksIG5leHRFbGVtZW50LCBrZXkuZ2V0KCkpOworICAg
IH0gd2hpbGUgKG5leHRFbGVtZW50ICYmICFpc0Fzc2lzdGFibGVFbGVtZW50KCpuZXh0RWxlbWVu
dCkpOwogCiAgICAgcmV0dXJuIG5leHRFbGVtZW50OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wg
aGFzRm9jdXNhYmxlRWxlbWVudChOb2RlKiBzdGFydE5vZGUsIFBhZ2UqIHBhZ2UsIGJvb2wgaXNG
b3J3YXJkKQorc3RhdGljIGlubGluZSBib29sIGhhc0Fzc2lzdGFibGVFbGVtZW50KE5vZGUqIHN0
YXJ0Tm9kZSwgUGFnZSYgcGFnZSwgYm9vbCBpc0ZvcndhcmQpCiB7Ci0gICAgcmV0dXJuIG5leHRG
b2N1c2FibGVFbGVtZW50KHN0YXJ0Tm9kZSwgcGFnZSwgaXNGb3J3YXJkKSAhPSBuaWw7CisgICAg
cmV0dXJuIG5leHRBc3Npc3RhYmxlRWxlbWVudChzdGFydE5vZGUsIHBhZ2UsIGlzRm9yd2FyZCk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJk
KQogewotICAgIEVsZW1lbnQqIG5leHRFbGVtZW50ID0gbmV4dEZvY3VzYWJsZUVsZW1lbnQobV9h
c3Npc3RlZE5vZGUuZ2V0KCksIG1fcGFnZS5nZXQoKSwgaXNGb3J3YXJkKTsKKyAgICBFbGVtZW50
KiBuZXh0RWxlbWVudCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQo
KSwgKm1fcGFnZSwgaXNGb3J3YXJkKTsKICAgICBtX3VzZXJJc0ludGVyYWN0aW5nID0gdHJ1ZTsK
ICAgICBpZiAobmV4dEVsZW1lbnQpCiAgICAgICAgIG5leHRFbGVtZW50LT5mb2N1cygpOwpAQCAt
MjA1Niw4ICsyMDYwLDggQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bihBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24pCiAgICAgaW5mb3JtYXRpb24u
bWluaW11bVNjYWxlRmFjdG9yID0gbWluaW11bVBhZ2VTY2FsZUZhY3RvcigpOwogICAgIGluZm9y
bWF0aW9uLm1heGltdW1TY2FsZUZhY3RvciA9IG1heGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKICAg
ICBpbmZvcm1hdGlvbi5hbGxvd3NVc2VyU2NhbGluZyA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9u
LmFsbG93c1VzZXJTY2FsaW5nKCk7Ci0gICAgaW5mb3JtYXRpb24uaGFzTmV4dE5vZGUgPSBoYXNG
b2N1c2FibGVFbGVtZW50KG1fYXNzaXN0ZWROb2RlLmdldCgpLCBtX3BhZ2UuZ2V0KCksIHRydWUp
OwotICAgIGluZm9ybWF0aW9uLmhhc1ByZXZpb3VzTm9kZSA9IGhhc0ZvY3VzYWJsZUVsZW1lbnQo
bV9hc3Npc3RlZE5vZGUuZ2V0KCksIG1fcGFnZS5nZXQoKSwgZmFsc2UpOworICAgIGluZm9ybWF0
aW9uLmhhc05leHROb2RlID0gaGFzQXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0
KCksICptX3BhZ2UsIHRydWUpOworICAgIGluZm9ybWF0aW9uLmhhc1ByZXZpb3VzTm9kZSA9IGhh
c0Fzc2lzdGFibGVFbGVtZW50KG1fYXNzaXN0ZWROb2RlLmdldCgpLCAqbV9wYWdlLCBmYWxzZSk7
CiAKICAgICBpZiAoaXM8SFRNTFNlbGVjdEVsZW1lbnQ+KCptX2Fzc2lzdGVkTm9kZSkpIHsKICAg
ICAgICAgSFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MU2VsZWN0RWxl
bWVudD4oKm1fYXNzaXN0ZWROb2RlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240679</attachid>
            <date>2014-10-30 09:43:09 -0700</date>
            <delta_ts>2014-10-30 19:31:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138174-20141030094317.patch</filename>
            <type>text/plain</type>
            <size>111873</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIzOGUzYzRjZmJjZjE0
Y2RiODc2ZTYxM2RmYjc3M2JmZjE4NjBkMC4uNjEwYTFlZjVlMjVjMjNmMThlNTcxMDQ0ODc5MDhj
ZmNmZDJlYjY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNSBAQAorMjAxNC0xMC0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRWxpbWluYXRlIFJlc291cmNl
QnVmZmVyIGFuZCB1c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODE3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCB3aXRoIHRl
c3QgY292ZXJhZ2UgYWNyb3NzIG1hbnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogRGVsZXRlZCBSZXNvdXJjZUJ1ZmZlci5jcHAuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjogUmVtb3ZlZCBSZXNvdXJjZUJ1ZmZlci1yZWxhdGVkIHN5bWJvbHMsIGFuZCB1
cGRhdGVkIHN5bWJvbAorICAgICAgICBmb3Igb25lIGZ1bmN0aW9uIHRoYXQgdXNlZCB0byB0YWtl
IGEgUGFzc1JlZlB0ciBidXQgbm93IHRha2VzIGEgcmVmZXJlbmNlIGluc3RlYWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBEZWxldGVkIFJlc291cmNlQnVm
ZmVyLmNwcC8uaC4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnM6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGVsZXRlZCBSZXNvdXJjZUJ1ZmZlci5tbS8uY3BwLy5oLgorCisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOiBVc2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5Lgor
ICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRv
UGFzdGVib2FyZCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcpOiBV
c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5LCBhbmQKKyAgICAgICAgYWxzbyBwYXNzIGEgcmVmZXJl
bmNlIG9ubHkgaWYgbm9uLW51bGwgcmF0aGVyIHRoYW4gcGFzc2luZyBhIHBvaW50ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOiBEaXR0by4gQWRk
ZWQgYSBtaXNzaW5nIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VDb250ZW50KTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6IERpdHRv
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxM
b2FkaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEpOiBVc2Ug
U2hhcmVkQnVmZmVyIGRpcmVjdGx5LAorICAgICAgICBhbmQgdXNlIHRoZSBjb3B5IGZ1bmN0aW9u
IHJhdGhlciB0aGFuIGEgaGFuZC13cml0dGVuIGFsdGVybmF0aXZlLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dCk6IERpdHRvLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6IENoYW5nZWQg
bWFpblJlc291cmNlRGF0YSB0byByZXR1cm4gYQorICAgICAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4uIFdvdWxkIGJlIGJldHRlciBpZiBpdCByZXR1cm5lZCBhIFNoYXJlZEJ1ZmZlciYsCisg
ICAgICAgIGJ1dCBpdCBjdXJyZW50bHkgcmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgYnVmZmVyIHdo
ZW4gdGhlcmUgaXMgc3Vic3RpdHV0ZQorICAgICAgICBkYXRhIGFuZCBjYW4gYWxzbyByZXR1cm4g
bnVsbCwgZXZlbiB0aG91Z2ggbWFueSBjYWxsZXJzIGFzc3VtZSBpdCB3aWxsIG5vdCEKKworICAg
ICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6IFJlbW92ZWQgY2FsbCB0byB1bnVz
ZWQgY2xpZW50CisgICAgICAgIGZ1bmN0aW9uIGJ1ZmZlclJlY2VpdmVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOiBSZW1vdmVkIHVudXNl
ZCBidWZmZXIKKyAgICAgICAgYXJndW1lbnQgdG8gY2xpZW50IGZ1bmN0aW9uIGxvYWRGaW5pc2hl
ZC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlQnVmZmVyLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcik6IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEpOiBVc2UgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBVc2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOiBEaXR0by4K
KworICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YSk6IFVzZSBTaGFyZWRCdWZmZXIu
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9hZGluZ01h
aW5SZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6IERpdHRv
LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6IERpdHRvLgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjpkaWRBZGRDbGllbnQpOiBVc2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmRpZFJlbW92ZUNsaWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcik6IERpdHRvLiBDaGFuZ2Vk
IHRvIHRha2UKKyAgICAgICAgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmFkZERhdGFCdWZmZXIpOiBEaXR0by4gQWxzbyBh
ZGRlZCBjYWxsIHRocm91Z2gKKyAgICAgICAgdG8gYmFzZSBjbGFzcyBhbmQgY2hhbmdlZCB0byB0
YWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjphZGREYXRhKTogRGl0dG8uIEFsc28gYWRkZWQgY2FsbCB0aHJvdWdoIHRv
IGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGlu
Zyk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOiBEaXR0by4g
QWxzbyBjaGFuZ2VkIHRoZSB0eXBlIG9mIHNvbWUgYml0IGZpZWxkcworICAgICAgICB0byBiZSB1
bnNpZ25lZCBpbnN0ZWFkIG9mIHVuc2lnZW5kIGNoYXIuCisKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKTogVXNlIFNoYXJlZEJ1ZmZlci4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjphZGREYXRhQnVmZmVyKTogRGl0
dG8uIENoYW5nZWQgdG8gdGFrZQorICAgICAgICBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBv
aW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYW5SZXVzZSk6
IERpdHRvLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOiBEaXR0
by4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UpOiBSZW9yZGVyZWQgZGF0
YSBtZW1iZXJzIGR1ZSB0byBjaGFuZ2UKKyAgICAgICAgaW4gaGVhZGVyLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZmZXIpOiBDaGFuZ2VkIGFyZ3VtZW50IHR5
cGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6IFJl
ZmFjdG9yZWQgdG8gZWxpbWluYXRlIG9uZSBleHRyYSBoYXNoCisgICAgICAgIHRhYmxlIGxvb2t1
cCBieSB1c2luZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlbW92ZSBmdW5jdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6IFVzZSBzdGQ6
Om1ha2VfdW5pcXVlIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgb2YgdXNpbmcgYSBmdW5jdGlv
biBuYW1lZCAic2NoZWR1bGUiIHRvIGFsbG9jYXRlIHRoZSBjYWxsYmFjayBvYmplY3QuCisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OkNhbGxiYWNrKTogQ2hhbmdl
ZCBmdW5jdGlvbiBhbmQgZGF0YSBtZW1iZXIKKyAgICAgICAgbmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6Y2FuY2VsKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEpOiBD
aGFuZ2VkIHRvIHRha2UgYSBTaGFyZWRCdWZmZXImLgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmg6IENoYW5nZWQgdHlwZXMgdG8gdXNlIFNoYXJlZEJ1ZmZlci4gQWxz
byBtYWRlIG1vc3QKKyAgICAgICAgZGF0YSBtZW1iZXJzIGFuZCBvbmUgZnVuY3Rpb24gbWVtYmVy
IHByaXZhdGUgaW5zdGVhZCBvZiBwcm90ZWN0ZWQuIEFsc28gcmVuYW1lZCB0aGUKKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2sgZnVuY3Rpb24gQ2FjaGVkUmVz
b3VyY2U6OkNhbGxiYWNrIGFuZCBtb3ZlZAorICAgICAgICBpdHMgZGVmaW5pdGlvbiBvdXQgb2Yg
dGhlIENhY2hlZFJlc291cmNlIGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgor
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKTogVXNlIFNoYXJlZEJ1
ZmZlci4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOiBEaXR0
by4gTWFkZSBkYXRhIG1lbWJlcnMgcHJpdmF0ZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0Lmg6IERpdHRvLiBBbHNvIGZpeGVkIGluZGVudGluZyBhbmQgcmVtb3ZlZCB1bm5lZWRl
ZAorICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9uLgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OnVwZGF0ZURhdGEpOiBBZGRlZCwgc28gdGhhdCBmaW5pc2hMb2FkaW5nIGRvZXMgbm90CisgICAg
ICAgIGNhbGwgYWRkRGF0YUJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFj
azo6YWRkRGF0YUJ1ZmZlcik6IFRha2UgU2hhcmVkQnVmZmVyLCBjYWxsIHVwZGF0ZURhdGEuCisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOiBEaXR0by4K
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6IFRha2Ugb3V0IHVubmVl
ZGVkIGV4cGxpY2l0IG92ZXJyaWRlIG9mIHRoZQorICAgICAgICBkZXN0cnVjdG9yLiBVcGRhdGVk
IGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyk6IFVwZGF0ZWQgdG8gdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOiBUb29rIG91dCB1bm5lZWRlZCBpbmNsdWRl
cywgbWFkZSBldmVyeXRoaW5nCisgICAgICAgIHByaXZhdGUgcmF0aGVyIHRoYW4gcHJvdGVjdGVk
LiBBZGRlZCBhbiBleHBsaWNpdCB2aXJ0dWFsIGNvbnN0cnVjdG9yIHNvIHdlIGNhbgorICAgICAg
ICBjb21waWxlIHdpdGhvdXQga25vd2luZyBob3cgdG8gcmVmL2RlcmVmIFRleHRSZXNvdXJjZURl
Y29kZXIuCisKKyAgICAgICAgKiBsb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6
IFVwZGF0ZWQgdG8gdXNlIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgdG8gY2FsbCBhZGREYXRh
QnVmZmVyIG9ubHkgaWYgdGhlcmUgaXMgYSBuZXcgZGF0YSBidWZmZXIuCisKKyAgICAgICAgKiBs
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6IFVzZSBTaGFyZWRCdWZmZXImIGlu
c3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6RGlza0Nh
Y2hlTW9uaXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKTogVXNlIFNoYXJlZEJ1ZmZlciogaW5zdGVhZCBvZgorICAgICAgICBSZWZQdHI8UmVz
b3VyY2VCdWZmZXI+LgorCisgICAgICAgICogbG9hZGVyL21hYy9SZXNvdXJjZUJ1ZmZlci5tbTog
UmVtb3ZlZC4KKworICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6IFVz
ZSBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjbGVhcik6IFVzZSBhIG1vZGVybiBmb3Ig
bG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSk6IFJldHVybiBhIFBh
c3NSZWYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIsIHNpbmNlCisgICAgICAgIHRoaXMgbmV2ZXIg
cmV0dXJucyBudWxsLiBVc2UgbW9kZXJuIGZvciBsb29wcy4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKTogVXNlIGEgbW9kZXJuIGZvciBsb29wLgor
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6IENoYW5nZWQgY29weSB0byByZXR1
cm4gUGFzc1JlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisgICAgICAgIENoYW5nZWQgdHJ5UmVw
bGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyIHRvIHRha2UgYSByZWZlcmVuY2UgcmF0aGVy
IHRoYW4KKyAgICAgICAgYSBwb2ludGVyLgorCisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlSZXBsYWNl
Q29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIpOiBUYWtlIGEgcmVmZXJlbmNlCisgICAgICAgIGlu
c3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmg6IFJlbW92ZWQgdW51c2VkIGZ1bmN0aW9uCisgICAgICAg
IGJ1ZmZlclJlY2VpdmVkIGFuZCB1bm5lZWRlZCBidWZmZXIgYXJndW1lbnQgZnJvbSBsb2FkRmlu
aXNoZWQuIEFsc28gbWFya2VkIHRoZQorICAgICAgICBjb25zdHJ1Y3RvciBleHBsaWNpdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgUmVtb3ZlZCBpbmNsdWRlIG9mIFJlc291cmNlQnVm
ZmVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZSk6IFVzZQorICAgICAgICBT
aGFyZWRCdWZmZXIgZGlyZWN0bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmluaXNoZWQpOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8K
KyAgICAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50LgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06IFJlbW92ZWQgaW5jbHVkZSBvZiBSZXNvdXJj
ZUJ1ZmZlci5oLgorCisgICAgICAgICogcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNw
cDogUmVtb3ZlZCB1bnVzZWQsIHVubmVlZGVkCisgICAgICAgIHRyeVJlcGxhY2VDb250ZW50c1dp
dGhQbGF0Zm9ybUJ1ZmZlciBmdW5jdGlvbi4KKwogMjAxNC0xMC0yNCAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gVmlkZW8gcmVz
b2x1dGlvbiBjaGFuZ2VzIHRyaWdnZXIgYSBjcmFzaCBpbiB0aGUgVGV4dHVyZU1hcHBlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBhZjM0NzAxMWIxMTJmMjBlMmQ1MWNjN2M0MDczZDU1NjgyMGQ3
NWNmLi4xYjEyODc4YWU5NmI3NGMwNDFjYThmZjYwNDVjOTA3MzcyOGQxN2MyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTgxNiw3ICsxODE2LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IGxvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAKICAgICBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAK
ICAgICBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAotICAgIGxvYWRlci9SZXNvdXJjZUJ1ZmZl
ci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCiAgICAgbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IDM3ZGJhZGFjOGFlNTUxYTlkZTAxZTdhZGQwZDYxZmViMWJm
NzMzZGMuLjRiZDk0YzBhNGI2OTRhZjRjNDY5NDk1ZTI5ZGNiN2Y2OTMxMWE4MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC0zNDAsNyArMzQwLDcgQEAgX19aTjdXZWJDb3JlMTNwb2ludGVyQ3Vy
c29yRXYKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRvd0VOM0pTQzdKU1ZhbHVlRQogX19aTjdX
ZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTEycmVtb3ZlQ2xpZW50RVBOU18yMENhY2hlZFJlc291cmNl
Q2xpZW50RQogX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTE2dW5yZWdpc3RlckhhbmRsZUVQ
TlNfMjRDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2VFCi1fX1pON1dlYkNvcmUxNENhY2hlZFJlc291
cmNlMjF0cnlSZXBsYWNlRW5jb2RlZERhdGFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRC
dWZmZXJFRUUKK19fWk43V2ViQ29yZTE0Q2FjaGVkUmVzb3VyY2UyMXRyeVJlcGxhY2VFbmNvZGVk
RGF0YUVSTlNfMTJTaGFyZWRCdWZmZXJFCiBfX1pON1dlYkNvcmUxNENhY2hlZFJlc291cmNlOWFk
ZENsaWVudEVQTlNfMjBDYWNoZWRSZXNvdXJjZUNsaWVudEUKIF9fWk43V2ViQ29yZTE0Q2xpZW50
UmVjdExpc3RDMUVSS04zV1RGNlZlY3RvcklOU185RmxvYXRRdWFkRUxtMEVOUzFfMTVDcmFzaE9u
T3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUV2CkBAIC0zODMsMTMg
KzM4Myw2IEBAIF9fWk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3Ry
eUV2CiBfX1pON1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJF
dgogX19aTjdXZWJDb3JlMTRMb2FkZXJTdHJhdGVneTI1bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eUVQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVtUktOU18xNVJlc291cmNlUmVxdWVzdEVOU18xN1N0
b3JlZENyZWRlbnRpYWxzRU5TXzIyQ2xpZW50Q3JlZGVudGlhbFBvbGljeUVSTlNfMTNSZXNvdXJj
ZUVycm9yRVJOU18xNlJlc291cmNlUmVzcG9uc2VFUk4zV1RGNlZlY3RvckljTG0wRU5TQ18xNUNy
YXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEycGx1Z2luV2lk
Z2V0RXYKLV9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXIxMmNyZWF0ZU5TRGF0YUV2Ci1fX1pO
N1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNmFwcGVuZEVQS2NqCi1fX1pON1dlYkNvcmUxNFJlc291
cmNlQnVmZmVyQzFFUEtjagotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckMxRXYKLV9fWk43
V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJDMkV2Ci1fX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVy
RDFFdgotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckQyRXYKIF9fWk43V2ViQ29yZTE0UmVz
b3VyY2VIYW5kbGUxMmZpcnN0UmVxdWVzdEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxl
MTZzZXREZWZlcnNMb2FkaW5nRWIKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyMGZvcmNl
Q29udGVudFNuaWZmaW5nRXYKQEAgLTE3MjUsOSArMTcxOCw2IEBAIF9fWk5LN1dlYkNvcmUxNEZy
YW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJOM1dURjZWZWN0
b3JJTlNfCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVu
dE9yRG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0
aXZlRXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXh0RXYKLV9fWk5L
N1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFFdgotX19aTks3V2ViQ29yZTE0UmVzb3VyY2VC
dWZmZXI0c2l6ZUV2Ci1fX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjdpc0VtcHR5RXYKIF9f
Wk5LN1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTBjb25uZWN0aW9uRXYKIF9fWk5LN1dlYkNvcmUx
NFJlc291cmNlTG9hZGVyMTFmcmFtZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUxv
YWRlcjMyaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHNFdgpAQCAtMjc5OCw3ICsyNzg4
LDYgQEAgX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24yOXJhbmdlQnlNb3ZpbmdDdXJyZW50
U2VsZWN0aW9uRWkKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzJyYW5nZUJ5RXh0ZW5k
aW5nQ3VycmVudFNlbGVjdGlvbkVpCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM1Y2hh
cmFjdGVySW5SZWxhdGlvblRvQ2FyZXRTZWxlY3Rpb25FaQogX19aTks3V2ViQ29yZTE0RnJhbWVT
ZWxlY3Rpb24zNmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlvbkV2Ci1fX1pOSzdX
ZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjEyc2hhcmVkQnVmZmVyRXYKIF9fWk5LN1dlYkNvcmUxNFNl
Y3VyaXR5T3JpZ2luOHRvU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTIx
Y29udGVudHNMYXllckZvck1lZGlhRXYKIF9fWk5LN1dlYkNvcmUxNVZpc2libGVQb3NpdGlvbjRs
ZWZ0RWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
CmluZGV4IDgyMzM2NjRhMGI1OWE2OGE0OTgxNGJiYjUxOWJkZWExYmJiODZhN2QuLmRiYzE2ZGQw
NDM0YjMyMzIyMDE4ZTc1MzFhZmQwN2Q5YzQyNGI2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzI1MSw3ICs3MjUxLDYgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxQb2xpY3lDYWxsYmFjay5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2tlci5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcUHJvZ3Jlc3NUcmFja2VyLmNwcCIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUJ1ZmZlci5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2FkZXIuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNmXFJlc291cmNlTG9hZGVyQ0ZO
ZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlTG9h
ZE5vdGlmaWVyLmNwcCIgLz4KQEAgLTE5MjU0LDcgKzE5MjUzLDYgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGxvYWRlclxQb2xpY3lDaGVja2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxsb2FkZXJcUHJvZ3Jlc3NUcmFja2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxsb2FkZXJcUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgiIC8+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcUmVzb3VyY2VCdWZmZXIuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlTG9hZGVyT3B0aW9ucy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlTG9hZE5vdGlmaWVyLmgiIC8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMKaW5kZXggMzIyYjcwYzZlZmRlZDhiM2E5ZDFhZTBhMzExZDQwMGEwMWVlYmYwYS4u
YzVmNjliZTZlMDI4YTQ0YzAzYzkxMDlkOThhMDQzMDZmNDY2MDUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpA
QCAtOTI3LDkgKzkyNyw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcUHJv
Z3Jlc3NUcmFja2VyLmNwcCI+CiAgICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlQnVm
ZmVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlTG9hZGVyLmNwcCI+
CiAgICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzk1
MCw5ICs3OTQ3LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxQcm9ncmVz
c1RyYWNrZXJDbGllbnQuaCI+CiAgICAgICA8RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlQnVm
ZmVyLmgiPgotICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRlci5oIj4KICAg
ICAgIDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTI5Yjlj
MzBjOTNiZmM4NDhlNGYzOGRhNmI3OWRkZDI2Nzk2ZjI5Ni4uOTY4ODVhNjZlZDg4YWUzMzE3ZGYz
OTFhYzBjYzZjMTI1NGFlZTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg2OCw5ICsxODY4LDYgQEAKIAkJNTE0MDVDODkx
OTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MDVDODcxOTBCMDE0NDAwNzU0Rjk0
IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lz
dGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRC
M0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEIzRjc2MEM3MjIwNTUwMDA1MzBERiAv
KiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi87
IH07Ci0JCTUxNEJDODNGMTYxQ0YwNEEwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJDODNEMTYxQ0Yw
NDMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSAqLzsgfTsKLQkJNTE0QkM4NDIxNjFDRjA1
QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJDODQwMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJj
ZUJ1ZmZlci5jcHAgKi87IH07Ci0JCTUxNEJDODQzMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJj
ZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0QkM4NDExNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2MzcwQ0U5MjI1RTAw
N0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0Qzc2MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMRXJyb3IuY3Bw
ICovOyB9OwogCQk1MTRDNzYzODBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzYz
NjBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgKi87IH07CiAJCTUxNEM3
NjRDMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NE
IC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTg5NzksOSArODk3Niw2IEBACiAJCTUxNDA1Qzg3MTkwQjAxNDQw
MDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTRCQzgzRDE2MUNGMDQzMDA0RDUy
RjQgLyogUmVzb3VyY2VCdWZmZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBSZXNvdXJjZUJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTE0QkM4NDAxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVmZmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QkM4NDExNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNl
QnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjM1MENFOTIyNUUwMDdFRjND
RCAvKiBKU1NRTEVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU1FMRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzYzNjBD
RTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NRTFRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NDIwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9u
TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzYyOCw3ICsxNzYyMiw2IEBACiAJ
CQkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLywK
IAkJCQk2NTZEMzcxQTBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMuaCAqLywK
IAkJCQk2NTZEMzcxQjBBREJBNURFMDBBNDU1NEQgLyogTG9hZGVyTlNVUkxFeHRyYXMubW0gKi8s
Ci0JCQkJNTE0QkM4M0QxNjFDRjA0MzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1tICovLAog
CQkJCTUxQUEzRjZFMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1hYy5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMjEyOTYsOCArMjEyODksNiBAQAogCQkJCTFBMkE2
ODIxMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuY3BwICovLAogCQkJCTFBMkE2
ODIyMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCAqLywKIAkJCQkxQUNBREQ3
ODE4ODBEOTFDMDBEOEI3MUQgLyogUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggKi8sCi0JCQkJNTE0
QkM4NDAxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCAqLywKLQkJCQk1MTRC
Qzg0MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCAqLywKIAkJCQk5M0UyMjdE
RTBBRjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzI3
MEFEQkE1REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCUQwQTNBNzMwMTQw
NUEzOTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCAqLywKQEAgLTI1ODYwLDcg
KzI1ODUxLDYgQEAKIAkJCQk5OUNDMEI1QzE4QkU5ODRBMDA2Q0VCQ0MgLyogUmVwbGF5U2Vzc2lv
blNlZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThBRUM2MTNGOUQwRUEwMDkwQjFBQSAv
KiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1
QjNERDAxMjUxRjEyRDAwM0VGMjY5IC8qIFJlc2V0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTRCQzg0MzE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdFRTY4NDZBMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VF
cnJvckJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3Njc5MENFOTIzQTEwMDdFRjNDRCAv
KiBSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTMyOCw4ICsyOTMxOCw2IEBA
CiAJCQkJOTlDQzBCNTkxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheVNlc3Npb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTlDQzBCNUIxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheVNlc3Npb25T
ZWdtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzRENGMTI1MUYxMkQwMDNFRjI2OSAv
KiBSZXNldElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTRCQzg0MjE2MUNGMDVD
MDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE0QkM4
M0YxNjFDRjA0QTAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM0RjcxM0UwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdFRTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9y
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VGM0NEIC8qIFJl
c291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggYjhkOTMzMDVhOTczMjM1
Y2NhNzMwNzA1ZWUzYjRmNDNkNWQ0OTFiNC4uMjAxYzI1OWM4Mzk2YjY1NGZmM2Y2ZWE0MmMxNWRk
NDQ3MTJjZTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01V
SUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01V
SUtpdEV4dGVuc2lvbnMubW0KQEAgLTYyLDcgKzYyLDYgQEAKICNpbXBvcnQgIlJlbmRlck9iamVj
dC5oIgogI2ltcG9ydCAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbXBvcnQgIlJlbmRlclRl
eHQuaCIKLSNpbXBvcnQgIlJlc291cmNlQnVmZmVyLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIu
aCIKICNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCAiVmlzaWJsZVVuaXRzLmgi
CkBAIC00NjQsMjMgKzQ2MywxNSBAQCBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEltYWdlRWxlbWVu
dCAoV2ViRE9NSFRNTEltYWdlRWxlbWVudE9wZXJhdGlvbnNQcml2YXRlKQogCiAtIChOU0RhdGEg
KilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiB7Ci0gICAgV2ViQ29yZTo6
Q2FjaGVkSW1hZ2UgKmNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2UoKTsKKyAg
ICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJ
bWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
V2ViQ29yZTo6SW1hZ2UgKmltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgV2ViQ29y
ZTo6SW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIgKmRhdGEgPSBu
aWw7Ci0gICAgaWYgKHJhd0ltYWdlRGF0YSkgewotICAgICAgICBSZXNvdXJjZUJ1ZmZlciAqcmVz
b3VyY2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKLSAgICAgICAgaWYg
KHJlc291cmNlQnVmZmVyKQotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlQnVmZmVyLT5zaGFy
ZWRCdWZmZXIoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkYXRhID0gaW1hZ2UtPmRhdGEoKTsK
LSAgICB9CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8g
Y2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KaW5kZXggMDE5MmQ1ZTkwMTFhMjAyNWU1N2M2YzBjNGVkMzFhMDg2YTFlZGIyMy4uYjll
Yjk2YzZkN2I3YmU2MDVmNjE0MWIyMzgxOTYxMDdjNjE1YTVhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIlBhc3Rl
Ym9hcmQuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdl
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5o
IgpAQCAtMzg1LDcgKzM4NCw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJk
KFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAgICAgcGFzdGVi
b2FyZEltYWdlLnVybC51cmwgPSBpbWFnZUVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaW1hZ2VFbGVtZW50LmltYWdlU291cmNl
VVJMKCkpKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxlID0gdGl0bGU7CiAgICAgcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJkLnJlc291cmNlTUlNRVR5
cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7Ci0gICAgcGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRC
dWZmZXIoKTsKKyAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCk7CiAKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFn
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNmU0MTkw
ZjliNjUzYzQyYmZlMTkyMmUxMzIyODA5ZThjNDFhYmFiYy4uMjkyNzZmYTA0NGUwNjIxM2EwZmIw
M2M3YWJiYjNkYzNhMmU3NzcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtNTIsNyArNTIsNiBAQAogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRl
ckJsb2NrLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgotI2ltcG9ydCAiUmVzb3VyY2VCdWZm
ZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2ltcG9ydCAiU291
bmQuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgpAQCAtNDQ3LDcgKzQ0Niw3IEBAIHZv
aWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQs
IEVsZW1lbnQmIGltYWdlRWxlbWVuCiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51cmwgPSB1cmw7
CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwogICAgIHBhc3RlYm9hcmRJ
bWFnZS51cmwudXNlclZpc2libGVGb3JtID0gY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKHBh
c3RlYm9hcmRJbWFnZS51cmwudXJsKTsKLSAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
ID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpOworICAgIHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSA9IGNhY2hlZEltYWdlLT5y
ZXNwb25zZSgpLm1pbWVUeXBlKCk7CiAKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJ
bWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCAxNzllYzEwODE2
NWZhM2JhMWE1MWNhMzFhYzVkZjZkZjZkZGRjMGRiLi40MGE3YjU3MjA4NzFkYWRjZTk4ZDliNTM2
MjFhZGVkYzYwZTAxNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAg
LTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmF3RGF0YURvY3Vt
ZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgotI2luY2x1ZGUgIlJlc291
cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTM0LDcgKzEzMyw4IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFy
c2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRT
dHJ1Y3R1cmUoKTsKIAotICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5hZGREYXRh
QnVmZmVyKGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkuZ2V0KCkpOworICAgIGlmIChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQor
ICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+YWRkRGF0YUJ1ZmZlcigqYnVm
ZmVyKTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwogfQpAQCAtMTQzLDExICsxNDMsMTEgQEAgdm9p
ZCBJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIGlmICghcGFyc2VyKCkt
PmlzU3RvcHBlZCgpICYmIG1faW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIENhY2hlZEltYWdlJiBj
YWNoZWRJbWFnZSA9ICptX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKLSAgICAgICAgUmVm
UHRyPFJlc291cmNlQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFr
ZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAg
ICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgotICAgICAgICBp
ZiAobG9hZGVyKCktPmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSkKKyAgICAgICAgaWYgKGRh
dGEgJiYgbG9hZGVyKCktPmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSkKICAgICAgICAgICAg
IGRhdGEgPSBkYXRhLT5jb3B5KCk7CiAKICAgICAgICAgY2FjaGVkSW1hZ2UuZmluaXNoTG9hZGlu
ZyhkYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggNzgyODI2ZGM3ZDk5MDhjZjRkOTc1N2M2YTg2ZTc2YjNiZDAwODlk
My4uZjliMmIyMTNmYTQwZWZiNWU0YjM3ZDcxZTkzZTg1MzZmMTI5ZjY2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTYyLDcgKzYy
LDYgQEAKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC0xNDMsMTEgKzE0Miw5IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
LCBTCiAKICAgICAqYmFzZTY0RW5jb2RlZCA9ICFoYXNUZXh0Q29udGVudChjYWNoZWRSZXNvdXJj
ZSk7CiAgICAgaWYgKCpiYXNlNjRFbmNvZGVkKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGhhc1plcm9TaXplID8gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSA6IGNhY2hl
ZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKTsKLQorICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYXNaZXJvU2l6ZSA/IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkgOiBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgKnJlc3VsdCA9
IGJhc2U2NEVuY29kZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjYsNyArMTYzLDcgQEAgYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UsIFMKICAgICAgICAgICAgICpyZXN1bHQgPSBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KCpjYWNo
ZWRSZXNvdXJjZSkuc2NyaXB0KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6IHsKLSAgICAgICAgICAgIFJlc291cmNl
QnVmZmVyKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAg
ICAgICAgIGF1dG8qIGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwog
ICAgICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBjcmVhdGVY
SFJUZXh0RGVjb2RlcihjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBjYWNo
ZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwpAQCAtMTc3LDcgKzE3
NCw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUmVzb3VyY2VCdWZmZXIq
IGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICAgICAg
YXV0byogYnVmZmVyID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAg
ICAgICByZXR1cm4gZGVjb2RlQnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2Rpbmco
KSwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE4NiwxMiArMTgzLDEwIEBAIGJvb2wg
SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlLCBTCiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3Vy
Y2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCkKIHsKLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lID0gZnJhbWUtPmRvY3VtZW50KCktPmlucHV0
RW5jb2RpbmcoKTsKLQotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRh
Q29udGVudChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5pbnB1dEVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIC8vIHN0
YXRpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCmluZGV4IDFjNTdhNGY1N2VmOTU5OTExNjFlZmFmYTA4ZDA0N2YwNzc4OTUyZDUu
LjQ4MWIyYmFkNDE5MmE0NTFiZjRkODIyMDAyMTMyZmMwNDM5YzZlNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTU0
LDcgKzU0LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNpbmNsdWRlICJSZXNvdXJj
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtNDA1LDggKzQwNCw5
IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAgICAgaWYgKG1fcmVzb3Vy
Y2VzRGF0YS0+cmVzb3VyY2VUeXBlKHJlcXVlc3RJZCkgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpE
b2N1bWVudFJlc291cmNlKSB7Ci0gICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVy
ID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCk7Ci0gICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIo
cmVxdWVzdElkLCBidWZmZXIgPyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogbnVsbHB0ciwgbG9h
ZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOworICAgICAgICBtX3Jl
c291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHJlcXVlc3RJZCwKKyAgICAgICAg
ICAgIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNl
RGF0YSgpLAorICAgICAgICAgICAgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5pbnB1dEVu
Y29kaW5nKCkpOwogICAgIH0KIAogICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVEZWNvZGVEYXRh
VG9Db250ZW50KHJlcXVlc3RJZCk7CkBAIC00MzUsOCArNDM1LDkgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG8KICAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUocmVxdWVzdElk
KSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2UpIHsKICAgICAgICAgRnJh
bWUqIGZyYW1lID0gbG9hZGVyID8gbG9hZGVyLT5mcmFtZSgpIDogbnVsbHB0cjsKICAgICAgICAg
aWYgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpICYmIGZyYW1lLT5k
b2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9
IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0g
ICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHJlcXVl
c3RJZCwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIsIGZyYW1lLT5k
b2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOworICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQsCisgICAgICAgICAgICAgICAgZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSwKKyAgICAg
ICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
NDBhZTU5NDRlYmQ3ZjU0N2I5NDVjOTRhN2Q3ZDI5YzhiZjE5YWQzMC4uOTc3ZWQxNGIwZTIxNjM2
OGIxMTBiMjVjMzI2NGQxMjUwMTNiNmM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgpAQCAt
MTcxLDIwICsxNzAsMjAgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiAgICAg
Y2xlYXJNYWluUmVzb3VyY2UoKTsKIH0KIAotUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gRG9j
dW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAorUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBp
ZiAobV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBSZXNvdXJjZUJ1
ZmZlcjo6Y3JlYXRlKG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5kYXRhKCksIG1fc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpLT5zaXplKCkpOworICAgICAgICByZXR1cm4gbV9zdWJzdGl0dXRl
RGF0YS5jb250ZW50KCktPmNvcHkoKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UpCiAgICAgICAg
IHJldHVybiBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogRG9jdW1lbnQqIERvY3VtZW50TG9hZGVyOjpkb2N1
bWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQo
KTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBEb2N1bWVudExvYWRlcjo6b3JpZ2luYWxSZXF1ZXN0KCkgY29uc3QKQEAgLTk5
NCw4ICs5OTMsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQog
I2Vsc2UKICAgICAKICAgICAvLyBHaXZlIHRoZSBhcmNoaXZlIG1hY2hpbmVyeSBhIGNyYWNrIGF0
IHRoaXMgZG9jdW1lbnQuIElmIHRoZSBNSU1FIHR5cGUgaXMgbm90IGFuIGFyY2hpdmUgdHlwZSwg
aXQgd2lsbCByZXR1cm4gMC4KLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNvdXJj
ZUJ1ZmZlciA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBtX2FyY2hpdmUgPSBBcmNoaXZlRmFj
dG9yeTo6Y3JlYXRlKG1fcmVzcG9uc2UudXJsKCksIG1haW5SZXNvdXJjZUJ1ZmZlciA/IG1haW5S
ZXNvdXJjZUJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiAwLCBtX3Jlc3BvbnNlLm1pbWVUeXBlKCkp
OworICAgIG1fYXJjaGl2ZSA9IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUobV9yZXNwb25zZS51cmwo
KSwgbWFpblJlc291cmNlRGF0YSgpLmdldCgpLCBtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAg
IGlmICghbV9hcmNoaXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xMDExLDYg
KzEwMDksNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogfQog
CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCisKIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnNldEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQogewogICAg
IG1fYXJjaGl2ZSA9IGFyY2hpdmU7CkBAIC0xMDU4LDQ3ICsxMDU3LDQ2IEBAIFNoYXJlZEJ1ZmZl
ciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KKwogI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogCiBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9h
ZGVyOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIHJldHVybiAwOwotICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSA9IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YXJjaGl2ZVJlc291cmNlRm9yVVJM
KHVybCk7Ci0KLSAgICByZXR1cm4gcmVzb3VyY2UgJiYgIXJlc291cmNlLT5zaG91bGRJZ25vcmVX
aGVuVW5hcmNoaXZpbmcoKSA/IHJlc291cmNlIDogMDsKKyAgICBpZiAoIXJlc291cmNlIHx8IHJl
c291cmNlLT5zaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHJlc291cmNlOwogfQogCiBQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgciA9IHJlc3BvbnNlKCk7Ci0gICAgCi0gICAgUmVmUHRyPFJlc291
cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VCdWZmZXIgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZUJ1ZmZlciA/IG1haW5SZXNv
dXJjZUJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiAwOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgCi0gICAgcmV0dXJuIEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKGRhdGEsIHIudXJsKCksIHIubWltZVR5cGUoKSwgci50ZXh0RW5jb2Rp
bmdOYW1lKCksIGZyYW1lKCktPnRyZWUoKS51bmlxdWVOYW1lKCkpOworICAgIGF1dG8mIHJlc3Bv
bnNlID0gdGhpcy0+cmVzcG9uc2UoKTsKKyAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoZGF0YSwgcmVzcG9uc2UudXJsKCksIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRl
eHRFbmNvZGluZ05hbWUoKSwgZnJhbWUoKS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSk7CiB9CiAKIFBh
c3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVkUmVzb3VyY2UodXJs
KTsKICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+aXNMb2FkZWQoKSkKICAgICAgICAg
cmV0dXJuIGFyY2hpdmVSZXNvdXJjZUZvclVSTCh1cmwpOwogCiAgICAgaWYgKHJlc291cmNlLT50
eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6Ok1haW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVzb3VyY2VCdWZmZXIqIGRhdGEgPSBy
ZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UtPnJl
c291cmNlQnVmZmVyKCk7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
ZGF0YS0+c2hhcmVkQnVmZmVyKCksIHVybCwgcmVzb3VyY2UtPnJlc3BvbnNlKCkpOworICAgIHJl
dHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShkYXRhLCB1cmwsIHJlc291cmNlLT5yZXNwb25z
ZSgpKTsKIH0KIAogVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBEb2N1bWVudExvYWRl
cjo6c3VicmVzb3VyY2VzKCkgY29uc3QKQEAgLTE1MTEsNyArMTUwOSw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJh
bWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsK
LSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURh
dGEoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VE
YXRhLT5zaXplKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmlu
ZGV4IDQwM2UxOTU3MWM2ZDY2ZGZkMDc3NmY2NzUwOTc1M2VhOTE1OTI1NTYuLjc2OThmZmI4NGZi
ZjcwMmU4NGYxYzFkMmZlMGQ5ZTFiYWM1MjU5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCkBAIC02OCw3ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZUxvYWRlcjsKICAgICBjbGFzcyBQYWdlOwotICAg
IGNsYXNzIFJlc291cmNlQnVmZmVyOwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwogICAgIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC05Myw3
ICs5Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBG
cmFtZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQg
UmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBEb2N1bWVudFdyaXRl
ciYgd3JpdGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgwNzU2ZjEzYmIwMTc2NmY0
YWNmOWJiZjNhOGU2Mzk2NzUzMmJjZjQuLjg3ZGUzYzY1YjdmOTNjYTU0OTRhZGIyYzYxODgwOGIz
ZjQ0NjNkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIk1lZGlhUmVzb3VyY2VMb2FkZXIu
aCIKIAogI2lmIEVOQUJMRShWSURFTykKKwogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApA
QCAtMTEyLDEzICsxMTIsMTAgQEAgdm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3UKIAogdm9pZCBNZWRp
YVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAgICBBU1NFUlQocmVzb3VyY2Ug
PT0gbV9yZXNvdXJjZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0
aGlzKTsKICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKGRhdGEsIGRhdGFMZW5ndGgpOwotCi0g
ICAgaWYgKFNoYXJlZEJ1ZmZlciogYnVmZmVyID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkg
PyByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyKQot
ICAgICAgICBtX2NsaWVudC0+YnVmZmVyUmVjZWl2ZWQoYnVmZmVyKTsKIH0KIAogdm9pZCBNZWRp
YVJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CkBAIC0xMjksNyArMTI2LDcgQEAgdm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgaWYgKHJlc291cmNlLT5sb2FkRmFp
bGVkT3JDYW5jZWxlZCgpKQogICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZChyZXNvdXJjZS0+
cmVzb3VyY2VFcnJvcigpKTsKICAgICBlbHNlCi0gICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNo
ZWQocmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkgPyByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIo
KS0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyKTsKKyAgICAgICAgbV9jbGllbnQtPmxvYWRGaW5p
c2hlZCgpOwogICAgIHN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1
ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YmE4Y2U1NWQxMjdkZTNh
NjI2YjEzNzU1OTg5MjBiYzc2MjYzNTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlc291
cmNlQnVmZmVyLmgiCi0KLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1SZXNvdXJjZUJ1ZmZlcjo6UmVzb3VyY2VCdWZmZXIoKQotICAgIDogbV9zaGFy
ZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLXsKLX0KLQotUmVzb3VyY2VCdWZmZXI6
OlJlc291cmNlQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCi0gICAgOiBt
X3NoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKSkKLXsKLX0KLQot
UmVzb3VyY2VCdWZmZXI6OlJlc291cmNlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIpCi0gICAgOiBtX3NoYXJlZEJ1ZmZlcihzaGFyZWRCdWZmZXIpCi17Ci0gICAg
QVNTRVJUKG1fc2hhcmVkQnVmZmVyKTsKLX0KLSAgICAKLVJlc291cmNlQnVmZmVyOjp+UmVzb3Vy
Y2VCdWZmZXIoKQotewotfQotCi1QYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBSZXNvdXJjZUJ1
ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZCkK
LXsKLSAgICByZXR1cm4gc2hhcmVkID8gYWRvcHRSZWYobmV3IFJlc291cmNlQnVmZmVyKHNoYXJl
ZCkpIDogbnVsbHB0cjsKLX0KLQotY29uc3QgY2hhciogUmVzb3VyY2VCdWZmZXI6OmRhdGEoKSBj
b25zdAotewotICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci0+ZGF0YSgpOwotfQotCi11bnNpZ25l
ZCBSZXNvdXJjZUJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hhcmVkQnVm
ZmVyLT5zaXplKCk7Ci19Ci0KLWJvb2wgUmVzb3VyY2VCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci0+aXNFbXB0eSgpOwotfQotCi12b2lkIFJlc291
cmNlQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKLXsKLSAg
ICBtX3NoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOwotfQotCi12b2lkIFJlc291cmNl
QnVmZmVyOjphcHBlbmQoU2hhcmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgbV9zaGFyZWRCdWZm
ZXItPmFwcGVuZChidWZmZXIpOwotfQotCi0jaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NB
TExCQUNLKQotdm9pZCBSZXNvdXJjZUJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQotewot
ICAgIEFTU0VSVChtX3NoYXJlZEJ1ZmZlcik7Ci0gICAgbV9zaGFyZWRCdWZmZXItPmFwcGVuZChk
YXRhKTsKLX0KLSNlbmRpZgotCi12b2lkIFJlc291cmNlQnVmZmVyOjpjbGVhcigpCi17Ci0gICAg
bV9zaGFyZWRCdWZmZXItPmNsZWFyKCk7Ci19Ci0KLXVuc2lnbmVkIFJlc291cmNlQnVmZmVyOjpn
ZXRTb21lRGF0YShjb25zdCBjaGFyKiYgZGF0YSwgdW5zaWduZWQgcG9zaXRpb24pIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5nZXRTb21lRGF0YShkYXRhLCBwb3NpdGlvbik7
Ci19Ci0KLVNoYXJlZEJ1ZmZlciogUmVzb3VyY2VCdWZmZXI6OnNoYXJlZEJ1ZmZlcigpIGNvbnN0
Ci17Ci0gICAgLy8gQ3VycmVudGx5IGFsbCBSZXNvdXJjZUJ1ZmZlcnMgYXJlIGJhY2tlZCBieSBT
aGFyZWRCdWZmZXJzLgotICAgIC8vIEluIHRoZSBmdXR1cmUgd2UgbWlnaHQgaGF2ZSB0byBjcmVh
dGUgdGhlIFNoYXJlZEJ1ZmZlciBvbiBkZW1hbmQgaGVyZS4KLSAgICAvLyBXZSBzaG91bGQgYWxz
byBwaGFzZSBvdXQgYXMgbXVjaCB1c2Ugb2YgdGhpcyBhY2Nlc3NvciBhcyBwb3NzaWJsZSBhbmQg
aGF2ZSBjbGllbnRzCi0gICAgLy8gZWl0aGVyIHVzZSB0aGUgUmVzb3VyY2VCdWZmZXIgZGlyZWN0
bHkgb3IgdXNlIGdldFNvbWVEYXRhKCkgd2hlbiBzZW5zaWNhbC4KLSAgICByZXR1cm4gbV9zaGFy
ZWRCdWZmZXIuZ2V0KCk7Ci19Ci0KLVBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IFJlc291cmNl
QnVmZmVyOjpjb3B5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gUmVzb3VyY2VCdWZmZXI6OmFkb3B0
U2hhcmVkQnVmZmVyKG1fc2hhcmVkQnVmZmVyLT5jb3B5KCkpOwotfQotCi0jaWYgVVNFKENGKQot
UmV0YWluUHRyPENGRGF0YVJlZj4gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpCi17Ci0g
ICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5jcmVhdGVDRkRhdGEoKTsKLX0KLSNlbmRpZgotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjNiMDhhYjFiNDgyOWI2NTcxYTViNjA0
MzliMjlkMTllYWExMmJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgUmVzb3VyY2VCdWZmZXJfaAotI2RlZmluZSBSZXNvdXJjZUJ1ZmZl
cl9oCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLQotI2lmIFVTRShGT1VOREFUSU9OKQotT0JKQ19DTEFTUyBOU0RhdGE7Ci0jZW5kaWYKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTaGFyZWRCdWZmZXI7Ci0KLWNsYXNzIFJlc291
cmNlQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VCdWZmZXI+IHsKLXB1YmxpYzoK
LQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgUmVzb3VyY2VCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UmVzb3VyY2VCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgUmVzb3VyY2VCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGFkb3B0U2hhcmVkQnVmZmVyKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZXNv
dXJjZUJ1ZmZlcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBjb25zdCBjaGFyKiBk
YXRhKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB1bnNpZ25lZCBzaXplKCkg
Y29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdDsK
LQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7
Ci0gICAgdm9pZCBhcHBlbmQoU2hhcmVkQnVmZmVyKik7Ci0jaWYgVVNFKE5FVFdPUktfQ0ZEQVRB
X0FSUkFZX0NBTExCQUNLKQotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7Ci0jZW5kaWYKLSAg
ICB2b2lkIGNsZWFyKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgZ2V0U29tZURhdGEoY29uc3QgY2hh
ciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCkgY29uc3Q7Ci0gICAgCi0gICAgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIoKSBjb25zdDsKLSNpZiBVU0UoRk9V
TkRBVElPTikKLSAgICB2b2lkIHRyeVJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cyhTaGFyZWRC
dWZmZXIqKTsKLSNlbmRpZgotICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGNvcHkoKSBj
b25zdDsKLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpOwotI2VuZGlmCi0jaWYgVVNFKENGKQotICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpOwotI2VuZGlmCi0KLXByb3RlY3RlZDoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUJ1ZmZlcigpOwotCi1wcml2YXRlOgotICAgIFdFQkNP
UkVfRVhQT1JUIFJlc291cmNlQnVmZmVyKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgUmVz
b3VyY2VCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKLQotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fc2hhcmVkQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gUmVzb3VyY2VCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggMmM4MWZhMzRjNjZjYjBkZGMzM2Y4ZjQ2MjczMjVjZTNjMDEwZTVi
Zi4uNDNiOWMzZjA4OGJhZjM0ZjgxOTgwYWQzODM5MTE5ZTgyNTY4OTUwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlBy
b2dyZXNzVHJhY2tlci5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCkBAIC0yMjIsMTIgKzIyMSwxMiBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBTaGFyZWRCdQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZGF0YVBheWxvYWRUeXBl
ID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBtX3Jlc291cmNlRGF0YSA9
IGJ1ZmZlciA/IFJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcihidWZmZXIpIDogUmVz
b3VyY2VCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOworICAgICAgICBtX3Jlc291cmNlRGF0
YSA9IGJ1ZmZlciA/IGJ1ZmZlciA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAogICAgIGlmICghbV9yZXNvdXJjZURh
dGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyID8gUmVzb3VyY2VCdWZmZXI6OmFk
b3B0U2hhcmVkQnVmZmVyKGJ1ZmZlcikgOiBSZXNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxl
bmd0aCk7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gYnVmZmVyID8gYnVmZmVyIDogU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGJ1
ZmZlcikKICAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoYnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOGQwOTRjNjRlZjgxN2YxZGZiZjE2
ZTllOWJiMzUxMjNhZTA5ZGYxNi4uMTYxNWY2ZDliZjhkYzM0YTRlOWJjZjQ2YmI2M2I2OGY2Y2Zk
YTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3
LDYgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9h
ZGVyOwogY2xhc3MgVVJMOwotY2xhc3MgUmVzb3VyY2VCdWZmZXI7CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKIGNsYXNzIFF1aWNrTG9va0hhbmRsZTsKQEAgLTg4LDcgKzg3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdDsKIAotICAgIFJlc291cmNlQnVmZmVyKiByZXNvdXJj
ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAgIFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0
KCk7IH0KICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBi
b29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKTsKQEAgLTIwNCw3ICsyMDMsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFJlc291cmNl
QnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291
cmNlRGF0YTsKICAgICAKICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggN2Q0MGU2MzVkNGQw
NDZkNjk4ZDExMTYwMTY4ZDE4NjQxY2FkZjNjMS4uMjZhMzRlMjNlYjlkZjljYmM0NzZkYzRmOWU0
YzJiYzdjNTVlZjVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKLSNp
bmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgpAQCAtMjMzLDExICsyMzIsMTAgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSByZXNvdXJjZURh
dGEoKTsKKyAgICBhdXRvKiBidWZmZXIgPSByZXNvdXJjZURhdGEoKTsKICAgICBpZiAobV9sb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudCAmJiBidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKICAgICAg
ICAgLy8gVGhlIHJlc291cmNlIGRhdGEgd2lsbCBjaGFuZ2UgYXMgdGhlIG5leHQgcGFydCBpcyBs
b2FkZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBhIGNvcHkuCi0gICAgICAgIFJlZlB0cjxSZXNvdXJj
ZUJ1ZmZlcj4gY29waWVkRGF0YSA9IFJlc291cmNlQnVmZmVyOjpjcmVhdGUoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhj
b3BpZWREYXRhLmdldCgpKTsKKyAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZygmYnVm
ZmVyLT5jb3B5KCkuZ2V0KCkpOwogICAgICAgICBjbGVhclJlc291cmNlRGF0YSgpOwogICAgICAg
ICAvLyBTaW5jZSBhIHN1YnJlc291cmNlIGxvYWRlciBkb2VzIG5vdCBsb2FkIG11bHRpcGFydCBz
ZWN0aW9ucyBwcm9ncmVzc2l2ZWx5LCBkYXRhIHdhcyBkZWxpdmVyZWQgdG8gdGhlIGxvYWRlciBh
bGwgYXQgb25jZS4gICAgICAgIAogICAgICAgICAvLyBBZnRlciB0aGUgZmlyc3QgbXVsdGlwYXJ0
IHNlY3Rpb24gaXMgY29tcGxldGUsIHNpZ25hbCB0byBkZWxlZ2F0ZXMgdGhhdCB0aGlzIGxvYWQg
aXMgImZpbmlzaGVkIiAKQEAgLTI3Myw4ICsyNzEsOCBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFBh
cwogICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0
aCwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAgIGlm
ICghbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCkgewotICAgICAgICBpZiAoUmVzb3VyY2VCdWZm
ZXIqIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQotICAgICAgICAgICAgbV9y
ZXNvdXJjZS0+YWRkRGF0YUJ1ZmZlcihyZXNvdXJjZURhdGEpOworICAgICAgICBpZiAoYXV0byog
cmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCisgICAgICAgICAgICBtX3Jlc291
cmNlLT5hZGREYXRhQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX3Jlc291cmNlLT5hZGREYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwg
YnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggMzUzY2VmMjczNDJjZWQ4ZmUxZDdiMmU1
ODYzYjVmNDVjOTJkYTU0ZS4uMGYyN2I5MjgwN2YzOTFjZjQwZWY4ZmViZTM4OTE1NzM3ZjAzNWMy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTM2LDgg
KzM2LDggQEAKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiVlRUQ3VlLmgiCiAjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCiAK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRh
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBpZiAobV9zdGF0ZSA9PSBGYWlsZWQgfHwg
IXJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
UmVzb3VyY2VCdWZmZXIqIGJ1ZmZlciA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAg
IGF1dG8qIGJ1ZmZlciA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgIGlmIChtX3Bh
cnNlT2Zmc2V0ID09IGJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKaW5kZXggNjM0MjE5NGNlNzhmMTA1ZmUzM2FhZmU0OWMxYTY1NGRiNTUwNjY1Mi4uZTk1
NGEzMzdlMDgyNzc3YzgzYzUzYjZjZWFiOTQ5ZDZkODUwNTY5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
QEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJNYW5pZmVzdFBhcnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMjU0LDExICsy
NTMsOCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZmluaXNoZWRMb2FkaW5nTWFpblJl
c291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2Ut
PmFkZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0ZXIpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVCghcmVzb3VyY2UtPnN0b3JhZ2VJRCgpKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyID0g
bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBtX25ld2VzdENhY2hlLT5h
ZGRSZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSh1cmwsIGxvYWRlci0+
cmVzcG9uc2UoKSwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0ZXIsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiAwKSk7Ci0gICAgICAgIH0KLQorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIG1fbmV3ZXN0Q2FjaGUtPmFkZFJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6Y3JlYXRlKHVybCwgbG9hZGVyLT5yZXNwb25zZSgpLCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6Ok1hc3RlciwgbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBGYWlsdXJlOgogICAgICAgICAvLyBDYWNoZSB1cGRhdGUgaGFzIGJl
ZW4gYSBmYWlsdXJlLCBzbyB0aGVyZSBpcyBubyByZWFzb24gdG8ga2VlcCB0aGUgZG9jdW1lbnQg
YXNzb2NpYXRlZCB3aXRoIHRoZSBpbmNvbXBsZXRlIGNhY2hlCkBAIC0yNzYsMTAgKzI3Miw4IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgICAgICByZXNvdXJjZS0+YWRkVHlw
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3Rlcik7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCFyZXNvdXJjZS0+c3RvcmFnZUlEKCkpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmFk
ZFJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgbG9hZGVyLT5y
ZXNwb25zZSgpLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6Ok1hc3RlciwgYnVmZmVyID8gYnVm
ZmVyLT5zaGFyZWRCdWZmZXIoKSA6IDApKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmFkZFJlc291cmNlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6Y3JlYXRlKHVybCwgbG9hZGVyLT5yZXNwb25zZSgpLCBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6Ok1hc3RlciwgbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpKTsKICAgICAg
ICAgLy8gVGhlICJjYWNoZWQiIGV2ZW50IHdpbGwgYmUgcG9zdGVkIHRvIGFsbCBhc3NvY2lhdGVk
IGRvY3VtZW50cyBvbmNlIHVwZGF0ZSBpcyBjb21wbGV0ZS4KICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcAppbmRleCAyNGNmNGJlZWRlZGY2ZTQzNmE5ZGU4MjRiM2MzY2U1ZTk3Y2M5MzYz
Li45NzIzNDZhMDA4M2JhNmU0NGUzZTI0ODI0Y2VhYTM0ZDBhMzcxZTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApA
QCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgpAQCAtNTUwLDkgKzU0OSw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
CiAjZW5kaWYKICAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Ug
PSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgZnJhbWUtPnBhZ2Uo
KS0+c2Vzc2lvbklEKCkpOwogICAgICAgICAgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZSkgewot
ICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUJ1ZmZlciogZGF0YSA9IGNhY2hlZFJlc291cmNl
LT5yZXNvdXJjZUJ1ZmZlcigpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEgPyBk
YXRhLT5zaGFyZWRCdWZmZXIoKSA6IDAsIHN1YnJlc291cmNlVVJMLCBjYWNoZWRSZXNvdXJjZS0+
cmVzcG9uc2UoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoY2FjaGVkUmVzb3VyY2Ut
PnJlc291cmNlQnVmZmVyKCksIHN1YnJlc291cmNlVVJMLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9u
c2UoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoV1RG
Ojptb3ZlKHJlc291cmNlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGEyMDgxYmVhNGNhNTYzYjg1MDQ2NTNiZDFk
YjUwMDkxYWE5MzQyYWYuLmUzNzAxMzhlYjA4ZTk5MDA0YTRjZmVmZWZjNGUwOWU0ZmFjYjAzMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTmFtZXMuaCIK
ICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCi0jaW5j
bHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC05MCwxMyArOTAsMTMgQEAgY29u
c3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChib29sIGVuZm9yY2VNSU1F
VHlwZSwgYm9vbCogaGFzVmFsaWQKICAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCi12b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAg
IG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRh
LT5zaXplKCkgOiAwKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7CiAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQg
a2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAo
bV9kYXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpCisg
ICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNo
ZWNrTm90aWZ5KCk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1bmxp
a2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJlZ2Vu
ZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuaAppbmRleCA4MGY5OTRjYjMwMmYyM2I2NTc4MmRkM2Y2MzkyNjNlNmIxYTlhMmQ3Li45
NDBmZDFmMTlkN2ZjZTgyMzgyMWZiZWMzOTdlYWQxZjA3NmI0M2RjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU0LDcgKzU0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRp
bmcoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCAxMzY4MmZhMjc3OGRmZGY2
MWFjZWQ5YzNiOTUwNGY2NjdlNzM3ZmY2Li4xZWY2MjJlMjRiZGU2YjU5NGUzOGI3ZjRkNTFmOTI2
ZTJkYjk2YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgog
I2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgot
I2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvci5oIgpAQCAtNzYsNyArNzUsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRp
ZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKICAgICAgICAgc3RhdGljX2Nhc3Q8
Q2FjaGVkRm9udENsaWVudCo+KGMpLT5mb250TG9hZGVkKHRoaXMpOwogfQogCi12b2lkIENhY2hl
ZEZvbnQ6OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRh
dGE7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAw
KTsKQEAgLTk1LDMwICs5NCwyNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmJlZ2luTG9hZElmTmVlZGVk
KENhY2hlZFJlc291cmNlTG9hZGVyKiBkbCkKIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoKQogewogICAgIGlmICghbV9mb250RGF0YSAmJiAhZXJyb3JPY2N1cnJlZCgpICYm
ICFpc0xvYWRpbmcoKSAmJiBtX2RhdGEpIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIg
PSBtX2RhdGEuZ2V0KCktPnNoYXJlZEJ1ZmZlcigpOwotICAgICAgICBBU1NFUlQoYnVmZmVyKTsK
LQorICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX2RhdGE7CiAgICAgICAg
IGJvb2wgZm9udElzV09GRiA9IGZhbHNlOworCiAjaWYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MCkgJiYgKCFQTEFURk9STShJT1MpIHx8
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgODAwMDApCi0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNmbnRCdWZmZXI7Ci0KLSAgICAgICAgZm9udElzV09GRiA9IGlzV09G
RihidWZmZXIpOwotICAgICAgICBpZiAoZm9udElzV09GRikgewotICAgICAgICAgICAgVmVjdG9y
PGNoYXI+IHNmbnQ7Ci0gICAgICAgICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoYnVmZmVyLCBz
Zm50KSkgewotICAgICAgICAgICAgICAgIHNmbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0
VmVjdG9yKHNmbnQpOwotICAgICAgICAgICAgICAgIGJ1ZmZlciA9IHNmbnRCdWZmZXIuZ2V0KCk7
Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgaWYgKGlzV09GRihidWZmZXIuZ2V0KCkpKSB7
CisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gY29udmVydGVkRm9udDsKKyAgICAgICAgICAgIGlm
ICghY29udmVydFdPRkZUb1NmbnQoYnVmZmVyLmdldCgpLCBjb252ZXJ0ZWRGb250KSkKICAgICAg
ICAgICAgICAgICBidWZmZXIgPSBudWxscHRyOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcihjb252ZXJ0ZWRGb250
KTsKKyAgICAgICAgICAgICAgICBmb250SXNXT0ZGID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgbV9mb250RGF0YSA9IGJ1ZmZlciA/IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlcikgOiBudWxscHRyOwotICAgICAgICBpZiAobV9m
b250RGF0YSkKLSAgICAgICAgICAgIG1faGFzQ3JlYXRlZEZvbnREYXRhV3JhcHBpbmdSZXNvdXJj
ZSA9ICFmb250SXNXT0ZGOwotICAgICAgICBlbHNlCisgICAgICAgIG1faGFzQ3JlYXRlZEZvbnRE
YXRhV3JhcHBpbmdSZXNvdXJjZSA9IG1fZm9udERhdGEgJiYgIWZvbnRJc1dPRkY7CisgICAgICAg
IGlmICghbV9mb250RGF0YSkKICAgICAgICAgICAgIHNldFN0YXR1cyhEZWNvZGVFcnJvcik7CiAg
ICAgfQorCiAgICAgcmV0dXJuIG1fZm9udERhdGEuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGQ5NDM3MzA1NTA2NDMxOTJjOTY2MzU3MWE1
ZmRkNGQyNDA5YmI2ZmIuLjJhMjY3Y2NjYjE1MTExMjc3NTU5MDVjOWUxNzQ3ZjE4ZWM3YmViNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNjMsNyArNjMs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkKENhY2hlZFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMGZkYTE4NDljNmE3
MjY0Y2Q5MjczZDZkOWI2MjNjNDM2Y2I2MTZkLi5kYjJhZTk3ZjI5NzhhNTBmYWI4OGIyZmFkZWU4
OWM4NTcwNmMwNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiUmVzb3Vy
Y2VCdWZmZXIuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTExNiwzMSArMTE1LDMxIEBAIHZvaWQg
Q2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9h
ZGVyLCBjb25zdCBSZXNvdXJjCiAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCit2b2lk
IENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkK
IHsKICAgICBpZiAobV9kYXRhICYmICFtX2ltYWdlICYmICFlcnJvck9jY3VycmVkKCkpIHsKICAg
ICAgICAgY3JlYXRlSW1hZ2UoKTsKLSAgICAgICAgbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEtPnNo
YXJlZEJ1ZmZlcigpLCB0cnVlKTsKKyAgICAgICAgbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEsIHRy
dWUpOwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoYy0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0g
Q2FjaGVkSW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKKyAgICBBU1NFUlQoY2xpZW50LT5y
ZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNsaWVudDo6ZXhwZWN0ZWRUeXBlKCkp
OwogICAgIGlmIChtX2ltYWdlICYmICFtX2ltYWdlLT5pc051bGwoKSkKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8Q2FjaGVkSW1hZ2VDbGllbnQqPihjKS0+aW1hZ2VDaGFuZ2VkKHRoaXMpOworICAgICAg
ICBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZUNsaWVudCo+KGNsaWVudCktPmltYWdlQ2hhbmdlZCh0
aGlzKTsKIAotICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoYyk7CisgICAgQ2FjaGVk
UmVzb3VyY2U6OmRpZEFkZENsaWVudChjbGllbnQpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpk
aWRSZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCit2b2lkIENhY2hlZEltYWdl
OjpkaWRSZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKIHsKLSAgICBB
U1NFUlQoYyk7Ci0gICAgQVNTRVJUKGMtPnJlc291cmNlQ2xpZW50VHlwZSgpID09IENhY2hlZElt
YWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgQVNT
RVJUKGNsaWVudC0+cmVzb3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VDbGllbnQ6OmV4
cGVjdGVkVHlwZSgpKTsKIAotICAgIG1fcGVuZGluZ0NvbnRhaW5lclNpemVSZXF1ZXN0cy5yZW1v
dmUoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2VDbGllbnQqPihjKSk7CisgICAgbV9wZW5kaW5nQ29u
dGFpbmVyU2l6ZVJlcXVlc3RzLnJlbW92ZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZUNsaWVudCo+
KGNsaWVudCkpOwogCiAgICAgaWYgKG1fc3ZnSW1hZ2VDYWNoZSkKLSAgICAgICAgbV9zdmdJbWFn
ZUNhY2hlLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2VDbGll
bnQqPihjKSk7CisgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZS0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hl
KHN0YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50Kj4oY2xpZW50KSk7CiAKLSAgICBDYWNoZWRS
ZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xpZW50KGMpOworICAgIENhY2hlZFJlc291cmNlOjpkaWRSZW1v
dmVDbGllbnQoY2xpZW50KTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6c3dpdGNoQ2xpZW50c1Rv
UmV2YWxpZGF0ZWRSZXNvdXJjZSgpCkBAIC0zNjUsMTggKzM2NCwxNiBAQCBpbmxpbmUgdm9pZCBD
YWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV9pbWFnZS5jbGVhcigpOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqIGRh
dGEpCit2b2lkIENhY2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgaWYgKCFkYXRhKQotICAgICAg
ICByZXR1cm47CisgICAgbV9kYXRhID0gJmRhdGE7CiAKICAgICBjcmVhdGVJbWFnZSgpOwogCiAg
ICAgLy8gSGF2ZSB0aGUgaW1hZ2UgdXBkYXRlIGl0cyBkYXRhIGZyb20gaXRzIGludGVybmFsIGJ1
ZmZlci4KICAgICAvLyBJdCB3aWxsIG5vdCBkbyBhbnl0aGluZyBub3csIGJ1dCB3aWxsIGRlbGF5
IGRlY29kaW5nIHVudGlsCiAgICAgLy8gcXVlcmllZCBmb3IgaW5mbyAobGlrZSBzaXplIG9yIHNw
ZWNpZmljIGltYWdlIGZyYW1lcykuCi0gICAgYm9vbCBzaXplQXZhaWxhYmxlID0gbV9pbWFnZS0+
c2V0RGF0YShtX2RhdGEtPnNoYXJlZEJ1ZmZlcigpLCBmYWxzZSk7CisgICAgYm9vbCBzaXplQXZh
aWxhYmxlID0gbV9pbWFnZS0+c2V0RGF0YSgmZGF0YSwgZmFsc2UpOwogICAgIGlmICghc2l6ZUF2
YWlsYWJsZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTgsMjYgKzM5NSwyOCBAQCB2b2lkIENh
Y2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqIGRhdGEp
CiAgICAgc2V0RW5jb2RlZFNpemUobV9pbWFnZS0+ZGF0YSgpID8gbV9pbWFnZS0+ZGF0YSgpLT5z
aXplKCkgOiAwKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6YWRkRGF0YUJ1ZmZlcihSZXNvdXJj
ZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmFkZERhdGFCdWZmZXIoU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewotICAgIEFTU0VSVChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IEJ1ZmZlckRhdGEpOworICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVm
ZmVyRGF0YSk7CiAgICAgYWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKGRhdGEpOworICAgIENhY2hl
ZFJlc291cmNlOjphZGREYXRhQnVmZmVyKGRhdGEpOwogfQogCiB2b2lkIENhY2hlZEltYWdlOjph
ZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBBU1NFUlQo
bV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpOwotICAg
IGFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxl
bmd0aCkuZ2V0KCkpOworICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RC
dWZmZXJEYXRhKTsKKyAgICBhZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoKlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOworICAgIENhY2hlZFJlc291cmNlOjphZGREYXRhKGRhdGEs
IGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VC
dWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhOwogICAgIGlmICghbV9pbWFnZSAmJiBkYXRh
KQogICAgICAgICBjcmVhdGVJbWFnZSgpOwogCiAgICAgaWYgKG1faW1hZ2UpCi0gICAgICAgIG1f
aW1hZ2UtPnNldERhdGEobV9kYXRhLT5zaGFyZWRCdWZmZXIoKSwgdHJ1ZSk7CisgICAgICAgIG1f
aW1hZ2UtPnNldERhdGEoZGF0YSwgdHJ1ZSk7CiAKICAgICBpZiAoIW1faW1hZ2UgfHwgbV9pbWFn
ZS0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gSW1hZ2UgZGVjb2RpbmcgZmFpbGVkOyB0aGUgaW1h
Z2UgZGF0YSBpcyBtYWxmb3JtZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oCmluZGV4IGZlZWY0NTJjNmNmZDM2NzI0Nzg5NDljMTZhYzY5MDY5MzMxNTQzMzguLjU2
ZDJhYTFmMzMwODZiMjM3MGRmNDYyNWM3ZTRjYjhiN2FiNTQxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKICAg
ICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIo
UmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAg
ICAgIFVzZWRTaXplLApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRl
SW1hZ2UoKTsKICAgICB2b2lkIGNsZWFySW1hZ2UoKTsKICAgICAvLyBJZiBub3QgbnVsbCwgY2hh
bmdlUmVjdCBpcyB0aGUgY2hhbmdlZCBwYXJ0IG9mIHRoZSBpbWFnZS4KLSAgICB2b2lkIG5vdGlm
eU9ic2VydmVycyhjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gMCk7CisgICAgdm9pZCBub3Rp
ZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIpOwogICAgIHZv
aWQgY2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3dp
dGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwpAQCAtMTIyLDcgKzEy
Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0
IEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFkZEluY3JlbWVu
dGFsRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciopOworICAgIHZvaWQgYWRkSW5jcmVtZW50YWxE
YXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8TGF5b3V0
U2l6ZSwgZmxvYXQ+IFNpemVBbmRab29tOwogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDYWNo
ZWRJbWFnZUNsaWVudCosIFNpemVBbmRab29tPiBDb250YWluZXJTaXplUmVxdWVzdHM7CkBAIC0x
MzAsOCArMTMwLDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHSW1hZ2VDYWNoZT4gbV9zdmdJbWFnZUNhY2hlOwotICAgIHVu
c2lnbmVkIGNoYXIgbV9pc01hbnVhbGx5Q2FjaGVkIDogMTsKLSAgICB1bnNpZ25lZCBjaGFyIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA6IDE7CisgICAgdW5zaWduZWQgbV9pc01hbnVhbGx5Q2Fj
aGVkIDogMTsKKyAgICB1bnNpZ25lZCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgOiAxOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNWYyODEzMmFlOGRjZWRiMzExMWRmNzM5
YzI2ZDk0MTkxMTc1ZDZlYy4uNjhlNzdmZWIwODA5ODE3MTdhZTFlMDE0NWVkZjY5ZDQ3ZjA2YjY4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRX
YWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkhU
VFBIZWFkZXJOYW1lcy5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAg
LTQ2LDcgKzQ2LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBUeXBlIHR5cGUKICAgICBBU1NFUlQoaXNNYWlu
T3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotY29uc3QgY2hhciogQ2FjaGVkUmF3UmVzb3VyY2U6OmNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKFJlc291cmNlQnVmZmVyKiBkYXRhLCB1bnNpZ25l
ZCYgaW5jcmVtZW50YWxEYXRhTGVuZ3RoKQorY29uc3QgY2hhciogQ2FjaGVkUmF3UmVzb3VyY2U6
OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKFNoYXJlZEJ1ZmZlciogZGF0YSwgdW5zaWdu
ZWQmIGluY3JlbWVudGFsRGF0YUxlbmd0aCkKIHsKICAgICBpbmNyZW1lbnRhbERhdGFMZW5ndGgg
PSAwOwogICAgIGlmICghZGF0YSkKQEAgLTU4LDM0ICs1OCwzNiBAQCBjb25zdCBjaGFyKiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoUmVzb3VyY2VCdWZm
ZXIqIGRhdAogICAgIHJldHVybiBkYXRhLT5kYXRhKCkgKyBwcmV2aW91c0RhdGFMZW5ndGg7CiB9
CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIq
IGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjphZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
cHJvdGVjdCh0aGlzKTsKLSAgICBBU1NFUlQobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7CisgICAgbV9kYXRhID0gJmRhdGE7CiAKICAg
ICB1bnNpZ25lZCBpbmNyZW1lbnRhbERhdGFMZW5ndGg7Ci0gICAgY29uc3QgY2hhciogaW5jcmVt
ZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSwgaW5jcmVtZW50
YWxEYXRhTGVuZ3RoKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICBjb25zdCBjaGFyKiBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuaygmZGF0YSwgaW5jcmVtZW50YWxEYXRhTGVuZ3RoKTsKKyAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLnNpemUoKSk7CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNl
aXZlZChpbmNyZW1lbnRhbERhdGEsIGluY3JlbWVudGFsRGF0YUxlbmd0aCk7Ci0gICAgaWYgKG1f
b3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKSB7CisgICAg
aWYgKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpIHsKICAgICAgICAg
aWYgKG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNldERhdGFCdWZmZXJpbmdQb2xp
Y3koRG9Ob3RCdWZmZXJEYXRhKTsKICAgICAgICAgY2xlYXIoKTsKICAgICB9CisKKyAgICBDYWNo
ZWRSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihkYXRhKTsKIH0KIAogdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6YWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAg
QVNTRVJUKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRh
KTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVmZmVyRGF0YSk7
CiAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChkYXRhLCBsZW5ndGgpOworICAgIENh
Y2hlZFJlc291cmNlOjphZGREYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKLSAg
ICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSBtX29wdGlvbnMuZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpOworICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9PSBCdWZmZXJEYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGE7CiAKQEAg
LTk5LDcgKzEwMSw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoUmVz
b3VyY2VCdWZmZXIqIGRhdGEpCiAgICAgbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQgPSAh
bV9sb2FkZXItPmlzUXVpY2tMb29rUmVzb3VyY2UoKTsKIAogICAgIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGRhdGEpOwotICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IEJ1ZmZl
ckRhdGEgJiYgbV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRh
dGEpIHsKKyAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBCdWZmZXJEYXRhICYmIHRoaXMt
PmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpIHsKICAgICAgICAgaWYg
KG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNldERhdGFCdWZmZXJpbmdQb2xpY3ko
RG9Ob3RCdWZmZXJEYXRhKTsKICAgICAgICAgY2xlYXIoKTsKQEAgLTIyMiw3ICsyMjQsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRJZ25vcmVIZWFkZXJGb3JDYWNoZVJldXNlKEhUVFBIZWFkZXJOYW1l
IG5hbWUpCiAKIGJvb2wgQ2FjaGVkUmF3UmVzb3VyY2U6OmNhblJldXNlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgbmV3UmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpCisgICAgaWYgKGRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChtX3Jlc291cmNlUmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gbmV3UmVxdWVzdC5odHRwTWV0
aG9kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IGYzYzY2OGYyYmRiOWZlNDZlOTM2MmU0MmI5ZDYzNzIyZDA2YzJlMjcuLjJjZDQ1
NWFjYjI1MWQwODFmYzM0ZWMwY2MwNmJiOTllMzUxYTExYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC00OCw5ICs0OCw5IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIo
UmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZl
cihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3Zl
cnJpZGU7CkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
UmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBjb25z
dCBjaGFyKiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhSZXNvdXJjZUJ1ZmZlciosIHVu
c2lnbmVkJiBpbmNyZW1lbnRhbERhdGFMZW5ndGgpOworICAgIGNvbnN0IGNoYXIqIGNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUNodW5rKFNoYXJlZEJ1ZmZlciosIHVuc2lnbmVkJiBpbmNyZW1lbnRh
bERhdGFMZW5ndGgpOwogICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25z
dCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAjaWYgVVNFKFNPVVApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA1YTRlNGE3
N2M4ZjJkODc4OWYwOTAxZDdhM2FjODgwNDRjYjk5OTg3Li5jZWVlNThjMDMyNDZmOGM4YWRlZmRm
MTUxMzc2ZjJiMWNlOWMzOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2NoZW1l
UmVnaXN0cnkuaCIKQEAgLTEwOCwxMCArMTA3LDEwIEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JB
TChSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFJlc291cmNlTGVha0NvdW50ZXIsICgiQ2Fj
CiAKIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFR5cGUgdHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fcmVzb3Vy
Y2VSZXF1ZXN0KHJlcXVlc3QpCisgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcih0aGlz
LCAmQ2FjaGVkUmVzb3VyY2U6OmRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkLCBkZWFkRGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsRm9yUmVzb3VyY2VUeXBlKHR5cGUpKQogICAgICwgbV9z
ZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9sb2FkUHJpb3JpdHkoZGVmYXVsdFByaW9yaXR5
Rm9yUmVzb3VyY2VUeXBlKHR5cGUpKQogICAgICwgbV9yZXNwb25zZVRpbWVzdGFtcChjdXJyZW50
VGltZSgpKQotICAgICwgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIodGhpcywgJkNhY2hlZFJl
c291cmNlOjpkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCwgZGVhZERlY29kZWREYXRhRGVs
ZXRpb25JbnRlcnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fbGFzdERlY29kZWRB
Y2Nlc3NUaW1lKDApCiAgICAgLCBtX2xvYWRGaW5pc2hUaW1lKDApCiAgICAgLCBtX2VuY29kZWRT
aXplKDApCkBAIC0yODYsMjIgKzI4NSwyMiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05v
dGlmeSgpCiAgICAgaWYgKGlzTG9hZGluZygpIHx8IHN0aWxsTmVlZHNMb2FkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNl
Q2xpZW50PiB3KG1fY2xpZW50cyk7Ci0gICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBj
ID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworICAgIENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGll
bnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCA9IHdhbGtlci5u
ZXh0KCkpCisgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQodGhpcyk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKQordm9pZCBDYWNo
ZWRSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImKQogewotICAgIEFTU0VSVCht
X29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOworICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7CiB9CiAKIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmFkZERhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkKQogewotICAgIEFTU0VSVCht
X29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVmZmVyRGF0YSk7CisgICAg
QVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12
b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikKIHsKICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSgpOwpAQCAtMzkxLDE3ICszOTAsMTUgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGll
bnQpCiAgICAgICAgIGRpZEFkZENsaWVudChjbGllbnQpOwogfQogCi12b2lkIENhY2hlZFJlc291
cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCit2b2lkIENhY2hlZFJl
c291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKIHsKICAg
ICBpZiAobV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9k
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3RvcCgpOwogCi0gICAgaWYgKG1fY2xpZW50c0F3YWl0
aW5nQ2FsbGJhY2suY29udGFpbnMoYykpIHsKLSAgICAgICAgbV9jbGllbnRzLmFkZChjKTsKLSAg
ICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5yZW1vdmUoYyk7Ci0gICAgfQorICAgIGlm
IChtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLnJlbW92ZShjbGllbnQpKQorICAgICAgICBtX2Ns
aWVudHMuYWRkKGNsaWVudCk7CiAgICAgaWYgKCFpc0xvYWRpbmcoKSAmJiAhc3RpbGxOZWVkc0xv
YWQoKSkKLSAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7CisgICAgICAgIGNsaWVudC0+
bm90aWZ5RmluaXNoZWQodGhpcyk7CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCkBAIC00MjMsNyArNDIwLDcgQEAg
Ym9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQq
IGNsaWVudCkKICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBz
ZW5kaW5nIGNhbGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90aGVyIENhY2hlZFJlc291cmNl
cywKICAgICAgICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQgZW5zdXJlIHdlIG5l
dmVyIGZpbmlzaCBzeW5jaHJvbm91c2x5LgogICAgICAgICBBU1NFUlQoIW1fY2xpZW50c0F3YWl0
aW5nQ2FsbGJhY2suY29udGFpbnMoY2xpZW50KSk7Ci0gICAgICAgIG1fY2xpZW50c0F3YWl0aW5n
Q2FsbGJhY2suYWRkKGNsaWVudCwgQ2FjaGVkUmVzb3VyY2VDYWxsYmFjazo6c2NoZWR1bGUodGhp
cywgY2xpZW50KSk7CisgICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKGNsaWVu
dCwgc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsICpjbGllbnQpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzMxLDI3ICs3MjgsMjggQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6c2V0TG9hZFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5IGxvYWRQcmlvcml0
eSkKICAgICBtX2xvYWRQcmlvcml0eSA9IGxvYWRQcmlvcml0eTsKIH0KIAotQ2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2s6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2soQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQoraW5saW5l
IENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6Q2FsbGJhY2soQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgIDogbV9yZXNvdXJjZShyZXNv
dXJjZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fY2FsbGJhY2tUaW1lcih0aGlz
LCAmQ2FjaGVkUmVzb3VyY2VDYWxsYmFjazo6dGltZXJGaXJlZCkKKyAgICAsIG1fdGltZXIodGhp
cywgJkNhbGxiYWNrOjp0aW1lckZpcmVkKQogewotICAgIG1fY2FsbGJhY2tUaW1lci5zdGFydE9u
ZVNob3QoMCk7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2s6OmNhbmNlbCgpCitpbmxpbmUgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OmNhbmNlbCgpCiB7Ci0gICAgaWYgKG1fY2FsbGJhY2tU
aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX2NhbGxiYWNrVGltZXIuc3RvcCgpOworICAgIGlm
IChtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RvcCgpOwogfQogCi12b2lk
IENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNrOjp0aW1lckZpcmVkKFRpbWVy
PENhY2hlZFJlc291cmNlQ2FsbGJhY2s+JikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNr
Ojp0aW1lckZpcmVkKFRpbWVyPENhbGxiYWNrPiYpCiB7Ci0gICAgbV9yZXNvdXJjZS0+ZGlkQWRk
Q2xpZW50KG1fY2xpZW50KTsKKyAgICBtX3Jlc291cmNlLmRpZEFkZENsaWVudCgmbV9jbGllbnQp
OwogfQogCiAjaWYgVVNFKEZPVU5EQVRJT04pCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBs
YWNlRW5jb2RlZERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IG5ld0J1ZmZlcikKKwordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3
QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC03NjIsMTEg
Kzc2MCwxMiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IG5ld0J1ZmZlcikKICAgICAvLyBXZSBoYXZlIHRvIGRvIHRo
ZSBtZW1jbXAgYmVjYXVzZSB3ZSBjYW4ndCB0ZWxsIGlmIHRoZSByZXBsYWNlbWVudCBmaWxlIGJh
Y2tlZCBkYXRhIGlzIGZvciB0aGUKICAgICAvLyBzYW1lIHJlc291cmNlIG9yIGlmIHdlIG1hZGUg
YSBzZWNvbmQgcmVxdWVzdCB3aXRoIHRoZSBzYW1lIFVSTCB3aGljaCBnYXZlIHVzIGEgZGlmZmVy
ZW50CiAgICAgLy8gcmVzb3VyY2UuIFdlIGhhdmUgc2VlbiB0aGlzIGhhcHBlbiBmb3IgY2FjaGVk
IFBPU1QgcmVzb3VyY2VzLgotICAgIGlmIChtX2RhdGEtPnNpemUoKSAhPSBuZXdCdWZmZXItPnNp
emUoKSB8fCBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG5ld0J1ZmZlci0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSkpCisgICAgaWYgKG1fZGF0YS0+c2l6ZSgpICE9IG5ld0J1ZmZlci5zaXplKCkgfHwg
bWVtY21wKG1fZGF0YS0+ZGF0YSgpLCBuZXdCdWZmZXIuZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+dHJ5UmVwbGFjZVNoYXJlZEJ1ZmZlckNv
bnRlbnRzKG5ld0J1ZmZlci5nZXQoKSk7CisgICAgbV9kYXRhLT50cnlSZXBsYWNlQ29udGVudHNX
aXRoUGxhdGZvcm1CdWZmZXIobmV3QnVmZmVyKTsKIH0KKwogI2VuZGlmCiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggOWZiOWIxNGY3ZDA0
NDk2NThjNmI1YTNkNDU5YzRkMGM5NGI4NzRjZC4uYmY2ZTk5NzQxMGVjMjM3MDE4NjkyMjhhZDBj
NThkYjQwZGEyOTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VDbGllbnQ7CiBj
bGFzcyBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlOwotY2xhc3MgUmVzb3VyY2VCdWZmZXI7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNl
TG9hZGVyOwpAQCAtOTYsOSArOTUsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVm
ZmVyKFJlc291cmNlQnVmZmVyKik7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoU2hh
cmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhSZXNvdXJj
ZUJ1ZmZlciopOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciop
OwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAg
IHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vy
cm9yID0gZXJyb3I7IH0KQEAgLTE4Nyw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBjbGVhckxvYWRlcigpOwogCi0gICAgUmVzb3VyY2VCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJj
ZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwpAQCAtMjQ1LDU1ICsyNDQsMzUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKICNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxh
Y2VFbmNvZGVkRGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAK
ICNpZiBVU0UoU09VUCkKLSAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihz
aXplX3QgLyogcmVxdWVzdGVkU2l6ZSAqLywgc2l6ZV90JiAvKiBhY3R1YWxTaXplICovKSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90
IC8qIHJlcXVlc3RlZFNpemUgKi8sIHNpemVfdCYgLyogYWN0dWFsU2l6ZSAqLykgeyByZXR1cm4g
bnVsbHB0cjsgfQogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tO
b3RpZnkoKTsKLQogICAgIHZvaWQgc2V0RW5jb2RlZFNpemUodW5zaWduZWQpOwogICAgIHZvaWQg
c2V0RGVjb2RlZFNpemUodW5zaWduZWQpOwogICAgIHZvaWQgZGlkQWNjZXNzRGVjb2RlZERhdGEo
ZG91YmxlIHRpbWVTdGFtcCk7CiAKKyAgICAvLyBGSVhNRTogTWFrZSB0aGUgcmVzdCBvZiB0aGVz
ZSBkYXRhIG1lbWJlcnMgcHJpdmF0ZSBhbmQgdXNlIGZ1bmN0aW9ucyBpbiBkZXJpdmVkIGNsYXNz
ZXMgaW5zdGVhZC4KICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1f
Y2xpZW50czsKLQotICAgIGNsYXNzIENhY2hlZFJlc291cmNlQ2FsbGJhY2sgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VDYWxsYmFjayhDYWNoZWRSZXNvdXJjZSosIENhY2hl
ZFJlc291cmNlQ2xpZW50Kik7Ci0KLSAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDYWNo
ZWRSZXNvdXJjZUNhbGxiYWNrPiBzY2hlZHVsZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIENh
Y2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fj
aGVkUmVzb3VyY2VDYWxsYmFjaz4ocmVzb3VyY2UsIGNsaWVudCk7IH0KLSAgICAgICAgdm9pZCBj
YW5jZWwoKTsKLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8Q2Fj
aGVkUmVzb3VyY2VDYWxsYmFjaz4mKTsKLQotICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9yZXNv
dXJjZTsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIG1fY2xpZW50OwotICAgICAgICBU
aW1lcjxDYWNoZWRSZXNvdXJjZUNhbGxiYWNrPiBtX2NhbGxiYWNrVGltZXI7Ci0gICAgfTsKLSAg
ICBIYXNoTWFwPENhY2hlZFJlc291cmNlQ2xpZW50Kiwgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFJl
c291cmNlQ2FsbGJhY2s+PiBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrOwotCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwotICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
LSAgICBTdHJpbmcgbV9hY2NlcHQ7CiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xv
YWRlcjsKICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgbV9vcHRpb25zOwotICAgIFJlc291cmNl
TG9hZFByaW9yaXR5IG1fbG9hZFByaW9yaXR5OwotCiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwotICAgIGRvdWJsZSBtX3Jlc3BvbnNlVGltZXN0YW1wOwotCi0gICAgUmVmUHRyPFJl
c291cmNlQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwog
ICAgIERlZmVycmFibGVPbmVTaG90VGltZXIgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXI7CiAK
IHByaXZhdGU6CisgICAgY2xhc3MgQ2FsbGJhY2s7CisKICAgICBib29sIGFkZENsaWVudFRvU2V0
KENhY2hlZFJlc291cmNlQ2xpZW50Kik7CiAKICAgICB2b2lkIGRlY29kZWREYXRhRGVsZXRpb25U
aW1lckZpcmVkKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKTsKICAgICB2aXJ0
dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIGRvdWJsZSBmcmVzaG5lc3NMaWZldGltZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgY29uc3Q7CkBAIC0zMDEsNiArMjgwLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRBZGRp
dGlvbmFsUmVxdWVzdEhlYWRlcnMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGZh
aWxCZWZvcmVTdGFydGluZygpOwogCisgICAgSGFzaE1hcDxDYWNoZWRSZXNvdXJjZUNsaWVudCos
IHN0ZDo6dW5pcXVlX3B0cjxDYWxsYmFjaz4+IG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2s7Cisg
ICAgU2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIFN0cmluZyBtX2FjY2VwdDsKKyAgICBSZXNv
dXJjZUxvYWRQcmlvcml0eSBtX2xvYWRQcmlvcml0eTsKKyAgICBkb3VibGUgbV9yZXNwb25zZVRp
bWVzdGFtcDsKKwogICAgIFN0cmluZyBtX2ZyYWdtZW50SWRlbnRpZmllckZvclJlcXVlc3Q7CiAK
ICAgICBSZXNvdXJjZUVycm9yIG1fZXJyb3I7CkBAIC0zMzgsNyArMzIzLDcgQEAgcHJpdmF0ZToK
ICAgICBDYWNoZWRSZXNvdXJjZSogbV9uZXh0SW5MaXZlUmVzb3VyY2VzTGlzdDsKICAgICBDYWNo
ZWRSZXNvdXJjZSogbV9wcmV2SW5MaXZlUmVzb3VyY2VzTGlzdDsKIAotICAgIENhY2hlZFJlc291
cmNlTG9hZGVyKiBtX293bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyOyAvLyBvbmx5IG5vbi0wIGZv
ciByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGluIHRoZSBjYWNoZQorICAgIENhY2hlZFJlc291cmNl
TG9hZGVyKiBtX293bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyOyAvLyBvbmx5IG5vbi1udWxsIGZv
ciByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGluIHRoZSBjYWNoZQogICAgIAogICAgIC8vIElmIHRo
aXMgZmllbGQgaXMgbm9uLW51bGwgd2UgYXJlIHVzaW5nIHRoZSByZXNvdXJjZSBhcyBhIHByb3h5
IGZvciBjaGVja2luZyB3aGV0aGVyIGFuIGV4aXN0aW5nIHJlc291cmNlIGlzIHN0aWxsIHVwIHRv
IGRhdGUKICAgICAvLyB1c2luZyBIVFRQIElmLU1vZGlmaWVkLVNpbmNlL0lmLU5vbmUtTWF0Y2gg
aGVhZGVycy4gSWYgdGhlIHJlc3BvbnNlIGlzIDMwNCBhbGwgY2xpZW50cyBvZiB0aGlzIHJlc291
cmNlIGFyZSBtb3ZlZApAQCAtMzU1LDYgKzM0MCwyMCBAQCBwcml2YXRlOgogICAgIFJlZGlyZWN0
Q2hhaW5DYWNoZVN0YXR1cyBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czsKIH07CiAKK2NsYXNz
IENhY2hlZFJlc291cmNlOjpDYWxsYmFjayB7CitwdWJsaWM6CisgICAgQ2FsbGJhY2soQ2FjaGVk
UmVzb3VyY2UmLCBDYWNoZWRSZXNvdXJjZUNsaWVudCYpOworCisgICAgdm9pZCBjYW5jZWwoKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8Q2FsbGJhY2s+Jik7CisKKyAg
ICBDYWNoZWRSZXNvdXJjZSYgbV9yZXNvdXJjZTsKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudCYg
bV9jbGllbnQ7CisgICAgVGltZXI8Q2FsbGJhY2s+IG1fdGltZXI7Cit9OworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQUNIRURfUkVT
T1VSQ0UoVG9DbGFzc05hbWUsIENhY2hlZFJlc291cmNlVHlwZSkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAppbmRleCA5NjkzM2Ux
M2Q1NGQ3M2MyYzY0YTRiMTdjYzg0NzdjYzQ4MWU5NzlkLi43NTk1MTEwNDk3MTZkMjg4YjNkZmE0
YThlYzhmYjcxNjAyMzY4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaApAQCAtMjUsOSArMjUsOCBAQAogI2lmbmRlZiBDYWNo
ZWRSZXNvdXJjZUNsaWVudF9oCiAjZGVmaW5lIENhY2hlZFJlc291cmNlQ2xpZW50X2gKIAotI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2U7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50IHsKQEAgLTQ0LDEz
ICs0MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VDbGllbnQoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSopIHsgfQotICAgIAorCiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50
VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBCYXNlUmVzb3VyY2VUeXBlOyB9CiAgICAgdmly
dHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIENhY2hlZFJlc291
cmNlQ2xpZW50KCkgeyB9CiB9OworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggMzJhNjFiM2IzYTkzOTgw
NjlhMWQyZmJmZjVkNzZlOTZmODRiNTdiYi4uYTUyMzAyMDFiMGY3MTBkMzlhNWJkYmIxYTZkNmEy
Yjg1MjYwN2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwCkBAIC0yMywxMCArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50LmgiCiAKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUNsaWVudC5oIgotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAi
UmVzb3VyY2VCdWZmZXIuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEs
NyArNDgsNyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRT
VkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2Fj
aGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAg
IGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZy
YW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxl
bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmgKaW5kZXggYzFjNjAzZjM0MjljYzFlYzhiYTU1MGMwYzU1MDBmYjlhYmMyNjZhYi4uYTc5MWNk
ODMxZDM2ZmE1YzhlZmE3NTZjZWUyYmMxYzA3Y2FjZDM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTM3LDE1ICszNywxNCBAQCBw
dWJsaWM6CiAKICAgICBTVkdEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50LmdldCgpOyB9CiAKLXByb3RlY3RlZDoKLSAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1f
ZG9jdW1lbnQ7Ci0gICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLQog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNl
QnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKikgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CisgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKaW5kZXggZjcxYTVlOGFhZWNlOGIzYWIxOTVkZTY1NGUxNDExZDM3OTVlYTAwMy4u
ZjhiYzMzYzdiMzI1MWRjNDIzODBmNWM0NjgzZmY0ZTk0ZTM0OWQ5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNp
bmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtNzYsMTQgKzc2LDEzIEBAIGNvbnN0IFN0cmluZyYgQ2FjaGVkU2NyaXB0Ojpz
Y3JpcHQoKQogICAgICAgICBzZXREZWNvZGVkU2l6ZShtX3NjcmlwdC5zaXplSW5CeXRlcygpKTsK
ICAgICB9CiAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIucmVzdGFydCgpOwotICAgIAog
ICAgIHJldHVybiBtX3NjcmlwdDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRp
bmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNv
ZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhkYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oCmluZGV4IDkxYzk4NmEyNTRiOWMzNzFjMmZkMTlmM2RmOTg5NDU3NDdlOWJlMDYu
LjkzOGU5MTg3Y2VhNGMwOWMyZDcwYmU2MjE3YTY0OWJkZDc3MzIzZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTMwLDM2ICszMCwzNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKLSAg
ICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOworY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsK
IAotICAgIGNsYXNzIENhY2hlZFNjcmlwdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7
Ci0gICAgcHVibGljOgotICAgICAgICBDYWNoZWRTY3JpcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBTZXNzaW9uSUQpOwotICAgICAgICB2aXJ0dWFsIH5D
YWNoZWRTY3JpcHQoKTsKK2NsYXNzIENhY2hlZFNjcmlwdCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZSB7CitwdWJsaWM6CisgICAgQ2FjaGVkU2NyaXB0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgU2Vzc2lvbklEKTsKKyAgICB2aXJ0dWFsIH5DYWNo
ZWRTY3JpcHQoKTsKIAotICAgICAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpOworICAgIGNvbnN0
IFN0cmluZyYgc2NyaXB0KCk7CiAKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlKCkgY29uc3Q7Cisg
ICAgU3RyaW5nIG1pbWVUeXBlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTk9TTklGRikKLSAgICAg
ICAgYm9vbCBtaW1lVHlwZUFsbG93ZWRCeU5vc25pZmYoKSBjb25zdDsKKyAgICBib29sIG1pbWVU
eXBlQWxsb3dlZEJ5Tm9zbmlmZigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVw
bGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVy
cm9ycygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2Rp
bmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmco
UmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqKSBvdmVycmlkZTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJy
aWRlOwogCi0gICAgICAgIFN0cmluZyBtX3NjcmlwdDsKLSAgICAgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICB9OworICAgIFN0cmluZyBtX3NjcmlwdDsKKyAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwCmluZGV4IDcwOWZhZDg0NDNiN2JjMWEzOGYxZWE4MGQyNjRmZjBkMjkzZDk5
NzAuLjcxNTU5MjIwNTdlZWFlZGYxZjA1ZDBkMDdmZGYwYjUwZTZkZGZhY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgpAQCAtNDQsMjQgKzQzLDI2IEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNr
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBTZXNzaW9uCiB7CiB9CiAK
LUNhY2hlZFRleHRUcmFjazo6fkNhY2hlZFRleHRUcmFjaygpCit2b2lkIENhY2hlZFRleHRUcmFj
azo6dXBkYXRlRGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiB7Ci19Ci0KLXZvaWQgQ2FjaGVkVGV4
dFRyYWNrOjphZGREYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKiBkYXRhKQotewotICAgIEFTU0VS
VChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOworICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSk7CiAgICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6
IDApOworICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIo
bV9jbGllbnRzKTsKLSAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmNsaWVudCA9IHdh
bGtlci5uZXh0KCkpCisgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQgPSB3
YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVk
UmVzb3VyY2UodGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5n
KFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmFkZERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQoreworICAgIHVwZGF0ZURhdGEoJmRhdGEpOworICAgIENh
Y2hlZFJlc291cmNlOjphZGREYXRhQnVmZmVyKGRhdGEpOworfQorCit2b2lkIENhY2hlZFRleHRU
cmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7Ci0gICAgYWRkRGF0YUJ1
ZmZlcihkYXRhKTsKKyAgICB1cGRhdGVEYXRhKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGRhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggNGMzZjM4YWQ0NjhlMTUxYTgwMTJhOWQ5Y2U5MTRmYjM4
YjNiMmQ1Mi4uM2MxMTI3ZTgzYjg5OWI0M2IzODBhOTYzYjk2NmQ2M2VlNmJjYWRjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzYsMTIg
KzM2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFRleHRUcmFjayBmaW5h
bCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgQ2FjaGVkVGV4dFRyYWNr
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+Q2FjaGVk
VGV4dFRyYWNrKCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VF
bmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgYWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHVwZGF0ZURhdGEoU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAKaW5kZXggNjZmMWVjNWE3YWU0YmViMzE0NTMxNThkZGUyZjk5NmQxOWI0MmU3NS4u
Nzc5NTJiOGFjYzAxMmU3M2U5ZTc5YTlmNGI4NzYzODI3NDgwMzdmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtMjks
NyArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNp
bmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZm
ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00Niw2ICs0NiwxMCBAQCBD
YWNoZWRYU0xTdHlsZVNoZWV0OjpDYWNoZWRYU0xTdHlsZVNoZWV0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0LAogICAgIHNldEFjY2VwdCgidGV4dC94bWwsIGFwcGxpY2F0
aW9uL3htbCwgYXBwbGljYXRpb24veGh0bWwreG1sLCB0ZXh0L3hzbCwgYXBwbGljYXRpb24vcnNz
K3htbCwgYXBwbGljYXRpb24vYXRvbSt4bWwiKTsKIH0KIAorQ2FjaGVkWFNMU3R5bGVTaGVldDo6
fkNhY2hlZFhTTFN0eWxlU2hlZXQoKQoreworfQorCiB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKIHsgIAogICAgIEFTU0VSVChj
LT5yZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50OjpleHBlY3Rl
ZFR5cGUoKSk7CkBAIC02MywxMiArNjcsMTIgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUo
KTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFJlc291cmNl
QnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgaWYgKG1fZGF0YS5n
ZXQoKSkKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRh
LT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggZDk5MjFjMmM1ODAz
MTY3MmRhMjM4N2E4YzZiNzJkYTUyMjVjNDViOC4uMGUwMGU2NzY2NmE0MDRhMWZhZDI5YWEyOTUz
OWYzZThiZjU0MWM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCkBAIC0yOSwzNCArMjksMjkgQEAKICNpZiBFTkFCTEUoWFNMVCkK
IAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
LSAgICBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOworY2xhc3MgVGV4dFJlc291cmNlRGVjb2Rl
cjsKIAotICAgIGNsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkWFNMU3R5bGVTaGVldChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOworY2xhc3MgQ2FjaGVkWFNMU3R5bGVTaGVl
dCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CitwdWJsaWM6CisgICAgQ2FjaGVkWFNM
U3R5bGVTaGVldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOworICAgIHZpcnR1
YWwgfkNhY2hlZFhTTFN0eWxlU2hlZXQoKTsKIAotICAgICAgICBjb25zdCBTdHJpbmcmIHNoZWV0
KCkgY29uc3QgeyByZXR1cm4gbV9zaGVldDsgfQorICAgIGNvbnN0IFN0cmluZyYgc2hlZXQoKSBj
b25zdCB7IHJldHVybiBtX3NoZWV0OyB9CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRlOworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tOb3RpZnkoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFj
ZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKIAotICAgICAgICBTdHJp
bmcgbV9zaGVldDsKLSAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2Rl
cjsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5j
b2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopIG92ZXJyaWRlOwot
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlk
ZTsKLSAgICB9OworICAgIFN0cmluZyBtX3NoZWV0OworICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcAppbmRleCA1
NzY3NjA0YWVkNTM5ZWM5OWUxODBkNTk3ZGU5ZTk4N2NkM2VmODhiLi42OWUyOTk3ZjRlY2Y1YjE0
YzA1NTBlMmExOWUxYTg2MTE2ZThkMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCkBAIC01MSw4ICs1MSw4IEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCiAg
ICAgICAgICAgICAvLyBiZWluZyBjYW5jZWxsZWQuIEJhaWwgb3V0IGlmIHdlIG5vIGxvbmdlciBo
YXZlIGEgY2FjaGVkIHJlc291cmNlLgogICAgICAgICAgICAgaWYgKCFtX3Jlc291cmNlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChSZXNvdXJjZUJ1ZmZlciogcmVz
b3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCi0gICAgICAgICAgICAgICAgbV9yZXNv
dXJjZS0+YWRkRGF0YUJ1ZmZlcihyZXNvdXJjZURhdGEpOworICAgICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQorICAgICAgICAgICAgICAgIG1f
cmVzb3VyY2UtPmFkZERhdGFCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBDRkRhdGFSZWYgY2ZEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxD
RkRhdGFSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZGF0YUFycmF5LCBpKSk7CiAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAq
PihDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGYxMmUzOTk4MmE0ODMyNjNl
OTFlY2MxYTVkM2Y1YjYxMjcwMGQxZDAuLmEzNTM5YjhiMTdmMDgxY2Y4MjFlNzc4YTA2MjJiNTg4
ZmQ3N2E2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIFdFQkNPUkVfRVhQT1JUIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgU2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggY2E2MDhmN2Q2NTE3OTFlOTI1
Yzg5ZWI0MjY3ZGNiZjQ2OWI2ZDVjZi4uMWMxYmQ1ZWU5MGYwZWE4YWUyNzRkYWJjNzcxZWZiMTBk
ZDM4NzE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNo
ZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6
RGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlc3Npb25J
RCBzZXMKICAgICAgICAgaWYgKCFmaWxlQmFja2VkQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIG1vbml0b3ItPnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChmaWxlQmFja2Vk
QnVmZmVyKTsKKyAgICAgICAgbW9uaXRvci0+cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKCpmaWxl
QmFja2VkQnVmZmVyKTsKICAgICB9OwogCiAjaWYgVVNFKFdFQl9USFJFQUQpCkBAIC0xMjEsNyAr
MTIxLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXMKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25z
ZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1Rv
UnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25p
dG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGZp
bGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmls
ZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JSZXF1ZXN0KG1fcmVz
b3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5kZXggNTQwMmViMDg2M2M1OGMyYWYy
YjA0OGJhOWFjNzQ0NzdmYzE5MzQ3OC4uNTY5MjFjZDkzNzdmYzEyZTBlZTFkMDNkOTM0NDA3MWM0
YWI0Y2JmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKQEAg
LTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJJY29uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIklj
b25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg1LDE2ICs4NCwxNiBA
QCB2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKIAogICAgIC8vIElmIHdlIGdvdCBhIHN0YXR1cyBjb2RlIGluZGljYXRpbmcgYW4gaW52YWxp
ZCByZXNwb25zZSwgdGhlbiBsZXRzCiAgICAgLy8gaWdub3JlIHRoZSBkYXRhIGFuZCBub3QgdHJ5
IHRvIGRlY29kZSB0aGUgZXJyb3IgcGFnZSBhcyBhbiBpY29uLgotICAgIFJlZlB0cjxSZXNvdXJj
ZUJ1ZmZlcj4gZGF0YSA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgIGF1dG8qIGRh
dGEgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICBpbnQgc3RhdHVzID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0
dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkKLSAgICAgICAgZGF0YSA9IDA7CisgICAgICAgIGRh
dGEgPSBudWxscHRyOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgcGRmTWFnaWNOdW1iZXJbXSA9
ICIlUERGIjsKICAgICBzdGF0aWMgdW5zaWduZWQgcGRmTWFnaWNOdW1iZXJMZW5ndGggPSBzaXpl
b2YocGRmTWFnaWNOdW1iZXIpIC0gMTsKICAgICBpZiAoZGF0YSAmJiBkYXRhLT5zaXplKCkgPj0g
cGRmTWFnaWNOdW1iZXJMZW5ndGggJiYgIW1lbWNtcChkYXRhLT5kYXRhKCksIHBkZk1hZ2ljTnVt
YmVyLCBwZGZNYWdpY051bWJlckxlbmd0aCkpIHsKICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwg
Ikljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIElnbm9yaW5nIGljb24gYXQgJXMgYmVjYXVz
ZSBpdCBhcHBlYXJzIHRvIGJlIGEgUERGIiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lp
KCkuZGF0YSgpKTsKLSAgICAgICAgZGF0YSA9IDA7CisgICAgICAgIGRhdGEgPSBudWxscHRyOwog
ICAgIH0KIAogICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5n
KCkgLSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UiLCByZXNvdXJjZS0+dXJsKCku
c3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMTAyLDcgKzEwMSw3IEBAIHZvaWQgSWNvbkxv
YWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIC8vIFNl
dHRpbmcgdGhlIGljb24gZGF0YSBvbmx5IGFmdGVyIGNvbW1pdHRpbmcgdG8gdGhlIGRhdGFiYXNl
IGVuc3VyZXMgdGhhdCB0aGUgZGF0YSBpcwogICAgIC8vIGtlcHQgaW4gbWVtb3J5IChzbyBpdCBk
b2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkp
LCBzaW5jZQogICAgIC8vIHRoZXJlIGlzIGEgcGFnZSBVUkwgcmVmZXJlbmNpbmcgaXQuCi0gICAg
aWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEgPyBkYXRhLT5zaGFyZWRC
dWZmZXIoKSA6IDAsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKSk7CisgICAgaWNvbkRhdGFiYXNl
KCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKSk7
CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7
CiAgICAgc3RvcExvYWRpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9tYWMvUmVzb3VyY2VCdWZmZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291
cmNlQnVmZmVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGNmOWI3OTA5YzM3
OTQyZGJjZDFhZjFlZDNiZjYyZWRiNGMxYmNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VCdWZm
ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlc291cmNlQnVmZmVyLmgiCi0KLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1SZXRhaW5QdHI8TlNEYXRhPiBSZXNvdXJjZUJ1ZmZlcjo6Y3JlYXRl
TlNEYXRhKCkKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwot
fQotCi12b2lkIFJlc291cmNlQnVmZmVyOjp0cnlSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMo
U2hhcmVkQnVmZmVyKiBuZXdDb250ZW50cykKLXsKLSAgICBpZiAoIW1fc2hhcmVkQnVmZmVyKQot
ICAgICAgICBtX3NoYXJlZEJ1ZmZlciA9IG5ld0NvbnRlbnRzOwotICAgIGVsc2UKLSAgICAgICAg
bV9zaGFyZWRCdWZmZXItPnRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihuZXdD
b250ZW50cyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCmluZGV4IGEwMTVlOTg3YjYwMzJkYTdl
MTE2OGUyNjcyNGU4YzFiM2ZhMDkwODguLjNlY2Q1OTdmZjI5NWY3ZDY3MDg2ODZmNzU4NDRjOWQ2
Y2RmODhjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VM
b2FkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRl
ck1hYy5tbQpAQCAtMzEsMTAgKzMxLDEwIEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKICNpZiBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNl
bmRpZgogCiAjaWYgVVNFKENGTkVUV09SSykKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKIAogICAg
ICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJEYXRhKSB7
CiAgICAgICAgICAgICBpZiAoIW1fcmVzb3VyY2VEYXRhKQotICAgICAgICAgICAgICAgIG1fcmVz
b3VyY2VEYXRhID0gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIG1f
cmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5hcHBlbmQoZGF0YSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYTE2MTJkYjdmNDZmM2M0OTdlZTZhOWNkMjA0ZTM0
Y2YxZjI0MWMyOS4uMDZiZGIzOGI1OTA2ZDhlYzExNGYwYzIxNWNhM2VkMWQzNGIxMjBhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NB
TExCQUNLKQorCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2VnbWVudFNpemUgPSAweDEwMDA7CiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgc2VnbWVudFBvc2l0aW9uTWFzayA9IDB4MEZGRjsKIApAQCAt
NTYsNiArNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZVNlZ21lbnQoY2hhciogcCkKIHsK
ICAgICBmYXN0RnJlZShwKTsKIH0KKwogI2VuZGlmCiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKCkKQEAgLTIxNCw5ICsyMTYsOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogICAg
IGNsZWFyUGxhdGZvcm1EYXRhKCk7CiAgICAgCiAjaWYgIVVTRShORVRXT1JLX0NGREFUQV9BUlJB
WV9DQUxMQkFDSykKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZWdtZW50cy5zaXpl
KCk7ICsraSkKLSAgICAgICAgZnJlZVNlZ21lbnQobV9zZWdtZW50c1tpXSk7Ci0KKyAgICBmb3Ig
KGNoYXIqIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICBmcmVlU2VnbWVudChzZWdtZW50
KTsKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAjZWxzZQogICAgIG1fZGF0YUFycmF5LmNsZWFy
KCk7CkBAIC0yMjYsMjQgKzIyNywyNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogICAg
IGNsZWFyRGF0YUJ1ZmZlcigpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjb3B5KCkgY29uc3QKK1Bhc3NSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNvcHkoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lKGFkb3B0UmVm
KG5ldyBTaGFyZWRCdWZmZXIpKTsKKyAgICBQYXNzUmVmPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgeyBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcikgfTsKICAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKCkp
IHsKLSAgICAgICAgY2xvbmUtPmFwcGVuZChkYXRhKCksIHNpemUoKSk7CisgICAgICAgIGNsb25l
LmdldCgpLmFwcGVuZChkYXRhKCksIHNpemUoKSk7CiAgICAgICAgIHJldHVybiBjbG9uZTsKICAg
ICB9CiAKLSAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwotICAgIGNsb25lLT5tX2J1ZmZlci0+
ZGF0YS5yZXNlcnZlQ2FwYWNpdHkobV9zaXplKTsKLSAgICBjbG9uZS0+bV9idWZmZXItPmRhdGEu
YXBwZW5kKG1fYnVmZmVyLT5kYXRhLmRhdGEoKSwgbV9idWZmZXItPmRhdGEuc2l6ZSgpKTsKKyAg
ICBjbG9uZS5nZXQoKS5tX3NpemUgPSBtX3NpemU7CisgICAgY2xvbmUuZ2V0KCkubV9idWZmZXIt
PmRhdGEucmVzZXJ2ZUNhcGFjaXR5KG1fc2l6ZSk7CisgICAgY2xvbmUuZ2V0KCkubV9idWZmZXIt
PmRhdGEuYXBwZW5kKG1fYnVmZmVyLT5kYXRhLmRhdGEoKSwgbV9idWZmZXItPmRhdGEuc2l6ZSgp
KTsKKwogI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNsb25l
LT5tX2J1ZmZlci0+ZGF0YS5hcHBlbmQobV9zZWdtZW50c1tpXSwgc2VnbWVudFNpemUpOworICAg
IGZvciAoY2hhciogc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgIGNsb25lLmdldCgpLm1f
YnVmZmVyLT5kYXRhLmFwcGVuZChzZWdtZW50LCBzZWdtZW50U2l6ZSk7CiAjZWxzZQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGFBcnJheS5zaXplKCk7ICsraSkKLSAgICAgICAg
Y2xvbmUtPmFwcGVuZChtX2RhdGFBcnJheVtpXS5nZXQoKSk7CisgICAgZm9yIChhdXRvJiBkYXRh
IDogbV9kYXRhQXJyYXkpCisgICAgICAgIGNsb25lLmdldCgpLmFwcGVuZChkYXRhLmdldCgpKTsK
ICNlbmRpZgorCiAgICAgcmV0dXJuIGNsb25lOwogfQogCkBAIC0yNzUsMTcgKzI3OCwxOSBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXJEYXRhQnVmZmVyKCkKIH0KIAogI2lmICFVU0UoTkVUV09S
S19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisKIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5QnVmZmVy
QW5kQ2xlYXIoY2hhciogZGVzdGluYXRpb24sIHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBjb25zdAog
ewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytpKSB7
CisgICAgZm9yIChjaGFyKiBzZWdtZW50IDogbV9zZWdtZW50cykgewogICAgICAgICB1bnNpZ25l
ZCBlZmZlY3RpdmVCeXRlc1RvQ29weSA9IHN0ZDo6bWluKGJ5dGVzVG9Db3B5LCBzZWdtZW50U2l6
ZSk7Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgbV9zZWdtZW50c1tpXSwgZWZmZWN0aXZl
Qnl0ZXNUb0NvcHkpOworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNlZ21lbnQsIGVmZmVj
dGl2ZUJ5dGVzVG9Db3B5KTsKICAgICAgICAgZGVzdGluYXRpb24gKz0gZWZmZWN0aXZlQnl0ZXNU
b0NvcHk7CiAgICAgICAgIGJ5dGVzVG9Db3B5IC09IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5OwotICAg
ICAgICBmcmVlU2VnbWVudChtX3NlZ21lbnRzW2ldKTsKKyAgICAgICAgZnJlZVNlZ21lbnQoc2Vn
bWVudCk7CiAgICAgfQogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKIH0KKwogI2VuZGlmCiAKIGNv
bnN0IFZlY3RvcjxjaGFyPiYgU2hhcmVkQnVmZmVyOjpidWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjY2IwMjlkNzk4MThmNmQ5Y2JkN2FmYmU2
NTUwNGUwNTY2OWI3M2U5Li5mNTkxMjlhMTNhZDg2MTljYjY0NmUzNDczM2UwYjZlOGMwNThmODQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTAyLDcgKzEwMiw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwogI2VuZGlmCiAKLSAgICBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFBhc3NSZWY8U2hhcmVk
QnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2Yg
Y29uc2VjdXRpdmUgYnl0ZXMgYWZ0ZXIgInBvc2l0aW9uIi4gImRhdGEiCiAgICAgLy8gcG9pbnRz
IHRvIHRoZSBmaXJzdCBieXRlLgpAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICAvLyAg
ICAgIH0KICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBnZXRTb21lRGF0YShjb25zdCBjaGFy
KiYgZGF0YSwgdW5zaWduZWQgcG9zaXRpb24gPSAwKSBjb25zdDsKIAotICAgIHZvaWQgdHJ5UmVw
bGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQg
dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzUGxhdGZvcm1EYXRhKCkgY29uc3Q7CiAKICAgICBzdHJ1
Y3QgRGF0YUJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhQnVmZmVyPiB7
CkBAIC0xNTgsNiArMTU4LDcgQEAgcHJpdmF0ZToKICNlbHNlCiAgICAgbXV0YWJsZSBWZWN0b3I8
Y2hhcio+IG1fc2VnbWVudHM7CiAjZW5kaWYKKwogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX2NmRGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRl
eCA1Njc3MDdiZmM3ZmI5N2FkZTUxY2I5MzNiNTZjOGVkMGI1OGZhZmU1Li5iYmYxODVlMDA3MjNi
MTNlNzYwOTNmYzJjMTY1MWQzNjY1M2VlMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC05MiwxMyArOTIsMTMgQEAgdm9pZCBTaGFyZWRC
dWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkKICAgICBtX2NmRGF0YSA9IDA7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjp0cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIoU2hhcmVk
QnVmZmVyKiBuZXdDb250ZW50cykKK3ZvaWQgU2hhcmVkQnVmZmVyOjp0cnlSZXBsYWNlQ29udGVu
dHNXaXRoUGxhdGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyJiBuZXdDb250ZW50cykKIHsKLSAgICBp
ZiAoIW5ld0NvbnRlbnRzLT5tX2NmRGF0YSkKKyAgICBpZiAoIW5ld0NvbnRlbnRzLm1fY2ZEYXRh
KQogICAgICAgICByZXR1cm47CiAKICAgICBjbGVhcigpOwotICAgIG1fY2ZEYXRhID0gbmV3Q29u
dGVudHMtPm1fY2ZEYXRhOworICAgIG1fY2ZEYXRhID0gbmV3Q29udGVudHMubV9jZkRhdGE7CiB9
CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjptYXliZUFwcGVuZFBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXIqIG5ld0NvbnRlbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODkxZDhj
NzcxYzNmNTY1N2I2MzJjYjE2OThiZjdmZGUyZjY5MmViLi41MzJhYzg0MGE3OWVhNmE3NmMwNWNk
Mzc1YzkxZGVmZDgxOGY5NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJfaAogCiAjaWYg
RU5BQkxFKFZJREVPKQorCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzUsNyArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQzLDEwICs0Myw5IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqLCBp
bnQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJSZWNlaXZlZChTaGFyZWRCdWZmZXIqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291
cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJj
ZUVycm9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChTaGFyZWRCdWZmZXIq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKCkgeyB9CiAjaWYgVVNFKFNPVVAp
CiAgICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IC8qcmVxdWVz
dGVkU2l6ZSovLCBzaXplX3QmIC8qYWN0dWFsU2l6ZSovKSB7IHJldHVybiBudWxscHRyOyB9Owog
I2VuZGlmCkBAIC02OCw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGlkUGFz
c0FjY2Vzc0NvbnRyb2xDaGVjaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQorICAgIGV4cGxpY2l0IFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCiAgICAgICAgIDogbV9jbGllbnQoV1RGOjptb3ZlKGNs
aWVudCkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3Jl
QVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA1ZjRiYjk3Y2M1N2JkMGZhOGU1ZTNkMGUyMWM3
ZDE1ZDlhMWUxYzIyLi45NzJkNjEzNWVkNjNiMGI4MGUyMzhkNzM4OTJlMDk5MjlhNjJiZDgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU29mdExpbmtpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBmMjBlNmEwNTg0YzhkNGZkMWNhNjA4YjA0
YmFjYzg1MGM4MThlZWQ2Li4zZTY1YTUxODkxY2MwZDMxNzM5ZGI1N2U0OTFmMmMyN2NhM2IzOWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW1wb3J0ICJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgiCi0jaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5oIgog
I2ltcG9ydCAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIu
aCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCkBAIC0xNTIsNyArMTUxLDcgQEAgdm9pZCBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI6OmZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJl
c291cmNlKiByZXNvdXIKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBTaGFyZWRCdWZmZXIqIGRhdGEgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSA/IHJl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKSA6IDA7CisgICAgU2hhcmVk
QnVmZmVyKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKaW5kZXggZjlkNzk5MTIzYWIyYTQ1ZTU4MTg4YjY3NTFjYzhlY2IzZTE4YTFhNS4u
MTJmZGViYTliNjdmMjU2ZWE0Y2U4M2NlYTA4MTlhNWQ0Y2RjMjM2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyQ2wKICAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChjb25z
dCBjaGFyKiwgaW50KSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZCgpIG92ZXJyaWRlOwogfTsKIAogY2xh
c3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVD
bGllbnQsIHB1YmxpYyBTdHJlYW1pbmdDbGllbnQgewpAQCAtMTAzMSw3ICsxMDMxLDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKICAgICBnc3RfYXBwX3NyY19lbmRfb2Zfc3RyZWFtKHNyYy0+cHJpdi0+
YXBwc3JjKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZp
bmlzaGVkKFNoYXJlZEJ1ZmZlciopCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
Ojpsb2FkRmluaXNoZWQoKQogewogICAgIGhhbmRsZU5vdGlmeUZpbmlzaGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGNlYTkwNDg1
MzVhZjMzOTEwNDQ1NTM2YWY4YTUwZDc4NzMxMDJkZjguLjUwMWEzOGNhNTcyOWVjYjdhOTgxNjQ0
OTQ3ZDcxZDMyN2YxZjJmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRl
Z3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiUmVuZGVySW1h
Z2UuaCIKLSNpbXBvcnQgIlJlc291cmNlQnVmZmVyLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1w
b3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0
cmluZ0V4dHJhcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9T
aGFyZWRCdWZmZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVk
QnVmZmVyU291cC5jcHAKaW5kZXggMzc3NzJmZThmZWQ0MGM0ZGRjNjVmMWI3YzhjOTY2ZDQ5NDU3
NDYwYy4uMjliY2RiNzQ0MWU3ZTBmMTUwYWMwM2RkMzBhZjc5NDM4OGM3MjJhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCkBAIC00
NCwxMSArNDQsNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9ybURhdGEoKQogICAg
IG1fc291cEJ1ZmZlci5yZXNldCgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFj
ZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciopCi17Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgU2hhcmVkQnVmZmVyOjptYXliZVRyYW5zZmVyUGxh
dGZvcm1EYXRhKCkKIHsKICAgICBpZiAoIW1fc291cEJ1ZmZlcikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240721</attachid>
            <date>2014-10-30 19:31:28 -0700</date>
            <delta_ts>2014-10-30 19:31:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138174-20141030193136.patch</filename>
            <type>text/plain</type>
            <size>160189</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzIxMjcwYWYzZGU4NmJj
NTNjMWUwZDhhNmQ1ZDQzYWFmMDM4MDdlOS4uNTk5YTZiNzhlOTE3YTNlNjM1OGQ4ZjRjZmYxNmQy
YTFlOGQ5MmUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNSBAQAorMjAxNC0xMC0zMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRWxpbWluYXRlIFJlc291cmNl
QnVmZmVyIGFuZCB1c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODE3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCB3aXRoIHRl
c3QgY292ZXJhZ2UgYWNyb3NzIG1hbnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogRGVsZXRlZCBSZXNvdXJjZUJ1ZmZlci5jcHAuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjogUmVtb3ZlZCBSZXNvdXJjZUJ1ZmZlci1yZWxhdGVkIHN5bWJvbHMsIGFuZCB1
cGRhdGVkIHN5bWJvbAorICAgICAgICBmb3Igb25lIGZ1bmN0aW9uIHRoYXQgdXNlZCB0byB0YWtl
IGEgUGFzc1JlZlB0ciBidXQgbm93IHRha2VzIGEgcmVmZXJlbmNlIGluc3RlYWQuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBEZWxldGVkIFJlc291cmNlQnVm
ZmVyLmNwcC8uaC4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnM6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGVsZXRlZCBSZXNvdXJjZUJ1ZmZlci5tbS8uY3BwLy5oLgorCisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOiBVc2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5Lgor
ICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRv
UGFzdGVib2FyZCk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcpOiBV
c2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5LCBhbmQKKyAgICAgICAgYWxzbyBwYXNzIGEgcmVmZXJl
bmNlIG9ubHkgaWYgbm9uLW51bGwgcmF0aGVyIHRoYW4gcGFzc2luZyBhIHBvaW50ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOiBEaXR0by4gQWRk
ZWQgYSBtaXNzaW5nIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2Fj
aGVkUmVzb3VyY2VDb250ZW50KTogVXNlIFNoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudCk6IERpdHRv
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxM
b2FkaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEpOiBVc2Ug
U2hhcmVkQnVmZmVyIGRpcmVjdGx5LAorICAgICAgICBhbmQgdXNlIHRoZSBjb3B5IGZ1bmN0aW9u
IHJhdGhlciB0aGFuIGEgaGFuZC13cml0dGVuIGFsdGVybmF0aXZlLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dCk6IERpdHRvLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6IENoYW5nZWQg
bWFpblJlc291cmNlRGF0YSB0byByZXR1cm4gYQorICAgICAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4uIFdvdWxkIGJlIGJldHRlciBpZiBpdCByZXR1cm5lZCBhIFNoYXJlZEJ1ZmZlciYsCisg
ICAgICAgIGJ1dCBpdCBjdXJyZW50bHkgcmV0dXJucyBhIG5ld2x5IGNyZWF0ZWQgYnVmZmVyIHdo
ZW4gdGhlcmUgaXMgc3Vic3RpdHV0ZQorICAgICAgICBkYXRhIGFuZCBjYW4gYWxzbyByZXR1cm4g
bnVsbCwgZXZlbiB0aG91Z2ggbWFueSBjYWxsZXJzIGFzc3VtZSBpdCB3aWxsIG5vdCEKKworICAg
ICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6IFJlbW92ZWQgY2FsbCB0byB1bnVz
ZWQgY2xpZW50CisgICAgICAgIGZ1bmN0aW9uIGJ1ZmZlclJlY2VpdmVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOiBSZW1vdmVkIHVudXNl
ZCBidWZmZXIKKyAgICAgICAgYXJndW1lbnQgdG8gY2xpZW50IGZ1bmN0aW9uIGxvYWRGaW5pc2hl
ZC4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlQnVmZmVyLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcik6IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEpOiBVc2UgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBVc2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOiBEaXR0by4K
KworICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YSk6IFVzZSBTaGFyZWRCdWZmZXIu
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9hZGluZ01h
aW5SZXNvdXJjZSk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6IERpdHRv
LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6IERpdHRvLgorCisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjpkaWRBZGRDbGllbnQpOiBVc2UgU2hhcmVkQnVmZmVyLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmRpZFJlbW92ZUNsaWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcik6IERpdHRvLiBDaGFuZ2Vk
IHRvIHRha2UKKyAgICAgICAgYSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmFkZERhdGFCdWZmZXIpOiBEaXR0by4gQWxzbyBh
ZGRlZCBjYWxsIHRocm91Z2gKKyAgICAgICAgdG8gYmFzZSBjbGFzcyBhbmQgY2hhbmdlZCB0byB0
YWtlIGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjphZGREYXRhKTogRGl0dG8uIEFsc28gYWRkZWQgY2FsbCB0aHJvdWdoIHRv
IGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGlu
Zyk6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOiBEaXR0by4g
QWxzbyBjaGFuZ2VkIHRoZSB0eXBlIG9mIHNvbWUgYml0IGZpZWxkcworICAgICAgICB0byBiZSB1
bnNpZ25lZCBpbnN0ZWFkIG9mIHVuc2lnZW5kIGNoYXIuCisKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKTogVXNlIFNoYXJlZEJ1ZmZlci4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjphZGREYXRhQnVmZmVyKTogRGl0
dG8uIENoYW5nZWQgdG8gdGFrZQorICAgICAgICBhIHJlZmVyZW5jZSByYXRoZXIgdGhhbiBhIHBv
aW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYW5SZXVzZSk6
IERpdHRvLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOiBEaXR0
by4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UpOiBSZW9yZGVyZWQgZGF0
YSBtZW1iZXJzIGR1ZSB0byBjaGFuZ2UKKyAgICAgICAgaW4gaGVhZGVyLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZERhdGFCdWZmZXIpOiBDaGFuZ2VkIGFyZ3VtZW50IHR5
cGUuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudCk6IFJl
ZmFjdG9yZWQgdG8gZWxpbWluYXRlIG9uZSBleHRyYSBoYXNoCisgICAgICAgIHRhYmxlIGxvb2t1
cCBieSB1c2luZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlbW92ZSBmdW5jdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6IFVzZSBzdGQ6
Om1ha2VfdW5pcXVlIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgb2YgdXNpbmcgYSBmdW5jdGlv
biBuYW1lZCAic2NoZWR1bGUiIHRvIGFsbG9jYXRlIHRoZSBjYWxsYmFjayBvYmplY3QuCisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OkNhbGxiYWNrKTogQ2hhbmdl
ZCBmdW5jdGlvbiBhbmQgZGF0YSBtZW1iZXIKKyAgICAgICAgbmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6Y2FuY2VsKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEpOiBD
aGFuZ2VkIHRvIHRha2UgYSBTaGFyZWRCdWZmZXImLgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmg6IENoYW5nZWQgdHlwZXMgdG8gdXNlIFNoYXJlZEJ1ZmZlci4gQWxz
byBtYWRlIG1vc3QKKyAgICAgICAgZGF0YSBtZW1iZXJzIGFuZCBvbmUgZnVuY3Rpb24gbWVtYmVy
IHByaXZhdGUgaW5zdGVhZCBvZiBwcm90ZWN0ZWQuIEFsc28gcmVuYW1lZCB0aGUKKyAgICAgICAg
Q2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2sgZnVuY3Rpb24gQ2FjaGVkUmVz
b3VyY2U6OkNhbGxiYWNrIGFuZCBtb3ZlZAorICAgICAgICBpdHMgZGVmaW5pdGlvbiBvdXQgb2Yg
dGhlIENhY2hlZFJlc291cmNlIGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgor
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKTogVXNlIFNoYXJlZEJ1
ZmZlci4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOiBEaXR0
by4gTWFkZSBkYXRhIG1lbWJlcnMgcHJpdmF0ZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKTogVXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0Lmg6IERpdHRvLiBBbHNvIGZpeGVkIGluZGVudGluZyBhbmQgcmVtb3ZlZCB1bm5lZWRl
ZAorICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9uLgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OnVwZGF0ZURhdGEpOiBBZGRlZCwgc28gdGhhdCBmaW5pc2hMb2FkaW5nIGRvZXMgbm90CisgICAg
ICAgIGNhbGwgYWRkRGF0YUJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFj
azo6YWRkRGF0YUJ1ZmZlcik6IFRha2UgU2hhcmVkQnVmZmVyLCBjYWxsIHVwZGF0ZURhdGEuCisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOiBEaXR0by4K
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6IFRha2Ugb3V0IHVubmVl
ZGVkIGV4cGxpY2l0IG92ZXJyaWRlIG9mIHRoZQorICAgICAgICBkZXN0cnVjdG9yLiBVcGRhdGVk
IGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyk6IFVwZGF0ZWQgdG8gdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOiBUb29rIG91dCB1bm5lZWRlZCBpbmNsdWRl
cywgbWFkZSBldmVyeXRoaW5nCisgICAgICAgIHByaXZhdGUgcmF0aGVyIHRoYW4gcHJvdGVjdGVk
LiBBZGRlZCBhbiBleHBsaWNpdCB2aXJ0dWFsIGNvbnN0cnVjdG9yIHNvIHdlIGNhbgorICAgICAg
ICBjb21waWxlIHdpdGhvdXQga25vd2luZyBob3cgdG8gcmVmL2RlcmVmIFRleHRSZXNvdXJjZURl
Y29kZXIuCisKKyAgICAgICAgKiBsb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6
IFVwZGF0ZWQgdG8gdXNlIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgdG8gY2FsbCBhZGREYXRh
QnVmZmVyIG9ubHkgaWYgdGhlcmUgaXMgYSBuZXcgZGF0YSBidWZmZXIuCisKKyAgICAgICAgKiBs
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6IFVzZSBTaGFyZWRCdWZmZXImIGlu
c3RlYWQgb2YgUGFzc1JlZlB0ci4KKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6RGlza0Nh
Y2hlTW9uaXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKTogRGl0dG8uCisKKyAgICAgICAgKiBsb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKTogVXNlIFNoYXJlZEJ1ZmZlciogaW5zdGVhZCBvZgorICAgICAgICBSZWZQdHI8UmVz
b3VyY2VCdWZmZXI+LgorCisgICAgICAgICogbG9hZGVyL21hYy9SZXNvdXJjZUJ1ZmZlci5tbTog
UmVtb3ZlZC4KKworICAgICAgICAqIGxvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheSk6IFVz
ZSBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjbGVhcik6IFVzZSBhIG1vZGVybiBmb3Ig
bG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSk6IFJldHVybiBhIFBh
c3NSZWYgaW5zdGVhZCBvZiBhIFBhc3NSZWZQdHIsIHNpbmNlCisgICAgICAgIHRoaXMgbmV2ZXIg
cmV0dXJucyBudWxsLiBVc2UgbW9kZXJuIGZvciBsb29wcy4KKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKTogVXNlIGEgbW9kZXJuIGZvciBsb29wLgor
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6IENoYW5nZWQgY29weSB0byByZXR1
cm4gUGFzc1JlZiBpbnN0ZWFkIG9mIFBhc3NSZWZQdHIuCisgICAgICAgIENoYW5nZWQgdHJ5UmVw
bGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyIHRvIHRha2UgYSByZWZlcmVuY2UgcmF0aGVy
IHRoYW4KKyAgICAgICAgYSBwb2ludGVyLgorCisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0cnlSZXBsYWNl
Q29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIpOiBUYWtlIGEgcmVmZXJlbmNlCisgICAgICAgIGlu
c3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmg6IFJlbW92ZWQgdW51c2VkIGZ1bmN0aW9uCisgICAgICAg
IGJ1ZmZlclJlY2VpdmVkIGFuZCB1bm5lZWRlZCBidWZmZXIgYXJndW1lbnQgZnJvbSBsb2FkRmlu
aXNoZWQuIEFsc28gbWFya2VkIHRoZQorICAgICAgICBjb25zdHJ1Y3RvciBleHBsaWNpdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgUmVtb3ZlZCBpbmNsdWRlIG9mIFJlc291cmNlQnVm
ZmVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZSk6IFVzZQorICAgICAgICBT
aGFyZWRCdWZmZXIgZGlyZWN0bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmluaXNoZWQpOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8K
KyAgICAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50LgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06IFJlbW92ZWQgaW5jbHVkZSBvZiBSZXNvdXJj
ZUJ1ZmZlci5oLgorCisgICAgICAgICogcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNw
cDogUmVtb3ZlZCB1bnVzZWQsIHVubmVlZGVkCisgICAgICAgIHRyeVJlcGxhY2VDb250ZW50c1dp
dGhQbGF0Zm9ybUJ1ZmZlciBmdW5jdGlvbi4KKwogMjAxNC0xMC0zMCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbRU1FXSBBZGQgU2V0dGluZyBmb3IgYWNjZXNz
aW5nIHN0b3JhZ2UgbG9jYXRpb24gZm9yIE1lZGlhS2V5cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggYzQ4M2Q3ZGI5ODg4YjM0YTg0YzRlODBkNDcyZjU3ZTFkNTEzMjg0Ni4uMzUxNWIwMDQwM2Jm
Njg5MzY2MDYzMzYxNDlkZWQ4OGVmMzEyYzIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDE0LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBFbGltaW5hdGUgUmVzb3VyY2VCdWZmZXIgYW5kIHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0
bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM4MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2Ug
ZGF0YV0pOiBVc2UgU2hhcmVkQnVmZmVyIGRpcmVjdGx5LgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVz
RHJvcHBlZEF0RGVzdGluYXRpb246XSk6IERpdHRvLgorCiAyMDE0LTEwLTMwICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtFTUVdIEFkZCBTZXR0aW5nIGZvciBh
Y2Nlc3Npbmcgc3RvcmFnZSBsb2NhdGlvbiBmb3IgTWVkaWFLZXlzIGRhdGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwppbmRleCAzYTNiMjAxZjg3NTZlODcyZDE2OTJiNGIyYTAyNGM2NjNhNzRmOGVjLi40MzRjNTdj
MWI1YWIwYmY4YmEwMWViODE5NTVhZDYzNGJlZDY1OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTQtMTAtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIEVsaW1pbmF0ZSBSZXNvdXJjZUJ1ZmZlciBhbmQgdXNlIFNoYXJlZEJ1ZmZlciBk
aXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzgxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0
YSk6IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAgIChXZWJEYXRhU291cmNlOjpz
dWJyZXNvdXJjZUZvclVSTCk6IERpdHRvLgorCiAyMDE0LTEwLTIwICBwZWF2b0BvdXRsb29rLmNv
bSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gQ3Jhc2ggaW4gQVRJ
IGRpc3BsYXkgZHJpdmVyIGluIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggY2MzY2JjYjNjMDA1NTc2Y2RmN2Q2YmEyYmUyMGJiMjY5Yzg5ZTE2OS4uZDVhNmZhYzg5
ZjRmYzU5MzMyMmMyM2JjOTc3YWYxOWEyYzMxMTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYz
IEBACisyMDE0LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBFbGltaW5hdGUgUmVzb3VyY2VCdWZmZXIgYW5kIHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkg
aW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM4MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDogUmVtb3ZlZCBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOiBVc2UgYSByZWZlcmVu
Y2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOiBEaXR0by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya0Rpc2tDYWNoZU1vbml0b3IuaDogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtEaXNrQ2FjaGVNb25pdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKTogRGl0dG8uCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5k
bGVGcm9tU2hhcmVkQnVmZmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVzb3Vy
Y2VCdWZmZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9XZWJSZXNvdXJjZUJ1ZmZl
ci5oOiBSZW1vdmVkLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBSZW1vdmVkIFdlYlJlc291cmNlQnVmZmVyLmNwcC9oLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6IFJlbW92ZWQgdW5uZWVk
ZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkQ2FjaGVSZXNvdXJjZSk6IFVzZSBhIHJlZmVyZW5jZSBpbnN0ZWFkCisgICAgICAgIG9mIGEg
cG9pbnRlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDogRGl0dG8uCisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6
IFVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSk6IERpdHRv
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOiBSZWZhY3RvcmVkIHRv
IG1ha2UgdGhlIHJlbGF0aW9uc2hpcAorICAgICAgICBiZXR3ZWVuIHRoZSBidWZmZXIgYW5kIHRo
ZSBEYXRhUmVmZXJlbmNlIGNsZWFyZXIgYW5kIHRvIGF2b2lkIGhhdmluZyBhIGxvbmctbGl2ZWQK
KyAgICAgICAgRGF0YVJlZmVyZW5jZSBwb2ludGluZyB0byBhbiB1bmRlcmx5aW5nIGJ1ZmZlciB3
aXRoIHVuY2xlYXIgbGlmZXRpbWUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRl
bnRzQXNTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSk6IERpdHRvLiBBbHNvIHVzZSBTaGFyZWRCdWZmZXIg
ZGlyZWN0bHkuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21G
cmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZSk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb250YWluaW5nTGlua0VsZW1lbnQpOiBVc2UgZWxl
bWVudExpbmVhZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVs
ZW1lbnQpOiBVc2UgcmVmZXJlbmNlcyBhbmQgU2hhcmVkQnVmZmVyLgorICAgICAgICBBTHNvIGRp
ZCBhIGJpdCBvZiBvdGhlciBjbGVhbnVwIGluIGhlcmUuCisgICAgICAgIChXZWJLaXQ6OmlzQXNz
aXN0YWJsZUVsZW1lbnQpOiBUYWtlIEVsZW1lbnQmIGluc3RlYWQgb2YgTm9kZSosIHNpbmNlIHRo
YXQncyB3aGF0CisgICAgICAgIHRoZSBjYWxsZXIgaGFzLgorICAgICAgICAoV2ViS2l0OjpuZXh0
QXNzaXN0YWJsZUVsZW1lbnQpOiBDaGFuZ2VkIG5hbWUgdG8gbWF0Y2ggd2hhdCB0aGUgZnVuY3Rp
b24gZG9lcy4KKyAgICAgICAgQWRkZWQgYW4gb2J2aW91c2x5LW1pc3NpbmcgY2hlY2sgb24gdGhl
IHN0YXJ0Tm9kZSBhcmd1bWVudC4gVXBkYXRlZCBmb3IgY2hhbmdlCisgICAgICAgIHRvIGlzQXNz
aXN0YWJsZUVsZW1lbnQgYWJvdmUuIFRha2UgYSBQYWdlJiBpbnN0ZWFkIG9mIGEgUGFnZSouCisg
ICAgICAgIChXZWJLaXQ6Omhhc0Fzc2lzdGFibGVFbGVtZW50KTogQ2hhbmdlZCBuYW1lIHRvIG1h
dGNoIHdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMuCisgICAgICAgIFVwZGF0ZWQgZm9yIGNoYW5nZSB0
byBuZXh0QXNzaXN0YWJsZUVsZW1lbnQgYWJvdmUuIFRvb2sgb3V0IGluY29ycmVjdCBjb21wYXJp
c29uCisgICAgICAgIG9mIGEgQysrIHBvaW50ZXIgdG8gdGhlIE9iamVjdGl2ZS1DIG9iamVjdCBw
b2ludGVyIG5pbC4gVGFrZSBhIFBhZ2UmIGluc3RlYWQgb2YgYSBQYWdlKi4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKTogVXBkYXRlZCBmb3IgYWJvdmUg
Y2hhbmdlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3Jt
YXRpb24pOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCiAyMDE0LTEwLTMwICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtFTUVdIEFkZCBTZXR0aW5nIGZv
ciBhY2Nlc3Npbmcgc3RvcmFnZSBsb2NhdGlvbiBmb3IgTWVkaWFLZXlzIGRhdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYWYzNDcwMTFiMTEyZjIwZTJkNTFjYzdjNDA3M2Q1NTY4MjBkNzVjZi4u
MWIxMjg3OGFlOTZiNzRjMDQxY2E4ZmY2MDQ1YzkwNzM3MjhkMTdjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE4MTYsNyArMTgxNiw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2Fk
ZXIvUG9saWN5Q2FsbGJhY2suY3BwCiAgICAgbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCiAgICAg
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKLSAgICBsb2FkZXIvUmVzb3VyY2VCdWZmZXIuY3Bw
CiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAogICAgIGxvYWRlci9SZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCAxOWEwNjVmMmQ1ZjE3YTRmM2NiOWYzYzJlNzkwMjY0OWU2MTAxOThi
Li43NDNlMjNjYzcwMmM5ZGU4MGY4OGQwODQwOGI3NTk3MWJjNWJhZDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMzQwLDcgKzM0MCw3IEBAIF9fWk43V2ViQ29yZTEzcG9pbnRlckN1cnNvckV2
CiBfX1pON1dlYkNvcmUxM3RvSlNET01XaW5kb3dFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29y
ZTE0Q2FjaGVkUmVzb3VyY2UxMnJlbW92ZUNsaWVudEVQTlNfMjBDYWNoZWRSZXNvdXJjZUNsaWVu
dEUKIF9fWk43V2ViQ29yZTE0Q2FjaGVkUmVzb3VyY2UxNnVucmVnaXN0ZXJIYW5kbGVFUE5TXzI0
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlRQotX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTIx
dHJ5UmVwbGFjZUVuY29kZWREYXRhRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVy
RUVFCitfX1pON1dlYkNvcmUxNENhY2hlZFJlc291cmNlMjF0cnlSZXBsYWNlRW5jb2RlZERhdGFF
Uk5TXzEyU2hhcmVkQnVmZmVyRQogX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTlhZGRDbGll
bnRFUE5TXzIwQ2FjaGVkUmVzb3VyY2VDbGllbnRFCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RM
aXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UXVhZEVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJm
bG93RUVFCiBfX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFdgpAQCAtMzgzLDEzICszODMs
NiBAQCBfX1pON1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVhdGVCbG9iUmVnaXN0cnlFdgog
X19aTjdXZWJDb3JlMTRMb2FkZXJTdHJhdGVneTIxcmVzb3VyY2VMb2FkU2NoZWR1bGVyRXYKIF9f
Wk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kyNWxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlFUE5T
XzE3TmV0d29ya2luZ0NvbnRleHRFbVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFTlNfMTdTdG9yZWRD
cmVkZW50aWFsc0VOU18yMkNsaWVudENyZWRlbnRpYWxQb2xpY3lFUk5TXzEzUmVzb3VyY2VFcnJv
ckVSTlNfMTZSZXNvdXJjZVJlc3BvbnNlRVJOM1dURjZWZWN0b3JJY0xtMEVOU0NfMTVDcmFzaE9u
T3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQxMnBsdWdpbldpZGdldEV2
Ci1fX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyMTJjcmVhdGVOU0RhdGFFdgotX19aTjdXZWJD
b3JlMTRSZXNvdXJjZUJ1ZmZlcjZhcHBlbmRFUEtjagotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1
ZmZlckMxRVBLY2oKLV9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJDMUV2Ci1fX1pON1dlYkNv
cmUxNFJlc291cmNlQnVmZmVyQzJFdgotX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckQxRXYK
LV9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJEMkV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNl
SGFuZGxlMTJmaXJzdFJlcXVlc3RFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTE2c2V0
RGVmZXJzTG9hZGluZ0ViCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRl
bnRTbmlmZmluZ0V2CkBAIC0xNzI4LDkgKzE3MjEsNiBAQCBfX1pOSzdXZWJDb3JlMTRGcmFtZVNl
bGVjdGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlc0VSTjNXVEY2VmVjdG9ySU5T
XwogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2
CiBfX1pOSzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRlbTEwbWFya2VyVGV4dEV2Ci1fX1pOSzdXZWJD
b3JlMTRSZXNvdXJjZUJ1ZmZlcjRkYXRhRXYKLV9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVy
NHNpemVFdgotX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI3aXNFbXB0eUV2CiBfX1pOSzdX
ZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTEwY29ubmVjdGlvbkV2CiBfX1pOSzdXZWJDb3JlMTRSZXNv
dXJjZUxvYWRlcjExZnJhbWVMb2FkZXJFdgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIz
MmlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzRXYKQEAgLTI4MDMsNyArMjc5Myw2IEBA
IF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMjlyYW5nZUJ5TW92aW5nQ3VycmVudFNlbGVj
dGlvbkVpCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMycmFuZ2VCeUV4dGVuZGluZ0N1
cnJlbnRTZWxlY3Rpb25FaQogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNWNoYXJhY3Rl
ckluUmVsYXRpb25Ub0NhcmV0U2VsZWN0aW9uRWkKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0
aW9uMzZlbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb25FdgotX19aTks3V2ViQ29y
ZTE0UmVzb3VyY2VCdWZmZXIxMnNoYXJlZEJ1ZmZlckV2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0
eU9yaWdpbjh0b1N0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMWNvbnRl
bnRzTGF5ZXJGb3JNZWRpYUV2CiBfX1pOSzdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb240bGVmdEVi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA4MjMzNjY0YTBiNTlhNjhhNDk4MTRiYmI1MTliZGVhMWJiYjg2YTdkLi5kYmMxNmRkMDQzNGIz
MjMyMjAxOGU3NTMxYWZkMDdkOWM0MjRiNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTcyNTEsNyArNzI1MSw2IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcUG9saWN5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFBvbGljeUNoZWNrZXIuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFByb2dyZXNzVHJhY2tlci5jcHAiIC8+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcUmVzb3VyY2VCdWZmZXIuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlTG9hZGVyLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxjZlxSZXNvdXJjZUxvYWRlckNGTmV0LmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAiIC8+CkBAIC0xOTI1NCw3ICsxOTI1Myw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxsb2FkZXJcUG9saWN5Q2hlY2tlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cbG9hZGVyXFByb2dyZXNzVHJhY2tlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cbG9hZGVyXFByb2dyZXNzVHJhY2tlckNsaWVudC5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cbG9hZGVyXFJlc291cmNlQnVmZmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2FkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWROb3RpZmllci5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IDMyMmI3MGM2ZWZkZWQ4YjNhOWQxYWUwYTMxMWQ0MDBhMDFlZWJmMGEuLmM1ZjY5
YmU2ZTAyOGE0NGMwM2M5MTA5ZDk4YTA0MzA2ZjQ2NjA1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTky
Nyw5ICs5MjcsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXFByb2dyZXNz
VHJhY2tlci5jcHAiPgogICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUJ1ZmZlci5j
cHAiPgotICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRlci5jcHAiPgogICAg
ICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc5NTAsOSAr
Nzk0Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50LmgiPgogICAgICAgPEZpbHRlcj5sb2FkZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxSZXNvdXJjZUJ1ZmZlci5o
Ij4KLSAgICAgIDxGaWx0ZXI+bG9hZGVyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2FkZXIuaCI+CiAgICAgICA8
RmlsdGVyPmxvYWRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3ZGIxMGY1NDk1
OGU3ZjIxNjQ5N2VkY2IzMWU3Mjk1NjJmNjg3OTYuLjYyMzE3ODhmMGM1Nzc1Yzg1ODg5ZWQ4ZGVh
MmIwMmNhYzI3ZTJiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NjgsOSArMTg2OCw2IEBACiAJCTUxNDA1Qzg5MTkwQjAx
NDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDA1Qzg3MTkwQjAxNDQwMDc1NEY5NCAvKiBT
ZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QjNGNzIw
QzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRCM0Y3NjBDNzIyMDU1MDAwNTMwREYgLyogRmls
ZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1tICovOyB9Owot
CQk1MTRCQzgzRjE2MUNGMDRBMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCQzgzRDE2MUNGMDQzMDA0
RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gKi87IH07Ci0JCTUxNEJDODQyMTYxQ0YwNUMwMDRE
NTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTRCQzg0MDE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZm
ZXIuY3BwICovOyB9OwotCQk1MTRCQzg0MzE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJD
ODQxMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjM3MENFOTIyNUUwMDdFRjND
RCAvKiBKU1NRTEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNEM3NjM1MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTEVycm9yLmNwcCAqLzsg
fTsKIAkJNTE0Qzc2MzgwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2MzYwQ0U5
MjI1RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwICovOyB9OwogCQk1MTRDNzY0QzBD
RTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBB
dXRoZW50aWNhdGlvbk1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC04OTgwLDkgKzg5NzcsNiBAQAogCQk1MTQwNUM4NzE5MEIwMTQ0MDA3NTRG
OTQgLyogU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNlbGVjdGlvblJlY3RHYXRoZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTRCM0Y3MjBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNEIzRjc1MEM3MjIwNTUwMDA1MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0QkM4M0QxNjFDRjA0MzAwNEQ1MkY0IC8q
IFJlc291cmNlQnVmZmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUmVzb3VyY2VCdWZmZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEJD
ODQwMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUxNEJDODQxMTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUJ1ZmZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzYzNTBDRTkyMjVFMDA3RUYzQ0QgLyog
SlNTUUxFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NR
TEVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2MzYwQ0U5MjI1
RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbk1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc2MzAsNyArMTc2MjQsNiBAQAogCQkJCTFD
MjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8sCiAJCQkJ
NjU2RDM3MUEwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLmggKi8sCiAJCQkJ
NjU2RDM3MUIwQURCQTVERTAwQTQ1NTREIC8qIExvYWRlck5TVVJMRXh0cmFzLm1tICovLAotCQkJ
CTUxNEJDODNEMTYxQ0YwNDMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSAqLywKIAkJCQk1
MUFBM0Y2RTBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gKi8sCiAJCQkp
OwogCQkJcGF0aCA9IG1hYzsKQEAgLTIxMjk4LDggKzIxMjkxLDYgQEAKIAkJCQkxQTJBNjgyMTBC
NUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmNwcCAqLywKIAkJCQkxQTJBNjgyMjBC
NUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggKi8sCiAJCQkJMUFDQURENzgxODgw
RDkxQzAwRDhCNzFEIC8qIFByb2dyZXNzVHJhY2tlckNsaWVudC5oICovLAotCQkJCTUxNEJDODQw
MTYxQ0YwNUMwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5jcHAgKi8sCi0JCQkJNTE0QkM4NDEx
NjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmggKi8sCiAJCQkJOTNFMjI3REUwQUY1
ODlBRDAwRDQ4MzI0IC8qIFJlc291cmNlTG9hZGVyLmNwcCAqLywKIAkJCQk2NTZEMzcyNzBBREJB
NURFMDBBNDU1NEQgLyogUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQlEMEEzQTczMDE0MDVBMzk4
MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggKi8sCkBAIC0yNTg2Miw3ICsyNTg1
Myw2IEBACiAJCQkJOTlDQzBCNUMxOEJFOTg0QTAwNkNFQkNDIC8qIFJlcGxheVNlc3Npb25TZWdt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTk4QUVDNjEzRjlEMEVBMDA5MEIxQUEgLyogUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREQw
MTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTE0QkM4NDMxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3RUU2ODQ2QTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM0RjcxM0MwRDVBNkYxOTAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JC
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3OTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVz
b3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjkzMzAsOCArMjkzMjAsNiBAQAogCQkJ
CTk5Q0MwQjU5MThCRTk4NEEwMDZDRUJDQyAvKiBSZXBsYXlTZXNzaW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5Q0MwQjVCMThCRTk4NEEwMDZDRUJDQyAvKiBSZXBsYXlTZXNzaW9uU2VnbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RDRjEyNTFGMTJEMDAzRUYyNjkgLyogUmVz
ZXRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE0QkM4NDIxNjFDRjA1QzAwNEQ1
MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNEJDODNGMTYx
Q0YwNEEwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkz
NEY3MTNFMEQ1QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJj
ZUVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGI4ZDkzMzA1YTk3MzIzNWNjYTcz
MDcwNWVlM2I0ZjQzZDVkNDkxYjQuLjIwMWMyNTljODM5NmI2NTRmZjNmNmVhNDJjMTVkZDQ0NzEy
Y2U3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRF
eHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVUlLaXRF
eHRlbnNpb25zLm1tCkBAIC02Miw3ICs2Miw2IEBACiAjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIK
ICNpbXBvcnQgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW1wb3J0ICJSZW5kZXJUZXh0Lmgi
Ci0jaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAj
aW1wb3J0ICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbXBvcnQgIlZpc2libGVVbml0cy5oIgpAQCAt
NDY0LDIzICs0NjMsMTUgQEAgQGltcGxlbWVudGF0aW9uIERPTUhUTUxJbWFnZUVsZW1lbnQgKFdl
YkRPTUhUTUxJbWFnZUVsZW1lbnRPcGVyYXRpb25zUHJpdmF0ZSkKIAogLSAoTlNEYXRhICopZGF0
YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogewotICAgIFdlYkNvcmU6OkNhY2hl
ZEltYWdlICpjYWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hlZEltYWdlKCk7CisgICAgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2Uo
KTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFdlYkNv
cmU6OkltYWdlICppbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOworICAgIFdlYkNvcmU6Oklt
YWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyICpkYXRhID0gbmlsOwot
ICAgIGlmIChyYXdJbWFnZURhdGEpIHsKLSAgICAgICAgUmVzb3VyY2VCdWZmZXIgKnJlc291cmNl
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgICAgIGlmIChyZXNv
dXJjZUJ1ZmZlcikKLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZUJ1ZmZlci0+c2hhcmVkQnVm
ZmVyKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YSA9IGltYWdlLT5kYXRhKCk7Ci0gICAg
fQorICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0KICAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCku
YXV0b3JlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CmluZGV4IDAxOTJkNWU5MDExYTIwMjVlNTdjNmMwYzRlZDMxYTA4NmExZWRiMjMuLmI5ZWI5NmM2
ZDdiN2JlNjA1ZjYxNDFiMjM4MTk2MTA3YzYxNWE1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW0KQEAgLTQ5LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJQYXN0ZWJvYXJk
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgot
I2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKQEAg
LTM4NSw3ICszODQsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJ
bWFnZS51cmwudXJsID0gaW1hZ2VFbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGltYWdlRWxlbWVudC5pbWFnZVNvdXJjZVVSTCgp
KSk7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwogICAgIHBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gcGFzdGVib2FyZC5yZXNvdXJjZU1JTUVUeXBlKGNh
Y2hlZEltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwotICAgIHBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVy
KCk7CisgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpOwogCiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDZlNDE5MGY5YjY1
M2M0MmJmZTE5MjJlMTMyMjgwOWU4YzQxYWJhYmMuLjI5Mjc2ZmEwNDRlMDYyMTNhMGZiMDNjN2Fi
YmIzZGMzYTJlNzc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
QEAgLTUyLDcgKzUyLDYgQEAKICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJCbG9j
ay5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKLSNpbXBvcnQgIlJlc291cmNlQnVmZmVyLmgi
CiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNvdW5kLmgi
CiAjaW1wb3J0ICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTQ0Nyw3ICs0NDYsNyBAQCB2b2lkIEVk
aXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVt
ZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXJsID0gdXJsOwogICAg
IHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKICAgICBwYXN0ZWJvYXJkSW1hZ2Uu
dXJsLnVzZXJWaXNpYmxlRm9ybSA9IGNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhwYXN0ZWJv
YXJkSW1hZ2UudXJsLnVybCk7Ci0gICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNh
Y2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKTsKKyAgICBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAg
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpOwogCiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggMTc5ZWMxMDgxNjVmYTNi
YTFhNTFjYTMxYWM1ZGY2ZGY2ZGRkYzBkYi4uNDBhN2I1NzIwODcxZGFkY2U5OGQ5YjUzNjIxYWRl
ZGM2MGUwMTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC00NSw3
ICs0NSw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhd0RhdGFEb2N1bWVudFBh
cnNlci5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTEzNCw3ICsxMzMsOCBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmco
KQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3RydWN0
dXJlKCk7CiAKLSAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+YWRkRGF0YUJ1ZmZl
cihsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpLmdldCgpKTsKKyAgICBpZiAoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICAg
ICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmFkZERhdGFCdWZmZXIoKmJ1ZmZlcik7
CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsKIH0KQEAgLTE0MywxMSArMTQzLDExIEBAIHZvaWQgSW1h
Z2VEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0
b3BwZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVk
SW1hZ2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxS
ZXNvdXJjZUJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0
YSgpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBj
b3B5IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAgICAgICAg
IC8vIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KLSAgICAgICAgaWYgKGxv
YWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCisgICAgICAgIGlmIChkYXRhICYm
IGxvYWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCiAgICAgICAgICAgICBkYXRh
ID0gZGF0YS0+Y29weSgpOwogCiAgICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCmluZGV4IDc4MjgyNmRjN2Q5OTA4Y2Y0ZDk3NTdjNmE4NmU3NmIzYmQwMDg5ZDMuLmY5
YjJiMjEzZmE0MGVmYjVlNGIzN2Q3MWU5M2U4NTM2ZjEyOWY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC02Miw3ICs2Miw2IEBA
CiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgpAQCAtMTQzLDExICsxNDIsOSBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6
Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwog
CiAgICAgKmJhc2U2NEVuY29kZWQgPSAhaGFzVGV4dENvbnRlbnQoY2FjaGVkUmVzb3VyY2UpOwog
ICAgIGlmICgqYmFzZTY0RW5jb2RlZCkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBoYXNaZXJvU2l6ZSA/IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgOiBjYWNoZWRSZXNv
dXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCk7Ci0KKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFzWmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpIDogY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgICpyZXN1bHQgPSBiYXNl
NjRFbmNvZGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTY2LDcgKzE2Myw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBT
CiAgICAgICAgICAgICAqcmVzdWx0ID0gZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PigqY2FjaGVkUmVz
b3VyY2UpLnNjcmlwdCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOiB7Ci0gICAgICAgICAgICBSZXNvdXJjZUJ1ZmZl
ciogYnVmZmVyID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgICAg
ICBhdXRvKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAg
ICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gY3JlYXRlWEhSVGV4
dERlY29kZXIoY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgY2FjaGVkUmVz
b3VyY2UtPnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpKTsKQEAgLTE3Nyw3ICsxNzQsNyBA
QCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJl
c291cmNlKiBjYWNoZWRSZXNvdXJjZSwgUwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJlc291cmNlQnVmZmVyKiBidWZm
ZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgICAgIGF1dG8q
IGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICAgICAg
cmV0dXJuIGRlY29kZUJ1ZmZlcihidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1
ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgY2FjaGVkUmVzb3VyY2UtPmVuY29kaW5nKCksIHJl
c3VsdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xODYsMTIgKzE4MywxMCBAQCBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSwgUwogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29u
dGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQp
CiB7Ci0gICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVz
b3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29k
aW5nKCk7Ci0KLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRF
bmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRl
bnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5w
dXRFbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiAvLyBzdGF0aWMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAppbmRleCAxYzU3YTRmNTdlZjk1OTkxMTYxZWZhZmEwOGQwNDdmMDc3ODk1MmQ1Li40ODFi
MmJhZDQxOTJhNDUxYmY0ZDgyMjAwMjEzMmZjMDQzOWM2ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC01NCw3ICs1
NCw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlc0RhdGEuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTQwNSw4ICs0MDQsOSBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudAogCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogICAgIGlmIChtX3Jlc291cmNlc0Rh
dGEtPnJlc291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6RG9jdW1l
bnRSZXNvdXJjZSkgewotICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IGxv
YWRlci0+ZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
OwotICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHJlcXVl
c3RJZCwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IG51bGxwdHIsIGxvYWRlci0+
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygpKTsKKyAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQsCisgICAgICAgICAgICBs
b2FkZXItPmZyYW1lTG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KSwKKyAgICAgICAgICAgIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGlu
ZygpKTsKICAgICB9CiAKICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlRGVjb2RlRGF0YVRvQ29u
dGVudChyZXF1ZXN0SWQpOwpAQCAtNDM1LDggKzQzNSw5IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvCiAgICAgaWYgKG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBlKHJlcXVlc3RJZCkgPT0g
SW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlKSB7CiAgICAgICAgIEZyYW1lKiBm
cmFtZSA9IGxvYWRlciA/IGxvYWRlci0+ZnJhbWUoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChm
cmFtZSAmJiBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+ZG9jdW1l
bnQoKSkgewotICAgICAgICAgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSBmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyLCBmcmFtZS0+ZG9jdW1l
bnQoKS0+aW5wdXRFbmNvZGluZygpKTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRk
UmVzb3VyY2VTaGFyZWRCdWZmZXIocmVxdWVzdElkLAorICAgICAgICAgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCksCisgICAgICAgICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDQwYWU1
OTQ0ZWJkN2Y1NDdiOTQ1Yzk0YTdkN2QyOWM4YmYxOWFkMzAuLjk3N2VkMTRiMGUyMTYzNjhiMTEw
YjI1YzMyNjRkMTI1MDEzYjZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
b2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVkZSAi
UmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUg
IlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKQEAgLTE3MSwy
MCArMTcwLDIwIEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogICAgIGNsZWFy
TWFpblJlc291cmNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IERvY3VtZW50
TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gUmVzb3VyY2VCdWZmZXI6
OmNyZWF0ZShtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+ZGF0YSgpLCBtX3N1YnN0aXR1dGVE
YXRhLmNvbnRlbnQoKS0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEu
Y29udGVudCgpLT5jb3B5KCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlKQogICAgICAgICByZXR1
cm4gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIERvY3VtZW50KiBEb2N1bWVudExvYWRlcjo6ZG9jdW1lbnQo
KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkgPT0gdGhpcykKICAgICAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCk7Ci0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgRG9jdW1lbnRMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0CkBAIC05OTQsOCAr
OTkzLDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICNlbHNl
CiAgICAgCiAgICAgLy8gR2l2ZSB0aGUgYXJjaGl2ZSBtYWNoaW5lcnkgYSBjcmFjayBhdCB0aGlz
IGRvY3VtZW50LiBJZiB0aGUgTUlNRSB0eXBlIGlzIG5vdCBhbiBhcmNoaXZlIHR5cGUsIGl0IHdp
bGwgcmV0dXJuIDAuCi0gICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtYWluUmVzb3VyY2VCdWZm
ZXIgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgbV9hcmNoaXZlID0gQXJjaGl2ZUZhY3Rvcnk6
OmNyZWF0ZShtX3Jlc3BvbnNlLnVybCgpLCBtYWluUmVzb3VyY2VCdWZmZXIgPyBtYWluUmVzb3Vy
Y2VCdWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMCwgbV9yZXNwb25zZS5taW1lVHlwZSgpKTsKKyAg
ICBtX2FyY2hpdmUgPSBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKG1fcmVzcG9uc2UudXJsKCksIG1h
aW5SZXNvdXJjZURhdGEoKS5nZXQoKSwgbV9yZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICBpZiAo
IW1fYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMTAxMSw2ICsxMDA5
LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKIH0KIAogI2lm
IEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQorCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzZXRBcmNoaXZlKFBhc3NSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZSkKIHsKICAgICBtX2Fy
Y2hpdmUgPSBhcmNoaXZlOwpAQCAtMTA1OCw0NyArMTA1Nyw0NiBAQCBTaGFyZWRCdWZmZXIqIERv
Y3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJ
VkUpIHx8IEVOQUJMRShNSFRNTCkKIAogQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6
YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICgh
bV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFyY2hpdmVSZXNvdXJjZSogcmVzb3VyY2Ug
PSBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFyY2hpdmVSZXNvdXJjZUZvclVSTCh1cmwp
OwotCi0gICAgcmV0dXJuIHJlc291cmNlICYmICFyZXNvdXJjZS0+c2hvdWxkSWdub3JlV2hlblVu
YXJjaGl2aW5nKCkgPyByZXNvdXJjZSA6IDA7CisgICAgaWYgKCFyZXNvdXJjZSB8fCByZXNvdXJj
ZS0+c2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiByZXNvdXJjZTsKIH0KIAogUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHIgPSByZXNwb25zZSgpOwotICAgIAotICAgIFJlZlB0cjxSZXNvdXJjZUJ1
ZmZlcj4gbWFpblJlc291cmNlQnVmZmVyID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VCdWZmZXIgPyBtYWluUmVzb3VyY2VC
dWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
ID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIAotICAgIHJldHVybiBBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZShkYXRhLCByLnVybCgpLCByLm1pbWVUeXBlKCksIHIudGV4dEVuY29kaW5nTmFt
ZSgpLCBmcmFtZSgpLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKKyAgICBhdXRvJiByZXNwb25zZSA9
IHRoaXMtPnJlc3BvbnNlKCk7CisgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRh
dGEsIHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5j
b2RpbmdOYW1lKCksIGZyYW1lKCktPnRyZWUoKS51bmlxdWVOYW1lKCkpOwogfQogCiBQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogewogICAgIGlmICghaXNDb21taXR0ZWQoKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlZFJlc291cmNlKHVybCk7CiAg
ICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3VyY2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVy
biBhcmNoaXZlUmVzb3VyY2VGb3JVUkwodXJsKTsKIAogICAgIGlmIChyZXNvdXJjZS0+dHlwZSgp
ID09IENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlc291cmNlQnVmZmVyKiBkYXRhID0gcmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgYXV0byogZGF0YSA9IHJlc291cmNlLT5yZXNvdXJj
ZUJ1ZmZlcigpOwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEt
PnNoYXJlZEJ1ZmZlcigpLCB1cmwsIHJlc291cmNlLT5yZXNwb25zZSgpKTsKKyAgICByZXR1cm4g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YSwgdXJsLCByZXNvdXJjZS0+cmVzcG9uc2UoKSk7
CiB9CiAKIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gRG9jdW1lbnRMb2FkZXI6OnN1
YnJlc291cmNlcygpIGNvbnN0CkBAIC0xNTExLDcgKzE1MDksNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAgIGZyYW1lTG9h
ZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7Ci0gICAg
UmVmUHRyPFJlc291cmNlQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0
YSgpOwogICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+
c2l6ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA0
MDNlMTk1NzFjNmQ2NmRmZDA3NzZmNjc1MDk3NTNlYTkxNTkyNTU2Li43Njk4ZmZiODRmYmY3MDJl
ODRmMWMxZDJmZTBkOWUxYmFjNTI1OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaApAQCAtNjgsNyArNjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
RnJhbWU7CiAgICAgY2xhc3MgRnJhbWVMb2FkZXI7CiAgICAgY2xhc3MgUGFnZTsKLSAgICBjbGFz
cyBSZXNvdXJjZUJ1ZmZlcjsKICAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKICAgICBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAgICAgY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwpAQCAtOTMsNyArOTIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVM
b2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlc291
cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0
OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSgpIGNvbnN0OwogICAgICAgICAKICAgICAgICAgRG9jdW1lbnRXcml0ZXImIHdy
aXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4MDc1NmYxM2JiMDE3NjZmNGFjZjli
YmYzYThlNjM5Njc1MzJiY2Y0Li44N2RlM2M2NWI3ZjkzY2E1NDk0YWRiMmM2MTg4MDhiM2Y0NDYz
ZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJNZWRpYVJlc291cmNlTG9hZGVyLmgiCiAK
ICNpZiBFTkFCTEUoVklERU8pCisKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTEx
MiwxMyArMTEyLDEwIEBAIHZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291CiAKIHZvaWQgTWVkaWFSZXNv
dXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKHJlc291cmNlID09IG1f
cmVzb3VyY2UpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVz
b3VyY2UpOwogCiAgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7
CiAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZChkYXRhLCBkYXRhTGVuZ3RoKTsKLQotICAgIGlm
IChTaGFyZWRCdWZmZXIqIGJ1ZmZlciA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpID8gcmVz
b3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpIDogbnVsbHB0cikKLSAgICAg
ICAgbV9jbGllbnQtPmJ1ZmZlclJlY2VpdmVkKGJ1ZmZlcik7CiB9CiAKIHZvaWQgTWVkaWFSZXNv
dXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQpAQCAt
MTI5LDcgKzEyNiw3IEBAIHZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIGlmIChyZXNvdXJjZS0+bG9hZEZhaWxlZE9y
Q2FuY2VsZWQoKSkKICAgICAgICAgbV9jbGllbnQtPmxvYWRGYWlsZWQocmVzb3VyY2UtPnJlc291
cmNlRXJyb3IoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVkKHJl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpID8gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNo
YXJlZEJ1ZmZlcigpIDogbnVsbHB0cik7CisgICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQo
KTsKICAgICBzdG9wKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmJhOGNlNTVkMTI3ZGUzYTYyNmIx
Mzc1NTk4OTIwYmM3NjI2MzUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1
ZmZlci5oIgotCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUmVzb3VyY2VCdWZmZXI6OlJlc291cmNlQnVmZmVyKCkKLSAgICA6IG1fc2hhcmVkQnVm
ZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi17Ci19Ci0KLVJlc291cmNlQnVmZmVyOjpSZXNv
dXJjZUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQotICAgIDogbV9zaGFy
ZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSkpCi17Ci19Ci0KLVJlc291
cmNlQnVmZmVyOjpSZXNvdXJjZUJ1ZmZlcihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVk
QnVmZmVyKQotICAgIDogbV9zaGFyZWRCdWZmZXIoc2hhcmVkQnVmZmVyKQotewotICAgIEFTU0VS
VChtX3NoYXJlZEJ1ZmZlcik7Ci19Ci0gICAgCi1SZXNvdXJjZUJ1ZmZlcjo6flJlc291cmNlQnVm
ZmVyKCkKLXsKLX0KLQotUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gUmVzb3VyY2VCdWZmZXI6
OmFkb3B0U2hhcmVkQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWQpCi17Ci0g
ICAgcmV0dXJuIHNoYXJlZCA/IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUJ1ZmZlcihzaGFyZWQpKSA6
IG51bGxwdHI7Ci19Ci0KLWNvbnN0IGNoYXIqIFJlc291cmNlQnVmZmVyOjpkYXRhKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmRhdGEoKTsKLX0KLQotdW5zaWduZWQgUmVz
b3VyY2VCdWZmZXI6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci0+
c2l6ZSgpOwotfQotCi1ib29sIFJlc291cmNlQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmlzRW1wdHkoKTsKLX0KLQotdm9pZCBSZXNvdXJjZUJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCi17Ci0gICAgbV9z
aGFyZWRCdWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKLX0KLQotdm9pZCBSZXNvdXJjZUJ1ZmZl
cjo6YXBwZW5kKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQotewotICAgIG1fc2hhcmVkQnVmZmVyLT5h
cHBlbmQoYnVmZmVyKTsKLX0KLQotI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFD
SykKLXZvaWQgUmVzb3VyY2VCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKLXsKLSAgICBB
U1NFUlQobV9zaGFyZWRCdWZmZXIpOwotICAgIG1fc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YSk7
Ci19Ci0jZW5kaWYKLQotdm9pZCBSZXNvdXJjZUJ1ZmZlcjo6Y2xlYXIoKQotewotICAgIG1fc2hh
cmVkQnVmZmVyLT5jbGVhcigpOwotfQotCi11bnNpZ25lZCBSZXNvdXJjZUJ1ZmZlcjo6Z2V0U29t
ZURhdGEoY29uc3QgY2hhciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdAotewotICAg
IHJldHVybiBtX3NoYXJlZEJ1ZmZlci0+Z2V0U29tZURhdGEoZGF0YSwgcG9zaXRpb24pOwotfQot
Ci1TaGFyZWRCdWZmZXIqIFJlc291cmNlQnVmZmVyOjpzaGFyZWRCdWZmZXIoKSBjb25zdAotewot
ICAgIC8vIEN1cnJlbnRseSBhbGwgUmVzb3VyY2VCdWZmZXJzIGFyZSBiYWNrZWQgYnkgU2hhcmVk
QnVmZmVycy4KLSAgICAvLyBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IGhhdmUgdG8gY3JlYXRlIHRo
ZSBTaGFyZWRCdWZmZXIgb24gZGVtYW5kIGhlcmUuCi0gICAgLy8gV2Ugc2hvdWxkIGFsc28gcGhh
c2Ugb3V0IGFzIG11Y2ggdXNlIG9mIHRoaXMgYWNjZXNzb3IgYXMgcG9zc2libGUgYW5kIGhhdmUg
Y2xpZW50cwotICAgIC8vIGVpdGhlciB1c2UgdGhlIFJlc291cmNlQnVmZmVyIGRpcmVjdGx5IG9y
IHVzZSBnZXRTb21lRGF0YSgpIHdoZW4gc2Vuc2ljYWwuCi0gICAgcmV0dXJuIG1fc2hhcmVkQnVm
ZmVyLmdldCgpOwotfQotCi1QYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBSZXNvdXJjZUJ1ZmZl
cjo6Y29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJl
ZEJ1ZmZlcihtX3NoYXJlZEJ1ZmZlci0+Y29weSgpKTsKLX0KLQotI2lmIFVTRShDRikKLVJldGFp
blB0cjxDRkRhdGFSZWY+IFJlc291cmNlQnVmZmVyOjpjcmVhdGVDRkRhdGEoKQotewotICAgIHJl
dHVybiBtX3NoYXJlZEJ1ZmZlci0+Y3JlYXRlQ0ZEYXRhKCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYzYjA4YWIxYjQ4MjliNjU3MWE1YjYwNDM5YjI5
ZDE5ZWFhMTJiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFJlc291cmNlQnVmZmVyX2gKLSNkZWZpbmUgUmVzb3VyY2VCdWZmZXJfaAot
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0K
LSNpZiBVU0UoRk9VTkRBVElPTikKLU9CSkNfQ0xBU1MgTlNEYXRhOwotI2VuZGlmCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2hhcmVkQnVmZmVyOwotCi1jbGFzcyBSZXNvdXJjZUJ1
ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlQnVmZmVyPiB7Ci1wdWJsaWM6Ci0KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFJlc291cmNlQnVmZmVyKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291
cmNlQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFJlc291cmNlQnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBhZG9wdFNoYXJlZEJ1ZmZlcihQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVzb3VyY2VC
dWZmZXIoKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgY29uc3QgY2hhciogZGF0YSgp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiwgdW5zaWduZWQpOwotICAg
IHZvaWQgYXBwZW5kKFNoYXJlZEJ1ZmZlciopOwotI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJB
WV9DQUxMQkFDSykKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwotI2VuZGlmCi0gICAgdm9p
ZCBjbGVhcigpOwotICAgIAotICAgIHVuc2lnbmVkIGdldFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBk
YXRhLCB1bnNpZ25lZCBwb3NpdGlvbiA9IDApIGNvbnN0OwotICAgIAotICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0jaWYgVVNFKEZPVU5EQVRJ
T04pCi0gICAgdm9pZCB0cnlSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoU2hhcmVkQnVmZmVy
Kik7Ci0jZW5kaWYKLSAgICBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBjb3B5KCkgY29uc3Q7
Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKTsKLSNlbmRpZgotI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKTsKLSNlbmRpZgotCi1wcm90ZWN0ZWQ6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VCdWZmZXIoKTsKLQotcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZXNvdXJjZUJ1ZmZlcihjb25zdCBjaGFyKiwgdW5zaWduZWQpOwotICAgIFJlc291cmNl
QnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci0KLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX3NoYXJlZEJ1ZmZlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIFJlc291cmNlQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDJjODFmYTM0YzY2Y2IwZGRjMzNmOGY0NjI3MzI1Y2UzYzAxMGU1YmYuLjQz
YjljM2YwODhiYWYzNGY4MTk4MGFkMzgzOTExOWU4MjU2ODk1MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJQcm9ncmVz
c1RyYWNrZXIuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291
cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZFNjaGVkdWxlci5oIgpAQCAtMjIyLDEyICsyMjEsMTIgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmVkQnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBE
YXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZm
ZXIgPyBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIoYnVmZmVyKSA6IFJlc291cmNl
QnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBi
dWZmZXIgPyBidWZmZXIgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKICAgICBpZiAoIW1fcmVzb3VyY2VEYXRhKQot
ICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlciA/IFJlc291cmNlQnVmZmVyOjphZG9wdFNo
YXJlZEJ1ZmZlcihidWZmZXIpIDogUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgp
OworICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlciA/IGJ1ZmZlciA6IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChidWZmZXIp
CiAgICAgICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGJ1ZmZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDhkMDk0YzY0ZWY4MTdmMWRmYmYxNmU5ZTli
YjM1MTIzYWUwOWRmMTYuLjE2MTVmNmQ5YmY4ZGMzNGE0ZTliY2Y0NmJiNjNiNjhmNmNmZGEwMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC00Nyw3ICs0Nyw2IEBA
IGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsK
IGNsYXNzIFVSTDsKLWNsYXNzIFJlc291cmNlQnVmZmVyOwogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiBjbGFzcyBRdWlja0xvb2tIYW5kbGU7CkBAIC04OCw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKCkgY29uc3Q7CiAKLSAgICBSZXNvdXJjZUJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBTaGFyZWRCdWZm
ZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9
CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBp
c1N1YnJlc291cmNlTG9hZGVyKCk7CkBAIC0yMDQsNyArMjAzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2lu
YWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZl
cj4gbV9yZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURh
dGE7CiAgICAgCiAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdkNDBlNjM1ZDRkMDQ2ZDY5
OGQxMTE2MDE2OGQxODY0MWNhZGYzYzEuLjI2YTM0ZTIzZWI5ZGY5Y2JjNDc2ZGM0ZjllNGMyYmM3
YzU1ZWY1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCi0jaW5jbHVk
ZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
QEAgLTIzMywxMSArMjMyLDEwIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICAgICAgfQogICAg
IH0KIAotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyID0gcmVzb3VyY2VEYXRhKCk7
CisgICAgYXV0byogYnVmZmVyID0gcmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKG1fbG9hZGluZ011
bHRpcGFydENvbnRlbnQgJiYgYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIC8v
IFRoZSByZXNvdXJjZSBkYXRhIHdpbGwgY2hhbmdlIGFzIHRoZSBuZXh0IHBhcnQgaXMgbG9hZGVk
LCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBjb3B5LgotICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZm
ZXI+IGNvcGllZERhdGEgPSBSZXNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2UtPmZpbmlzaExvYWRpbmcoY29waWVk
RGF0YS5nZXQoKSk7CisgICAgICAgIG1fcmVzb3VyY2UtPmZpbmlzaExvYWRpbmcoJmJ1ZmZlci0+
Y29weSgpLmdldCgpKTsKICAgICAgICAgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAgICAgLy8g
U2luY2UgYSBzdWJyZXNvdXJjZSBsb2FkZXIgZG9lcyBub3QgbG9hZCBtdWx0aXBhcnQgc2VjdGlv
bnMgcHJvZ3Jlc3NpdmVseSwgZGF0YSB3YXMgZGVsaXZlcmVkIHRvIHRoZSBsb2FkZXIgYWxsIGF0
IG9uY2UuICAgICAgICAKICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IG11bHRpcGFydCBzZWN0
aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8gZGVsZWdhdGVzIHRoYXQgdGhpcyBsb2FkIGlzICJm
aW5pc2hlZCIgCkBAIC0yNzMsOCArMjcxLDggQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBQYXMKICAg
ICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1
ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICBpZiAoIW1f
bG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsKLSAgICAgICAgaWYgKFJlc291cmNlQnVmZmVyKiBy
ZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKLSAgICAgICAgICAgIG1fcmVzb3Vy
Y2UtPmFkZERhdGFCdWZmZXIocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQorICAgICAgICAgICAgbV9yZXNvdXJjZS0+
YWRkRGF0YUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9yZXNvdXJjZS0+YWRkRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZl
ciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IDM1M2NlZjI3MzQyY2VkOGZlMWQ3YjJlNTg2M2I1
ZjQ1YzkyZGE1NGUuLjBmMjdiOTI4MDdmMzkxY2Y0MGVmOGZlYmUzODkxNTczN2YwMzVjMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC0zNiw4ICszNiw4
IEBACiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIlZUVEN1ZS5oIgogI2luY2x1ZGUgIldlYlZUVFBhcnNlci5oIgogCkBAIC04
Nyw3ICs4Nyw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgaWYgKG1fc3RhdGUgPT0gRmFpbGVkIHx8ICFyZXNv
dXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlc291
cmNlQnVmZmVyKiBidWZmZXIgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICBhdXRv
KiBidWZmZXIgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICBpZiAobV9wYXJzZU9m
ZnNldCA9PSBidWZmZXItPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CmluZGV4IDYzNDIxOTRjZTc4ZjEwNWZlMzNhYWZlNDljMWE2NTRkYjU1MDY2NTIuLmU5NTRhMzM3
ZTA4Mjc3N2M4M2M1M2I2Y2VhYjk0OWQ2ZDg1MDU2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC00
MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTWFuaWZlc3RQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVz
b3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTI1NCwxMSArMjUzLDgg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJj
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIHJlc291cmNlLT5hZGRU
eXBlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6TWFzdGVyKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQoIXJlc291cmNlLT5zdG9yYWdlSUQoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IGxvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgbV9uZXdlc3RDYWNoZS0+YWRkUmVz
b3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUodXJsLCBsb2FkZXItPnJlc3Bv
bnNlKCksIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6TWFzdGVyLCBidWZmZXIgPyBidWZmZXIt
PnNoYXJlZEJ1ZmZlcigpIDogMCkpOwotICAgICAgICB9Ci0KKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBtX25ld2VzdENhY2hlLT5hZGRSZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmNyZWF0ZSh1cmwsIGxvYWRlci0+cmVzcG9uc2UoKSwgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjpNYXN0ZXIsIGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgRmFpbHVyZToKICAgICAgICAgLy8gQ2FjaGUgdXBkYXRlIGhhcyBiZWVuIGEg
ZmFpbHVyZSwgc28gdGhlcmUgaXMgbm8gcmVhc29uIHRvIGtlZXAgdGhlIGRvY3VtZW50IGFzc29j
aWF0ZWQgd2l0aCB0aGUgaW5jb21wbGV0ZSBjYWNoZQpAQCAtMjc2LDEwICsyNzIsOCBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPmFkZFR5cGUoQXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0ZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVCgh
cmVzb3VyY2UtPnN0b3JhZ2VJRCgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyLT5tYWlu
UmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5hZGRSZXNv
dXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSh1cmwsIGxvYWRlci0+cmVzcG9u
c2UoKSwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpNYXN0ZXIsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2hhcmVkQnVmZmVyKCkgOiAwKSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBtX2NhY2hlQmVpbmdVcGRhdGVkLT5hZGRSZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmNyZWF0ZSh1cmwsIGxvYWRlci0+cmVzcG9uc2UoKSwgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpNYXN0ZXIsIGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKSk7CiAgICAgICAgIC8v
IFRoZSAiY2FjaGVkIiBldmVudCB3aWxsIGJlIHBvc3RlZCB0byBhbGwgYXNzb2NpYXRlZCBkb2N1
bWVudHMgb25jZSB1cGRhdGUgaXMgY29tcGxldGUuCiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKaW5kZXggMjRjZjRiZWVkZWRmNmU0MzZhOWRlODI0YjNjM2NlNWU5N2NjOTM2My4uOTcy
MzQ2YTAwODNiYTZlNDRlM2UyNDgyNGNlYWEzNGQwYTM3MWUyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQ2
LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KQEAgLTU1MCw5ICs1NDksNyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbWVt
b3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIGZyYW1lLT5wYWdlKCktPnNl
c3Npb25JRCgpKTsKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVzb3VyY2VCdWZmZXIqIGRhdGEgPSBjYWNoZWRSZXNvdXJjZS0+cmVz
b3VyY2VCdWZmZXIoKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShkYXRhID8gZGF0YS0+
c2hhcmVkQnVmZmVyKCkgOiAwLCBzdWJyZXNvdXJjZVVSTCwgY2FjaGVkUmVzb3VyY2UtPnJlc3Bv
bnNlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGNhY2hlZFJlc291cmNlLT5yZXNv
dXJjZUJ1ZmZlcigpLCBzdWJyZXNvdXJjZVVSTCwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKFdURjo6bW92
ZShyZXNvdXJjZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCBhMjA4MWJlYTRjYTU2M2I4NTA0NjUzYmQxZGI1MDA5
MWFhOTM0MmFmLi5lMzcwMTM4ZWIwOGU5OTAwNGE0Y2ZlZmVmYzRlMDllNGZhY2IwMzI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUg
IlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
U3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtOTAsMTMgKzkwLDEzIEBAIGNvbnN0IFN0
cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoYm9vbCBlbmZvcmNlTUlNRVR5cGUs
IGJvb2wqIGhhc1ZhbGlkCiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2Rh
dGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6
ZSgpIDogMCk7CisgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwog
ICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAg
dGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKG1fZGF0
YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKQorICAgICAg
ICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05v
dGlmeSgpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkg
dG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmgKaW5kZXggODBmOTk0Y2IzMDJmMjNiNjU3ODJkZDNmNjM5MjYzZTZiMWE5YTJkNy4uOTQwZmQx
ZjE5ZDdmY2U4MjM4MjFmYmVjMzk3ZWFkMWYwNzZiNDNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NCw3ICs1NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJl
c291cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggMTM2ODJmYTI3NzhkZmRmNjFhY2Vk
OWMzYjk1MDRmNjY3ZTczN2ZmNi4uMWVmNjIyZTI0YmRlNmI1OTRlMzhiN2Y0ZDUxZjkyNmUyZGI5
NmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAt
MzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKICNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaCIKQEAgLTc2LDcgKzc1LDcgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hl
ZEZvbnRDbGllbnQqPihjKS0+Zm9udExvYWRlZCh0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRGb250Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhOwog
ICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CkBA
IC05NSwzMCArOTQsMjcgQEAgdm9pZCBDYWNoZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNo
ZWRSZXNvdXJjZUxvYWRlciogZGwpCiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKCkKIHsKICAgICBpZiAoIW1fZm9udERhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNM
b2FkaW5nKCkgJiYgbV9kYXRhKSB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyID0gbV9k
YXRhLmdldCgpLT5zaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlcik7Ci0KKyAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9kYXRhOwogICAgICAgICBib29s
IGZvbnRJc1dPRkYgPSBmYWxzZTsKKwogI2lmICghUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwOTApICYmICghUExBVEZPUk0oSU9TKSB8fCBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDgwMDAwKQotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzZm50QnVmZmVyOwotCi0gICAgICAgIGZvbnRJc1dPRkYgPSBpc1dPRkYoYnVm
ZmVyKTsKLSAgICAgICAgaWYgKGZvbnRJc1dPRkYpIHsKLSAgICAgICAgICAgIFZlY3RvcjxjaGFy
PiBzZm50OwotICAgICAgICAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KGJ1ZmZlciwgc2ZudCkp
IHsKLSAgICAgICAgICAgICAgICBzZm50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rv
cihzZm50KTsKLSAgICAgICAgICAgICAgICBidWZmZXIgPSBzZm50QnVmZmVyLmdldCgpOwotICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgIGlmIChpc1dPRkYoYnVmZmVyLmdldCgpKSkgeworICAg
ICAgICAgICAgVmVjdG9yPGNoYXI+IGNvbnZlcnRlZEZvbnQ7CisgICAgICAgICAgICBpZiAoIWNv
bnZlcnRXT0ZGVG9TZm50KGJ1ZmZlci5nZXQoKSwgY29udmVydGVkRm9udCkpCiAgICAgICAgICAg
ICAgICAgYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoY29udmVydGVkRm9udCk7Cisg
ICAgICAgICAgICAgICAgZm9udElzV09GRiA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICNlbmRpZgogCiAgICAgICAgIG1fZm9udERhdGEgPSBidWZmZXIgPyBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCpidWZmZXIpIDogbnVsbHB0cjsKLSAgICAgICAgaWYgKG1fZm9udERh
dGEpCi0gICAgICAgICAgICBtX2hhc0NyZWF0ZWRGb250RGF0YVdyYXBwaW5nUmVzb3VyY2UgPSAh
Zm9udElzV09GRjsKLSAgICAgICAgZWxzZQorICAgICAgICBtX2hhc0NyZWF0ZWRGb250RGF0YVdy
YXBwaW5nUmVzb3VyY2UgPSBtX2ZvbnREYXRhICYmICFmb250SXNXT0ZGOworICAgICAgICBpZiAo
IW1fZm9udERhdGEpCiAgICAgICAgICAgICBzZXRTdGF0dXMoRGVjb2RlRXJyb3IpOwogICAgIH0K
KwogICAgIHJldHVybiBtX2ZvbnREYXRhLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBkOTQzNzMwNTUwNjQzMTkyYzk2NjM1NzFhNWZkZDRk
MjQwOWJiNmZiLi4yYTI2N2NjY2IxNTExMTI3NzU1OTA1YzllMTc0N2YxOGVjN2JlYjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lk
IGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjBmZGExODQ5YzZhNzI2NGNk
OTI3M2Q2ZDliNjIzYzQzNmNiNjE2ZC4uZGIyYWU5N2YyOTc4YTUwZmFiODhiMmZhZGVlODljODU3
MDZjMDc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xMTYsMzEgKzExNSwzMSBAQCB2b2lkIENhY2hl
ZEltYWdlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwg
Y29uc3QgUmVzb3VyYwogICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKIH0KIAotdm9pZCBDYWNo
ZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQordm9pZCBDYWNo
ZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiB7CiAg
ICAgaWYgKG1fZGF0YSAmJiAhbV9pbWFnZSAmJiAhZXJyb3JPY2N1cnJlZCgpKSB7CiAgICAgICAg
IGNyZWF0ZUltYWdlKCk7Ci0gICAgICAgIG1faW1hZ2UtPnNldERhdGEobV9kYXRhLT5zaGFyZWRC
dWZmZXIoKSwgdHJ1ZSk7CisgICAgICAgIG1faW1hZ2UtPnNldERhdGEobV9kYXRhLCB0cnVlKTsK
ICAgICB9CiAgICAgCi0gICAgQVNTRVJUKGMtPnJlc291cmNlQ2xpZW50VHlwZSgpID09IENhY2hl
ZEltYWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CisgICAgQVNTRVJUKGNsaWVudC0+cmVzb3Vy
Y2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkSW1hZ2VDbGllbnQ6OmV4cGVjdGVkVHlwZSgpKTsKICAg
ICBpZiAobV9pbWFnZSAmJiAhbV9pbWFnZS0+aXNOdWxsKCkpCi0gICAgICAgIHN0YXRpY19jYXN0
PENhY2hlZEltYWdlQ2xpZW50Kj4oYyktPmltYWdlQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8Q2FjaGVkSW1hZ2VDbGllbnQqPihjbGllbnQpLT5pbWFnZUNoYW5nZWQodGhpcyk7
CiAKLSAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KGMpOworICAgIENhY2hlZFJlc291
cmNlOjpkaWRBZGRDbGllbnQoY2xpZW50KTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZGlkUmVt
b3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQordm9pZCBDYWNoZWRJbWFnZTo6ZGlk
UmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgQVNTRVJU
KGMpOwotICAgIEFTU0VSVChjLT5yZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRJbWFnZUNs
aWVudDo6ZXhwZWN0ZWRUeXBlKCkpOworICAgIEFTU0VSVChjbGllbnQpOworICAgIEFTU0VSVChj
bGllbnQtPnJlc291cmNlQ2xpZW50VHlwZSgpID09IENhY2hlZEltYWdlQ2xpZW50OjpleHBlY3Rl
ZFR5cGUoKSk7CiAKLSAgICBtX3BlbmRpbmdDb250YWluZXJTaXplUmVxdWVzdHMucmVtb3ZlKHN0
YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50Kj4oYykpOworICAgIG1fcGVuZGluZ0NvbnRhaW5l
clNpemVSZXF1ZXN0cy5yZW1vdmUoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2VDbGllbnQqPihjbGll
bnQpKTsKIAogICAgIGlmIChtX3N2Z0ltYWdlQ2FjaGUpCi0gICAgICAgIG1fc3ZnSW1hZ2VDYWNo
ZS0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlQ2xpZW50Kj4o
YykpOworICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUtPnJlbW92ZUNsaWVudEZyb21DYWNoZShzdGF0
aWNfY2FzdDxDYWNoZWRJbWFnZUNsaWVudCo+KGNsaWVudCkpOwogCi0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OmRpZFJlbW92ZUNsaWVudChjKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkUmVtb3ZlQ2xp
ZW50KGNsaWVudCk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OnN3aXRjaENsaWVudHNUb1JldmFs
aWRhdGVkUmVzb3VyY2UoKQpAQCAtMzY1LDE4ICszNjQsMTYgQEAgaW5saW5lIHZvaWQgQ2FjaGVk
SW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1faW1hZ2UuY2xlYXIoKTsKIH0KIAotdm9pZCBDYWNo
ZWRJbWFnZTo6YWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKiBkYXRhKQor
dm9pZCBDYWNoZWRJbWFnZTo6YWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0
dXJuOworICAgIG1fZGF0YSA9ICZkYXRhOwogCiAgICAgY3JlYXRlSW1hZ2UoKTsKIAogICAgIC8v
IEhhdmUgdGhlIGltYWdlIHVwZGF0ZSBpdHMgZGF0YSBmcm9tIGl0cyBpbnRlcm5hbCBidWZmZXIu
CiAgICAgLy8gSXQgd2lsbCBub3QgZG8gYW55dGhpbmcgbm93LCBidXQgd2lsbCBkZWxheSBkZWNv
ZGluZyB1bnRpbAogICAgIC8vIHF1ZXJpZWQgZm9yIGluZm8gKGxpa2Ugc2l6ZSBvciBzcGVjaWZp
YyBpbWFnZSBmcmFtZXMpLgotICAgIGJvb2wgc2l6ZUF2YWlsYWJsZSA9IG1faW1hZ2UtPnNldERh
dGEobV9kYXRhLT5zaGFyZWRCdWZmZXIoKSwgZmFsc2UpOworICAgIGJvb2wgc2l6ZUF2YWlsYWJs
ZSA9IG1faW1hZ2UtPnNldERhdGEoJmRhdGEsIGZhbHNlKTsKICAgICBpZiAoIXNpemVBdmFpbGFi
bGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzk4LDI2ICszOTUsMjggQEAgdm9pZCBDYWNoZWRJ
bWFnZTo6YWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKiBkYXRhKQogICAg
IHNldEVuY29kZWRTaXplKG1faW1hZ2UtPmRhdGEoKSA/IG1faW1hZ2UtPmRhdGEoKS0+c2l6ZSgp
IDogMCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZm
ZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjphZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBC
dWZmZXJEYXRhKTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRh
dGEpOwogICAgIGFkZEluY3JlbWVudGFsRGF0YUJ1ZmZlcihkYXRhKTsKKyAgICBDYWNoZWRSZXNv
dXJjZTo6YWRkRGF0YUJ1ZmZlcihkYXRhKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6YWRkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKG1fb3B0
aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKTsKLSAgICBhZGRJ
bmNyZW1lbnRhbERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgp
LmdldCgpKTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVmZmVy
RGF0YSk7CisgICAgYWRkSW5jcmVtZW50YWxEYXRhQnVmZmVyKCpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBsZW5ndGgpKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6YWRkRGF0YShkYXRhLCBsZW5n
dGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVy
KiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKICAgICBpZiAoIW1faW1hZ2UgJiYgZGF0YSkKICAg
ICAgICAgY3JlYXRlSW1hZ2UoKTsKIAogICAgIGlmIChtX2ltYWdlKQotICAgICAgICBtX2ltYWdl
LT5zZXREYXRhKG1fZGF0YS0+c2hhcmVkQnVmZmVyKCksIHRydWUpOworICAgICAgICBtX2ltYWdl
LT5zZXREYXRhKGRhdGEsIHRydWUpOwogCiAgICAgaWYgKCFtX2ltYWdlIHx8IG1faW1hZ2UtPmlz
TnVsbCgpKSB7CiAgICAgICAgIC8vIEltYWdlIGRlY29kaW5nIGZhaWxlZDsgdGhlIGltYWdlIGRh
dGEgaXMgbWFsZm9ybWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAppbmRleCBmZWVmNDUyYzZjZmQzNjcyNDc4OTQ5YzE2YWM2OTA2OTMzMTU0MzM4Li41NmQyYWEx
ZjMzMDg2YjIzNzBkZjQ2MjVjN2U0Y2I4YjdhYjU0MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdDsKICAgICBib29sIGltYWdlSGFzUmVsYXRp
dmVIZWlnaHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFJlc291
cmNlQnVmZmVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVz
b3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZlcihT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBV
c2VkU2l6ZSwKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUltYWdl
KCk7CiAgICAgdm9pZCBjbGVhckltYWdlKCk7CiAgICAgLy8gSWYgbm90IG51bGwsIGNoYW5nZVJl
Y3QgaXMgdGhlIGNoYW5nZWQgcGFydCBvZiB0aGUgaW1hZ2UuCi0gICAgdm9pZCBub3RpZnlPYnNl
cnZlcnMoY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IDApOworICAgIHZvaWQgbm90aWZ5T2Jz
ZXJ2ZXJzKGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKTsKICAgICB2b2lkIGNo
ZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHN3aXRjaENs
aWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKQEAgLTEyMiw3ICsxMjIsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25BZHZhbmNlZChjb25zdCBJbWFn
ZSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdl
KiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBhZGRJbmNyZW1lbnRhbERh
dGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKTsKKyAgICB2b2lkIGFkZEluY3JlbWVudGFsRGF0YUJ1
ZmZlcihTaGFyZWRCdWZmZXImKTsKIAogICAgIHR5cGVkZWYgc3RkOjpwYWlyPExheW91dFNpemUs
IGZsb2F0PiBTaXplQW5kWm9vbTsKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ2FjaGVkSW1h
Z2VDbGllbnQqLCBTaXplQW5kWm9vbT4gQ29udGFpbmVyU2l6ZVJlcXVlc3RzOwpAQCAtMTMwLDgg
KzEzMCw4IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0ltYWdlQ2FjaGU+IG1fc3ZnSW1hZ2VDYWNoZTsKLSAgICB1bnNpZ25l
ZCBjaGFyIG1faXNNYW51YWxseUNhY2hlZCA6IDE7Ci0gICAgdW5zaWduZWQgY2hhciBtX3Nob3Vs
ZFBhaW50QnJva2VuSW1hZ2UgOiAxOworICAgIHVuc2lnbmVkIG1faXNNYW51YWxseUNhY2hlZCA6
IDE7CisgICAgdW5zaWduZWQgbV9zaG91bGRQYWludEJyb2tlbkltYWdlIDogMTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDVmMjgxMzJhZThkY2VkYjMxMTFkZjczOWMyNmQ5
NDE5MTE3NWQ2ZWMuLjY4ZTc3ZmViMDgwOTgxNzE3YWUxZTAxNDVlZGY2OWQ0N2YwNmI2ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJIVFRQSGVh
ZGVyTmFtZXMuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC00Niw3
ICs0Niw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCwgVHlwZSB0eXBlCiAgICAgQVNTRVJUKGlzTWFpbk9yUmF3
UmVzb3VyY2UoKSk7CiB9CiAKLWNvbnN0IGNoYXIqIENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhSZXNvdXJjZUJ1ZmZlciogZGF0YSwgdW5zaWduZWQmIGlu
Y3JlbWVudGFsRGF0YUxlbmd0aCkKK2NvbnN0IGNoYXIqIENhY2hlZFJhd1Jlc291cmNlOjpjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhTaGFyZWRCdWZmZXIqIGRhdGEsIHVuc2lnbmVkJiBp
bmNyZW1lbnRhbERhdGFMZW5ndGgpCiB7CiAgICAgaW5jcmVtZW50YWxEYXRhTGVuZ3RoID0gMDsK
ICAgICBpZiAoIWRhdGEpCkBAIC01OCwzNCArNTgsMzYgQEAgY29uc3QgY2hhciogQ2FjaGVkUmF3
UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKFJlc291cmNlQnVmZmVyKiBk
YXQKICAgICByZXR1cm4gZGF0YS0+ZGF0YSgpICsgcHJldmlvdXNEYXRhTGVuZ3RoOwogfQogCi12
b2lkIENhY2hlZFJhd1Jlc291cmNlOjphZGREYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKiBkYXRh
KQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3Rl
Y3QodGhpcyk7Ci0gICAgQVNTRVJUKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOworICAgIG1fZGF0YSA9ICZkYXRhOwogCiAgICAgdW5z
aWduZWQgaW5jcmVtZW50YWxEYXRhTGVuZ3RoOwotICAgIGNvbnN0IGNoYXIqIGluY3JlbWVudGFs
RGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEsIGluY3JlbWVudGFsRGF0
YUxlbmd0aCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgY29uc3QgY2hhciogaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoJmRhdGEsIGluY3JlbWVudGFsRGF0YUxlbmd0aCk7CisgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS5zaXplKCkpOwogICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
aW5jcmVtZW50YWxEYXRhLCBpbmNyZW1lbnRhbERhdGFMZW5ndGgpOwotICAgIGlmIChtX29wdGlv
bnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVmZmVyRGF0YSkgeworICAgIGlmIChk
YXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKSB7CiAgICAgICAgIGlmICht
X2xvYWRlcikKICAgICAgICAgICAgIG1fbG9hZGVyLT5zZXREYXRhQnVmZmVyaW5nUG9saWN5KERv
Tm90QnVmZmVyRGF0YSk7CiAgICAgICAgIGNsZWFyKCk7CiAgICAgfQorCisgICAgQ2FjaGVkUmVz
b3VyY2U6OmFkZERhdGFCdWZmZXIoZGF0YSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OmFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIEFTU0VS
VChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERvTm90QnVmZmVyRGF0YSk7Cisg
ICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpOwogICAg
IG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZTo6YWRkRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3QodGhpcyk7Ci0gICAgRGF0
YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gbV9vcHRpb25zLmRhdGFCdWZm
ZXJpbmdQb2xpY3koKTsKKyAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xp
Y3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQ
b2xpY3kgPT0gQnVmZmVyRGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhOwogCkBAIC05OSw3
ICsxMDEsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFJlc291cmNl
QnVmZmVyKiBkYXRhKQogICAgIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50ID0gIW1fbG9h
ZGVyLT5pc1F1aWNrTG9va1Jlc291cmNlKCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhKTsKLSAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBCdWZmZXJEYXRh
ICYmIG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKSB7
CisgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gQnVmZmVyRGF0YSAmJiB0aGlzLT5kYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKSB7CiAgICAgICAgIGlmIChtX2xv
YWRlcikKICAgICAgICAgICAgIG1fbG9hZGVyLT5zZXREYXRhQnVmZmVyaW5nUG9saWN5KERvTm90
QnVmZmVyRGF0YSk7CiAgICAgICAgIGNsZWFyKCk7CkBAIC0yMjIsNyArMjI0LDcgQEAgc3RhdGlj
IGJvb2wgc2hvdWxkSWdub3JlSGVhZGVyRm9yQ2FjaGVSZXVzZShIVFRQSGVhZGVyTmFtZSBuYW1l
KQogCiBib29sIENhY2hlZFJhd1Jlc291cmNlOjpjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIG5ld1JlcXVlc3QpIGNvbnN0CiB7Ci0gICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKQorICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
bV9yZXNvdXJjZVJlcXVlc3QuaHR0cE1ldGhvZCgpICE9IG5ld1JlcXVlc3QuaHR0cE1ldGhvZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApp
bmRleCBmM2M2NjhmMmJkYjlmZTQ2ZTkzNjJlNDJiOWQ2MzcyMmQwNmMyZTI3Li4yY2Q0NTVhY2Iy
NTFkMDgxZmMzNGVjMGNjMDZiYjk5ZTM1MWExMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFJlc291
cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRl
OwpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGNhblJldXNl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgY29uc3QgY2hh
ciogY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoUmVzb3VyY2VCdWZmZXIqLCB1bnNpZ25l
ZCYgaW5jcmVtZW50YWxEYXRhTGVuZ3RoKTsKKyAgICBjb25zdCBjaGFyKiBjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhTaGFyZWRCdWZmZXIqLCB1bnNpZ25lZCYgaW5jcmVtZW50YWxEYXRh
TGVuZ3RoKTsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKIAogI2lmIFVTRShTT1VQKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNWE0ZTRhNzdjOGYy
ZDg3ODlmMDkwMWQ3YTNhYzg4MDQ0Y2I5OTk4Ny4uY2VlZTU4YzAzMjQ2ZjhjOGFkZWZkZjE1MTM3
NmYyYjFjZTljMzhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0j
aW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lz
dHJ5LmgiCkBAIC0xMDgsMTAgKzEwNywxMCBAQCBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoUmVm
Q291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRSZXNvdXJjZUxlYWtDb3VudGVyLCAoIkNhYwogCiBD
YWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBUeXBlIHR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBtX3Jlc291cmNlUmVx
dWVzdChyZXF1ZXN0KQorICAgICwgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIodGhpcywgJkNh
Y2hlZFJlc291cmNlOjpkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCwgZGVhZERlY29kZWRE
YXRhRGVsZXRpb25JbnRlcnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vzc2lv
bklEKHNlc3Npb25JRCkKICAgICAsIG1fbG9hZFByaW9yaXR5KGRlZmF1bHRQcmlvcml0eUZvclJl
c291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fcmVzcG9uc2VUaW1lc3RhbXAoY3VycmVudFRpbWUo
KSkKLSAgICAsIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyKHRoaXMsICZDYWNoZWRSZXNvdXJj
ZTo6ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmlyZWQsIGRlYWREZWNvZGVkRGF0YURlbGV0aW9u
SW50ZXJ2YWxGb3JSZXNvdXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX2xhc3REZWNvZGVkQWNjZXNz
VGltZSgwKQogICAgICwgbV9sb2FkRmluaXNoVGltZSgwKQogICAgICwgbV9lbmNvZGVkU2l6ZSgw
KQpAQCAtMjg2LDIyICsyODUsMjIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnko
KQogICAgIGlmIChpc0xvYWRpbmcoKSB8fCBzdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVu
dD4gdyhtX2NsaWVudHMpOwotICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCogYyA9IHcu
bmV4dCgpKQotICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKKyAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7
CisgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgp
KQorICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOwogfQogCi12b2lkIENhY2hl
ZFJlc291cmNlOjphZGREYXRhQnVmZmVyKFJlc291cmNlQnVmZmVyKikKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmFkZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJikKIHsKLSAgICBBU1NFUlQobV9vcHRp
b25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJEYXRhKTsKKyAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOwogfQogCiB2b2lkIENhY2hlZFJlc291
cmNlOjphZGREYXRhKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCkKIHsKLSAgICBBU1NFUlQobV9vcHRp
b25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEb05vdEJ1ZmZlckRhdGEpOworICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciopCit2b2lkIENhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopCiB7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkoKTsKQEAgLTM5MSwxNyArMzkwLDE1IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQog
ICAgICAgICBkaWRBZGRDbGllbnQoY2xpZW50KTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQordm9pZCBDYWNoZWRSZXNvdXJj
ZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgaWYg
KG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZGVjb2Rl
ZERhdGFEZWxldGlvblRpbWVyLnN0b3AoKTsKIAotICAgIGlmIChtX2NsaWVudHNBd2FpdGluZ0Nh
bGxiYWNrLmNvbnRhaW5zKGMpKSB7Ci0gICAgICAgIG1fY2xpZW50cy5hZGQoYyk7Ci0gICAgICAg
IG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2sucmVtb3ZlKGMpOwotICAgIH0KKyAgICBpZiAobV9j
bGllbnRzQXdhaXRpbmdDYWxsYmFjay5yZW1vdmUoY2xpZW50KSkKKyAgICAgICAgbV9jbGllbnRz
LmFkZChjbGllbnQpOwogICAgIGlmICghaXNMb2FkaW5nKCkgJiYgIXN0aWxsTmVlZHNMb2FkKCkp
Ci0gICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOworICAgICAgICBjbGllbnQtPm5vdGlm
eUZpbmlzaGVkKHRoaXMpOwogfQogCiBib29sIENhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1Nl
dChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQpAQCAtNDIzLDcgKzQyMCw3IEBAIGJvb2wg
Q2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBjbGll
bnQpCiAgICAgICAgIC8vIFRoZXJlZm9yZSwgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2VuZGlu
ZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBoaXQgbGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMsCiAg
ICAgICAgIC8vIHdlIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZlciBm
aW5pc2ggc3luY2hyb25vdXNseS4KICAgICAgICAgQVNTRVJUKCFtX2NsaWVudHNBd2FpdGluZ0Nh
bGxiYWNrLmNvbnRhaW5zKGNsaWVudCkpOwotICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxi
YWNrLmFkZChjbGllbnQsIENhY2hlZFJlc291cmNlQ2FsbGJhY2s6OnNjaGVkdWxlKHRoaXMsIGNs
aWVudCkpOworICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZChjbGllbnQsIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2s+KCp0aGlzLCAqY2xpZW50KSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTczMSwyNyArNzI4LDI4IEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OnNldExvYWRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkpCiAg
ICAgbV9sb2FkUHJpb3JpdHkgPSBsb2FkUHJpb3JpdHk7CiB9CiAKLUNhY2hlZFJlc291cmNlOjpD
YWNoZWRSZXNvdXJjZUNhbGxiYWNrOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNrKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKK2lubGluZSBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OkNhbGxiYWNrKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Q2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICA6IG1fcmVzb3VyY2UocmVzb3VyY2Up
CiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2NhbGxiYWNrVGltZXIodGhpcywgJkNh
Y2hlZFJlc291cmNlQ2FsbGJhY2s6OnRpbWVyRmlyZWQpCisgICAgLCBtX3RpbWVyKHRoaXMsICZD
YWxsYmFjazo6dGltZXJGaXJlZCkKIHsKLSAgICBtX2NhbGxiYWNrVGltZXIuc3RhcnRPbmVTaG90
KDApOworICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIENhY2hlZFJlc291
cmNlOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNrOjpjYW5jZWwoKQoraW5saW5lIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OkNhbGxiYWNrOjpjYW5jZWwoKQogewotICAgIGlmIChtX2NhbGxiYWNrVGltZXIu
aXNBY3RpdmUoKSkKLSAgICAgICAgbV9jYWxsYmFja1RpbWVyLnN0b3AoKTsKKyAgICBpZiAobV90
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0b3AoKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2VDYWxsYmFjazo6dGltZXJGaXJlZChUaW1lcjxDYWNo
ZWRSZXNvdXJjZUNhbGxiYWNrPiYpCit2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGlt
ZXJGaXJlZChUaW1lcjxDYWxsYmFjaz4mKQogewotICAgIG1fcmVzb3VyY2UtPmRpZEFkZENsaWVu
dChtX2NsaWVudCk7CisgICAgbV9yZXNvdXJjZS5kaWRBZGRDbGllbnQoJm1fY2xpZW50KTsKIH0K
IAogI2lmIFVTRShGT1VOREFUSU9OKQotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVu
Y29kZWREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBuZXdCdWZmZXIpCisKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZl
cikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzYyLDExICs3NjAs
MTIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBuZXdCdWZmZXIpCiAgICAgLy8gV2UgaGF2ZSB0byBkbyB0aGUgbWVt
Y21wIGJlY2F1c2Ugd2UgY2FuJ3QgdGVsbCBpZiB0aGUgcmVwbGFjZW1lbnQgZmlsZSBiYWNrZWQg
ZGF0YSBpcyBmb3IgdGhlCiAgICAgLy8gc2FtZSByZXNvdXJjZSBvciBpZiB3ZSBtYWRlIGEgc2Vj
b25kIHJlcXVlc3Qgd2l0aCB0aGUgc2FtZSBVUkwgd2hpY2ggZ2F2ZSB1cyBhIGRpZmZlcmVudAog
ICAgIC8vIHJlc291cmNlLiBXZSBoYXZlIHNlZW4gdGhpcyBoYXBwZW4gZm9yIGNhY2hlZCBQT1NU
IHJlc291cmNlcy4KLSAgICBpZiAobV9kYXRhLT5zaXplKCkgIT0gbmV3QnVmZmVyLT5zaXplKCkg
fHwgbWVtY21wKG1fZGF0YS0+ZGF0YSgpLCBuZXdCdWZmZXItPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpKQorICAgIGlmIChtX2RhdGEtPnNpemUoKSAhPSBuZXdCdWZmZXIuc2l6ZSgpIHx8IG1lbWNt
cChtX2RhdGEtPmRhdGEoKSwgbmV3QnVmZmVyLmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEtPnRyeVJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50
cyhuZXdCdWZmZXIuZ2V0KCkpOworICAgIG1fZGF0YS0+dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBs
YXRmb3JtQnVmZmVyKG5ld0J1ZmZlcik7CiB9CisKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDlmYjliMTRmN2QwNDQ5NjU4
YzZiNWEzZDQ1OWM0ZDBjOTRiODc0Y2QuLmJmNmU5OTc0MTBlYzIzNzAxODY5MjI4YWQwYzU4ZGI0
MGRhMjk2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIENhY2hlZFJlc291cmNlQ2xpZW50OwogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKLWNsYXNzIFJlc291cmNlQnVmZmVyOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRl
cjsKQEAgLTk2LDkgKzk1LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29k
aW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUJ1ZmZlcihS
ZXNvdXJjZUJ1ZmZlciopOworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZm
ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lk
IHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9
IGVycm9yOyB9CkBAIC0xODcsNyArMTg2LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY2xl
YXJMb2FkZXIoKTsKIAotICAgIFJlc291cmNlQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKQEAgLTI0NSw1NSArMjQ0LDM1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
UmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAj
aWYgVVNFKEZPVU5EQVRJT04pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5j
b2RlZERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAjaWYg
VVNFKFNPVVApCi0gICAgdmlydHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90
IC8qIHJlcXVlc3RlZFNpemUgKi8sIHNpemVfdCYgLyogYWN0dWFsU2l6ZSAqLykgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKiBy
ZXF1ZXN0ZWRTaXplICovLCBzaXplX3QmIC8qIGFjdHVhbFNpemUgKi8pIHsgcmV0dXJuIG51bGxw
dHI7IH0KICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5
KCk7Ci0KICAgICB2b2lkIHNldEVuY29kZWRTaXplKHVuc2lnbmVkKTsKICAgICB2b2lkIHNldERl
Y29kZWRTaXplKHVuc2lnbmVkKTsKICAgICB2b2lkIGRpZEFjY2Vzc0RlY29kZWREYXRhKGRvdWJs
ZSB0aW1lU3RhbXApOwogCisgICAgLy8gRklYTUU6IE1ha2UgdGhlIHJlc3Qgb2YgdGhlc2UgZGF0
YSBtZW1iZXJzIHByaXZhdGUgYW5kIHVzZSBmdW5jdGlvbnMgaW4gZGVyaXZlZCBjbGFzc2VzIGlu
c3RlYWQuCiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVu
dHM7Ci0KLSAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUNhbGxiYWNrIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIENhY2hlZFJlc291cmNlQ2FsbGJhY2soQ2FjaGVkUmVzb3VyY2UqLCBDYWNoZWRSZXNv
dXJjZUNsaWVudCopOwotCi0gICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUmVz
b3VyY2VDYWxsYmFjaz4gc2NoZWR1bGUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBDYWNoZWRS
ZXNvdXJjZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJl
c291cmNlQ2FsbGJhY2s+KHJlc291cmNlLCBjbGllbnQpOyB9Ci0gICAgICAgIHZvaWQgY2FuY2Vs
KCk7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPENhY2hlZFJl
c291cmNlQ2FsbGJhY2s+Jik7Ci0KLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVzb3VyY2U7
Ci0gICAgICAgIENhY2hlZFJlc291cmNlQ2xpZW50KiBtX2NsaWVudDsKLSAgICAgICAgVGltZXI8
Q2FjaGVkUmVzb3VyY2VDYWxsYmFjaz4gbV9jYWxsYmFja1RpbWVyOwotICAgIH07Ci0gICAgSGFz
aE1hcDxDYWNoZWRSZXNvdXJjZUNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRSZXNvdXJj
ZUNhbGxiYWNrPj4gbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjazsKLQogICAgIFJlc291cmNlUmVx
dWVzdCBtX3Jlc291cmNlUmVxdWVzdDsKLSAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAg
U3RyaW5nIG1fYWNjZXB0OwogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7
CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG1fb3B0aW9uczsKLSAgICBSZXNvdXJjZUxvYWRQ
cmlvcml0eSBtX2xvYWRQcmlvcml0eTsKLQogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25z
ZTsKLSAgICBkb3VibGUgbV9yZXNwb25zZVRpbWVzdGFtcDsKLQotICAgIFJlZlB0cjxSZXNvdXJj
ZUJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBE
ZWZlcnJhYmxlT25lU2hvdFRpbWVyIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOwogCiBwcml2
YXRlOgorICAgIGNsYXNzIENhbGxiYWNrOworCiAgICAgYm9vbCBhZGRDbGllbnRUb1NldChDYWNo
ZWRSZXNvdXJjZUNsaWVudCopOwogCiAgICAgdm9pZCBkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJG
aXJlZCgpOwogCisgICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCk7CiAgICAgdmlydHVhbCBi
b29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBkb3VibGUgZnJlc2huZXNzTGlmZXRpbWUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNv
bnN0OwpAQCAtMzAxLDYgKzI4MCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQWRkaXRpb25h
bFJlcXVlc3RIZWFkZXJzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBmYWlsQmVm
b3JlU3RhcnRpbmcoKTsKIAorICAgIEhhc2hNYXA8Q2FjaGVkUmVzb3VyY2VDbGllbnQqLCBzdGQ6
OnVuaXF1ZV9wdHI8Q2FsbGJhY2s+PiBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrOworICAgIFNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBTdHJpbmcgbV9hY2NlcHQ7CisgICAgUmVzb3VyY2VM
b2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7CisgICAgZG91YmxlIG1fcmVzcG9uc2VUaW1lc3Rh
bXA7CisKICAgICBTdHJpbmcgbV9mcmFnbWVudElkZW50aWZpZXJGb3JSZXF1ZXN0OwogCiAgICAg
UmVzb3VyY2VFcnJvciBtX2Vycm9yOwpAQCAtMzM4LDcgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAg
Q2FjaGVkUmVzb3VyY2UqIG1fbmV4dEluTGl2ZVJlc291cmNlc0xpc3Q7CiAgICAgQ2FjaGVkUmVz
b3VyY2UqIG1fcHJldkluTGl2ZVJlc291cmNlc0xpc3Q7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUxv
YWRlciogbV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcjsgLy8gb25seSBub24tMCBmb3IgcmVz
b3VyY2VzIHRoYXQgYXJlIG5vdCBpbiB0aGUgY2FjaGUKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRl
ciogbV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcjsgLy8gb25seSBub24tbnVsbCBmb3IgcmVz
b3VyY2VzIHRoYXQgYXJlIG5vdCBpbiB0aGUgY2FjaGUKICAgICAKICAgICAvLyBJZiB0aGlzIGZp
ZWxkIGlzIG5vbi1udWxsIHdlIGFyZSB1c2luZyB0aGUgcmVzb3VyY2UgYXMgYSBwcm94eSBmb3Ig
Y2hlY2tpbmcgd2hldGhlciBhbiBleGlzdGluZyByZXNvdXJjZSBpcyBzdGlsbCB1cCB0byBkYXRl
CiAgICAgLy8gdXNpbmcgSFRUUCBJZi1Nb2RpZmllZC1TaW5jZS9JZi1Ob25lLU1hdGNoIGhlYWRl
cnMuIElmIHRoZSByZXNwb25zZSBpcyAzMDQgYWxsIGNsaWVudHMgb2YgdGhpcyByZXNvdXJjZSBh
cmUgbW92ZWQKQEAgLTM1NSw2ICszNDAsMjAgQEAgcHJpdmF0ZToKICAgICBSZWRpcmVjdENoYWlu
Q2FjaGVTdGF0dXMgbV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM7CiB9OwogCitjbGFzcyBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2sgeworcHVibGljOgorICAgIENhbGxiYWNrKENhY2hlZFJlc291
cmNlJiwgQ2FjaGVkUmVzb3VyY2VDbGllbnQmKTsKKworICAgIHZvaWQgY2FuY2VsKCk7CisKK3By
aXZhdGU6CisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPENhbGxiYWNrPiYpOworCisgICAgQ2Fj
aGVkUmVzb3VyY2UmIG1fcmVzb3VyY2U7CisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnQmIG1fY2xp
ZW50OworICAgIFRpbWVyPENhbGxiYWNrPiBtX3RpbWVyOworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FDSEVEX1JFU09VUkNF
KFRvQ2xhc3NOYW1lLCBDYWNoZWRSZXNvdXJjZVR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKaW5kZXggOTY5MzNlMTNkNTRk
NzNjMmM2NGE0YjE3Y2M4NDc3Y2M0ODFlOTc5ZC4uNzU5NTExMDQ5NzE2ZDI4OGIzZGZhNGE4ZWM4
ZmI3MTYwMjM2OGJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlQ2xpZW50LmgKQEAgLTI1LDkgKzI1LDggQEAKICNpZm5kZWYgQ2FjaGVkUmVz
b3VyY2VDbGllbnRfaAogI2RlZmluZSBDYWNoZWRSZXNvdXJjZUNsaWVudF9oCiAKLSNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIENhY2hl
ZFJlc291cmNlOwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CkBAIC00NCwxMyArNDMs
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlQ2xpZW50KCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqKSB7IH0KLSAgICAKKwogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUg
ZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQogICAgIHZpcnR1YWwg
Q2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudCgpIHsgfQogfTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDMyYTYxYjNiM2E5Mzk4MDY5YTFk
MmZiZmY1ZDc2ZTk2Zjg0YjU3YmIuLmE1MjMwMjAxYjBmNzEwZDM5YTViZGJiMWE2ZDZhMmI4NTI2
MDdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcApAQCAtMjMsMTAgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDYWNoZWRTVkdEb2N1bWVudC5oIgogCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCIKLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlJlc291
cmNlQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDcgKzQ4
LDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcoUmVzb3VyY2VCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAo
ZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBi
ZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmlu
ZGV4IGMxYzYwM2YzNDI5Y2MxZWM4YmE1NTBjMGM1NTAwZmI5YWJjMjY2YWIuLmE3OTFjZDgzMWQz
NmZhNWM4ZWZhNzU2Y2VlMmJjMWMwN2NhY2QzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC0zNywxNSArMzcsMTQgQEAgcHVibGlj
OgogCiAgICAgU1ZHRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVu
dC5nZXQoKTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3Vt
ZW50OwotICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0KIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZl
ciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciopIG92ZXJyaWRlOworCisgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OworICAg
IFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCmluZGV4IGY3MWE1ZThhYWVjZThiM2FiMTk1ZGU2NTRlMTQxMWQzNzk1ZWEwMDMuLmY4YmMz
M2M3YjMyNTFkYzQyMzgwZjVjNDY4M2ZmNGU5NGUzNDlkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTc2LDE0ICs3NiwxMyBAQCBjb25zdCBTdHJpbmcmIENhY2hlZFNjcmlwdDo6c2NyaXB0
KCkKICAgICAgICAgc2V0RGVjb2RlZFNpemUobV9zY3JpcHQuc2l6ZUluQnl0ZXMoKSk7CiAgICAg
fQogICAgIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyLnJlc3RhcnQoKTsKLSAgICAKICAgICBy
ZXR1cm4gbV9zY3JpcHQ7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFJl
c291cmNlQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNp
emUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuaAppbmRleCA5MWM5ODZhMjU0YjljMzcxYzJmZDE5ZjNkZjk4OTQ1NzQ3ZTliZTA2Li45Mzhl
OTE4N2NlYTRjMDljMmQ3MGJlNjIxN2E2NDliZGQ3NzMyM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC0zMCwzNiArMzAsMzUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7Ci0gICAgY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKK2NsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKLSAg
ICBjbGFzcyBDYWNoZWRTY3JpcHQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewotICAg
IHB1YmxpYzoKLSAgICAgICAgQ2FjaGVkU2NyaXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgU2Vzc2lvbklEKTsKLSAgICAgICAgdmlydHVhbCB+Q2FjaGVk
U2NyaXB0KCk7CitjbGFzcyBDYWNoZWRTY3JpcHQgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2UgeworcHVibGljOgorICAgIENhY2hlZFNjcmlwdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQsIFNlc3Npb25JRCk7CisgICAgdmlydHVhbCB+Q2FjaGVkU2Ny
aXB0KCk7CiAKLSAgICAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKKyAgICBjb25zdCBTdHJp
bmcmIHNjcmlwdCgpOwogCi0gICAgICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OworICAgIFN0
cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5PU05JRkYpCi0gICAgICAgIGJv
b2wgbWltZVR5cGVBbGxvd2VkQnlOb3NuaWZmKCkgY29uc3Q7CisgICAgYm9vbCBtaW1lVHlwZUFs
bG93ZWRCeU5vc25pZmYoKSBjb25zdDsKICNlbmRpZgogCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VF
bmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMo
KSBjb25zdCBvdmVycmlkZTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291
cmNlQnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikg
b3ZlcnJpZGU7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsK
IAotICAgICAgICBTdHJpbmcgbV9zY3JpcHQ7Ci0gICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgfTsKKyAgICBTdHJpbmcgbV9zY3JpcHQ7CisgICAgUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKK307CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmNwcAppbmRleCA3MDlmYWQ4NDQzYjdiYzFhMzhmMWVhODBkMjY0ZmYwZDI5M2Q5OTcwLi43
MTU1OTIyMDU3ZWVhZWRmMWYwNWQwZDA3ZmRmMGI1MGU2ZGRmYWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgot
I2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTQ0LDI0ICs0MywyNiBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgU2Vzc2lvbgogewogfQogCi1DYWNo
ZWRUZXh0VHJhY2s6On5DYWNoZWRUZXh0VHJhY2soKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVw
ZGF0ZURhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotfQotCi12b2lkIENhY2hlZFRleHRUcmFj
azo6YWRkRGF0YUJ1ZmZlcihSZXNvdXJjZUJ1ZmZlciogZGF0YSkKLXsKLSAgICBBU1NFUlQobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBCdWZmZXJEYXRhKTsKKyAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9IGRhdGE7
Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsK
KyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xp
ZW50cyk7Ci0gICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50ICpjbGllbnQgPSB3YWxrZXIu
bmV4dCgpKQorICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50ID0gd2Fsa2Vy
Lm5leHQoKSkKICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291
cmNlKHRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhSZXNv
dXJjZUJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjphZGREYXRhQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3sKKyAgICB1cGRhdGVEYXRhKCZkYXRhKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihkYXRhKTsKK30KKwordm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIGFkZERhdGFCdWZmZXIo
ZGF0YSk7CisgICAgdXBkYXRlRGF0YShkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5oCmluZGV4IDRjM2YzOGFkNDY4ZTE1MWE4MDEyYTlkOWNlOTE0ZmIzOGIzYjJk
NTIuLjNjMTEyN2U4M2I4OTliNDNiMzgwYTk2M2I5NjZkNjNlZTZiY2FkY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM2LDEyICszNiwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRUZXh0VHJhY2sgZmluYWwgOiBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogcHVibGljOgogICAgIENhY2hlZFRleHRUcmFjayhjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOwotICAgIHZpcnR1YWwgfkNhY2hlZFRleHRU
cmFjaygpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2Rl
ZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGFkZERhdGFCdWZmZXIoUmVzb3VyY2VCdWZmZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOworCisgICAgdm9pZCB1
cGRhdGVEYXRhKFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCmluZGV4IDY2ZjFlYzVhN2FlNGJlYjMxNDUzMTU4ZGRlMmY5OTZkMTliNDJlNzUuLjc3OTUy
YjhhY2MwMTJlNzNlOWU3OWE5ZjRiODc2MzgyNzQ4MDM3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTI5LDcgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDYsNiArNDYsMTAgQEAgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6Q2FjaGVkWFNMU3R5bGVTaGVldChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCwKICAgICBzZXRBY2NlcHQoInRleHQveG1sLCBhcHBsaWNhdGlvbi94
bWwsIGFwcGxpY2F0aW9uL3hodG1sK3htbCwgdGV4dC94c2wsIGFwcGxpY2F0aW9uL3Jzcyt4bWws
IGFwcGxpY2F0aW9uL2F0b20reG1sIik7CiB9CiAKK0NhY2hlZFhTTFN0eWxlU2hlZXQ6On5DYWNo
ZWRYU0xTdHlsZVNoZWV0KCkKK3sKK30KKwogdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpkaWRB
ZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiB7ICAKICAgICBBU1NFUlQoYy0+cmVz
b3VyY2VDbGllbnRUeXBlKCkgPT0gQ2FjaGVkU3R5bGVTaGVldENsaWVudDo6ZXhwZWN0ZWRUeXBl
KCkpOwpAQCAtNjMsMTIgKzY3LDEyIEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNv
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9
CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhSZXNvdXJjZUJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChtX2RhdGEuZ2V0KCkp
Ci0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6
ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpCisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IGQ5OTIxYzJjNTgwMzE2NzJk
YTIzODdhOGM2YjcyZGE1MjI1YzQ1YjguLjBlMDBlNjc2NjZhNDA0YTFmYWQyOWFhMjk1MzlmM2U4
YmY1NDFjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaApAQCAtMjksMzQgKzI5LDI5IEBACiAjaWYgRU5BQkxFKFhTTFQpCiAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7Ci0gICAg
Y2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKK2NsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAK
LSAgICBjbGFzcyBDYWNoZWRYU0xTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIENhY2hlZFJlc291
cmNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIENhY2hlZFhTTFN0eWxlU2hlZXQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklEKTsKK2NsYXNzIENhY2hlZFhTTFN0eWxlU2hlZXQgZmlu
YWwgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgeworcHVibGljOgorICAgIENhY2hlZFhTTFN0eWxl
U2hlZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklEKTsKKyAgICB2aXJ0dWFsIH5D
YWNoZWRYU0xTdHlsZVNoZWV0KCk7CiAKLSAgICAgICAgY29uc3QgU3RyaW5nJiBzaGVldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hlZXQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGVldDsgfQogCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tOb3RpZnkoKSBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNo
ZWNrTm90aWZ5KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNv
ZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CiAKLSAgICAgICAgU3RyaW5nIG1f
c2hlZXQ7Ci0gICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWRE
YXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBvdmVycmlkZTsKLQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFJlc291cmNlQnVmZmVyKikgb3ZlcnJpZGU7Ci0g
ICAgfTsKKyAgICBTdHJpbmcgbV9zaGVldDsKKyAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gbV9kZWNvZGVyOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAKaW5kZXggNTc2NzYw
NGFlZDUzOWVjOTllMTgwZDU5N2RlOWU5ODdjZDNlZjg4Yi4uNjllMjk5N2Y0ZWNmNWIxNGMwNTUw
ZTJhMTllMWE4NjExNmU4ZDFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nm
L1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9T
dWJyZXNvdXJjZUxvYWRlckNGLmNwcApAQCAtNTEsOCArNTEsOCBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQogICAgICAg
ICAgICAgLy8gYmVpbmcgY2FuY2VsbGVkLiBCYWlsIG91dCBpZiB3ZSBubyBsb25nZXIgaGF2ZSBh
IGNhY2hlZCByZXNvdXJjZS4KICAgICAgICAgICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoUmVzb3VyY2VCdWZmZXIqIHJlc291cmNl
RGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQotICAgICAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PmFkZERhdGFCdWZmZXIocmVzb3VyY2VEYXRhKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiByZXNv
dXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc291
cmNlLT5hZGREYXRhQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgQ0ZEYXRhUmVmIGNmRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRh
UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGRhdGFBcnJheSwgaSkpOwogICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oQ0ZE
YXRhR2V0Qnl0ZVB0cihjZkRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBmMTJlMzk5ODJhNDgzMjYzZTkxZWNj
MWE1ZDNmNWI2MTI3MDBkMWQwLi5hMzUzOWI4YjE3ZjA4MWNmODIxZTc3OGEwNjIyYjU4OGZkNzdh
NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBX
RUJDT1JFX0VYUE9SVCBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNl
c3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
b3VyY2VCZWNhbWVGaWxlQmFja2VkKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CisgICAgdmly
dHVhbCB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKIAogICAg
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IGNhNjA4ZjdkNjUxNzkxZTkyNWM4OWVi
NDI2N2RjYmY0NjliNmQ1Y2YuLjFjMWJkNWVlOTBmMGVhOGFlMjc0ZGFiYzc3MWVmYjEwZGQzODcx
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tD
YWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vz
CiAgICAgICAgIGlmICghZmlsZUJhY2tlZEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBtb25pdG9yLT5yZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoZmlsZUJhY2tlZEJ1ZmZl
cik7CisgICAgICAgIG1vbml0b3ItPnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCgqZmlsZUJhY2tl
ZEJ1ZmZlcik7CiAgICAgfTsKIAogI2lmIFVTRShXRUJfVEhSRUFEKQpAQCAtMTIxLDcgKzEyMSw3
IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2VzCiAgICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRC
ZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwg
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6
cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlQmFj
a2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNr
ZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNl
UmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IDU0MDJlYjA4NjNjNThjMmFmMmIwNDhi
YTlhYzc0NDc3ZmMxOTM0NzguLjU2OTIxY2Q5Mzc3ZmMxMmUwZWUxZDAzZDkzNDQwNzFjNGFiNGNi
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC0zNyw3
ICszNyw2IEBACiAjaW5jbHVkZSAiSWNvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJY29uRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC04NSwxNiArODQsMTYgQEAgdm9p
ZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAK
ICAgICAvLyBJZiB3ZSBnb3QgYSBzdGF0dXMgY29kZSBpbmRpY2F0aW5nIGFuIGludmFsaWQgcmVz
cG9uc2UsIHRoZW4gbGV0cwogICAgIC8vIGlnbm9yZSB0aGUgZGF0YSBhbmQgbm90IHRyeSB0byBk
ZWNvZGUgdGhlIGVycm9yIHBhZ2UgYXMgYW4gaWNvbi4KLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZm
ZXI+IGRhdGEgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICBhdXRvKiBkYXRhID0g
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgaW50IHN0YXR1cyA9IHJlc291cmNlLT5y
ZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7CiAgICAgaWYgKHN0YXR1cyAmJiAoc3RhdHVzIDwg
MjAwIHx8IHN0YXR1cyA+IDI5OSkpCi0gICAgICAgIGRhdGEgPSAwOworICAgICAgICBkYXRhID0g
bnVsbHB0cjsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyIHBkZk1hZ2ljTnVtYmVyW10gPSAiJVBE
RiI7CiAgICAgc3RhdGljIHVuc2lnbmVkIHBkZk1hZ2ljTnVtYmVyTGVuZ3RoID0gc2l6ZW9mKHBk
Zk1hZ2ljTnVtYmVyKSAtIDE7CiAgICAgaWYgKGRhdGEgJiYgZGF0YS0+c2l6ZSgpID49IHBkZk1h
Z2ljTnVtYmVyTGVuZ3RoICYmICFtZW1jbXAoZGF0YS0+ZGF0YSgpLCBwZGZNYWdpY051bWJlciwg
cGRmTWFnaWNOdW1iZXJMZW5ndGgpKSB7CiAgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29u
TG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBJZ25vcmluZyBpY29uIGF0ICVzIGJlY2F1c2UgaXQg
YXBwZWFycyB0byBiZSBhIFBERiIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSk7Ci0gICAgICAgIGRhdGEgPSAwOworICAgICAgICBkYXRhID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0g
Q29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIiwgcmVzb3VyY2UtPnVybCgpLnN0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTEwMiw3ICsxMDEsNyBAQCB2b2lkIEljb25Mb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAvLyBTZXR0aW5n
IHRoZSBpY29uIGRhdGEgb25seSBhZnRlciBjb21taXR0aW5nIHRvIHRoZSBkYXRhYmFzZSBlbnN1
cmVzIHRoYXQgdGhlIGRhdGEgaXMKICAgICAvLyBrZXB0IGluIG1lbW9yeSAoc28gaXQgZG9lcyBu
b3QgaGF2ZSB0byBiZSByZWFkIGZyb20gdGhlIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5KSwgc2lu
Y2UKICAgICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVyZW5jaW5nIGl0LgotICAgIGljb25E
YXRhYmFzZSgpLnNldEljb25EYXRhRm9ySWNvblVSTChkYXRhID8gZGF0YS0+c2hhcmVkQnVmZmVy
KCkgOiAwLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOworICAgIGljb25EYXRhYmFzZSgpLnNl
dEljb25EYXRhRm9ySWNvblVSTChkYXRhLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOwogICAg
IG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
IHN0b3BMb2FkaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFj
L1Jlc291cmNlQnVmZmVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUJ1
ZmZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRjZjliNzkwOWMzNzk0MmRi
Y2QxYWYxZWQzYmY2MmVkYjRjMWJjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlQnVmZmVyLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZXNv
dXJjZUJ1ZmZlci5oIgotCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmV0YWluUHRyPE5TRGF0YT4gUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZU5TRGF0
YSgpCi17Ci0gICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKLX0KLQot
dm9pZCBSZXNvdXJjZUJ1ZmZlcjo6dHJ5UmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKFNoYXJl
ZEJ1ZmZlciogbmV3Q29udGVudHMpCi17Ci0gICAgaWYgKCFtX3NoYXJlZEJ1ZmZlcikKLSAgICAg
ICAgbV9zaGFyZWRCdWZmZXIgPSBuZXdDb250ZW50czsKLSAgICBlbHNlCi0gICAgICAgIG1fc2hh
cmVkQnVmZmVyLT50cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIobmV3Q29udGVu
dHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQppbmRleCBhMDE1ZTk4N2I2MDMyZGE3ZTExNjhl
MjY3MjRlOGMxYjNmYTA5MDg4Li4zZWNkNTk3ZmYyOTVmN2Q2NzA4Njg2Zjc1ODQ0YzlkNmNkZjg4
Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMu
bW0KQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAj
aWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjZW5kaWYK
IAogI2lmIFVTRShDRk5FVFdPUkspCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCiAKICAgICAgICAg
aWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gQnVmZmVyRGF0YSkgewogICAg
ICAgICAgICAgaWYgKCFtX3Jlc291cmNlRGF0YSkKLSAgICAgICAgICAgICAgICBtX3Jlc291cmNl
RGF0YSA9IFJlc291cmNlQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBtX3Jlc291cmNl
RGF0YS0+YXBwZW5kKGRhdGEpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IGExNjEyZGI3ZjQ2ZjNjNDk3ZWU2YTljZDIwNGUzNGNmMWYy
NDFjMjkuLjA2YmRiMzhiNTkwNmQ4ZWMxMTRmMGMyMTVjYTNlZDFkMzRiMTIwYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFD
SykKKwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlZ21lbnRTaXplID0gMHgxMDAwOwogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNlZ21lbnRQb3NpdGlvbk1hc2sgPSAweDBGRkY7CiAKQEAgLTU2LDYg
KzU3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVTZWdtZW50KGNoYXIqIHApCiB7CiAgICAg
ZmFzdEZyZWUocCk7CiB9CisKICNlbmRpZgogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigp
CkBAIC0yMTQsOSArMjE2LDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKICAgICBjbGVh
clBsYXRmb3JtRGF0YSgpOwogICAgIAogI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FM
TEJBQ0spCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGZyZWVTZWdtZW50KG1fc2VnbWVudHNbaV0pOwotCisgICAgZm9yIChjaGFy
KiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgZnJlZVNlZ21lbnQoc2VnbWVudCk7CiAg
ICAgbV9zZWdtZW50cy5jbGVhcigpOwogI2Vsc2UKICAgICBtX2RhdGFBcnJheS5jbGVhcigpOwpA
QCAtMjI2LDI0ICsyMjcsMjYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKICAgICBjbGVh
ckRhdGFCdWZmZXIoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y29weSgpIGNvbnN0CitQYXNzUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5
KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZShhZG9wdFJlZihuZXcg
U2hhcmVkQnVmZmVyKSk7CisgICAgUGFzc1JlZjxTaGFyZWRCdWZmZXI+IGNsb25lIHsgYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIpIH07CiAgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSgpKSB7Ci0g
ICAgICAgIGNsb25lLT5hcHBlbmQoZGF0YSgpLCBzaXplKCkpOworICAgICAgICBjbG9uZS5nZXQo
KS5hcHBlbmQoZGF0YSgpLCBzaXplKCkpOwogICAgICAgICByZXR1cm4gY2xvbmU7CiAgICAgfQog
Ci0gICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKLSAgICBjbG9uZS0+bV9idWZmZXItPmRhdGEu
cmVzZXJ2ZUNhcGFjaXR5KG1fc2l6ZSk7Ci0gICAgY2xvbmUtPm1fYnVmZmVyLT5kYXRhLmFwcGVu
ZChtX2J1ZmZlci0+ZGF0YS5kYXRhKCksIG1fYnVmZmVyLT5kYXRhLnNpemUoKSk7CisgICAgY2xv
bmUuZ2V0KCkubV9zaXplID0gbV9zaXplOworICAgIGNsb25lLmdldCgpLm1fYnVmZmVyLT5kYXRh
LnJlc2VydmVDYXBhY2l0eShtX3NpemUpOworICAgIGNsb25lLmdldCgpLm1fYnVmZmVyLT5kYXRh
LmFwcGVuZChtX2J1ZmZlci0+ZGF0YS5kYXRhKCksIG1fYnVmZmVyLT5kYXRhLnNpemUoKSk7CisK
ICNpZiAhVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytpKQotICAgICAgICBjbG9uZS0+bV9i
dWZmZXItPmRhdGEuYXBwZW5kKG1fc2VnbWVudHNbaV0sIHNlZ21lbnRTaXplKTsKKyAgICBmb3Ig
KGNoYXIqIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICBjbG9uZS5nZXQoKS5tX2J1ZmZl
ci0+ZGF0YS5hcHBlbmQoc2VnbWVudCwgc2VnbWVudFNpemUpOwogI2Vsc2UKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRhQXJyYXkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNsb25l
LT5hcHBlbmQobV9kYXRhQXJyYXlbaV0uZ2V0KCkpOworICAgIGZvciAoYXV0byYgZGF0YSA6IG1f
ZGF0YUFycmF5KQorICAgICAgICBjbG9uZS5nZXQoKS5hcHBlbmQoZGF0YS5nZXQoKSk7CiAjZW5k
aWYKKwogICAgIHJldHVybiBjbG9uZTsKIH0KIApAQCAtMjc1LDE3ICsyNzgsMTkgQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmNsZWFyRGF0YUJ1ZmZlcigpCiB9CiAKICNpZiAhVVNFKE5FVFdPUktfQ0ZE
QVRBX0FSUkFZX0NBTExCQUNLKQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENs
ZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29uc3QKIHsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkgeworICAg
IGZvciAoY2hhciogc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgdW5zaWduZWQgZWZm
ZWN0aXZlQnl0ZXNUb0NvcHkgPSBzdGQ6Om1pbihieXRlc1RvQ29weSwgc2VnbWVudFNpemUpOwot
ICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIG1fc2VnbWVudHNbaV0sIGVmZmVjdGl2ZUJ5dGVz
VG9Db3B5KTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzZWdtZW50LCBlZmZlY3RpdmVC
eXRlc1RvQ29weSk7CiAgICAgICAgIGRlc3RpbmF0aW9uICs9IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5
OwogICAgICAgICBieXRlc1RvQ29weSAtPSBlZmZlY3RpdmVCeXRlc1RvQ29weTsKLSAgICAgICAg
ZnJlZVNlZ21lbnQobV9zZWdtZW50c1tpXSk7CisgICAgICAgIGZyZWVTZWdtZW50KHNlZ21lbnQp
OwogICAgIH0KICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiB9CisKICNlbmRpZgogCiBjb25zdCBW
ZWN0b3I8Y2hhcj4mIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggY2NiMDI5ZDc5ODE4ZjZkOWNiZDdhZmJlNjU1MDRl
MDU2NjliNzNlOS4uZjU5MTI5YTEzYWQ4NjE5Y2I2NDZlMzQ3MzNlMGI2ZThjMDU4Zjg0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKICNlbmRpZgogCi0gICAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBQYXNzUmVmPFNoYXJlZEJ1ZmZl
cj4gY29weSgpIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGNvbnNl
Y3V0aXZlIGJ5dGVzIGFmdGVyICJwb3NpdGlvbiIuICJkYXRhIgogICAgIC8vIHBvaW50cyB0byB0
aGUgZmlyc3QgYnl0ZS4KQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgLy8gICAgICB9
CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgZ2V0U29tZURhdGEoY29uc3QgY2hhciomIGRh
dGEsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCkgY29uc3Q7CiAKLSAgICB2b2lkIHRyeVJlcGxhY2VD
b250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIHRyeVJl
cGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3JtRGF0YSgpIGNvbnN0OwogCiAgICAgc3RydWN0IERh
dGFCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YUJ1ZmZlcj4gewpAQCAt
MTU4LDYgKzE1OCw3IEBAIHByaXZhdGU6CiAjZWxzZQogICAgIG11dGFibGUgVmVjdG9yPGNoYXIq
PiBtX3NlZ21lbnRzOwogI2VuZGlmCisKICNpZiBVU0UoQ0YpCiAgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKENGRGF0YVJlZik7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZkRhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNTY3
NzA3YmZjN2ZiOTdhZGU1MWNiOTMzYjU2YzhlZDBiNThmYWZlNS4uYmJmMTg1ZTAwNzIzYjEzZTc2
MDkzZmMyYzE2NTFkMzY2NTNlZTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtOTIsMTMgKzkyLDEzIEBAIHZvaWQgU2hhcmVkQnVmZmVy
OjpjbGVhclBsYXRmb3JtRGF0YSgpCiAgICAgbV9jZkRhdGEgPSAwOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZl
ciogbmV3Q29udGVudHMpCit2b2lkIFNoYXJlZEJ1ZmZlcjo6dHJ5UmVwbGFjZUNvbnRlbnRzV2l0
aFBsYXRmb3JtQnVmZmVyKFNoYXJlZEJ1ZmZlciYgbmV3Q29udGVudHMpCiB7Ci0gICAgaWYgKCFu
ZXdDb250ZW50cy0+bV9jZkRhdGEpCisgICAgaWYgKCFuZXdDb250ZW50cy5tX2NmRGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY2xlYXIoKTsKLSAgICBtX2NmRGF0YSA9IG5ld0NvbnRlbnRz
LT5tX2NmRGF0YTsKKyAgICBtX2NmRGF0YSA9IG5ld0NvbnRlbnRzLm1fY2ZEYXRhOwogfQogCiBi
b29sIFNoYXJlZEJ1ZmZlcjo6bWF5YmVBcHBlbmRQbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBu
ZXdDb250ZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggNTg5MWQ4Yzc3MWMz
ZjU2NTdiNjMyY2IxNjk4YmY3ZmRlMmY2OTJlYi4uNTMyYWM4NDBhNzllYTZhNzZjMDVjZDM3NWM5
MWRlZmQ4MThmOTZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyX2gKIAogI2lmIEVOQUJM
RShWSURFTykKKwogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKQEAgLTM1LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CkBAIC00MywxMCArNDMsOSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50KSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyUmVjZWl2ZWQoU2hhcmVkQnVmZmVyKikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVy
cm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoU2hhcmVkQnVmZmVyKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZCgpIHsgfQogI2lmIFVTRShTT1VQKQogICAg
IHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKnJlcXVlc3RlZFNp
emUqLywgc2l6ZV90JiAvKmFjdHVhbFNpemUqLykgeyByZXR1cm4gbnVsbHB0cjsgfTsKICNlbmRp
ZgpAQCAtNjgsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpZFBhc3NBY2Nl
c3NDb250cm9sQ2hlY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+IGNsaWVudCkKKyAgICBleHBsaWNpdCBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlckNsaWVudD4gY2xpZW50KQogICAgICAgICA6IG1fY2xpZW50KFdURjo6bW92ZShjbGllbnQp
KQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNWY0YmI5N2NjNTdiZDBmYThlNWUzZDBlMjFjN2QxNWQ5
YTFlMWMyMi4uOTcyZDYxMzVlZDYzYjBiODBlMjM4ZDczODkyZTA5OTI5YTYyYmQ4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dl
YkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcApA
QCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlNvZnRMaW5raW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggZjIwZTZhMDU4NGM4ZDRmZDFjYTYwOGIwNGJhY2M4
NTBjODE4ZWVkNi4uM2U2NWE1MTg5MWNjMGQzMTczOWRiNTdlNDkxZjJjMjdjYTNiMzlhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNp
bXBvcnQgIkNhY2hlZFJlc291cmNlUmVxdWVzdC5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oIgotI2ltcG9ydCAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbXBv
cnQgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAj
aW1wb3J0ICJTb2Z0TGlua2luZy5oIgpAQCAtMTUyLDcgKzE1MSw3IEBAIHZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyCiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U2hhcmVkQnVmZmVyKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkgPyByZXNvdXJj
ZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2hhcmVkQnVmZmVyKCkgOiAwOworICAgIFNoYXJlZEJ1ZmZl
ciogZGF0YSA9IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCmluZGV4IGY5ZDc5OTEyM2FiMmE0NWU1ODE4OGI2NzUxY2M4ZWNiM2UxOGExYTUuLjEyZmRl
YmE5YjY3ZjI1NmVhNGNlODNjZWEwODE5YTVkNGNkYzIzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlckNsCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hh
ciosIGludCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFJl
c291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50
LCBwdWJsaWMgU3RyZWFtaW5nQ2xpZW50IHsKQEAgLTEwMzEsNyArMTAzMSw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShzcmMtPnByaXYtPmFwcHNy
Yyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hl
ZChTaGFyZWRCdWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9h
ZEZpbmlzaGVkKCkKIHsKICAgICBoYW5kbGVOb3RpZnlGaW5pc2hlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBjZWE5MDQ4NTM1YWYz
MzkxMDQ0NTUzNmFmOGE1MGQ3ODczMTAyZGY4Li41MDFhMzhjYTU3MjllY2I3YTk4MTY0NDk0N2Q3
MWQzMjdmMWYyZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5Lmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbXBvcnQgIlJlbmRlckltYWdlLmgi
Ci0jaW1wb3J0ICJSZXNvdXJjZUJ1ZmZlci5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAi
V2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdF
eHRyYXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVk
QnVmZmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZl
clNvdXAuY3BwCmluZGV4IDM3NzcyZmU4ZmVkNDBjNGRkYzY1ZjFiN2M4Yzk2NmQ0OTQ1NzQ2MGMu
LjI5YmNkYjc0NDFlN2UwZjE1MGFjMDNkZDMwYWY3OTQzODhjNzIyYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcApAQCAtNDQsMTEg
KzQ0LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkKICAgICBtX3Nv
dXBCdWZmZXIucmVzZXQoKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OnRyeVJlcGxhY2VDb250
ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihTaGFyZWRCdWZmZXIqKQotewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3Jt
RGF0YSgpCiB7CiAgICAgaWYgKCFtX3NvdXBCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggYjAyMmM3MTUzYjgzODllN2NkYzc2OTBiYjlhOTY5
Y2I4YTIxNzdiNy4uZGRiOGI2MjE3YzA3MjhhMGZiNjNkODNmYzRjYWJmMTVhNmE0Nzc3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNTMsNyArNTMs
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2Vi
QXJjaGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KQEAgLTQ1OSw3ICs0NTgsNyBAQCAtICh2b2lkKWZpbmFs
aXplCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Q
cml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFt
YWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBtYWluUmVz
b3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggMDg2M2JkZWZhZWQ4ZGExZTFkYzliMmVhYzgy
NmNhNjY2NDg3NGZjNC4uOTQ0YzVjODQyMjk1YmQzMzdkYmQ2YWMxMjRmOTEzNGU4YmQ2ZjEwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMDgsNyArMTA4
LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
Vmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJXaWRnZXQuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TaW1wbGVGb250RGF0YS5oPgpAQCAtMzk1NSw3ICszOTU0LDcgQEAgLSAoTlNBcnJheSAq
KW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5TVVJMICopZHJvcERl
c3RpbmF0aW9uCiAgICAgTlNVUkwgKmRyYWdnaW5nSW1hZ2VVUkwgPSBuaWw7CiAgICAgCiAgICAg
aWYgKFdlYkNvcmU6OkNhY2hlZEltYWdlKiB0aWZmUmVzb3VyY2UgPSBbc2VsZiBwcm9taXNlZERy
YWdUSUZGRGF0YVNvdXJjZV0pIHsKLSAgICAgICAgaWYgKFJlc291cmNlQnVmZmVyICpidWZmZXIg
PSBzdGF0aWNfY2FzdDxDYWNoZWRSZXNvdXJjZSo+KHRpZmZSZXNvdXJjZSktPnJlc291cmNlQnVm
ZmVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IHRpZmZSZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkgewogICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSB0aWZm
UmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgICAgICAgICAgZHJhZ2dp
bmdJbWFnZVVSTCA9IFtyZXNwb25zZSBVUkxdOwogICAgICAgICAgICAgd3JhcHBlciA9IFtbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3Vy
Y2UuY3BwCmluZGV4IDRmYmQ5OTYwMThiMzAzZmJkNTJlMDNiOGE3YWEzOWMwMWZiYzEwNGIuLjkw
NzQ1MTk5MDQwYjhhNzRiMWFmOWFlZjgwZTlkYTY3ZWIyMzEwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE4MSw4ICsxODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRhdGFTb3VyY2U6OmRhdGEoCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyID0gbV9s
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShidWZmZXIgPyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMCkuY29weVJlZlRv
KHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQg
V2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oLyogW3JldHZhbF1bb3V0XSAqLyBJV2ViRG9j
dW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKQEAgLTMwMyw4ICszMDEsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OnN1YnJlc291cmNlRm9yVVJMKAogICAgIGlm
ICghY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBSZXNvdXJj
ZUJ1ZmZlciogYnVmZmVyID0gY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCk7Ci0gICAg
KnJlc291cmNlID0gV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKGJ1ZmZlciA/IGJ1ZmZlci0+
c2hhcmVkQnVmZmVyKCkgOiAwLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSk7CisgICAgKnJl
c291cmNlID0gV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKGNhY2hlZFJlc291cmNlLT5yZXNv
dXJjZUJ1ZmZlcigpLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTc2MDg0MmE1NDA3MGI3YjllYmE4YmM3
MzkwNjdhODUwYTc2MTMxMS4uZWU4NGFjNGU0OWYwNTYwNzg4NTQyNzRhYjA0ZGZlNzgyZTI1NzBk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTIzNSw3ICsyMzUsNiBAQCBzZXQoV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCiAgICAg
U2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcAogICAgIFNoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3Bw
Ci0gICAgU2hhcmVkL1dlYlJlc291cmNlQnVmZmVyLmNwcAogICAgIFNoYXJlZC9XZWJUb3VjaEV2
ZW50LmNwcAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRl
eCA5NTRiYmE0NzQxOTkyMzNmYTg0NTZjOTAxNzFmY2I5YjY4MGU4OTk1Li44ZTNlMjU4MmQ1Mjg2
Nzk0Mzk5MTFjNWQ1OTA0NjI2NWY3ZWRjOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ1LDcgKzQ1
LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmg+CkBAIC00
MDksMTggKzQwOCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGlt
ZXJGaXJlZChUaW1lcjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+JikKIAogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKKyAgICBBU1NFUlQoYnVmZmVyKTsKICAgICBBU1NFUlQo
IWlzU3luY2hyb25vdXMoKSk7CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MCkKICAgICBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlIHNoYXJlYWJsZVJlc291cmNlSGFuZGxlOwotICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihzaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZSwgYnVmZmVyKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIoc2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUsICpidWZmZXIpOwogICAgIGlmICghc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxs
KCkpIHsKLSAgICAgICAgLy8gU2luY2Ugd2UncmUgZGVsaXZlcmluZyB0aGlzIHJlc291cmNlIGJ5
IG91cnNlbHZlcyBhbGwgYXQgb25jZSBhbmQgZG9uJ3QgbmVlZCBhbnltb3JlIGRhdGEgb3IgY2Fs
bGJhY2tzIGZyb20gdGhlIG5ldHdvcmsgbGF5ZXIsIGFib3J0IHRoZSBsb2FkZXIuCisgICAgICAg
IC8vIFNpbmNlIHdlJ3JlIGRlbGl2ZXJpbmcgdGhpcyByZXNvdXJjZSBieSBvdXJzZWx2ZXMgYWxs
IGF0IG9uY2UgYW5kIGRvbid0IG5lZWQgYW55IG1vcmUgZGF0YSBvciBjYWxsYmFja3MgZnJvbSB0
aGUgbmV0d29yayBsYXllciwgYWJvcnQgdGhlIGxvYWRlci4KICAgICAgICAgYWJvcnQoKTsKICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNvdXJj
ZShzaGFyZWFibGVSZXNvdXJjZUhhbmRsZSwgY3VycmVudFRpbWUoKSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCisKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZShidWZmZXIpOwogICAgIHNlbmRBYm9ydGluZ09uRmFpbHVyZShNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKGRhdGFSZWZlcmVuY2UsIGVuY29k
ZWREYXRhTGVuZ3RoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDI3M2UxMzE5OWU4MTkyZDNmNjY0Yzg4
YjE2YjI4OGJhNGVhYWM1NDIuLjljZWU4NjE4YzJlNzFkYzc2MTVkOTU1MmMzYjQ5YjNjZjBhMmM2
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCkBAIC00Niw3ICs0Niw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9D
RkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7Ci1jbGFzcyBSZXNvdXJjZUJ1
ZmZlcjsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpA
QCAtOTIsNyArOTEsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MCkKICAgICBz
dGF0aWMgdm9pZCB0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAg
c3RhdGljIHZvaWQgdHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgc3RhdGlj
IHZvaWQgdHJ5R2V0U2hhcmVhYmxlSGFuZGxlRnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlJiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrRGlza0NhY2hlTW9uaXRvci5oCmlu
ZGV4IGJkOGMwYjBiYWU4Zjk1NmFiOTExYjQ1MjZlZjM1ZTFhYzMzOTAxY2YuLjU4M2NlZGI2NWZl
NzE5YzQ3MTVmOTFmNmUxZmNhNDI4MzY5ZDRjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrRGlza0NhY2hlTW9uaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrRGlza0NhY2hlTW9uaXRvci5oCkBA
IC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0Rpc2tDYWNoZU1vbml0b3IoQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiwgTmV0d29ya1Jlc291cmNlTG9hZGVyKik7CiAKICAgICAvLyBX
ZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yCi0gICAgdmlydHVhbCB2b2lkIHJlc291cmNlQmVjYW1l
RmlsZUJhY2tlZChQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICB2aXJ0
dWFsIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrRGlz
a0NhY2hlTW9uaXRvci5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrRGlza0NhY2hlTW9uaXRvci5tbQppbmRleCBhMjNjNThiYzc2YTgyYWFlZTcwZGM5MWZkOTA3
ZWFjYTVhM2M1MzBkLi41NTFkMDc2OTMyNzliYmZiMWY0MjNjNGU1MjdiN2YyM2FhNzU5M2ZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya0Rpc2tD
YWNoZU1vbml0b3IubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05l
dHdvcmtEaXNrQ2FjaGVNb25pdG9yLm1tCkBAIC01OSwxMCArNTksMTAgQEAgTmV0d29ya0Rpc2tD
YWNoZU1vbml0b3I6Ok5ldHdvcmtEaXNrQ2FjaGVNb25pdG9yKENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYgY2FjaGVkUmUKIHsKIH0KIAotdm9pZCBOZXR3b3JrRGlza0NhY2hlTW9uaXRvcjo6cmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlQmFja2VkQnVm
ZmVyKQordm9pZCBOZXR3b3JrRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFj
a2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlIGhhbmRsZTsKLSAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeUdldFNo
YXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIoaGFuZGxlLCBmaWxlQmFja2VkQnVmZmVyLmdl
dCgpKTsKKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZy
b21TaGFyZWRCdWZmZXIoaGFuZGxlLCBmaWxlQmFja2VkQnVmZmVyKTsKICAgICBpZiAoaGFuZGxl
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tCmlu
ZGV4IDQzYWVlMGE1MDc4Y2Y1OWZlZjJiMjliZmZhNjM4ZTg2YzQxOGU2MjcuLmUxMzM3ZDAzNTNm
MzgwZGY2YWI4OTk5OWU4ZmRjZDE0ZDI2MmZmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUmVzb3VyY2VMb2FkZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5t
bQpAQCAtODQsNyArODQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5R2V0U2hh
cmVhYmxlSGFuZGxlRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoU2hhcmVhYgogICAgIHRyeUdldFNo
YXJlYWJsZUhhbmRsZUZyb21DRkRhdGEoaGFuZGxlLCBkYXRhKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIoU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3Zv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlHZXRTaGFyZWFibGVIYW5kbGVGcm9tU2hhcmVk
QnVmZmVyKFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSwgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgc3RhdGljIENGVVJMQ2FjaGVSZWYgY2FjaGUgPSBDRlVSTENhY2hlQ29w
eVNoYXJlZFVSTENhY2hlKCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRs
ZUZyb21TaGFyZWRCdWZmZXIoU2hhcmVhYmxlUmVzb3UKICAgICBpZiAoIWNhY2hlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBDRkRhdGFSZWYgZGF0YSA9IGJ1ZmZlci0+ZXhpc3RpbmdDRkRhdGEo
KTsKKyAgICBDRkRhdGFSZWYgZGF0YSA9IGJ1ZmZlci5leGlzdGluZ0NGRGF0YSgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDIsNyArMTAyLDggQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21TaGFyZWRCdWZmZXIo
U2hhcmVhYmxlUmVzb3UKIAogICAgIHRyeUdldFNoYXJlYWJsZUhhbmRsZUZyb21DRkRhdGEoaGFu
ZGxlLCBkYXRhKTsKIH0KLSNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTAKKworI2VuZGlmIC8vIElPUyB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwOTAKIAogc2l6ZV90IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZmlsZUJhY2tlZFJl
c291cmNlTWluaW11bVNpemUoKQogewpAQCAtMTEwLDYgKzExMSw3IEBAIHNpemVfdCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmZpbGVCYWNrZWRSZXNvdXJjZU1pbmltdW1TaXplKCkKIH0KIAogI2lm
IFVTRShDRk5FVFdPUkspCisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVS
ZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIENGQ2FjaGVkVVJMUmVzcG9uc2VS
ZWYgY2ZSZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGhhbmRsZSwgaGFuZGxlID09IG1f
aGFuZGxlKTsKQEAgLTEzMyw2ICsxMzUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
d2lsbENhY2hlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhYwogCiAg
ICAgbV9oYW5kbGUtPmNvbnRpbnVlV2lsbENhY2hlUmVzcG9uc2UobnNSZXNwb25zZSk7CiB9CisK
ICNlbmRpZiAvLyAhVVNFKENGTkVUV09SSykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaAppbmRleCA0ZjhmNDhkNWMx
Y2E3NmVjMWUwZjUzYTEyNTZlYWYxZDM4YzYyY2EzLi5lNjgwNmIwNzQxM2FkMmNlMjk4OWU5NDI4
OWI5ZDE4ODAzYTkyN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
RGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9EYXRhUmVm
ZXJlbmNlLmgKQEAgLTgzLDIxICs4MywyNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3NpemU7
CiB9OwogCi1jbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOiBwdWJsaWMgRGF0YVJlZmVy
ZW5jZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIDogcHVibGljIERhdGFSZWZl
cmVuY2UgewogcHVibGljOgorICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIGRvZXNuJ3QgaGFuZGxl
IG51bGwsIHNvIHRoZSBhcmd1bWVudCBzaG91bGQgYmUgYSByZWZlcmVuY2Ugb3IgUGFzc1JlZi4K
ICAgICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIG1fYnVmZmVy
ID0gYnVmZmVyOwogICAgIH0KIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXItPnNpemUoKTsgfQorcHJpdmF0ZToKKyAgICAvLyBGSVhNRTogSXQgaXMgYSBiYWQgaWRl
YSB0byB2aW9sYXRlIHRoZSBMaXNrb3YgU3Vic3RpdHV0aW9uIFByaW5jaXBsZSBhcyB3ZSBkbyBo
ZXJlLgorICAgIC8vIFNpbmNlIHdlIGFyZSB1c2luZyBEYXRhUmVmZXJlbmNlIGFzIGEgcG9seW1v
cHJoaWMgYmFzZSBjbGFzcyBpbiB0aGlzIGZhc2hpb24sCisgICAgLy8gdGhlbiB3ZSBuZWVkIGl0
IHRvIGJlIGEgYmFzZSBjbGFzcyB0aGF0IGRvZXMgbm90IGhhdmUgZnVuY3Rpb25zIHN1Y2ggYXMg
aXNFbXB0eSwKKyAgICAvLyBzaXplLCBkYXRhLCBhbmQgdmVjdG9yLCBhbGwgb2Ygd2hpY2ggd2ls
bCBkbyB0aGUgd3JvbmcgdGhpbmcgaWYgdGhleSBhcmUgY2FsbGVkLgorICAgIC8vIERlbGV0aW5n
IHRoZXNlIGZ1bmN0aW9ucyBoZXJlIGRvZXMgbm90IHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIGNh
bGxlZC4KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCA9IGRlbGV0ZTsKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0ID0gZGVsZXRlOwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCA9IGRl
bGV0ZTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKCkgY29uc3QgPSBkZWxldGU7CiAKLSAg
ICB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIH5TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKCkgeyBtX2J1ZmZlciA9IDA7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYpIGNvbnN0IG92ZXJyaWRlOwogCi1w
cml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlc291cmNlQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZXNvdXJjZUJ1ZmZlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YjllYjMyZTBhYTkyNTBlN2E0ODU5NDI0ZmI1NDk4MzNj
ZmFhMzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlc291cmNlQnVmZmVyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViUmVzb3VyY2VCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0Up
Ci0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlJlc291cmNlQnVmZmVyOjpXZWJSZXNvdXJjZUJ1
ZmZlcihQYXNzUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSkKLSAgICA6IG1fcmVz
b3VyY2UocmVzb3VyY2UpCi17Ci0gICAgQVNTRVJUKG1fcmVzb3VyY2UpOwotfQotCi1XZWJSZXNv
dXJjZUJ1ZmZlcjo6fldlYlJlc291cmNlQnVmZmVyKCkKLXsKLX0KLQotY29uc3QgY2hhciogV2Vi
UmVzb3VyY2VCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihtX3Jlc291cmNlLT5kYXRhKCkpOwotfQotCi11bnNpZ25lZCBXZWJS
ZXNvdXJjZUJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVzb3VyY2UtPnNp
emUoKTsKLX0KLQotYm9vbCBXZWJSZXNvdXJjZUJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICFtX3Jlc291cmNlIHx8ICFtX3Jlc291cmNlLT5zaXplKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZXNvdXJjZUJ1ZmZlci5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlc291cmNlQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDY5YjQ5NTlkNWM1MmU3NmI1ZDIzMmFkYzZkNjA2MjU5OTcyZmJkMTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlJlc291cmNlQnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJSZXNvdXJjZUJ1ZmZlcl9oCi0jZGVmaW5l
IFdlYlJlc291cmNlQnVmZmVyX2gKLQotI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0K
LSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKLQotY2xhc3MgV2ViUmVzb3VyY2VCdWZmZXIg
OiBwdWJsaWMgV2ViQ29yZTo6UmVzb3VyY2VCdWZmZXIgewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlJlc291cmNlQnVmZmVyPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWFibGVS
ZXNvdXJjZT4gcmVzb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZXNvdXJjZUJ1ZmZl
cihyZXNvdXJjZSkpOyB9Ci0KLSAgICB2aXJ0dWFsIH5XZWJSZXNvdXJjZUJ1ZmZlcigpIG92ZXJy
aWRlOwotCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB1bnNpZ25lZCBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgICBXZWJSZXNvdXJj
ZUJ1ZmZlcihQYXNzUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPik7Ci0KLSAgICBSZWZQdHI8U2hh
cmVhYmxlUmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0KLSNlbmRpZiAvLyBXZWJS
ZXNvdXJjZUJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZDhhNGViY2M1NTI5NzQ1ZWViZWY1YWMwYTJmODk2YzFkMmNj
YzRlMS4uNGRiZjY2YTg0NmNlYmEwNTM1NmNlNzBkY2NhOTYxZDc5ZWJiYTYwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODIy
LDggKzgyMiw2IEBACiAJCTUxMjEyN0M0MTkwODIzOUEwMERBRjM1QyAvKiBXZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTIxMjdDMjE5MDgyMzlBMDBEQUYzNUMgLyogV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5oICov
OyB9OwogCQk1MTIxNzQ2MDE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMTc0NUUx
NjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCAqLzsgfTsKIAkJNTEyMTc0
NjExNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIxNzQ1RjE2NEMyMEUzMDAzN0E1QzEg
LyogU2hhcmVhYmxlUmVzb3VyY2UuaCAqLzsgfTsKLQkJNTEyMTc0NjQxNjRDMjEzNzAwMzdBNUMx
IC8qIFdlYlJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMjE3NDYyMTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1
ZmZlci5jcHAgKi87IH07Ci0JCTUxMjE3NDY1MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJj
ZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyMTc0NjMxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmggKi87IH07CiAJ
CTUxMjNDRjFCMTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjNDRjE5MTMzRDI2MEEw
MDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmNwcCAqLzsgfTsKIAkJNTEyM0NGMUMxMzNEMjYw
QTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjNDRjFBMTMzRDI2MEEwMDU2RjgwMCAvKiBXS0ljb25E
YXRhYmFzZUNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTEyOTA5OTIxODNBQ0VBRjAwNTUyMkE2IC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTA5
OTAxODNBQ0VBRjAwNTUyMkE2IC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OwpA
QCAtMjg1OCw4ICsyODU2LDYgQEAKIAkJNTEyMTI3QzIxOTA4MjM5QTAwREFGMzVDIC8qIFdlYlBh
c3RlYm9hcmRPdmVycmlkZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UGFzdGVib2FyZE92ZXJyaWRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTIx
NzQ1RTE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVhYmxlUmVzb3VyY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTIxNzQ1RjE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVh
YmxlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVhYmxl
UmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTEyMTc0NjIxNjRDMjEz
NzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTEyMTc0NjMxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlQnVmZmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjNDRjE5MTMzRDI2MEEwMDU2RjgwMCAv
KiBXS0ljb25EYXRhYmFzZUNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdLSWNvbkRhdGFiYXNlQ0cuY3BwOyBwYXRoID0gY2cvV0tJY29uRGF0YWJhc2VDRy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjNDRjFBMTMzRDI2MEEwMDU2RjgwMCAv
KiBXS0ljb25EYXRhYmFzZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdL
SWNvbkRhdGFiYXNlQ0cuaDsgcGF0aCA9IGNnL1dLSWNvbkRhdGFiYXNlQ0cuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyOTA5OTAxODNBQ0VBRjAwNTUyMkE2IC8qIFdlYklEQlNl
cnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NTM5LDggKzQ1MzUsNiBAQAogCQkJCTM3OTQ4NDAyMTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJS
ZW5kZXJMYXllci5oICovLAogCQkJCTM3NjA4ODFDMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5k
ZXJPYmplY3QuY3BwICovLAogCQkJCTM3NjA4ODFEMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5k
ZXJPYmplY3QuaCAqLywKLQkJCQk1MTIxNzQ2MjE2NEMyMTM3MDAzN0E1QzEgLyogV2ViUmVzb3Vy
Y2VCdWZmZXIuY3BwICovLAotCQkJCTUxMjE3NDYzMTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNv
dXJjZUJ1ZmZlci5oICovLAogCQkJCUY2MzQ0NDU1MTJBODg1QzgwMDA2MTJEOCAvKiBXZWJTZWN1
cml0eU9yaWdpbi5oICovLAogCQkJCUE3MkQ1RDdGMTIzNkNCQTgwMEE4OEIxNSAvKiBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCAqLywKIAkJCQlDMDMzN0RENzEyN0E1MUI2MDA4RkY0RjQgLyog
V2ViVG91Y2hFdmVudC5jcHAgKi8sCkBAIC03NjE4LDcgKzc2MTIsNiBAQAogCQkJCTUxRTM1MUY2
MTgwRjVDNzUwMEU1M0JFOSAvKiBXZWJJREJGYWN0b3J5QmFja2VuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQyOUVDRDAxOTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MDg4MUYxNTA0MTNFOTAwRkM4
MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTEyMTc0NjUxNjRD
MjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MzM2NzYzMDEzMEM5OTk4MDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQUYwODlCMTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMzMzY3NjU2MTMwQzlFQ0EwMDZDOURFMiAvKiBXZWJSZXNv
dXJjZUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTkzMDQsNyArOTI5
Nyw2IEBACiAJCQkJMzc5NDg0MDMxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRlckxheWVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEMjhGM0U2MTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJFZGl0
b3JDbGllbnRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzYwODgxRTE1MDQxM0U5MDBGQzgy
QzcgLyogV2ViUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxMjE3NDY0MTY0
QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMzM2NzYyRjEzMEM5OTk4MDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTExNUM3MTQxOTBGODlFNDAwRUNDNTE2IC8qIERhdGFiYXNl
UHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMzRjlENUI5MTMxMkYxRUUwMDBENjgz
RiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA3NzE5NjQ1NTg0YzVjMGFhMmJjZjljYTUyNTRk
M2U4OGQ2NTU4YmI3Li42NzFhMTdlNTZjODQzNTBmZDg4YjJiMGQzM2VkZWIxMjIzOTkyYWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzAsMTIgKzMwLDEwIEBACiAjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRl
ICJXZWJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NhY2hlZFJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlDYWNoZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKQEAgLTk1
LDcgKzkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcmVzb3VyY2UtPnRyeVJlcGxhY2VFbmNvZGVkRGF0YShidWZmZXIucmVsZWFzZSgp
KTsKKyAgICByZXNvdXJjZS0+dHJ5UmVwbGFjZUVuY29kZWREYXRhKCpidWZmZXIpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMWE3ZjljMWU0NGYyNzAzM2Yx
ZTQyMjFkNTFmNDM1ZGI0ODUwODdkYS4uODhjYjA2NGUxMDcyOTNkNzkwOTY1YTA3NGFkYzEyY2Rh
YzgwZDY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmZXJyZXJQb2xp
Y3kuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODVhZGZiYjJj
MjBmM2IyZDc0MDdlOTY4OGZhZTk5MGIyOTA1YjBhNS4uYzVlYjQyM2NiMDJmMDU3MzUwZDM2ZWRj
NTU0MDliOGNkZGVkODkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgKaW5kZXggZGM5YWEwZjQyM2U5MDU2ODlmN2M3YWE3MzEwYTUyYjczZGEwMTRiZS4uNmI5
Mjg0MjVhZjQ3YjUyYTExNDU2MTRlZjllOTNiNTUwNTRjMTM2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTQ2
LDcgKzQ2LDYgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKLWNsYXNzIFJlc291
cmNlQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCA5MWY4ZThmNjAyYWVmYzQwN2JmY2IyNDZjNDljY2Y4ZDYzYzUzYWE4Li45Y2UwYmVmZGJl
YjU0MGI5M2Y2OGVkZmI2OWRiMDQ1ZjgyY2IxYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtNzQsNyArNzQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Byb2dyZXNzVHJhY2tlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC05
MTksNyArOTE4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKTsKICAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1haW5SZXNvdXJjZURhdGEgPyBt
YWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiAwKSwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92
aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5j
ZSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAppbmRleCA1NGUwYjdkZmYyODdlNzhhYzQ0M2VmODA4N2VmZDQyOTk3Y2IxYWNk
Li45ZGNlZTQ2YjBiZWI5NWRhZGZhMzcyMDNjNWY2NGJkOTcyODdkZDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTY1LDcgKzY1LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRv
Y3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VM
b2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC0zMDUsNyArMzA0LDcgQEAgU3RyaW5nIFdl
YkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlm
ICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8
UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEg
PSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291
cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBkZWNvZGVyLT5l
bmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURh
dGEtPnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggNWZlZGY2OWIyMWEzYzU5MmE4OWIxNjBiNjEwMzdjZjNmOGU3MTYzOC4uZDQw
MjQ5YTRmYzVlNWVkZDU2OGRkMTU4YzUxZjYxNTJjYTQ4Yzc3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTM3LDcgKzEzNyw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVy
VHJlZUFzVGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgpAQCAtMjQzMywxNyArMjQzMiwxNiBA
QCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNj
cmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRAogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBk
b24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAotICAgIC8v
IFJldGFpbiB0aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGF0IHRoaXMgbGV2ZWwgc28gaXQgKGFu
ZCB0aGUgaW50ZXJuYWwgZGF0YSkgbGl2ZXMKLSAgICAvLyBsb25nIGVub3VnaCBmb3IgdGhlIERh
dGFSZWZlcmVuY2UgdG8gYmUgZW5jb2RlZCBieSB0aGUgc2VudCBtZXNzYWdlLgogICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKLSAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLQogICAgIEpTTG9ja0hvbGRlciBsb2NrKEpT
RE9NV2luZG93Ojpjb21tb25WTSgpKTsKICAgICBpZiAoSlNWYWx1ZSByZXN1bHRWYWx1ZSA9IG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHRy
dWUpLmpzVmFsdWUoKSkgewotICAgICAgICBpZiAoKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1fbWFpbkZyYW1lLT5qc0NvbnRleHQoKSwgdG9S
ZWYobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCksIHJlc3VsdFZhbHVlKSwgMCkpKQotICAg
ICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOwor
ICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShtX21haW5GcmFtZS0+anNDb250ZXh0KCksCisgICAgICAgICAgICB0b1JlZihtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgcmVzdWx0VmFsdWUpLCBudWxscHRyKTsKICAgICB9CiAK
KyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyAgICBpZiAoc2VyaWFsaXpl
ZFJlc3VsdFZhbHVlKQorICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZh
bHVlLT5kYXRhKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1
ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIApAQCAtMjQ1NiwxNSAr
MjQ1NCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2Fs
bGJhY2tJRCkKICNpZiBFTkFCTEUoTUhUTUwpCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNN
SFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgYm9vbCB1c2VCaW5hcnlFbmNvZGluZykKIHsK
LSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLQogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHVzZUJpbmFyeUVuY29kaW5nCiAgICAgICAgID8gTUhUTUxBcmNo
aXZlOjpnZW5lcmF0ZU1IVE1MRGF0YVVzaW5nQmluYXJ5RW5jb2RpbmcobV9wYWdlLmdldCgpKQog
ICAgICAgICA6IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsK
IAorICAgIC8vIEZJWE1FOiBVc2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS4KKyAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBk
YXRhUmVmZXJlbmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwotCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJh
Y2tJRCkpOwogfQogI2VuZGlmCkBAIC0yNDg3LDIwICsyNDg0LDE3IEBAIHN0YXRpYyBGcmFtZSog
ZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAKIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmU7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
ZGF0YTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZnJhbWVXaXRoU2VsZWN0aW9uKG1fcGFnZS5n
ZXQoKSkpCisgICAgICAgIGRhdGEgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0
aW9uKGZyYW1lKS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CisjZW5kaWYKIAotICAgIEZyYW1l
KiBmcmFtZSA9IGZyYW1lV2l0aFNlbGVjdGlvbihtX3BhZ2UuZ2V0KCkpOwotICAgIGlmIChmcmFt
ZSkgewotICAgICAgICBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVj
dGlvbihmcmFtZSk7Ci0gICAgICAgIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRp
b24oKTsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBpZiAoZGF0YSkKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IElQQzo6RGF0
YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
ZGF0YS5nZXQoKSkpOwotICAgIH0KICNlbmRpZgotCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCkBA
IC0yNTIzLDI0ICsyNTE3LDIwIEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAogdm9pZCBXZWJQYWdlOjpnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogewotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotCi0gICAgUmVm
UHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGRm
UmVzb3VyY2U7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJG
cmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkgewot
ICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShm
cmFtZS0+Y29yZUZyYW1lKCkpKSB7Ci0gICAgICAgICAgICBpZiAoKHBkZlJlc291cmNlID0gcGx1
Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0YSgpKSkKLSAgICAgICAgICAgICAgICBkYXRhUmVmZXJl
bmNlID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHBkZlJlc291cmNlLT5kYXRhKCkpLCBwZGZSZXNvdXJjZS0+c2l6ZSgpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYg
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGJ1ZmZlciA9IGxvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YVJlZmVyZW5jZSA9
IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZm
ZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYg
KFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVG
cmFtZSgpKSkKKyAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURh
dGEoKTsKKyAgICAgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgICAgIGlmIChEb2N1bWVudExv
YWRlciogbG9hZGVyID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKQorICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OwogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gRklYTUU6IFVzZSBTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLgorICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIGlm
IChidWZmZXIpCisgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0
YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCkBAIC0yNTU5LDM4ICsyNTQ5LDM4IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHJlCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJv
bUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2U7Ci0gICAgVVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7Ci0K
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFt
ZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpKSB7CisgICAgICAgIFVS
TCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwogICAgICAgICBidWZmZXIg
PSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCksIHJlc291cmNlVVJMKTsK
ICAgICAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIHJl
c291cmNlIGRhdGEgZnJvbSB0aGUgY2FjaGUuCiAgICAgICAgICAgICBidWZmZXIgPSBjYWNoZWRS
ZXNwb25zZURhdGFGb3JVUkwocmVzb3VyY2VVUkwpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGJ1ZmZlcikKLSAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2Uo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXIt
PnNpemUoKSk7CiAgICAgfQogCisgICAgLy8gRklYTUU6IFVzZSBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLgorICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOworICAgIGlmIChi
dWZmZXIpCisgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJl
ZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkgewotICAgICAgICBpZiAoKGRh
dGEgPSBmcmFtZS0+d2ViQXJjaGl2ZURhdGEoMCwgMCkpKQotICAgICAgICAgICAgZGF0YVJlZmVy
ZW5jZSA9IElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwotICAgIH0KKyAgICBpZiAoV2ViRnJhbWUqIGZy
YW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpCisgICAgICAgIGRh
dGEgPSBmcmFtZS0+d2ViQXJjaGl2ZURhdGEobnVsbHB0ciwgbnVsbHB0cik7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICNlbmRpZgogCisgICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2U7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGRhdGEpCisgICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSBJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihk
YXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKKyNlbmRpZgogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNh
bGxiYWNrSUQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDc1NTcxY2I5YTYxNTE1MjQyMWI0ZmRlZGIzMjA5
ZjNhYTc1NGYzMmQuLmE0NmRkNDAyZjA2ZmMwODkyOTc5YmJmNzBhNGVkNTliNTFkYjQ4NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTgxLDcgKzgxLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhlbWVJT1MuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVu
ZGVyVmlldy5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVVbml0cy5oPgpAQCAtMTg0MiwxMCArMTg0MSwxMSBA
QCB2b2lkIFdlYlBhZ2U6OmdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGNvbnRleHRC
ZWZvcmUsIFN0cmluZyYgbWFya2VkVGV4dAogCiBzdGF0aWMgRWxlbWVudCogY29udGFpbmluZ0xp
bmtFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgZm9yIChFbGVtZW50KiBjdXJyZW50
RWxlbWVudCA9IGVsZW1lbnQ7IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJl
bnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpCi0gICAgICAgIGlmIChjdXJyZW50RWxlbWVudC0+
aXNMaW5rKCkpCi0gICAgICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7Ci0gICAgcmV0dXJu
IDA7CisgICAgZm9yIChhdXRvJiBjdXJyZW50RWxlbWVudCA6IGVsZW1lbnRMaW5lYWdlKGVsZW1l
bnQpKSB7CisgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5pc0xpbmsoKSkKKyAgICAgICAgICAg
IHJldHVybiAmY3VycmVudEVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50UG9pbnQmIHBv
aW50LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYgaW5mbykKQEAgLTE5NDksNzMg
KzE5NDksNzcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90
IGFjdGlvbikKICAgICBpZiAoIWlzPEhUTUxFbGVtZW50PihtX2ludGVyYWN0aW9uTm9kZS5nZXQo
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gZG93bmNh
c3Q8SFRNTEVsZW1lbnQ+KG1faW50ZXJhY3Rpb25Ob2RlLmdldCgpKTsKLSAgICBpZiAoIWVsZW1l
bnQtPnJlbmRlcmVyKCkpCisgICAgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1M
RWxlbWVudD4oKm1faW50ZXJhY3Rpb25Ob2RlKTsKKyAgICBpZiAoIWVsZW1lbnQucmVuZGVyZXIo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHN0YXRpY19jYXN0PFNoZWV0QWN0aW9uPihh
Y3Rpb24pID09IFNoZWV0QWN0aW9uOjpDb3B5KSB7Ci0gICAgICAgIGlmIChpczxSZW5kZXJJbWFn
ZT4oKmVsZW1lbnQtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBFbGVtZW50KiBsaW5rRWxl
bWVudCA9IGNvbnRhaW5pbmdMaW5rRWxlbWVudChlbGVtZW50KTsKLSAgICAgICAgCisgICAgICAg
IGlmIChpczxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkpIHsKKyAgICAgICAgICAg
IEVsZW1lbnQqIGxpbmtFbGVtZW50ID0gY29udGFpbmluZ0xpbmtFbGVtZW50KCZlbGVtZW50KTsK
ICAgICAgICAgICAgIGlmICghbGlua0VsZW1lbnQpCi0gICAgICAgICAgICAgICAgbV9pbnRlcmFj
dGlvbk5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVi
b2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCksICplbGVtZW50LCBkb3du
Y2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQtPnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCktPnVy
bCgpLCBTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3Vt
ZW50KCkuZnJhbWUoKS0+ZWRpdG9yKCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCksIGVsZW1lbnQsIGRvd25jYXN0PFJlbmRlckltYWdl
PigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpLT51cmwoKSwgU3RyaW5nKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1faW50ZXJhY3Rpb25Ob2RlLT5kb2N1
bWVudCgpLmZyYW1lKCktPmVkaXRvcigpLmNvcHlVUkwobGlua0VsZW1lbnQtPmRvY3VtZW50KCku
Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGxpbmtFbGVtZW50
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpKSwgbGlua0VsZW1lbnQtPnRleHRD
b250ZW50KCkpOwotICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQtPmlzTGluaygpKSB7Ci0gICAg
ICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5lZGl0b3IoKS5j
b3B5VVJMKGVsZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKGVsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRy
KSkpLCBlbGVtZW50LT50ZXh0Q29udGVudCgpKTsKKyAgICAgICAgICAgICAgICBtX2ludGVyYWN0
aW9uTm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5lZGl0b3IoKS5jb3B5VVJMKGxpbmtFbGVtZW50
LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhsaW5rRWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBs
aW5rRWxlbWVudC0+dGV4dENvbnRlbnQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5p
c0xpbmsoKSkgeworICAgICAgICAgICAgbV9pbnRlcmFjdGlvbk5vZGUtPmRvY3VtZW50KCkuZnJh
bWUoKS0+ZWRpdG9yKCkuY29weVVSTChlbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBlbGVtZW50LnRleHRDb250ZW50KCkpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDxTaGVldEFjdGlvbj4oYWN0aW9uKSA9PSBTaGVl
dEFjdGlvbjo6U2F2ZUltYWdlKSB7Ci0gICAgICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KCplbGVt
ZW50LT5yZW5kZXJlcigpKSkKKyAgICAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKmVsZW1lbnQu
cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQtPnJlbmRlcmVy
KCkpLmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZElt
YWdlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgICAgIGlmIChi
dWZmZXIpIHsKLSAgICAgICAgICAgICAgICB1aW50NjRfdCBidWZmZXJTaXplID0gYnVmZmVyLT5z
aXplKCk7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5
QnVmZmVyID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoYnVmZmVyU2l6ZSk7Ci0gICAgICAgICAgICAg
ICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyU2l6ZSk7Ci0gICAgICAgICAgICAgICAgc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVIYW5k
bGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKLSAgICAgICAgICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVJbWFnZVRvTGlicmFyeShoYW5kbGUsIGJ1ZmZl
clNpemUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSku
Y2FjaGVkSW1hZ2UoKTsKKyAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7Cisg
ICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB1aW50NjRf
dCBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKGJ1ZmZlclNpemUp
OworICAgICAgICBtZW1jcHkoc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXJTaXplKTsKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwor
ICAgICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UmVhZE9ubHkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNh
dmVJbWFnZVRvTGlicmFyeShoYW5kbGUsIGJ1ZmZlclNpemUpKTsKICAgICB9CiB9CiAKLXN0YXRp
YyBpbmxpbmUgYm9vbCBpc0Fzc2lzdGFibGVOb2RlKE5vZGUqIG5vZGUpCitzdGF0aWMgaW5saW5l
IGJvb2wgaXNBc3Npc3RhYmxlRWxlbWVudChFbGVtZW50JiBub2RlKQogewotICAgIGlmIChpczxI
VE1MU2VsZWN0RWxlbWVudD4oKm5vZGUpKQorICAgIGlmIChpczxIVE1MU2VsZWN0RWxlbWVudD4o
bm9kZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChpczxIVE1MVGV4dEFyZWFFbGVt
ZW50Pigqbm9kZSkpCi0gICAgICAgIHJldHVybiAhZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVu
dD4oKm5vZGUpLmlzUmVhZE9ubHlOb2RlKCk7Ci0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KCpub2RlKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOwotICAgICAgICByZXR1cm4gIWVsZW1lbnQuaXNSZWFk
T25seU5vZGUoKSAmJiAoZWxlbWVudC5pc1RleHRGaWVsZCgpIHx8IGVsZW1lbnQuaXNEYXRlRmll
bGQoKSB8fCBlbGVtZW50LmlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkgfHwgZWxlbWVudC5pc01vbnRo
RmllbGQoKSB8fCBlbGVtZW50LmlzVGltZUZpZWxkKCkpOworICAgIGlmIChpczxIVE1MVGV4dEFy
ZWFFbGVtZW50Pihub2RlKSkKKyAgICAgICAgcmV0dXJuICFkb3duY2FzdDxIVE1MVGV4dEFyZWFF
bGVtZW50Pihub2RlKS5pc1JlYWRPbmx5Tm9kZSgpOworICAgIGlmIChpczxIVE1MSW5wdXRFbGVt
ZW50Pihub2RlKSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dEVsZW1lbnQgPSBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihub2RlKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMg
bGF1bmRyeSBsaXN0IG9mIHR5cGVzIGlzIG5vdCBhIGdvb2Qgd2F5IHRvIGZhY3RvciB0aGlzLiBO
ZWVkIGEgc3VpdGFibGUgZnVuY3Rpb24gb24gSFRNTElucHV0RWxlbWVudCBpdHNlbGYuCisgICAg
ICAgIHJldHVybiAhaW5wdXRFbGVtZW50LmlzUmVhZE9ubHlOb2RlKCkgJiYgKGlucHV0RWxlbWVu
dC5pc1RleHRGaWVsZCgpIHx8IGlucHV0RWxlbWVudC5pc0RhdGVGaWVsZCgpIHx8IGlucHV0RWxl
bWVudC5pc0RhdGVUaW1lTG9jYWxGaWVsZCgpIHx8IGlucHV0RWxlbWVudC5pc01vbnRoRmllbGQo
KSB8fCBpbnB1dEVsZW1lbnQuaXNUaW1lRmllbGQoKSk7CiAgICAgfQotCi0gICAgcmV0dXJuIG5v
ZGUtPmlzQ29udGVudEVkaXRhYmxlKCk7CisgICAgcmV0dXJuIG5vZGUuaXNDb250ZW50RWRpdGFi
bGUoKTsKIH0KIAotc3RhdGljIGlubGluZSBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxlbWVudChO
b2RlKiBzdGFydE5vZGUsIFBhZ2UqIHBhZ2UsIGJvb2wgaXNGb3J3YXJkKQorc3RhdGljIGlubGlu
ZSBFbGVtZW50KiBuZXh0QXNzaXN0YWJsZUVsZW1lbnQoTm9kZSogc3RhcnROb2RlLCBQYWdlJiBw
YWdlLCBib29sIGlzRm9yd2FyZCkKIHsKKyAgICBpZiAoIWlzPEVsZW1lbnQ+KHN0YXJ0Tm9kZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtl
eSA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZSgpOwogCiAgICAgRWxlbWVudCogbmV4dEVsZW1lbnQg
PSBkb3duY2FzdDxFbGVtZW50PihzdGFydE5vZGUpOwogICAgIGRvIHsKLSAgICAgICAgbmV4dEVs
ZW1lbnQgPSBpc0ZvcndhcmQgPyBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5uZXh0Rm9jdXNhYmxl
RWxlbWVudChGb2N1c05hdmlnYXRpb25TY29wZTo6Zm9jdXNOYXZpZ2F0aW9uU2NvcGVPZigmbmV4
dEVsZW1lbnQtPmRvY3VtZW50KCkpLCBuZXh0RWxlbWVudCwga2V5LmdldCgpKQotICAgICAgICAg
ICAgOiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5wcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnQoRm9j
dXNOYXZpZ2F0aW9uU2NvcGU6OmZvY3VzTmF2aWdhdGlvblNjb3BlT2YoJm5leHRFbGVtZW50LT5k
b2N1bWVudCgpKSwgbmV4dEVsZW1lbnQsIGtleS5nZXQoKSk7Ci0gICAgfSB3aGlsZSAobmV4dEVs
ZW1lbnQgJiYgIWlzQXNzaXN0YWJsZU5vZGUobmV4dEVsZW1lbnQpKTsKKyAgICAgICAgbmV4dEVs
ZW1lbnQgPSBpc0ZvcndhcmQKKyAgICAgICAgICAgID8gcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5u
ZXh0Rm9jdXNhYmxlRWxlbWVudChGb2N1c05hdmlnYXRpb25TY29wZTo6Zm9jdXNOYXZpZ2F0aW9u
U2NvcGVPZigmbmV4dEVsZW1lbnQtPmRvY3VtZW50KCkpLCBuZXh0RWxlbWVudCwga2V5LmdldCgp
KQorICAgICAgICAgICAgOiBwYWdlLmZvY3VzQ29udHJvbGxlcigpLnByZXZpb3VzRm9jdXNhYmxl
RWxlbWVudChGb2N1c05hdmlnYXRpb25TY29wZTo6Zm9jdXNOYXZpZ2F0aW9uU2NvcGVPZigmbmV4
dEVsZW1lbnQtPmRvY3VtZW50KCkpLCBuZXh0RWxlbWVudCwga2V5LmdldCgpKTsKKyAgICB9IHdo
aWxlIChuZXh0RWxlbWVudCAmJiAhaXNBc3Npc3RhYmxlRWxlbWVudCgqbmV4dEVsZW1lbnQpKTsK
IAogICAgIHJldHVybiBuZXh0RWxlbWVudDsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGhhc0Zv
Y3VzYWJsZUVsZW1lbnQoTm9kZSogc3RhcnROb2RlLCBQYWdlKiBwYWdlLCBib29sIGlzRm9yd2Fy
ZCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RhYmxlRWxlbWVudChOb2RlKiBzdGFydE5v
ZGUsIFBhZ2UmIHBhZ2UsIGJvb2wgaXNGb3J3YXJkKQogewotICAgIHJldHVybiBuZXh0Rm9jdXNh
YmxlRWxlbWVudChzdGFydE5vZGUsIHBhZ2UsIGlzRm9yd2FyZCkgIT0gbmlsOworICAgIHJldHVy
biBuZXh0QXNzaXN0YWJsZUVsZW1lbnQoc3RhcnROb2RlLCBwYWdlLCBpc0ZvcndhcmQpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCkKIHsK
LSAgICBFbGVtZW50KiBuZXh0RWxlbWVudCA9IG5leHRGb2N1c2FibGVFbGVtZW50KG1fYXNzaXN0
ZWROb2RlLmdldCgpLCBtX3BhZ2UuZ2V0KCksIGlzRm9yd2FyZCk7CisgICAgRWxlbWVudCogbmV4
dEVsZW1lbnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICpt
X3BhZ2UsIGlzRm9yd2FyZCk7CiAgICAgbV91c2VySXNJbnRlcmFjdGluZyA9IHRydWU7CiAgICAg
aWYgKG5leHRFbGVtZW50KQogICAgICAgICBuZXh0RWxlbWVudC0+Zm9jdXMoKTsKQEAgLTIwNTYs
OCArMjA2MCw4IEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24oQXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24mIGluZm9ybWF0aW9uKQogICAgIGluZm9ybWF0aW9uLm1pbmlt
dW1TY2FsZUZhY3RvciA9IG1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKTsKICAgICBpbmZvcm1hdGlv
bi5tYXhpbXVtU2NhbGVGYWN0b3IgPSBtYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgaW5m
b3JtYXRpb24uYWxsb3dzVXNlclNjYWxpbmcgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hbGxv
d3NVc2VyU2NhbGluZygpOwotICAgIGluZm9ybWF0aW9uLmhhc05leHROb2RlID0gaGFzRm9jdXNh
YmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgbV9wYWdlLmdldCgpLCB0cnVlKTsKLSAg
ICBpbmZvcm1hdGlvbi5oYXNQcmV2aW91c05vZGUgPSBoYXNGb2N1c2FibGVFbGVtZW50KG1fYXNz
aXN0ZWROb2RlLmdldCgpLCBtX3BhZ2UuZ2V0KCksIGZhbHNlKTsKKyAgICBpbmZvcm1hdGlvbi5o
YXNOZXh0Tm9kZSA9IGhhc0Fzc2lzdGFibGVFbGVtZW50KG1fYXNzaXN0ZWROb2RlLmdldCgpLCAq
bV9wYWdlLCB0cnVlKTsKKyAgICBpbmZvcm1hdGlvbi5oYXNQcmV2aW91c05vZGUgPSBoYXNBc3Np
c3RhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgZmFsc2UpOwogCiAg
ICAgaWYgKGlzPEhUTUxTZWxlY3RFbGVtZW50PigqbV9hc3Npc3RlZE5vZGUpKSB7CiAgICAgICAg
IEhUTUxTZWxlY3RFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTFNlbGVjdEVsZW1lbnQ+
KCptX2Fzc2lzdGVkTm9kZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>