<?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>76573</bug_id>
          
          <creation_ts>2012-01-18 14:24:28 -0800</creation_ts>
          <short_desc>Make WebAudio API const-correct.</short_desc>
          <delta_ts>2012-01-19 12:03:42 -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>Web Audio</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>
          
          <blocked>74553</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>crogers</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>538165</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-18 14:24:28 -0800</bug_when>
    <thetext>Make WebAudio API const-correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538187</commentid>
    <comment_count>1</comment_count>
      <attachid>122999</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-18 14:40:21 -0800</bug_when>
    <thetext>Created attachment 122999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538203</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-18 14:54:14 -0800</bug_when>
    <thetext>Looks fine to me, assuming the bots pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538249</commentid>
    <comment_count>3</comment_count>
      <attachid>122999</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 15:30:01 -0800</bug_when>
    <thetext>Comment on attachment 122999
Patch

Attachment 122999 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11282375</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538250</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-18 15:30:36 -0800</bug_when>
    <thetext>Whoops, forgot to modify the platform-specific implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538268</commentid>
    <comment_count>5</comment_count>
      <attachid>123022</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-18 15:39:31 -0800</bug_when>
    <thetext>Created attachment 123022
Patch

Made platform-specific implementations match their platform-neutral declarations. Found more functions which needed const-correcting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538309</commentid>
    <comment_count>6</comment_count>
      <attachid>123022</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 16:17:28 -0800</bug_when>
    <thetext>Comment on attachment 123022
Patch

Attachment 123022 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11284397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538318</commentid>
    <comment_count>7</comment_count>
      <attachid>123035</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-18 16:39:20 -0800</bug_when>
    <thetext>Created attachment 123035
Patch

Yet more platform-specific fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538351</commentid>
    <comment_count>8</comment_count>
      <attachid>123035</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 17:28:54 -0800</bug_when>
    <thetext>Comment on attachment 123035
Patch

Attachment 123035 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11284444</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538432</commentid>
    <comment_count>9</comment_count>
      <attachid>123063</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-18 20:45:59 -0800</bug_when>
    <thetext>Created attachment 123063
Patch

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538444</commentid>
    <comment_count>10</comment_count>
      <attachid>123063</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 21:11:47 -0800</bug_when>
    <thetext>Comment on attachment 123063
Patch

Attachment 123063 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11211912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538467</commentid>
    <comment_count>11</comment_count>
      <attachid>123070</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-18 21:47:51 -0800</bug_when>
    <thetext>Created attachment 123070
Patch

Double ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538492</commentid>
    <comment_count>12</comment_count>
      <attachid>123070</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 22:47:17 -0800</bug_when>
    <thetext>Comment on attachment 123070
Patch

Attachment 123070 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11300014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538792</commentid>
    <comment_count>13</comment_count>
      <attachid>123147</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-19 10:23:44 -0800</bug_when>
    <thetext>Created attachment 123147
Patch

Another day, another platform-specific compile error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538809</commentid>
    <comment_count>14</comment_count>
      <attachid>123147</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-01-19 10:58:26 -0800</bug_when>
    <thetext>Comment on attachment 123147
Patch

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

&gt; Source/WebCore/platform/audio/SincResampler.cpp:139
&gt; +    // FIXME: find a way to make the following const-correct:

Nit: &quot;find&quot; =&gt; &quot;Find&quot;.

You may want to consider filling a WebKit bug for this so as to make it actionable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538816</commentid>
    <comment_count>15</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-19 11:05:11 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 123147 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123147&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/SincResampler.cpp:139
&gt; &gt; +    // FIXME: find a way to make the following const-correct:
&gt; 
&gt; Nit: &quot;find&quot; =&gt; &quot;Find&quot;.
&gt; 
&gt; You may want to consider filling a WebKit bug for this so as to make it actionable.

Will do.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538826</commentid>
    <comment_count>16</comment_count>
      <attachid>123147</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 11:09:01 -0800</bug_when>
    <thetext>Comment on attachment 123147
Patch

Attachment 123147 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11253559

New failing tests:
fullscreen/full-screen-iframe-zIndex.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538832</commentid>
    <comment_count>17</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-19 11:13:48 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 123147 [details])
&gt; Attachment 123147 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11253559
&gt; 
&gt; New failing tests:
&gt; fullscreen/full-screen-iframe-zIndex.html

Whoops, that test snuck into my patch.  I&apos;ll excise it before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538886</commentid>
    <comment_count>18</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-19 12:01:27 -0800</bug_when>
    <thetext>Committed r105431: &lt;http://trac.webkit.org/changeset/105431&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538896</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-01-19 12:03:42 -0800</bug_when>
    <thetext>In the end, SincResampler::consumeSource did not need to take a const parameter (as it was a convenience function which operates on a mutable buffer), so its change (and thus the FIXME) were unnecessary.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122999</attachid>
            <date>2012-01-18 14:40:21 -0800</date>
            <delta_ts>2012-01-18 15:39:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76573-20120118144020.patch</filename>
            <type>text/plain</type>
            <size>46101</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYxZWFkZGViM2VjYTVj
MjI2OTRiMDBkZmU4MzRhMmZjNjk5MWViYS4uZTFlNTk5ZjI0ZDk0MThmZTVhNzEwOTIxNGIwZTRl
ZTljZjdlNWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTAxLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViQXVkaW8gQVBJ
IGNvbnN0LWNvcnJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0czsgbm8gbmV0IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LCBzbyBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIFRoZSBub24tY29uc3QgZGF0YSgp
IGFjY2Vzc29yIHdhcyByZW5hbWVkIG11dGFibGVEYXRhKCkgdG8gZXhwb3NlIGNvbnN0LWNvcnJl
Y3RuZXNzCisgICAgICAgIGJ1Z3MgZHVyaW5nIGNvbXBpbGUgdGltZToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5l
bDo6bXV0YWJsZURhdGEpOgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHdlcmUg
bWFkZSBjb25zdCBjb3JyZWN0OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXku
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQXJyYXk6OmNvcHlUb1JhbmdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNyZWF0ZUJ1ZmZlckZyb21SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y3Jl
YXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6
Y3JlYXRlQnlNaXhpbmdUb01vbm8pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRDb252b2x2ZXI6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0ZGVEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb1BhZGRl
ZEZGVCk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9GRlQpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
Q29udm9sdmVyU3RhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyU3Rh
Z2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZv
bHZlclN0YWdlOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXJTdGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYklucHV0QnVmZmVyOjp3cml0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNh
bXBsZXI6OmNvbnN1bWVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2luY1Jlc2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Olpl
cm9Qb2xlOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oOgor
CisgICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHdlcmUgbW9kaWZpZWQgdG8gdXNlIHRo
ZSByZW5hbWVkIG11dGFibGVEYXRhKCkgYWNjZXNzb3I6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9CdXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnByb2Nlc3NXaXRo
R2FpbkZyb21Nb25vU3RlcmVvKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0
aFNhbXBsZUFjY3VyYXRlR2FpblZhbHVlc0Zyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6Y29weUZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9DaGFubmVsOjpjb3B5RnJvbVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ2hhbm5lbDo6c3VtRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EU1BLZXJuZWxQ
cm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpwcm9jZXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVxdWFsUG93
ZXJQYW5uZXI6OnBhbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRG
S2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0hSVEZQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6cGFuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjpwcm9j
ZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMv
RkZURnJhbWVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAg
ICAgICAgKiB3ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVuZGVyRnJvbUJ1ZmZlcik6CisgICAgICAgICogd2Vi
YXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nl
c3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICogd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0QXVkaW9Ob2RlOjpwcm9jZXNzKToKKyAg
ICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXIpOgorICAgICAg
ICAqIHdlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVBbmFseXNlcjo6d3JpdGVJbnB1dCk6CisgICAgICAgICogd2ViYXVkaW8vV2F2ZVNoYXBl
clByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpw
cm9jZXNzKToKKwogMjAxMi0wMS0xOCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBBY2Nlc3NpYmlsaXR5OiBDaHJvbWl1bSBuZWVkcyBtZXRob2RzIHRv
IHNjcm9sbCBhbiBvYmplY3QgaW50byB2aWV3IG9yIHRvIGEgc3BlY2lmaWMgbG9jYXRpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmgKaW5kZXggYTE0Yzk1MGRk
NmZjN2NjYmU4YjA0YjFlOTI2MGRhMmIxMDIxZGE1OC4uN2EyMjUxYjM4YjJmNDJlMDVjOGU0MGEx
MGJiNzM0MmM0YjJlNjRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9BcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
QXJyYXkuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbWVtc2V0KHRoaXMt
PmRhdGEoKSArIHN0YXJ0LCAwLCBzaXplb2YoVCkgKiAoZW5kIC0gc3RhcnQpKTsKICAgICB9CiAK
LSAgICB2b2lkIGNvcHlUb1JhbmdlKFQqIHNvdXJjZURhdGEsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQpCisgICAgdm9pZCBjb3B5VG9SYW5nZShjb25zdCBUKiBzb3VyY2VEYXRhLCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgZW5kKQogICAgIHsKICAgICAgICAgYm9vbCBpc1NhZmUgPSAo
c3RhcnQgPD0gZW5kKSAmJiAoZW5kIDw9IHRoaXMtPnNpemUoKSk7CiAgICAgICAgIEFTU0VSVChp
c1NhZmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCmluZGV4
IDMwNDg5YmFhNzUxZTEzNDNkNjcyOWFmNDY4YjY5MjU4YzcwYTdjYWMuLjY0OGZkODc3NGViN2Ux
ZTQ0ZmE0MjNlODIwMDE5NDE0MDQxZTdjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIEF1ZGlvQnVzOjp0b3Bv
bG9neU1hdGNoZXMoY29uc3QgQXVkaW9CdXMmIGJ1cykgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ1ZmZlckZyb21SYW5n
ZShBdWRpb0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBl
bmRGcmFtZSkKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCdWZmZXJGcm9t
UmFuZ2UoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1ZmZlciwgdW5zaWduZWQgc3RhcnRGcmFtZSwg
dW5zaWduZWQgZW5kRnJhbWUpCiB7CiAgICAgc2l6ZV90IG51bWJlck9mU291cmNlRnJhbWVzID0g
c291cmNlQnVmZmVyLT5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzID0g
c291cmNlQnVmZmVyLT5udW1iZXJPZkNoYW5uZWxzKCk7CkBAIC0zNDUsOCArMzQ1LDggQEAgdm9p
ZCBBdWRpb0J1czo6cHJvY2Vzc1dpdGhHYWluRnJvbU1vbm9TdGVyZW8oY29uc3QgQXVkaW9CdXMg
JnNvdXJjZUJ1cywgZmxvYXQqIGwKICAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1
c1NhZmUuY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPmRhdGEoKTsKICAgICBjb25zdCBmbG9h
dCogc291cmNlUiA9IG51bWJlck9mU291cmNlQ2hhbm5lbHMgPiAxID8gc291cmNlQnVzU2FmZS5j
aGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPmRhdGEoKSA6IDA7CiAKLSAgICBmbG9hdCogZGVz
dGluYXRpb25MID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPmRhdGEoKTsKLSAgICBmbG9h
dCogZGVzdGluYXRpb25SID0gbnVtYmVyT2ZEZXN0aW5hdGlvbkNoYW5uZWxzID4gMSA/IGNoYW5u
ZWxCeVR5cGUoQ2hhbm5lbFJpZ2h0KS0+ZGF0YSgpIDogMDsKKyAgICBmbG9hdCogZGVzdGluYXRp
b25MID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPm11dGFibGVEYXRhKCk7CisgICAgZmxv
YXQqIGRlc3RpbmF0aW9uUiA9IG51bWJlck9mRGVzdGluYXRpb25DaGFubmVscyA+IDEgPyBjaGFu
bmVsQnlUeXBlKENoYW5uZWxSaWdodCktPm11dGFibGVEYXRhKCkgOiAwOwogCiAgICAgY29uc3Qg
ZmxvYXQgRGV6aXBwZXJSYXRlID0gMC4wMDVmOwogICAgIGludCBmcmFtZXNUb1Byb2Nlc3MgPSBs
ZW5ndGgoKTsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIEF1ZGlvQnVzOjpjb3B5V2l0aFNhbXBs
ZUFjY3VyYXRlR2FpblZhbHVlc0Zyb20oY29uc3QgQXVkaW9CdXMgJnNvdXJjZUJ1cywgZgogICAg
IGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZD
aGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewogICAgICAgICBpZiAoc291cmNlQnVzLm51bWJl
ck9mQ2hhbm5lbHMoKSA9PSBudW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgICAgICBzb3VyY2Ug
PSBzb3VyY2VCdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7Ci0gICAgICAgIGZsb2F0
KiBkZXN0aW5hdGlvbiA9IGNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOworICAgICAgICBm
bG9hdCogZGVzdGluYXRpb24gPSBjaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7
CiAgICAgICAgIHZtdWwoc291cmNlLCAxLCBnYWluVmFsdWVzLCAxLCBkZXN0aW5hdGlvbiwgMSwg
bnVtYmVyT2ZHYWluVmFsdWVzKTsKICAgICB9CiB9CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBB
dWRpb0J1czo6c3VtV2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0
KiBsYXN0TWl4R2FpbiwgZmwKICAgICBwcm9jZXNzV2l0aEdhaW5Gcm9tKHNvdXJjZUJ1cywgbGFz
dE1peEdhaW4sIHRhcmdldEdhaW4sIHRydWUpOwogfQogCi1QYXNzT3duUHRyPEF1ZGlvQnVzPiBB
dWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhBdWRpb0J1cyogc291cmNlQnVz
LCBib29sIG1peFRvTW9ubywgZG91YmxlIG5ld1NhbXBsZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlv
QnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhjb25zdCBBdWRpb0J1
cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91YmxlIG5ld1NhbXBsZVJhdGUpCiB7CiAg
ICAgLy8gc291cmNlQnVzJ3Mgc2FtcGxlLXJhdGUgbXVzdCBiZSBrbm93bi4KICAgICBBU1NFUlQo
c291cmNlQnVzICYmIHNvdXJjZUJ1cy0+c2FtcGxlUmF0ZSgpKTsKQEAgLTQ3Niw3ICs0NzYsNyBA
QCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVy
dGluZyhBdWRpb0J1cyogc291cmNlQnVzLAogICAgIH0KICAgICAKICAgICAvLyBGaXJzdCwgbWl4
IHRvIG1vbm8gKGlmIG5lY2Vzc2FyeSkgdGhlbiBzYW1wbGUtcmF0ZSBjb252ZXJ0LgotICAgIEF1
ZGlvQnVzKiByZXNhbXBsZXJTb3VyY2VCdXM7CisgICAgY29uc3QgQXVkaW9CdXMqIHJlc2FtcGxl
clNvdXJjZUJ1czsKICAgICBPd25QdHI8QXVkaW9CdXM+IG1peGVkTW9ub0J1czsKICAgICBpZiAo
bWl4VG9Nb25vKSB7CiAgICAgICAgIG1peGVkTW9ub0J1cyA9IEF1ZGlvQnVzOjpjcmVhdGVCeU1p
eGluZ1RvTW9ubyhzb3VyY2VCdXMpOwpAQCAtNDk3LDggKzQ5Nyw4IEBAIFBhc3NPd25QdHI8QXVk
aW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKEF1ZGlvQnVzKiBz
b3VyY2VCdXMsCiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJ0IGVhY2ggY2hhbm5lbC4KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZEZXN0aW5hdGlvbkNoYW5uZWxzOyAr
K2kpIHsKLSAgICAgICAgZmxvYXQqIHNvdXJjZSA9IHJlc2FtcGxlclNvdXJjZUJ1cy0+Y2hhbm5l
bChpKS0+ZGF0YSgpOwotICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1
cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAgICAgICBjb25zdCBmbG9hdCogc291cmNlID0gcmVz
YW1wbGVyU291cmNlQnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBkZXN0
aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwogCiAg
ICAgICAgIFNpbmNSZXNhbXBsZXIgcmVzYW1wbGVyKHNhbXBsZVJhdGVSYXRpbyk7CiAgICAgICAg
IHJlc2FtcGxlci5wcm9jZXNzKHNvdXJjZSwgZGVzdGluYXRpb24sIHNvdXJjZUxlbmd0aCk7CkBA
IC01MDgsNyArNTA4LDcgQEAgUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5
U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMqIHNvdXJjZUJ1cywKICAgICByZXR1cm4gZGVz
dGluYXRpb25CdXMucmVsZWFzZSgpOwogfQogCi1QYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1
czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oQXVkaW9CdXMqIHNvdXJjZUJ1cykKK1Bhc3NPd25QdHI8
QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyhjb25zdCBBdWRpb0J1cyog
c291cmNlQnVzKQogewogICAgIHN3aXRjaCAoc291cmNlQnVzLT5udW1iZXJPZkNoYW5uZWxzKCkp
IHsKICAgICBjYXNlIDE6CkBAIC01MTksOSArNTE5LDkgQEAgUGFzc093blB0cjxBdWRpb0J1cz4g
QXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3VyY2VCdXMpCiAgICAg
ICAgICAgICB1bnNpZ25lZCBuID0gc291cmNlQnVzLT5sZW5ndGgoKTsKICAgICAgICAgICAgIE93
blB0cjxBdWRpb0J1cz4gZGVzdGluYXRpb25CdXMoYWRvcHRQdHIobmV3IEF1ZGlvQnVzKDEsIG4p
KSk7CiAKLSAgICAgICAgICAgIGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVzLT5jaGFubmVsKDAp
LT5kYXRhKCk7Ci0gICAgICAgICAgICBmbG9hdCogc291cmNlUiA9IHNvdXJjZUJ1cy0+Y2hhbm5l
bCgxKS0+ZGF0YSgpOwotICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRp
b25CdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3Vy
Y2VMID0gc291cmNlQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgICAgICAgICBjb25zdCBm
bG9hdCogc291cmNlUiA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpOworICAgICAgICAg
ICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMCktPm11dGFi
bGVEYXRhKCk7CiAgICAgICAgIAogICAgICAgICAgICAgLy8gRG8gdGhlIG1vbm8gbWl4ZG93bi4K
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCA2MzcwYzhiNTIzNDYxNDdjYTg3MGMz
MWU1M2NjN2FjZDQ1ODczYmZjLi41ZDVjMTQ3ZDJmZjNkNGZmNTZkNzFmZDA5NWQwMzEyZGVlOTdh
NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTg3LDE3
ICs4NywxNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDcmVhdGVzIGEgbmV3IGJ1ZmZlciBmcm9tIGEg
cmFuZ2UgaW4gdGhlIHNvdXJjZSBidWZmZXIuCiAgICAgLy8gMCBtYXkgYmUgcmV0dXJuZWQgaWYg
dGhlIHJhbmdlIGRvZXMgbm90IGZpdCBpbiB0aGUgc291cmNlQnVmZmVyCi0gICAgc3RhdGljIFBh
c3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1ZmZlckZyb21SYW5nZShBdWRpb0J1cyogc291cmNl
QnVmZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFtZSk7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1ZmZlckZyb21SYW5nZShjb25zdCBBdWRp
b0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFt
ZSk7CiAKIAogICAgIC8vIENyZWF0ZXMgYSBuZXcgQXVkaW9CdXMgYnkgc2FtcGxlLXJhdGUgY29u
dmVydGluZyBzb3VyY2VCdXMgdG8gdGhlIG5ld1NhbXBsZVJhdGUuCiAgICAgLy8gc2V0U2FtcGxl
UmF0ZSgpIG11c3QgaGF2ZSBiZWVuIHByZXZpb3VzbHkgY2FsbGVkIG9uIHNvdXJjZUJ1cy4KICAg
ICAvLyBOb3RlOiBzYW1wbGUtcmF0ZSBjb252ZXJzaW9uIGlzIGFscmVhZHkgaGFuZGxlZCBpbiB0
aGUgZmlsZS1yZWFkaW5nIGNvZGUgZm9yIHRoZSBtYWMgcG9ydCwgc28gd2UgZG9uJ3QgbmVlZCB0
aGlzLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCeVNhbXBsZVJhdGVD
b252ZXJ0aW5nKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgbmV3
U2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ5U2Ft
cGxlUmF0ZUNvbnZlcnRpbmcoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywgYm9vbCBtaXhUb01v
bm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKTsKIAogICAgIC8vIENyZWF0ZXMgYSBuZXcgQXVkaW9C
dXMgYnkgbWl4aW5nIGFsbCB0aGUgY2hhbm5lbHMgZG93biB0byBtb25vLgogICAgIC8vIElmIHNv
dXJjZUJ1cyBpcyBhbHJlYWR5IG1vbm8sIHRoZW4gdGhlIHJldHVybmVkIEF1ZGlvQnVzIHdpbGwg
c2ltcGx5IGJlIGEgY29weS4KLSAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRl
QnlNaXhpbmdUb01vbm8oQXVkaW9CdXMqIHNvdXJjZUJ1cyk7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8QXVkaW9CdXM+IGNyZWF0ZUJ5TWl4aW5nVG9Nb25vKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VC
dXMpOwogCiAgICAgLy8gU2NhbGVzIGFsbCBzYW1wbGVzIGJ5IHRoZSBzYW1lIGFtb3VudC4KICAg
ICB2b2lkIHNjYWxlKGZsb2F0IHNjYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0NoYW5uZWwuY3BwCmluZGV4IGViYmYzYmJmNTUwZDJhMzcyMmMxMGE4NmZmNDUy
NGVmNDM1NzM1MGQuLjNjNzQ4ZTYzMzk5MGVjMTdiY2RjMDM4ZjA3MGE5NTI0MmZhYTlkZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcApAQCAt
NDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKIAogdm9pZCBBdWRpb0No
YW5uZWw6OnNjYWxlKGZsb2F0IHNjYWxlKQogewotICAgIHZzbXVsKGRhdGEoKSwgMSwgJnNjYWxl
LCBkYXRhKCksIDEsIGxlbmd0aCgpKTsKKyAgICB2c211bChkYXRhKCksIDEsICZzY2FsZSwgbXV0
YWJsZURhdGEoKSwgMSwgbGVuZ3RoKCkpOwogfQogCiB2b2lkIEF1ZGlvQ2hhbm5lbDo6Y29weUZy
b20oY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsKQpAQCAtNTMsNyArNTMsNyBAQCB2
b2lkIEF1ZGlvQ2hhbm5lbDo6Y29weUZyb20oY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFu
bmVsKQogICAgIGlmICghaXNTYWZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1jcHkoZGF0
YSgpLCBzb3VyY2VDaGFubmVsLT5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBsZW5ndGgoKSk7Cisg
ICAgbWVtY3B5KG11dGFibGVEYXRhKCksIHNvdXJjZUNoYW5uZWwtPmRhdGEoKSwgc2l6ZW9mKGZs
b2F0KSAqIGxlbmd0aCgpKTsKIH0KIAogdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tUmFuZ2Uo
Y29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1
bnNpZ25lZCBlbmRGcmFtZSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBBdWRpb0NoYW5uZWw6OmNv
cHlGcm9tUmFuZ2UoY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsLCB1bnNpZ25lZCBz
dGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IHNvdXJjZUNo
YW5uZWwtPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkYXRhKCk7CisgICAgZmxv
YXQqIGRlc3RpbmF0aW9uID0gbXV0YWJsZURhdGEoKTsKICAgICBtZW1jcHkoZGVzdGluYXRpb24s
IHNvdXJjZSArIHN0YXJ0RnJhbWUsIHNpemVvZihmbG9hdCkgKiByYW5nZUxlbmd0aCk7CiB9CiAK
QEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBBdWRpb0NoYW5uZWw6OnN1bUZyb20oY29uc3QgQXVkaW9D
aGFubmVsKiBzb3VyY2VDaGFubmVsKQogICAgIGlmICghaXNTYWZlKQogICAgICAgICByZXR1cm47
CiAKLSAgICB2YWRkKGRhdGEoKSwgMSwgc291cmNlQ2hhbm5lbC0+ZGF0YSgpLCAxLCBkYXRhKCks
IDEsIGxlbmd0aCgpKTsKKyAgICB2YWRkKGRhdGEoKSwgMSwgc291cmNlQ2hhbm5lbC0+ZGF0YSgp
LCAxLCBtdXRhYmxlRGF0YSgpLCAxLCBsZW5ndGgoKSk7CiB9CiAKIGZsb2F0IEF1ZGlvQ2hhbm5l
bDo6bWF4QWJzVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9DaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0NoYW5uZWwuaAppbmRleCA4ODAzZTc1Y2QxZTNmN2FlMjJhNTA4NjlmNjFlOGRkNDVkYmJk
NGNjLi4yNGRlM2Y5ZTgyMDYyYzdjMGFlODNkZGMyZTVmMDQxZWYxMTQyOGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApAQCAtNzMsNyArNzMsNyBA
QCBwdWJsaWM6CiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
CiAKICAgICAvLyBEaXJlY3QgYWNjZXNzIHRvIFBDTSBzYW1wbGUgZGF0YQotICAgIGZsb2F0KiBk
YXRhKCkgeyByZXR1cm4gbV9yYXdQb2ludGVyID8gbV9yYXdQb2ludGVyIDogbV9tZW1CdWZmZXIt
PmRhdGEoKTsgfQorICAgIGZsb2F0KiBtdXRhYmxlRGF0YSgpIHsgcmV0dXJuIG1fcmF3UG9pbnRl
ciA/IG1fcmF3UG9pbnRlciA6IG1fbWVtQnVmZmVyLT5kYXRhKCk7IH0KICAgICBjb25zdCBmbG9h
dCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3UG9pbnRlciA/IG1fcmF3UG9pbnRlciA6IG1f
bWVtQnVmZmVyLT5kYXRhKCk7IH0KIAogICAgIC8vIFplcm9lcyBvdXQgYWxsIHNhbXBsZSB2YWx1
ZXMgaW4gYnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuY3BwCmluZGV4IGNmNGQyZDM1MTc1YTUzODkzZTE1
Y2VmNTAzZjBiZjllMzZhMGFjODMuLjBjYzA3ZWFhOGI2NjE5OGRkNmRjY2MyZjM3OWIzZTMyYTdk
MDI1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBBdWRpb0RT
UEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVz
dGluYXRpb24sIHMKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9rZXJuZWxzLnNpemUoKTsgKytpKQotICAgICAgICBtX2tlcm5lbHNbaV0t
PnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVs
KGkpLT5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1fa2VybmVsc1tpXS0+cHJv
Y2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEoKSwgZGVzdGluYXRpb24tPmNoYW5uZWwoaSkt
Pm11dGFibGVEYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKIC8vIFJlc2V0cyBmaWx0ZXIg
c3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVz
YW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVy
LmNwcAppbmRleCBiYTViNThlNjQ1MDhmMDExODgzMmQwMmM1YmM1YTU5MjJkZTYwOWQ1Li4xYTlm
ODFlN2E3NDNhYTYyZmUxMjQ1ZWY0OGYzZDY0ZWZmYTIyNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcg
QEAgdm9pZCBBdWRpb1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92
aWRlciwgQXVkaW9CdXMqIGRlc3RpbmF0aW8KICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIHRoZSBz
b3VyY2UgZGF0YSwgcmVzYW1wbGUgZWFjaCBjaGFubmVsIGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1
cy4KICAgICAvLyBGSVhNRTogb3B0aW1pemUgZm9yIHRoZSBjb21tb24gc3RlcmVvIGNhc2Ugd2hl
cmUgaXQncyBmYXN0ZXIgdG8gcHJvY2VzcyBib3RoIGxlZnQvcmlnaHQgY2hhbm5lbHMgaW4gdGhl
IHNhbWUgaW5uZXIgbG9vcC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZD
aGFubmVsczsgKytpKSB7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9u
QnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRl
c3RpbmF0aW9uQnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICBtX2tlcm5l
bHNbaV0tPnByb2Nlc3MoZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5jcHAKaW5kZXggYzQ3OTVmNGY4MWViZmM4ZWQ5YmY3NmE1OTg0MTRlNzg5OWQ4MmVkZC4uODcw
YTFjYTcxZDgzZDg0NDk1ODY5MGNjZGM0NjQzZGQ1N2E4N2MyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCkBAIC0xMTcs
OCArMTE3LDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldEVtcGhhc2lzUGFyYW1ldGVy
cyhmbG9hdCBnYWluLCBmbG9hdCBhbmNob3JGcmVxLCBmbG8KIAogdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9u
QnVzLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgZmxvYXQqIHNvdXJjZUwgPSBz
b3VyY2VCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKLSAgICBmbG9hdCogc291cmNlUjsKKyAgICBj
b25zdCBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAg
IGNvbnN0IGZsb2F0KiBzb3VyY2VSOwogCiAgICAgaWYgKHNvdXJjZUJ1cy0+bnVtYmVyT2ZDaGFu
bmVscygpID4gMSkKICAgICAgICAgc291cmNlUiA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgxKS0+ZGF0
YSgpOwpAQCAtMTI3LDggKzEyNyw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNz
KEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywKIAogICAgIEFT
U0VSVChkZXN0aW5hdGlvbkJ1cy0+bnVtYmVyT2ZDaGFubmVscygpID09IDIpOwogCi0gICAgZmxv
YXQqIGRlc3RpbmF0aW9uTCA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7Ci0g
ICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDEpLT5kYXRh
KCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDAp
LT5tdXRhYmxlRGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBkZXN0aW5hdGlvbkJ1
cy0+Y2hhbm5lbCgxKS0+bXV0YWJsZURhdGEoKTsKIAogICAgIGZsb2F0IGZpbHRlclN0YWdlR2Fp
biA9IHBhcmFtZXRlclZhbHVlKFBhcmFtRmlsdGVyU3RhZ2VHYWluKTsKICAgICBmbG9hdCBmaWx0
ZXJTdGFnZVJhdGlvID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1GaWx0ZXJTdGFnZVJhdGlvKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAK
aW5kZXggMGRhNzYyMjM2NDA5MTcyYTU4NDU2ZmYwYjZkZDcyZmU1OGJjNzg0OS4uYTA0ZTRmMzY3
NDcwODZlNTRjM2RhY2Q0ZmI1OWY0ZTYyNTg3ZjkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAg
dm9pZCBFcXVhbFBvd2VyUGFubmVyOjpwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSAvKmVsZXZh
dGlvbiovLCBBdWRpb0J1cyogaW5wdXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9DaGFu
bmVsKiBjaGFubmVsID0gaW5wdXRCdXMtPmNoYW5uZWwoMCk7Ci0gICAgZmxvYXQqIHNvdXJjZVAg
PSBjaGFubmVsLT5kYXRhKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIGZs
b2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNo
YW5uZWxMZWZ0KS0+ZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMt
PmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPmRhdGEoKTsKKyAgICBjb25z
dCBmbG9hdCogc291cmNlUCA9IGNoYW5uZWwtPmRhdGEoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCisgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5
VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQpLT5tdXRhYmxlRGF0YSgpOworICAgIGZsb2F0KiBk
ZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxS
aWdodCktPm11dGFibGVEYXRhKCk7CiAKICAgICBpZiAoIXNvdXJjZVAgfHwgIWRlc3RpbmF0aW9u
TCB8fCAhZGVzdGluYXRpb25SKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcAppbmRleCA5MDkzNDMzODAxYzZiMDU2YWRi
Y2NjZDkwNDhhZDQ2NzFkZDEzZDZjLi4yMzIxZGUwY2YxMTA0NTkwNWRkMTU5OGFhOGU2ZWJhN2Jl
YzU5OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZl
ci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRkZUQ29udm9sdmVyOjpGRlRDb252b2x2ZXIoc2l6ZV90
IGZmdFNpemUpCiB7CiB9CiAKLXZvaWQgRkZUQ29udm9sdmVyOjpwcm9jZXNzKEZGVEZyYW1lKiBm
ZnRLZXJuZWwsIGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCit2b2lkIEZGVENvbnZvbHZlcjo6cHJvY2VzcyhGRlRGcmFtZSogZmZ0S2VybmVsLCBj
b25zdCBmbG9hdCogc291cmNlUCwgZmxvYXQqIGRlc3RQLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogewogICAgIC8vIEZJWE1FOiBtYWtlIHNvIGZyYW1lc1RvUHJvY2VzcyBpcyBub3QgcmVxdWly
ZWQgdG8gZml0IGV2ZW5seSBpbnRvIGZmdFNpemUvMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCmluZGV4IGMxYjUwMDI3NjViNTU2YzZkMzdiOWZlNjUy
MTQ1NWVhNDdmMDE0NGUuLjM3NWJmMmM2NTBkMmQzZDcxMTIxY2Y3NWU1ZWJiZmJlZjE1ZmM1MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgaW5wdXQgdG8gb3V0cHV0IGxhdGVuY3kg
aXMgZXF1YWwgdG8gZmZ0U2l6ZSAvIDIKICAgICAvLwogICAgIC8vIFByb2Nlc3NpbmcgaW4tcGxh
Y2UgaXMgYWxsb3dlZC4uLgotICAgIHZvaWQgcHJvY2VzcyhGRlRGcmFtZSogZmZ0S2VybmVsLCBm
bG9hdCogc291cmNlUCwgZmxvYXQqIGRlc3RQLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAg
ICB2b2lkIHByb2Nlc3MoRkZURnJhbWUqIGZmdEtlcm5lbCwgY29uc3QgZmxvYXQqIHNvdXJjZVAs
IGZsb2F0KiBkZXN0UCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICB2b2lkIHJlc2V0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCA0
ZjAzMmEyNmFhODAyZjI0YzE3ZmZmNDVhNmVmMzNhOWIzNzIyZTU0Li5hMWEwYTUwZGFjZWJjYjZk
OTAzNjQ0YzYwMmQxNDQ4YzgwMjliMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQoZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6
ZSkKK3ZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBzaXplX3Qg
ZGF0YVNpemUpCiB7CiAgICAgLy8gWmVyby1wYWQgdGhlIGltcHVsc2UgcmVzcG9uc2UKICAgICBB
dWRpb0Zsb2F0QXJyYXkgcGFkZGVkUmVzcG9uc2UoZmZ0U2l6ZSgpKTsgLy8gemVyby1pbml0aWFs
aXplZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggYjI1ZDI3
OTU2ZGRjYWU5NTIxZjRjZTdjMDIwNzYwNGUzMDBjOTZkMy4uMDQyNjMzY2QyMzEyODY3OGI5M2Fi
MzgzNjgzZGNlNTkwODQ0NjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZS5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGluaXRp
YWxpemUoKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhbnVwKCk7Ci0gICAgdm9pZCBkb0ZGVChmbG9h
dCogZGF0YSk7CisgICAgdm9pZCBkb0ZGVChjb25zdCBmbG9hdCogZGF0YSk7CiAgICAgdm9pZCBk
b0ludmVyc2VGRlQoZmxvYXQqIGRhdGEpOwogICAgIHZvaWQgbXVsdGlwbHkoY29uc3QgRkZURnJh
bWUmIGZyYW1lKTsgLy8gbXVsdGlwbGllcyBvdXJzZWxmIHdpdGggZnJhbWUgOiBlZmZlY3RpdmVs
eSBvcGVyYXRvcio9KCkKIApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgLy8gSW50ZXJw
b2xhdGVzIGZyb20gZnJhbWUxIC0+IGZyYW1lMiBhcyB4IGdvZXMgZnJvbSAwLjAgLT4gMS4wCiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8RkZURnJhbWU+IGNyZWF0ZUludGVycG9sYXRlZEZyYW1lKGNv
bnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZyYW1lJiBmcmFtZTIsIGRvdWJsZSB4KTsK
IAotICAgIHZvaWQgZG9QYWRkZWRGRlQoZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSk7IC8v
IHplcm8tcGFkZGluZyB3aXRoIGRhdGFTaXplIDw9IGZmdFNpemUKKyAgICB2b2lkIGRvUGFkZGVk
RkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpOyAvLyB6ZXJvLXBhZGRpbmcg
d2l0aCBkYXRhU2l6ZSA8PSBmZnRTaXplCiAgICAgZG91YmxlIGV4dHJhY3RBdmVyYWdlR3JvdXBE
ZWxheSgpOwogICAgIHZvaWQgYWRkQ29uc3RhbnRHcm91cERlbGF5KGRvdWJsZSBzYW1wbGVGcmFt
ZURlbGF5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
Rktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNw
cAppbmRleCBjNDRkZTkzMmRkMjcwYmYyYTk5ODgzOGUyNmYwYzI1MTk5MGQyYTUyLi4zOTFmOTA0
MDIwMDQ0MjAzZjNhYTBlNDA0YzAwY2JhNTJlOTBkYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgZmxv
YXQgZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90
IGFuYWx5c2lzRkZUUwogewogICAgIEFTU0VSVChjaGFubmVsKTsKICAgICAgICAgCi0gICAgZmxv
YXQqIGltcHVsc2VQID0gY2hhbm5lbC0+ZGF0YSgpOworICAgIGZsb2F0KiBpbXB1bHNlUCA9IGNo
YW5uZWwtPm11dGFibGVEYXRhKCk7CiAgICAgCiAgICAgYm9vbCBpc1NpemVHb29kID0gY2hhbm5l
bC0+bGVuZ3RoKCkgPj0gYW5hbHlzaXNGRlRTaXplOwogICAgIEFTU0VSVChpc1NpemVHb29kKTsK
QEAgLTc4LDcgKzc4LDcgQEAgSFJURktlcm5lbDo6SFJURktlcm5lbChBdWRpb0NoYW5uZWwqIGNo
YW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVSYXRlLAogICAgIC8vIERldGVybWlu
ZSB0aGUgbGVhZGluZyBkZWxheSAoYXZlcmFnZSBncm91cCBkZWxheSkgZm9yIHRoZSByZXNwb25z
ZS4KICAgICBtX2ZyYW1lRGVsYXkgPSBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoY2hhbm5lbCwg
ZmZ0U2l6ZSAvIDIpOwogCi0gICAgZmxvYXQqIGltcHVsc2VSZXNwb25zZSA9IGNoYW5uZWwtPmRh
dGEoKTsKKyAgICBmbG9hdCogaW1wdWxzZVJlc3BvbnNlID0gY2hhbm5lbC0+bXV0YWJsZURhdGEo
KTsKICAgICBzaXplX3QgcmVzcG9uc2VMZW5ndGggPSBjaGFubmVsLT5sZW5ndGgoKTsKIAogICAg
IGlmIChiYXNzQm9vc3QpIHsKQEAgLTExNCw3ICsxMTQsNyBAQCBQYXNzT3duUHRyPEF1ZGlvQ2hh
bm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKCkKIAogICAgIC8vIEFkZCBs
ZWFkaW5nIGRlbGF5IGJhY2sgaW4uCiAgICAgZmZ0RnJhbWUuYWRkQ29uc3RhbnRHcm91cERlbGF5
KG1fZnJhbWVEZWxheSk7Ci0gICAgZmZ0RnJhbWUuZG9JbnZlcnNlRkZUKGNoYW5uZWwtPmRhdGEo
KSk7CisgICAgZmZ0RnJhbWUuZG9JbnZlcnNlRkZUKGNoYW5uZWwtPm11dGFibGVEYXRhKCkpOwog
CiAgICAgcmV0dXJuIGNoYW5uZWwucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcAppbmRleCA5NzgzNzFjZWY3Yjk1YmM1ODc5NGQ3MWUy
OGZkNWI0YmI5YTRmMDk3Li4yYjQ5ZTYzN2IzMWNiMmVlMzdjOTcyMDRiOTQwMzk1OGY0MGFlNjRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcApAQCAt
MTUxLDEwICsxNTEsMTAgQEAgdm9pZCBIUlRGUGFubmVyOjpwYW4oZG91YmxlIGRlc2lyZWRBemlt
dXRoLCBkb3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMKICAgICBBdWRpb0NoYW5u
ZWwqIGlucHV0Q2hhbm5lbFIgPSBudW1JbnB1dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFu
bmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsUmlnaHQpIDogMDsKIAogICAgIC8vIEdldCBzb3Vy
Y2UgYW5kIGRlc3RpbmF0aW9uIHBvaW50ZXJzLgotICAgIGZsb2F0KiBzb3VyY2VMID0gaW5wdXRD
aGFubmVsTC0+ZGF0YSgpOwotICAgIGZsb2F0KiBzb3VyY2VSID0gbnVtSW5wdXRDaGFubmVscyA+
IDEgPyBpbnB1dENoYW5uZWxSLT5kYXRhKCkgOiBzb3VyY2VMOwotICAgIGZsb2F0KiBkZXN0aW5h
dGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+
ZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5
cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291
cmNlTCA9IGlucHV0Q2hhbm5lbEwtPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlUiA9
IG51bUlucHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRDaGFubmVsUi0+ZGF0YSgpIDogc291cmNlTDsK
KyAgICBmbG9hdCogZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlv
QnVzOjpDaGFubmVsTGVmdCktPm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9u
UiA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KS0+bXV0
YWJsZURhdGEoKTsKIAogICAgIGRvdWJsZSBhemltdXRoQmxlbmQ7CiAgICAgaW50IGRlc2lyZWRB
emltdXRoSW5kZXggPSBjYWxjdWxhdGVEZXNpcmVkQXppbXV0aEluZGV4QW5kQmxlbmQoYXppbXV0
aCwgYXppbXV0aEJsZW5kKTsKQEAgLTIwNyw4ICsyMDcsOCBAQCB2b2lkIEhSVEZQYW5uZXI6OnBh
bihkb3VibGUgZGVzaXJlZEF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlvQnVzKiBpbnB1
dEJ1cwogICAgICAgICAgICAgCiAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbiBwb2ludGVycyBmb3IgdGhlIGN1cnJlbnQgc2VnbWVudC4KICAgICAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gc2VnbWVudCAqIGZyYW1lc1BlclNlZ21lbnQ7Ci0gICAgICAgIGZsb2F0
KiBzZWdtZW50U291cmNlTCA9IHNvdXJjZUwgKyBvZmZzZXQ7Ci0gICAgICAgIGZsb2F0KiBzZWdt
ZW50U291cmNlUiA9IHNvdXJjZVIgKyBvZmZzZXQ7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzZWdt
ZW50U291cmNlTCA9IHNvdXJjZUwgKyBvZmZzZXQ7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzZWdt
ZW50U291cmNlUiA9IHNvdXJjZVIgKyBvZmZzZXQ7CiAgICAgICAgIGZsb2F0KiBzZWdtZW50RGVz
dGluYXRpb25MID0gZGVzdGluYXRpb25MICsgb2Zmc2V0OwogICAgICAgICBmbG9hdCogc2VnbWVu
dERlc3RpbmF0aW9uUiA9IGRlc3RpbmF0aW9uUiArIG9mZnNldDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5k
ZXggZGI1MWU5MGVkZWE3Mzk4YWIyNDE2NTM0NzUxODY4YzBlNTdmZWQ5Yy4uZjZjMDdlN2MxNzgw
ZmU3NDMwY2FjNzg2YjY1OTdjNTg0NzA3ODExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gQ29weSB0aGUgY2hhbm5lbCBkYXRhIGZyb20gd2hh
dCB3ZSByZWNlaXZlZCBmcm9tIG1fbXVsdGlDaGFubmVsUHJvdmlkZXIuCiAgICAgICAgIEFTU0VS
VChtX2N1cnJlbnRDaGFubmVsIDw9IG1fbnVtYmVyT2ZDaGFubmVscyk7CiAgICAgICAgIGlmICht
X2N1cnJlbnRDaGFubmVsIDwgbV9udW1iZXJPZkNoYW5uZWxzKSB7Ci0gICAgICAgICAgICBtZW1j
cHkoYnVzLT5jaGFubmVsKDApLT5kYXRhKCksIG1fbXVsdGlDaGFubmVsQnVzLT5jaGFubmVsKG1f
Y3VycmVudENoYW5uZWwpLT5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3Mp
OworICAgICAgICAgICAgbWVtY3B5KGJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKSwgbV9t
dWx0aUNoYW5uZWxCdXMtPmNoYW5uZWwobV9jdXJyZW50Q2hhbm5lbCktPmRhdGEoKSwgc2l6ZW9m
KGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgICAgICAgICArK21fY3VycmVudENoYW5u
ZWw7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBNdWx0aUNoYW5u
ZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIsIEF1ZGlv
QnVzKiBkZXMKICAgICAgICAgLy8gSG93ZXZlciwgaWYgaXQgY2FsbHMgcHJvdmlkZUlucHV0KCkg
Zm9yIHRoZSBmaXJzdCBjaGFubmVsLCB0aGVuIGl0IHdpbGwgY2FsbCBpdCBmb3IgdGhlIHJlbWFp
bmluZwogICAgICAgICAvLyBjaGFubmVscywgc2luY2UgdGhleSBhbGwgYnVmZmVyIGluIHRoZSBz
YW1lIHdheSBhbmQgYXJlIHByb2Nlc3NpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIGZyYW1lcy4KICAg
ICAgICAgbV9rZXJuZWxzW2NoYW5uZWxJbmRleF0tPnByb2Nlc3MoJmNoYW5uZWxQcm92aWRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24tPmNo
YW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0aW5hdGlvbi0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxl
RGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXNU
b1Byb2Nlc3MpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIu
Y3BwCmluZGV4IDM0MTYyNmZkOGNhMThiNzczZGE4Y2FkNTI4NzJkMGI3MzNhMGUyZTguLjZmNTcx
MTc3MzEwMjM1YTc0OTg1MzgwYjUyMWYzYTcxMWNlNjI3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgUmV2ZXJiOjpw
cm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgc2l6
ZV90IGZyYW1lCiAgICAgICAgIEFTU0VSVChpc0NvcHlTYWZlKTsKICAgICAgICAgaWYgKCFpc0Nv
cHlTYWZlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25D
aGFubmVsUi0+ZGF0YSgpLCBkZXN0aW5hdGlvbkNoYW5uZWxMLT5kYXRhKCksIHNpemVvZihmbG9h
dCkgKiBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25DaGFubmVs
Ui0+bXV0YWJsZURhdGEoKSwgZGVzdGluYXRpb25DaGFubmVsTC0+ZGF0YSgpLCBzaXplb2YoZmxv
YXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB9IGVsc2UgaWYgKG51bUlucHV0Q2hhbm5lbHMg
PT0gMSAmJiBudW1SZXZlcmJDaGFubmVscyA9PSAxICYmIG51bU91dHB1dENoYW5uZWxzID09IDEp
IHsKICAgICAgICAgLy8gMSAtPiAxIC0+IDEKICAgICAgICAgbV9jb252b2x2ZXJzWzBdLT5wcm9j
ZXNzKHNvdXJjZUNoYW5uZWxMLCBkZXN0aW5hdGlvbkNoYW5uZWxMLCBmcmFtZXNUb1Byb2Nlc3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5j
cHAKaW5kZXggYmJiNTUwODdmMGQxMGIxNTBiOTM3OTZmNGFiZjU4YWQ4MmM4MmVmMy4uMTJlZjU5
YjJlMDllMjViMjZiODgwZmM4NjBlOGVjNTMyYWI3ZTgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJl
c3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpCiAgICAgLy8gT3RoZXJ3aXNlLCBhc3N1bWUgd2UncmUg
YmVpbmcgcnVuIGZyb20gYSBjb21tYW5kLWxpbmUgdG9vbC4KICAgICBib29sIGhhc1JlYWx0aW1l
Q29uc3RyYWludCA9IHVzZUJhY2tncm91bmRUaHJlYWRzOwogCi0gICAgZmxvYXQqIHJlc3BvbnNl
ID0gaW1wdWxzZVJlc3BvbnNlLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHJlc3BvbnNlID0g
aW1wdWxzZVJlc3BvbnNlLT5kYXRhKCk7CiAgICAgc2l6ZV90IHRvdGFsUmVzcG9uc2VMZW5ndGgg
PSBpbXB1bHNlUmVzcG9uc2UtPmxlbmd0aCgpOwogCiAgICAgLy8gQmVjYXVzZSB3ZSdyZSBub3Qg
dXNpbmcgZGlyZWN0LWNvbnZvbHV0aW9uIGluIHRoZSBsZWFkaW5nIHBvcnRpb24sIHRoZSByZXZl
cmIgaGFzIGFuIG92ZXJhbGwgbGF0ZW5jeSBvZiBoYWxmIHRoZSBmaXJzdC1zdGFnZSBGRlQgc2l6
ZQpAQCAtMTgyLDggKzE4Miw4IEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVyOjpwcm9jZXNzKEF1ZGlv
Q2hhbm5lbCogc291cmNlQ2hhbm5lbCwgQXVkaW9DaGFubmVsKiBkZXN0aW5hCiAgICAgaWYgKCFp
c1NhZmUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgZmxvYXQqIHNvdXJjZSA9IHNv
dXJjZUNoYW5uZWwtPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlv
bkNoYW5uZWwtPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlID0gc291cmNlQ2hhbm5l
bC0+ZGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQ2hhbm5lbC0+
bXV0YWJsZURhdGEoKTsKICAgICBib29sIGlzRGF0YVNhZmUgPSBzb3VyY2UgJiYgZGVzdGluYXRp
b247CiAgICAgQVNTRVJUKGlzRGF0YVNhZmUpOwogICAgIGlmICghaXNEYXRhU2FmZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmNwcAppbmRleCBmMjA3ZDE5ZGViMGM0OGJiZmVmNmI4YWQ1YmFiODUyODllODcyNTEwLi41M2Ji
NjUwMDgzMTA2NDcxOTFlMDBhOWRiOTU5YTAzZGE5ZmZlYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFZlY3Rv
ck1hdGg7CiAKLVJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZShmbG9h
dCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVzcG9uc2VMZW5ndGgsIHNpemVfdCByZXZlcmJU
b3RhbExhdGVuY3ksIHNpemVfdCBzdGFnZU9mZnNldCwgc2l6ZV90IHN0YWdlTGVuZ3RoLAorUmV2
ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1
bHNlUmVzcG9uc2UsIHNpemVfdCByZXNwb25zZUxlbmd0aCwgc2l6ZV90IHJldmVyYlRvdGFsTGF0
ZW5jeSwgc2l6ZV90IHN0YWdlT2Zmc2V0LCBzaXplX3Qgc3RhZ2VMZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGZmdFNpemUsIHNpemVfdCBy
ZW5kZXJQaGFzZSwgc2l6ZV90IHJlbmRlclNsaWNlU2l6ZSwgUmV2ZXJiQWNjdW11bGF0aW9uQnVm
ZmVyKiBhY2N1bXVsYXRpb25CdWZmZXIpCiAgICAgOiBtX2ZmdEtlcm5lbChmZnRTaXplKQogICAg
ICwgbV9hY2N1bXVsYXRpb25CdWZmZXIoYWNjdW11bGF0aW9uQnVmZmVyKQpAQCAtODgsNyArODgs
NyBAQCB2b2lkIFJldmVyYkNvbnZvbHZlclN0YWdlOjpwcm9jZXNzSW5CYWNrZ3JvdW5kKFJldmVy
YkNvbnZvbHZlciogY29udm9sdmVyLCBzaXplXwogICAgIHByb2Nlc3Moc291cmNlLCBmcmFtZXNU
b1Byb2Nlc3MpOwogfQogCi12b2lkIFJldmVyYkNvbnZvbHZlclN0YWdlOjpwcm9jZXNzKGZsb2F0
KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit2b2lkIFJldmVyYkNvbnZvbHZlclN0
YWdlOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
CiB7CiAgICAgQVNTRVJUKHNvdXJjZSk7CiAgICAgaWYgKCFzb3VyY2UpCkBAIC05Niw3ICs5Niw4
IEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZSwgc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAKICAgICAvLyBEZWFsIHdpdGggcHJlLWRlbGF5IHN0
cmVhbSA6IG5vdGUgc3BlY2lhbCBoYW5kbGluZyBvZiB6ZXJvIGRlbGF5LgogCi0gICAgZmxvYXQq
IHByZURlbGF5ZWRTb3VyY2U7CisgICAgY29uc3QgZmxvYXQqIHByZURlbGF5ZWRTb3VyY2U7Cisg
ICAgZmxvYXQqIHByZURlbGF5ZWREZXN0aW5hdGlvbjsKICAgICBmbG9hdCogdGVtcG9yYXJ5QnVm
ZmVyOwogICAgIGJvb2wgaXNUZW1wb3JhcnlCdWZmZXJTYWZlID0gZmFsc2U7CiAgICAgaWYgKG1f
cHJlRGVsYXlMZW5ndGggPiAwKSB7CkBAIC0xMDgsMTAgKzEwOSwxMiBAQCB2b2lkIFJldmVyYkNv
bnZvbHZlclN0YWdlOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpCiAKICAgICAgICAgaXNUZW1wb3JhcnlCdWZmZXJTYWZlID0gZnJhbWVzVG9Qcm9jZXNzIDw9
IG1fdGVtcG9yYXJ5QnVmZmVyLnNpemUoKTsKIAotICAgICAgICBwcmVEZWxheWVkU291cmNlID0g
bV9wcmVEZWxheUJ1ZmZlci5kYXRhKCkgKyBtX3ByZVJlYWRXcml0ZUluZGV4OworICAgICAgICBw
cmVEZWxheWVkRGVzdGluYXRpb24gPSBtX3ByZURlbGF5QnVmZmVyLmRhdGEoKSArIG1fcHJlUmVh
ZFdyaXRlSW5kZXg7CisgICAgICAgIHByZURlbGF5ZWRTb3VyY2UgPSBwcmVEZWxheWVkRGVzdGlu
YXRpb247CiAgICAgICAgIHRlbXBvcmFyeUJ1ZmZlciA9IG1fdGVtcG9yYXJ5QnVmZmVyLmRhdGEo
KTsgICAgICAgIAogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFplcm8gZGVsYXkKKyAgICAgICAg
cHJlRGVsYXllZERlc3RpbmF0aW9uID0gMDsKICAgICAgICAgcHJlRGVsYXllZFNvdXJjZSA9IHNv
dXJjZTsKICAgICAgICAgdGVtcG9yYXJ5QnVmZmVyID0gbV9wcmVEZWxheUJ1ZmZlci5kYXRhKCk7
CiAgICAgICAgIApAQCAtMTM4LDcgKzE0MSw3IEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6
OnByb2Nlc3MoZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIAogICAgIC8v
IEZpbmFsbHkgY29weSBpbnB1dCB0byBwcmUtZGVsYXkuCiAgICAgaWYgKG1fcHJlRGVsYXlMZW5n
dGggPiAwKSB7Ci0gICAgICAgIG1lbWNweShwcmVEZWxheWVkU291cmNlLCBzb3VyY2UsIHNpemVv
ZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBtZW1jcHkocHJlRGVsYXllZERl
c3RpbmF0aW9uLCBzb3VyY2UsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwogICAg
ICAgICBtX3ByZVJlYWRXcml0ZUluZGV4ICs9IGZyYW1lc1RvUHJvY2VzczsKIAogICAgICAgICBB
U1NFUlQobV9wcmVSZWFkV3JpdGVJbmRleCA8PSBtX3ByZURlbGF5TGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCmlu
ZGV4IGZjMDVhMGUwOGZhMzNiMDI2OGVjZGQzNTQ3OGFhZmE5OTkzYWVlMzQuLjk4MTFiYzYwMzIx
Njc2NDYwMGM5Y2IxNzI1MTdkZWYxNThhMzZkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaApAQCAtNDUsMTEgKzQ1LDEx
IEBAIGNsYXNzIFJldmVyYkNvbnZvbHZlclN0YWdlIHsKIHB1YmxpYzoKICAgICAvLyByZW5kZXJQ
aGFzZSBpcyB1c2VmdWwgdG8ga25vdyBzbyB0aGF0IHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBwcmUg
dmVyc3VzIHBvc3QgZGVsYXkgc28gdGhhdCBzdGFnZXMgd2lsbCBwZXJmb3JtCiAgICAgLy8gdGhl
aXIgaGVhdnkgd29yayAoRkZUIHByb2Nlc3NpbmcpIG9uIGRpZmZlcmVudCBzbGljZXMgdG8gYmFs
YW5jZSB0aGUgbG9hZCBpbiBhIHJlYWwtdGltZSB0aHJlYWQuCi0gICAgUmV2ZXJiQ29udm9sdmVy
U3RhZ2UoZmxvYXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoLCBzaXpl
X3QgcmV2ZXJiVG90YWxMYXRlbmN5LCBzaXplX3Qgc3RhZ2VPZmZzZXQsIHNpemVfdCBzdGFnZUxl
bmd0aCwKKyAgICBSZXZlcmJDb252b2x2ZXJTdGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3Bv
bnNlLCBzaXplX3QgcmVzcG9uc2VMZW5ndGgsIHNpemVfdCByZXZlcmJUb3RhbExhdGVuY3ksIHNp
emVfdCBzdGFnZU9mZnNldCwgc2l6ZV90IHN0YWdlTGVuZ3RoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBmZnRTaXplLCBzaXplX3QgcmVuZGVyUGhhc2UsIHNpemVfdCByZW5kZXJT
bGljZVNpemUsIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciogYWNjdW11bGF0aW9uQnVmZmVyKTsK
IAogICAgIC8vIFdBUk5JTkc6IGZyYW1lc1RvUHJvY2VzcyBtdXN0IGJlIHN1Y2ggdGhhdCBpdCBl
dmVubHkgZGl2aWRlcyB0aGUgZGVsYXkgYnVmZmVyIHNpemUgKHN0YWdlX29mZnNldCkuCi0gICAg
dm9pZCBwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAg
IHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KTsKIAogICAgIHZvaWQgcHJvY2Vzc0luQmFja2dyb3VuZChSZXZlcmJDb252b2x2ZXIqIGNvbnZv
bHZlciwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmNwcAppbmRleCBmMjcwZjZmYWE0Yzc0
ZmFmNTE5YjMyN2EzNzJjZWM4OWE1MTBjZGU3Li4xYmU5YWY4ODRlNDI1ZTRkMGUzOGIzODBjNmFj
YTQwMDJmNWE3NDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJJbnB1dEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiSW5wdXRCdWZmZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFJldmVyYklucHV0QnVmZmVy
OjpSZXZlcmJJbnB1dEJ1ZmZlcihzaXplX3QgbGVuZ3RoKQogewogfQogCi12b2lkIFJldmVyYklu
cHV0QnVmZmVyOjp3cml0ZShmbG9hdCogc291cmNlUCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKQor
dm9pZCBSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGUoY29uc3QgZmxvYXQqIHNvdXJjZVAsIHNpemVf
dCBudW1iZXJPZkZyYW1lcykKIHsKICAgICBzaXplX3QgYnVmZmVyTGVuZ3RoID0gbV9idWZmZXIu
c2l6ZSgpOwogICAgIGJvb2wgaXNDb3B5U2FmZSA9IG1fd3JpdGVJbmRleCArIG51bWJlck9mRnJh
bWVzIDw9IGJ1ZmZlckxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJJbnB1dEJ1ZmZlci5oCmluZGV4IDE1YTI4MTgyNGQzNmJkZTY4ZDc5YTVlMTBiMzU3
OTI1MTY1MTg5NjkuLjUwMzY1NzViOTg2MWJkOGNkNGUwYTFhMTE1ZjUwMjZhZTU3NDg5YmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIu
aApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIHJlYWx0aW1lIGF1ZGlvIHRo
cmVhZCBrZWVwcyB3cml0aW5nIHNhbXBsZXMgaGVyZS4KICAgICAvLyBUaGUgYXNzdW1wdGlvbiBp
cyB0aGF0IHRoZSBidWZmZXIncyBsZW5ndGggaXMgZXZlbmx5IGRpdmlzaWJsZSBieSBudW1iZXJP
ZkZyYW1lcyAoZm9yIG5lYXJseSBhbGwgY2FzZXMgdGhpcyB3aWxsIGJlIGZpbmUpLgogICAgIC8v
IEZJWE1FOiByZW1vdmUgbnVtYmVyT2ZGcmFtZXMgcmVzdHJpY3Rpb24uLi4KLSAgICB2b2lkIHdy
aXRlKGZsb2F0KiBzb3VyY2VQLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOworICAgIHZvaWQgd3Jp
dGUoY29uc3QgZmxvYXQqIHNvdXJjZVAsIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CiAKICAgICAv
LyBCYWNrZ3JvdW5kIHRocmVhZHMgY2FuIGNhbGwgdGhpcyB0byBjaGVjayBpZiB0aGVyZSdzIGFu
eXRoaW5nIHRvIHJlYWQuLi4KICAgICBzaXplX3Qgd3JpdGVJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fd3JpdGVJbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vU2luY1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5j
UmVzYW1wbGVyLmNwcAppbmRleCAwZTRiODQ5ODUwMWU0YjM5NmYwNDJiMDRhZDRjZmZkNWNjMmQz
ZDYyLi40YWRlYjI3YTllOGEyZTgyMWM0NWE4YzNiMGM5N2U3YjkzZjNmM2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiAgICAgfQog
fQogCi12b2lkIFNpbmNSZXNhbXBsZXI6OmNvbnN1bWVTb3VyY2UoZmxvYXQqIGJ1ZmZlciwgdW5z
aWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCit2b2lkIFNpbmNSZXNhbXBsZXI6OmNvbnN1bWVT
b3VyY2UoY29uc3QgZmxvYXQqIGJ1ZmZlciwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMp
CiB7CiAgICAgQVNTRVJUKG1fc291cmNlUHJvdmlkZXIpOwogICAgIGlmICghbV9zb3VyY2VQcm92
aWRlcikKQEAgLTEzNSw3ICsxMzUsOSBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OmNvbnN1bWVTb3Vy
Y2UoZmxvYXQqIGJ1ZmZlciwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCiAgICAgCiAg
ICAgLy8gV3JhcCB0aGUgcHJvdmlkZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkg
dGhlIHNvdXJjZSBwcm92aWRlci4KICAgICBBdWRpb0J1cyBidXMoMSwgbnVtYmVyT2ZTb3VyY2VG
cmFtZXMsIGZhbHNlKTsKLSAgICBidXMuc2V0Q2hhbm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJl
ck9mU291cmNlRnJhbWVzKTsKKworICAgIC8vIEZJWE1FOiBmaW5kIGEgd2F5IHRvIG1ha2UgdGhl
IGZvbGxvd2luZyBjb25zdC1jb3JyZWN0OgorICAgIGJ1cy5zZXRDaGFubmVsTWVtb3J5KDAsIGNv
bnN0X2Nhc3Q8ZmxvYXQqPihidWZmZXIpLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CiAgICAgCiAg
ICAgbV9zb3VyY2VQcm92aWRlci0+cHJvdmlkZUlucHV0KCZidXMsIG51bWJlck9mU291cmNlRnJh
bWVzKTsKIH0KQEAgLTE0Niw3ICsxNDgsNyBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBCdWZmZXJT
b3VyY2VQcm92aWRlciA6IHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAg
ICBCdWZmZXJTb3VyY2VQcm92aWRlcihmbG9hdCogc291cmNlLCBzaXplX3QgbnVtYmVyT2ZTb3Vy
Y2VGcmFtZXMpCisgICAgQnVmZmVyU291cmNlUHJvdmlkZXIoY29uc3QgZmxvYXQqIHNvdXJjZSwg
c2l6ZV90IG51bWJlck9mU291cmNlRnJhbWVzKQogICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkK
ICAgICAgICAgLCBtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZShudW1iZXJPZlNvdXJjZUZyYW1lcykK
ICAgICB7CkBAIC0xNTksNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fc291cmNl
IHx8ICFidXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgZmxv
YXQqIGJ1ZmZlciA9IGJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgICAgICBmbG9hdCogYnVm
ZmVyID0gYnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOwogCiAgICAgICAgIC8vIENsYW1w
IHRvIG51bWJlciBvZiBmcmFtZXMgYXZhaWxhYmxlIGFuZCB6ZXJvLXBhZC4KICAgICAgICAgc2l6
ZV90IGZyYW1lc1RvQ29weSA9IG1pbihtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZSwgZnJhbWVzVG9Q
cm9jZXNzKTsKQEAgLTE3NCwxMyArMTc2LDEzIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2
YXRlOgotICAgIGZsb2F0KiBtX3NvdXJjZTsKKyAgICBjb25zdCBmbG9hdCogbV9zb3VyY2U7CiAg
ICAgc2l6ZV90IG1fc291cmNlRnJhbWVzQXZhaWxhYmxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
IAotdm9pZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCit2b2lkIFNpbmNSZXNhbXBs
ZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNp
Z25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKIHsKICAgICAvLyBSZXNhbXBsZSBhbiBpbi1tZW1v
cnkgYnVmZmVyIHVzaW5nIGFuIEF1ZGlvU291cmNlUHJvdmlkZXIuCiAgICAgQnVmZmVyU291cmNl
UHJvdmlkZXIgc291cmNlUHJvdmlkZXIoc291cmNlLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXggYmJl
MGM1NThjM2NjYzIxZTA3YTliYmYzM2Y3NTAyNjQyMzcyYmZmMy4uOWU5Nzc4YzQ2NDFmZjk1NDZi
ZmMxNDBlMTc1MDFmNGJmOTEwZTUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuaApAQCAtNDQsMTQgKzQ0LDE0IEBAIHB1YmxpYzoKICAgICBTaW5j
UmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQga2VybmVsU2l6ZSA9IDMyLCB1
bnNpZ25lZCBudW1iZXJPZktlcm5lbE9mZnNldHMgPSAzMik7CiAgICAgCiAgICAgLy8gUHJvY2Vz
c2VzIG51bWJlck9mU291cmNlRnJhbWVzIGZyb20gc291cmNlIHRvIHByb2R1Y2UgbnVtYmVyT2ZT
b3VyY2VGcmFtZXMgLyBzY2FsZUZhY3RvciBmcmFtZXMgaW4gZGVzdGluYXRpb24uCi0gICAgdm9p
ZCBwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbnVt
YmVyT2ZTb3VyY2VGcmFtZXMpOworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNl
LCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKTsKIAog
ICAgIC8vIFByb2Nlc3Mgd2l0aCBpbnB1dCBzb3VyY2UgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHN0
cmVhbWluZyBhcHBsaWNhdGlvbnMuCiAgICAgdm9pZCBwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlk
ZXIqLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXplS2VybmVsKCk7Ci0gICAgdm9pZCBjb25zdW1lU291
cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKTsKKyAgICB2
b2lkIGNvbnN1bWVTb3VyY2UoY29uc3QgZmxvYXQqIGJ1ZmZlciwgdW5zaWduZWQgbnVtYmVyT2ZT
b3VyY2VGcmFtZXMpOwogICAgIAogICAgIGRvdWJsZSBtX3NjYWxlRmFjdG9yOwogICAgIHVuc2ln
bmVkIG1fa2VybmVsU2l6ZTsKQEAgLTcxLDcgKzcxLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFNv
dXJjZSBpcyBjb3BpZWQgaW50byB0aGlzIGJ1ZmZlciBmb3IgZWFjaCBwcm9jZXNzaW5nIHBhc3Mu
CiAgICAgQXVkaW9GbG9hdEFycmF5IG1faW5wdXRCdWZmZXI7CiAKLSAgICBmbG9hdCogbV9zb3Vy
Y2U7CisgICAgY29uc3QgZmxvYXQqIG1fc291cmNlOwogICAgIHVuc2lnbmVkIG1fc291cmNlRnJh
bWVzQXZhaWxhYmxlOwogICAgIAogICAgIC8vIG1fc291cmNlUHJvdmlkZXIgaXMgdXNlZCB0byBw
cm92aWRlIHRoZSBhdWRpbyBpbnB1dCBzdHJlYW0gdG8gdGhlIHJlc2FtcGxlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcAppbmRleCAyZmE0NDAwM2E3YTUxMDBk
ZTkxYjc1MGY2MWYxNzE1NTQ3NTJkMzhhLi45ZTZmMWI2MzU2ZTliNzg1ZGY0MDBlNDQxNTY3NjQ5
NWU1MjcxMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJv
UG9sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuY3Bw
CkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBaZXJvUG9s
ZTo6cHJvY2VzcyhmbG9hdCAqc291cmNlLCBmbG9hdCAqZGVzdGluYXRpb24sIHVuc2lnbmVkIGZy
YW1lc1RvUHJvY2VzcykKK3ZvaWQgWmVyb1BvbGU6OnByb2Nlc3MoY29uc3QgZmxvYXQgKnNvdXJj
ZSwgZmxvYXQgKmRlc3RpbmF0aW9uLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAg
ZmxvYXQgemVybyA9IG1femVybzsKICAgICBmbG9hdCBwb2xlID0gbV9wb2xlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKaW5kZXggOTNmZDBkNmY5NzUzN2E1ZjJhMDc2
YmE0ZjlmNjYyMjhhNzIzOWJhMy4uNGNiMWQxNzQ1NjNmMTc1YjI4Y2FhYzk1NWRhNTYyNjhiZGUx
ZGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBwcm9jZXNzKGZsb2F0
ICpzb3VyY2UsIGZsb2F0ICpkZXN0aW5hdGlvbiwgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQgKnNvdXJjZSwgZmxvYXQgKmRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgLy8gUmVzZXQgZmlsdGVyIHN0YXRl
LgogICAgIHZvaWQgcmVzZXQoKSB7IG1fbGFzdFggPSAwOyBtX2xhc3RZID0gMDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVy
TWFjLmNwcAppbmRleCA5NTUwMjYzNmI5M2FkM2JjZjg3ZDQ1MDVhZDA3YmFhNzEwZDE1YTUyLi5k
MGVjZjFhMzEzMDdkZWI5MTE0MmViZTNjNWVhYTEyNGQ2M2EzMDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cApAQCAtMjEyLDcgKzIxMiw3IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRl
cjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vCiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7CiAgICAgICAgICAg
ICBidWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOwogICAgICAgICAg
ICAgYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGFCeXRlU2l6ZSA9IG51bWJlck9mRnJhbWVz
ICogc2l6ZW9mKGZsb2F0KTsKLSAgICAgICAgICAgIGJ1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1E
YXRhID0gYXVkaW9CdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgICAgIGJ1ZmZlckxp
c3QtPm1CdWZmZXJzW2ldLm1EYXRhID0gYXVkaW9CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRh
KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBQYXNzT3duUHRyPEF1
ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29s
IG1peFRvTW9ubwogCiAgICAgaWYgKG1peFRvTW9ubyAmJiBudW1iZXJPZkNoYW5uZWxzID09IDIp
IHsKICAgICAgICAgLy8gTWl4IHN0ZXJlbyBkb3duIHRvIG1vbm8KLSAgICAgICAgZmxvYXQqIGRl
c3RMID0gYXVkaW9CdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RM
ID0gYXVkaW9CdXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZGcmFtZXM7IGkrKykKICAgICAgICAgICAgIGRlc3RMW2ld
ID0gMC41ZiAqIChidWZmZXJMW2ldICsgYnVmZmVyUltpXSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKaW5kZXggNmRmYmJl
Y2NiMmRlZjhkOWJiNDgyNGNmYTdlYTVhMTNhZjk0NTVlNC4uOGNlZjkyOGQ0NzI1N2M5MWY1ZTI3
OWY5ZTcwZjU1NGE0ZWE5YjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBGRlRGcmFt
ZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIFZlY3Rvck1hdGg6OnZzbXVs
KGltYWdQMSwgMSwgJnNjYWxlLCBpbWFnUDEsIDEsIGhhbGZTaXplKTsKIH0KIAotdm9pZCBGRlRG
cmFtZTo6ZG9GRlQoZmxvYXQqIGRhdGEpCit2b2lkIEZGVEZyYW1lOjpkb0ZGVChjb25zdCBmbG9h
dCogZGF0YSkKIHsKICAgICB2RFNQX2N0b3ooKERTUENvbXBsZXgqKWRhdGEsIDIsICZtX2ZyYW1l
LCAxLCBtX0ZGVFNpemUgLyAyKTsKICAgICB2RFNQX2ZmdF96cmlwKG1fRkZUU2V0dXAsICZtX2Zy
YW1lLCAxLCBtX2xvZzJGRlRTaXplLCBGRlRfRk9SV0FSRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCAxZmQyZjM4NDgyNmU3
YTM4OWQyZjYyMDRlYTU0MjE2YTdmMmYyMWIxLi5hMGNiMTNhMmJmNzcwOTRmYzA4YTczY2EyZjk1
N2UyMTg2MGVhNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoaXNTYWZlKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpCi0gICAgICAgICAg
ICAgICAgICAgIG1lbXNldChvdXRwdXRCdXMtPmNoYW5uZWwoaSktPmRhdGEoKSArIHplcm9TdGFy
dEZyYW1lLCAwLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9aZXJvKTsKKyAgICAgICAgICAgICAg
ICAgICAgbWVtc2V0KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSArIHplcm9T
dGFydEZyYW1lLCAwLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9aZXJvKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKQEAgLTE5OSwxMSArMTk5LDEx
IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJGcm9tQnVmZmVyKEF1ZGlvQnVz
KiBidXMsIHVuc2lnbmVkIGRlc3RpbmF0aW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEdl
dCB0aGUgZGVzdGluYXRpb24gcG9pbnRlcnMuCi0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGJ1
cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBidXMtPmNo
YW5uZWwoMCktPm11dGFibGVEYXRhKCk7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uTCk7CiAgICAg
aWYgKCFkZXN0aW5hdGlvbkwpCiAgICAgICAgIHJldHVybjsKLSAgICBmbG9hdCogZGVzdGluYXRp
b25SID0gKG51bWJlck9mQ2hhbm5lbHMgPCAyKSA/IDAgOiBidXMtPmNoYW5uZWwoMSktPmRhdGEo
KTsKKyAgICBmbG9hdCogZGVzdGluYXRpb25SID0gKG51bWJlck9mQ2hhbm5lbHMgPCAyKSA/IDAg
OiBidXMtPmNoYW5uZWwoMSktPm11dGFibGVEYXRhKCk7CiAgICAgCiAgICAgYm9vbCBpc1N0ZXJl
byA9IGRlc3RpbmF0aW9uUjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQ
cm9jZXNzb3IuY3BwCmluZGV4IDEyMjQzYzBjOTliZTFjYzc3NTNlYzJhOWY3OTUyODM5Zjg2OTk2
MjUuLmZiNTc4OTRlODU2OTg2OGEyMmE1ZTRjMTU3NWU1ZGViM2MzYzZhNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBA
IHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyCiAgICAgICAgICAgICAKICAgICAvLyBGb3IgZWFjaCBj
aGFubmVsIG9mIG91ciBpbnB1dCwgcHJvY2VzcyB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBCaXF1
YWREU1BLZXJuZWwgaW50byB0aGUgb3V0cHV0IGNoYW5uZWwuCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fa2VybmVscy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9rZXJuZWxzW2ldLT5w
cm9jZXNzKHNvdXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+Y2hhbm5lbChp
KS0+ZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nl
c3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5t
dXRhYmxlRGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogfQogCiB2b2lkIEJpcXVhZFByb2Nlc3Nv
cjo6c2V0VHlwZShGaWx0ZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCmluZGV4IDQyMjE1MDljZjk5YzYxNzQzNWVlODA4NjNk
ZWNmMjhlYmUwN2FhNDguLmJmODMxNDc1MzMxNWQwYjVjYWNiYWM5ZGNjODExNDU0OTE0MzgxMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3Bw
CkBAIC0xNjEsMTAgKzE2MSwxMCBAQCB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3Mo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICBpZiAoIWNoYW5uZWxzQXJlR29vZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZmxvYXQqIHNvdXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKS0+
ZGF0YSgpOwotICAgIGZsb2F0KiBzb3VyY2VSID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/
IGlucHV0QnVzLT5jaGFubmVsKDEpLT5kYXRhKCkgOiAwOwotICAgIGZsb2F0KiBkZXN0aW5hdGlv
bkwgPSBvdXRwdXRCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRp
b25SID0gb3V0cHV0QnVzLT5jaGFubmVsKDEpLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNv
dXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBz
b3VyY2VSID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsKDEp
LT5kYXRhKCkgOiAwOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5u
ZWwoMCktPm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1
cy0+Y2hhbm5lbCgxKS0+bXV0YWJsZURhdGEoKTsKIAogICAgIC8vIENvcHkgZnJvbSB0aGUgaW5w
dXQgdG8gdGhlIGlucHV0IGJ1ZmZlci4gIFNlZSAiYnVmZmVyc0FyZUdvb2QiIGNoZWNrIGFib3Zl
IGZvciBzYWZldHkuCiAgICAgc2l6ZV90IGJ5dGVzVG9Db3B5ID0gc2l6ZW9mKGZsb2F0KSAqIGZy
YW1lc1RvUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGFlMTgzNWI5YWFiODZmNGIxMmUxYjQ1
MjhlZWNjMzI5MDQxOGMzYWMuLjE5OGE1MDIwYmU5MWQwMGRiMTBmNWE1MDkzMDc2MTI2ODY5OTZk
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpyZW5kZXIoKQogICAgICAgICBzaXplX3QgZnJhbWVzQXZhaWxhYmxl
VG9Db3B5ID0gbWluKGZyYW1lc1RvUHJvY2VzcywgcmVuZGVyUXVhbnR1bVNpemUpOwogICAgICAg
ICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXgg
PCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewotICAgICAgICAgICAgZmxvYXQq
IHNvdXJjZSA9IG1fcmVuZGVyQnVzLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKKyAg
ICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBtX3JlbmRlckJ1cy0+Y2hhbm5lbChjaGFu
bmVsSW5kZXgpLT5kYXRhKCk7CiAgICAgICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBtX3Jl
bmRlclRhcmdldC0+Z2V0Q2hhbm5lbERhdGEoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwogICAgICAg
ICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uICsgbiwgc291cmNlLCBzaXplb2YoZmxvYXQpICogZnJh
bWVzQXZhaWxhYmxlVG9Db3B5KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCBjY2Q4NjU1MjI2ZDUxOTQ0YzZmMDE1ZjEwOTVm
MTM1MDE3ZWNiNzQzLi5hM2Y4MDdkODM3Zjc3YzQ5Y2NiMDQxNTUwYTZhOWM5MGQ4NGM1ZTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6d3JpdGVJbnB1dChBdWRpb0J1cyog
YnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgIAogICAgIC8vIFBlcmZvcm0gcmVhbC10
aW1lIGFuYWx5c2lzCiAgICAgLy8gRklYTUUgOiBmb3Igbm93IGp1c3QgdXNlIGxlZnQgY2hhbm5l
bCAobXVzdCBtaXggaWYgc3RlcmVvIHNvdXJjZSkKLSAgICBmbG9hdCogc291cmNlID0gYnVzLT5j
aGFubmVsKDApLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IGJ1cy0+Y2hhbm5l
bCgwKS0+ZGF0YSgpOwogCiAgICAgLy8gVGhlIHNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIHNhbml0
eSBjaGVja2VkIHdpdGggaXNCdXNHb29kIGFib3ZlLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCBmNzU3MWRlYmI3MTJjOTU0
ZDJhZjlhNDhmNjY0MWE4MjM3NjYwZDZjLi5jZTkyOTdhNTc3MmQ2MDhlNDY3OTA1ZmE2ODNjNzcy
NmRjYWU3YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVy
UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJv
Y2Vzc29yLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnBy
b2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplXwogICAg
IGlmIChtX3Byb2Nlc3NMb2NrLnRyeUxvY2soKSkgeyAgICAgICAgCiAgICAgICAgIC8vIEZvciBl
YWNoIGNoYW5uZWwgb2Ygb3VyIGlucHV0LCBwcm9jZXNzIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5n
IFdhdmVTaGFwZXJEU1BLZXJuZWwgaW50byB0aGUgb3V0cHV0IGNoYW5uZWwuCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tlcm5lbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGkpLT5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgICAg
ICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAg
ICAgICAgIG1fcHJvY2Vzc0xvY2sudW5sb2NrKCk7CiAgICAgfSBlbHNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123022</attachid>
            <date>2012-01-18 15:39:31 -0800</date>
            <delta_ts>2012-01-18 16:39:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76573-20120118153930.patch</filename>
            <type>text/plain</type>
            <size>65079</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYxZWFkZGViM2VjYTVj
MjI2OTRiMDBkZmU4MzRhMmZjNjk5MWViYS4uYjZiOWY2Y2MyMGVjM2UxY2ZlMmVmZmJlMDg1NmUz
NzAwNTQ0MzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMi0wMS0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkF1ZGlvIEFQ
SSBjb25zdC1jb3JyZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHM7IG5vIG5ldCBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgc28g
Y292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGUgbm9uLWNvbnN0IGRhdGEo
KSBhY2Nlc3NvciB3YXMgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIHRvIGV4cG9zZSBjb25zdC1jb3Jy
ZWN0bmVzcworICAgICAgICBidWdzIGR1cmluZyBjb21waWxlIHRpbWU6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5u
ZWw6Om11dGFibGVEYXRhKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJl
IG1hZGUgY29uc3QgY29ycmVjdDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0FycmF5Ojpjb3B5VG9SYW5nZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNy
ZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZUQ29udm9sdmVyOjpwcm9jZXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9QYWRk
ZWRGRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlclN0YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0
YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVz
YW1wbGVyOjpjb25zdW1lU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6
OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpa
ZXJvUG9sZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1czo6Y2hhbm5lbEJ5VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpnYWluKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Byb2Nlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnBy
b2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXF1YWxQb3dlclBhbm5lcjo6cGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6bnVtYmVyT2ZBemltdXRocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjpwcm9jZXNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9s
dmVyOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9ta2wvRkZURnJhbWVNS0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRv
RkZUKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIHRv
IHVzZSB0aGUgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIGFjY2Vzc29yOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpwcm9j
ZXNzV2l0aEdhaW5Gcm9tTW9ub1N0ZXJlbyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6
Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVs
OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNvcHlGcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6Y29weUZyb21SYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnN1bUZyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcjo6cHJvY2Vz
cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
cXVhbFBvd2VyUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJu
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnBh
bik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6cHJvY2Vzcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVy
Yjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0ZGVEZyYW1lTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZG
VCk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1
YWRQcm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2Vz
cyk6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKToK
KyAgICAgICAgKiB3ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lQW5hbHlzZXI6OndyaXRlSW5wdXQpOgorICAgICAgICAqIHdlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nl
c3Nvcjo6cHJvY2Vzcyk6CisKIDIwMTItMDEtMTggIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0
aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oCmluZGV4IGEx
NGM5NTBkZDZmYzdjY2JlOGIwNGIxZTkyNjBkYTJiMTAyMWRhNTguLjdhMjI1MWIzOGIyZjQyZTA1
YzhlNDBhMTBiYjczNDJjNGIyZTY0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0FycmF5LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1lbXNl
dCh0aGlzLT5kYXRhKCkgKyBzdGFydCwgMCwgc2l6ZW9mKFQpICogKGVuZCAtIHN0YXJ0KSk7CiAg
ICAgfQogCi0gICAgdm9pZCBjb3B5VG9SYW5nZShUKiBzb3VyY2VEYXRhLCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgZW5kKQorICAgIHZvaWQgY29weVRvUmFuZ2UoY29uc3QgVCogc291cmNlRGF0
YSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICB7CiAgICAgICAgIGJvb2wgaXNT
YWZlID0gKHN0YXJ0IDw9IGVuZCkgJiYgKGVuZCA8PSB0aGlzLT5zaXplKCkpOwogICAgICAgICBB
U1NFUlQoaXNTYWZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNw
cAppbmRleCAzMDQ4OWJhYTc1MWUxMzQzZDY3MjlhZjQ2OGI2OTI1OGM3MGE3Y2FjLi5iODEwN2I5
NTc5Yjk4NjZhNWZhMWE3NjkyNDM3ZTVmOWU3MTM2NzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC0xMzAsNiArMTMwLDExIEBAIEF1ZGlvQ2hhbm5l
bCogQXVkaW9CdXM6OmNoYW5uZWxCeVR5cGUodW5zaWduZWQgY2hhbm5lbFR5cGUpCiAgICAgcmV0
dXJuIDA7CiB9CiAKK2NvbnN0IEF1ZGlvQ2hhbm5lbCogQXVkaW9CdXM6OmNoYW5uZWxCeVR5cGUo
dW5zaWduZWQgdHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxBdWRpb0J1cyo+
KHRoaXMpLT5jaGFubmVsQnlUeXBlKHR5cGUpOworfQorCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGNoYW5uZWwgY291bnQgYW5kIGZyYW1lLXNpemUgbWF0Y2guCiBib29sIEF1ZGlvQnVzOjp0b3Bv
bG9neU1hdGNoZXMoY29uc3QgQXVkaW9CdXMmIGJ1cykgY29uc3QKIHsKQEAgLTE0Myw3ICsxNDgs
NyBAQCBib29sIEF1ZGlvQnVzOjp0b3BvbG9neU1hdGNoZXMoY29uc3QgQXVkaW9CdXMmIGJ1cykg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9C
dXM6OmNyZWF0ZUJ1ZmZlckZyb21SYW5nZShBdWRpb0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25l
ZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFtZSkKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1
ZGlvQnVzOjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1ZmZl
ciwgdW5zaWduZWQgc3RhcnRGcmFtZSwgdW5zaWduZWQgZW5kRnJhbWUpCiB7CiAgICAgc2l6ZV90
IG51bWJlck9mU291cmNlRnJhbWVzID0gc291cmNlQnVmZmVyLT5sZW5ndGgoKTsKICAgICB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzID0gc291cmNlQnVmZmVyLT5udW1iZXJPZkNoYW5uZWxzKCk7
CkBAIC0zNDUsOCArMzUwLDggQEAgdm9pZCBBdWRpb0J1czo6cHJvY2Vzc1dpdGhHYWluRnJvbU1v
bm9TdGVyZW8oY29uc3QgQXVkaW9CdXMgJnNvdXJjZUJ1cywgZmxvYXQqIGwKICAgICBjb25zdCBm
bG9hdCogc291cmNlTCA9IHNvdXJjZUJ1c1NhZmUuY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCkt
PmRhdGEoKTsKICAgICBjb25zdCBmbG9hdCogc291cmNlUiA9IG51bWJlck9mU291cmNlQ2hhbm5l
bHMgPiAxID8gc291cmNlQnVzU2FmZS5jaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPmRhdGEo
KSA6IDA7CiAKLSAgICBmbG9hdCogZGVzdGluYXRpb25MID0gY2hhbm5lbEJ5VHlwZShDaGFubmVs
TGVmdCktPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gbnVtYmVyT2ZEZXN0aW5h
dGlvbkNoYW5uZWxzID4gMSA/IGNoYW5uZWxCeVR5cGUoQ2hhbm5lbFJpZ2h0KS0+ZGF0YSgpIDog
MDsKKyAgICBmbG9hdCogZGVzdGluYXRpb25MID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCkt
Pm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG51bWJlck9mRGVzdGlu
YXRpb25DaGFubmVscyA+IDEgPyBjaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPm11dGFibGVE
YXRhKCkgOiAwOwogCiAgICAgY29uc3QgZmxvYXQgRGV6aXBwZXJSYXRlID0gMC4wMDVmOwogICAg
IGludCBmcmFtZXNUb1Byb2Nlc3MgPSBsZW5ndGgoKTsKQEAgLTQzNyw3ICs0NDIsNyBAQCB2b2lk
IEF1ZGlvQnVzOjpjb3B5V2l0aFNhbXBsZUFjY3VyYXRlR2FpblZhbHVlc0Zyb20oY29uc3QgQXVk
aW9CdXMgJnNvdXJjZUJ1cywgZgogICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsg
Y2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewogICAg
ICAgICBpZiAoc291cmNlQnVzLm51bWJlck9mQ2hhbm5lbHMoKSA9PSBudW1iZXJPZkNoYW5uZWxz
KCkpCiAgICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2VCdXMuY2hhbm5lbChjaGFubmVsSW5kZXgp
LT5kYXRhKCk7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGNoYW5uZWwoY2hhbm5lbElu
ZGV4KS0+ZGF0YSgpOworICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBjaGFubmVsKGNoYW5u
ZWxJbmRleCktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIHZtdWwoc291cmNlLCAxLCBnYWluVmFs
dWVzLCAxLCBkZXN0aW5hdGlvbiwgMSwgbnVtYmVyT2ZHYWluVmFsdWVzKTsKICAgICB9CiB9CkBA
IC00NTIsNyArNDU3LDcgQEAgdm9pZCBBdWRpb0J1czo6c3VtV2l0aEdhaW5Gcm9tKGNvbnN0IEF1
ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0KiBsYXN0TWl4R2FpbiwgZmwKICAgICBwcm9jZXNzV2l0
aEdhaW5Gcm9tKHNvdXJjZUJ1cywgbGFzdE1peEdhaW4sIHRhcmdldEdhaW4sIHRydWUpOwogfQog
Ci1QYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVy
dGluZyhBdWRpb0J1cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91YmxlIG5ld1NhbXBs
ZVJhdGUpCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRl
Q29udmVydGluZyhjb25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91
YmxlIG5ld1NhbXBsZVJhdGUpCiB7CiAgICAgLy8gc291cmNlQnVzJ3Mgc2FtcGxlLXJhdGUgbXVz
dCBiZSBrbm93bi4KICAgICBBU1NFUlQoc291cmNlQnVzICYmIHNvdXJjZUJ1cy0+c2FtcGxlUmF0
ZSgpKTsKQEAgLTQ3Niw3ICs0ODEsNyBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6
Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhBdWRpb0J1cyogc291cmNlQnVzLAogICAgIH0K
ICAgICAKICAgICAvLyBGaXJzdCwgbWl4IHRvIG1vbm8gKGlmIG5lY2Vzc2FyeSkgdGhlbiBzYW1w
bGUtcmF0ZSBjb252ZXJ0LgotICAgIEF1ZGlvQnVzKiByZXNhbXBsZXJTb3VyY2VCdXM7CisgICAg
Y29uc3QgQXVkaW9CdXMqIHJlc2FtcGxlclNvdXJjZUJ1czsKICAgICBPd25QdHI8QXVkaW9CdXM+
IG1peGVkTW9ub0J1czsKICAgICBpZiAobWl4VG9Nb25vKSB7CiAgICAgICAgIG1peGVkTW9ub0J1
cyA9IEF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyhzb3VyY2VCdXMpOwpAQCAtNDk3LDgg
KzUwMiw4IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJh
dGVDb252ZXJ0aW5nKEF1ZGlvQnVzKiBzb3VyY2VCdXMsCiAKICAgICAvLyBTYW1wbGUtcmF0ZSBj
b252ZXJ0IGVhY2ggY2hhbm5lbC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZEZXN0aW5hdGlvbkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgZmxvYXQqIHNvdXJjZSA9IHJl
c2FtcGxlclNvdXJjZUJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOwotICAgICAgICBmbG9hdCogZGVz
dGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAgICAgICBj
b25zdCBmbG9hdCogc291cmNlID0gcmVzYW1wbGVyU291cmNlQnVzLT5jaGFubmVsKGkpLT5kYXRh
KCk7CisgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVs
KGkpLT5tdXRhYmxlRGF0YSgpOwogCiAgICAgICAgIFNpbmNSZXNhbXBsZXIgcmVzYW1wbGVyKHNh
bXBsZVJhdGVSYXRpbyk7CiAgICAgICAgIHJlc2FtcGxlci5wcm9jZXNzKHNvdXJjZSwgZGVzdGlu
YXRpb24sIHNvdXJjZUxlbmd0aCk7CkBAIC01MDgsNyArNTEzLDcgQEAgUGFzc093blB0cjxBdWRp
b0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMqIHNv
dXJjZUJ1cywKICAgICByZXR1cm4gZGVzdGluYXRpb25CdXMucmVsZWFzZSgpOwogfQogCi1QYXNz
T3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oQXVkaW9CdXMq
IHNvdXJjZUJ1cykKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeU1peGlu
Z1RvTW9ubyhjb25zdCBBdWRpb0J1cyogc291cmNlQnVzKQogewogICAgIHN3aXRjaCAoc291cmNl
QnVzLT5udW1iZXJPZkNoYW5uZWxzKCkpIHsKICAgICBjYXNlIDE6CkBAIC01MTksOSArNTI0LDkg
QEAgUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKEF1
ZGlvQnVzKiBzb3VyY2VCdXMpCiAgICAgICAgICAgICB1bnNpZ25lZCBuID0gc291cmNlQnVzLT5s
ZW5ndGgoKTsKICAgICAgICAgICAgIE93blB0cjxBdWRpb0J1cz4gZGVzdGluYXRpb25CdXMoYWRv
cHRQdHIobmV3IEF1ZGlvQnVzKDEsIG4pKSk7CiAKLSAgICAgICAgICAgIGZsb2F0KiBzb3VyY2VM
ID0gc291cmNlQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7Ci0gICAgICAgICAgICBmbG9hdCogc291
cmNlUiA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpOwotICAgICAgICAgICAgZmxvYXQq
IGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICAg
ICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVzLT5jaGFubmVsKDApLT5kYXRh
KCk7CisgICAgICAgICAgICBjb25zdCBmbG9hdCogc291cmNlUiA9IHNvdXJjZUJ1cy0+Y2hhbm5l
bCgxKS0+ZGF0YSgpOworICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRp
b25CdXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIAogICAgICAgICAgICAg
Ly8gRG8gdGhlIG1vbm8gbWl4ZG93bi4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRl
eCA2MzcwYzhiNTIzNDYxNDdjYTg3MGMzMWU1M2NjN2FjZDQ1ODczYmZjLi5iM2RhMGY0NTFkMTgx
NDNhN2IwMWY0Y2RkMjA5NzcwMGQ4ZDE1OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIEF1ZGlvQ2hhbm5l
bCogY2hhbm5lbCh1bnNpZ25lZCBjaGFubmVsKSB7IHJldHVybiBtX2NoYW5uZWxzW2NoYW5uZWxd
LmdldCgpOyB9CiAgICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNoYW5u
ZWwpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8QXVkaW9CdXMqPih0aGlzKS0+bV9jaGFubmVs
c1tjaGFubmVsXS5nZXQoKTsgfQogICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5lbEJ5VHlwZSh1bnNp
Z25lZCB0eXBlKTsKKyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWdu
ZWQgdHlwZSkgY29uc3Q7CiAKICAgICAvLyBOdW1iZXIgb2Ygc2FtcGxlLWZyYW1lcwogICAgIHNp
emVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQpAQCAtODcsMjQgKzg4LDI0
IEBAIHB1YmxpYzoKIAogICAgIC8vIENyZWF0ZXMgYSBuZXcgYnVmZmVyIGZyb20gYSByYW5nZSBp
biB0aGUgc291cmNlIGJ1ZmZlci4KICAgICAvLyAwIG1heSBiZSByZXR1cm5lZCBpZiB0aGUgcmFu
Z2UgZG9lcyBub3QgZml0IGluIHRoZSBzb3VyY2VCdWZmZXIKLSAgICBzdGF0aWMgUGFzc093blB0
cjxBdWRpb0J1cz4gY3JlYXRlQnVmZmVyRnJvbVJhbmdlKEF1ZGlvQnVzKiBzb3VyY2VCdWZmZXIs
IHVuc2lnbmVkIHN0YXJ0RnJhbWUsIHVuc2lnbmVkIGVuZEZyYW1lKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVmZmVyRnJvbVJhbmdlKGNvbnN0IEF1ZGlvQnVzKiBz
b3VyY2VCdWZmZXIsIHVuc2lnbmVkIHN0YXJ0RnJhbWUsIHVuc2lnbmVkIGVuZEZyYW1lKTsKIAog
CiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBBdWRpb0J1cyBieSBzYW1wbGUtcmF0ZSBjb252ZXJ0aW5n
IHNvdXJjZUJ1cyB0byB0aGUgbmV3U2FtcGxlUmF0ZS4KICAgICAvLyBzZXRTYW1wbGVSYXRlKCkg
bXVzdCBoYXZlIGJlZW4gcHJldmlvdXNseSBjYWxsZWQgb24gc291cmNlQnVzLgogICAgIC8vIE5v
dGU6IHNhbXBsZS1yYXRlIGNvbnZlcnNpb24gaXMgYWxyZWFkeSBoYW5kbGVkIGluIHRoZSBmaWxl
LXJlYWRpbmcgY29kZSBmb3IgdGhlIG1hYyBwb3J0LCBzbyB3ZSBkb24ndCBuZWVkIHRoaXMuCi0g
ICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRp
bmcoQXVkaW9CdXMqIHNvdXJjZUJ1cywgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdTYW1wbGVS
YXRlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnlTYW1wbGVSYXRl
Q29udmVydGluZyhjb25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91
YmxlIG5ld1NhbXBsZVJhdGUpOwogCiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBBdWRpb0J1cyBieSBt
aXhpbmcgYWxsIHRoZSBjaGFubmVscyBkb3duIHRvIG1vbm8uCiAgICAgLy8gSWYgc291cmNlQnVz
IGlzIGFscmVhZHkgbW9ubywgdGhlbiB0aGUgcmV0dXJuZWQgQXVkaW9CdXMgd2lsbCBzaW1wbHkg
YmUgYSBjb3B5LgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCeU1peGlu
Z1RvTW9ubyhBdWRpb0J1cyogc291cmNlQnVzKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRp
b0J1cz4gY3JlYXRlQnlNaXhpbmdUb01vbm8oY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cyk7CiAK
ICAgICAvLyBTY2FsZXMgYWxsIHNhbXBsZXMgYnkgdGhlIHNhbWUgYW1vdW50LgogICAgIHZvaWQg
c2NhbGUoZmxvYXQgc2NhbGUpOwogCiAgICAgLy8gTWFzdGVyIGdhaW4gZm9yIHRoaXMgYnVzIC0g
dXNlZCB3aXRoIHN1bVdpdGhHYWluRnJvbSgpIGJlbG93CiAgICAgdm9pZCBzZXRHYWluKGZsb2F0
IGdhaW4pIHsgbV9idXNHYWluID0gZ2FpbjsgfQotICAgIGZsb2F0IGdhaW4oKSB7IHJldHVybiBt
X2J1c0dhaW47IH0KKyAgICBmbG9hdCBnYWluKCkgY29uc3QgeyByZXR1cm4gbV9idXNHYWluOyB9
CiAKICAgICB2b2lkIHJlc2V0KCkgeyBtX2lzRmlyc3RUaW1lID0gdHJ1ZTsgfSAvLyBmb3IgZGUt
emlwcGVyaW5nCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5u
ZWwuY3BwCmluZGV4IGViYmYzYmJmNTUwZDJhMzcyMmMxMGE4NmZmNDUyNGVmNDM1NzM1MGQuLjNj
NzQ4ZTYzMzk5MGVjMTdiY2RjMDM4ZjA3MGE5NTI0MmZhYTlkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1
c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKIAogdm9pZCBBdWRpb0NoYW5uZWw6OnNjYWxlKGZs
b2F0IHNjYWxlKQogewotICAgIHZzbXVsKGRhdGEoKSwgMSwgJnNjYWxlLCBkYXRhKCksIDEsIGxl
bmd0aCgpKTsKKyAgICB2c211bChkYXRhKCksIDEsICZzY2FsZSwgbXV0YWJsZURhdGEoKSwgMSwg
bGVuZ3RoKCkpOwogfQogCiB2b2lkIEF1ZGlvQ2hhbm5lbDo6Y29weUZyb20oY29uc3QgQXVkaW9D
aGFubmVsKiBzb3VyY2VDaGFubmVsKQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEF1ZGlvQ2hhbm5l
bDo6Y29weUZyb20oY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsKQogICAgIGlmICgh
aXNTYWZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1jcHkoZGF0YSgpLCBzb3VyY2VDaGFu
bmVsLT5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBsZW5ndGgoKSk7CisgICAgbWVtY3B5KG11dGFi
bGVEYXRhKCksIHNvdXJjZUNoYW5uZWwtPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGxlbmd0aCgp
KTsKIH0KIAogdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tUmFuZ2UoY29uc3QgQXVkaW9DaGFu
bmVsKiBzb3VyY2VDaGFubmVsLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFt
ZSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tUmFuZ2UoY29u
c3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsLCB1bnNpZ25lZCBzdGEKICAgICAgICAgcmV0
dXJuOwogCiAgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IHNvdXJjZUNoYW5uZWwtPmRhdGEoKTsK
LSAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9u
ID0gbXV0YWJsZURhdGEoKTsKICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSArIHN0YXJ0
RnJhbWUsIHNpemVvZihmbG9hdCkgKiByYW5nZUxlbmd0aCk7CiB9CiAKQEAgLTgzLDcgKzgzLDcg
QEAgdm9pZCBBdWRpb0NoYW5uZWw6OnN1bUZyb20oY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VD
aGFubmVsKQogICAgIGlmICghaXNTYWZlKQogICAgICAgICByZXR1cm47CiAKLSAgICB2YWRkKGRh
dGEoKSwgMSwgc291cmNlQ2hhbm5lbC0+ZGF0YSgpLCAxLCBkYXRhKCksIDEsIGxlbmd0aCgpKTsK
KyAgICB2YWRkKGRhdGEoKSwgMSwgc291cmNlQ2hhbm5lbC0+ZGF0YSgpLCAxLCBtdXRhYmxlRGF0
YSgpLCAxLCBsZW5ndGgoKSk7CiB9CiAKIGZsb2F0IEF1ZGlvQ2hhbm5lbDo6bWF4QWJzVmFsdWUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9D
aGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApp
bmRleCA4ODAzZTc1Y2QxZTNmN2FlMjJhNTA4NjlmNjFlOGRkNDVkYmJkNGNjLi4yNGRlM2Y5ZTgy
MDYyYzdjMGFlODNkZGMyZTVmMDQxZWYxMTQyOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
c2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAvLyBEaXJl
Y3QgYWNjZXNzIHRvIFBDTSBzYW1wbGUgZGF0YQotICAgIGZsb2F0KiBkYXRhKCkgeyByZXR1cm4g
bV9yYXdQb2ludGVyID8gbV9yYXdQb2ludGVyIDogbV9tZW1CdWZmZXItPmRhdGEoKTsgfQorICAg
IGZsb2F0KiBtdXRhYmxlRGF0YSgpIHsgcmV0dXJuIG1fcmF3UG9pbnRlciA/IG1fcmF3UG9pbnRl
ciA6IG1fbWVtQnVmZmVyLT5kYXRhKCk7IH0KICAgICBjb25zdCBmbG9hdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmF3UG9pbnRlciA/IG1fcmF3UG9pbnRlciA6IG1fbWVtQnVmZmVyLT5kYXRh
KCk7IH0KIAogICAgIC8vIFplcm9lcyBvdXQgYWxsIHNhbXBsZSB2YWx1ZXMgaW4gYnVmZmVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQ
cm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJu
ZWxQcm9jZXNzb3IuY3BwCmluZGV4IGNmNGQyZDM1MTc1YTUzODkzZTE1Y2VmNTAzZjBiZjllMzZh
MGFjODMuLjVmOTEzOWYwMzA4ODRjZDQ5MmI1M2FhMDNkODBiM2U5ZmFjNDUzZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFBy
b2Nlc3Nvci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nv
cjo6dW5pbml0aWFsaXplKCkKICAgICBtX2luaXRpYWxpemVkID0gZmFsc2U7CiB9CiAKLXZvaWQg
QXVkaW9EU1BLZXJuZWxQcm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBBdWRpb0RTUEtl
cm5lbFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyog
ZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUKHNvdXJj
ZSAmJiBkZXN0aW5hdGlvbik7CiAgICAgaWYgKCFzb3VyY2UgfHwgIWRlc3RpbmF0aW9uKQpAQCAt
ODgsNyArODgsNyBAQCB2b2lkIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlv
QnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgcwogICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tlcm5lbHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRh
dGEoKSwgZGVzdGluYXRpb24tPmNoYW5uZWwoaSktPmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICAgICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNzKHNvdXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgp
LCBkZXN0aW5hdGlvbi0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwgZnJhbWVzVG9Qcm9jZXNz
KTsKIH0KIAogLy8gUmVzZXRzIGZpbHRlciBzdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgKaW5kZXggNDBiNWFi
OGQ2NzM4M2UyZGM4OTdjZjc1M2Y2NDljMWMwMDM3YjNiMC4uN2Y4ZjgxZDJmZDg2ZmRiOGI0NWVh
OTcyYWNmMmU2OTU4NTE4MzI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICAvLyBBdWRpb1Byb2Nlc3NvciBtZXRob2RzCiAgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCk7Ci0gICAgdmlydHVh
bCB2b2lkIHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBB
dWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
dW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nlc3Nvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaAppbmRleCAyZDdiNjBhN2Nl
NjBlYjA2NjVlMmQyODhmYmM5NDk2NjZmZmRjYmNmLi40NjlmODMzMjI0MzYwNzgxZDQwMjJiMDNk
ZTdjYjVhNzY4YzA0NzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Byb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUHJvY2Vzc29yLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB1bmluaXRpYWxpemUoKSA9IDA7CiAKICAgICAvLyBQcm9jZXNzZXMgdGhlIHNvdXJjZSB0byBk
ZXN0aW5hdGlvbiBidXMuICBUaGUgbnVtYmVyIG9mIGNoYW5uZWxzIG11c3QgbWF0Y2ggaW4gc291
cmNlIGFuZCBkZXN0aW5hdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhBdWRpb0J1cyog
c291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRp
b0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpID0gMDsKIAogICAgIC8v
IFJlc2V0cyBmaWx0ZXIgc3RhdGUKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKaW5kZXgg
YmE1YjU4ZTY0NTA4ZjAxMTg4MzJkMDJjNWJjNWE1OTIyZGU2MDlkNS4uMWE5ZjgxZTdhNzQzYWE2
MmZlMTI0NWVmNDhmM2Q2NGVmZmEyMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQXVk
aW9SZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIsIEF1ZGlv
QnVzKiBkZXN0aW5hdGlvCiAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSB0aGUgc291cmNlIGRhdGEs
IHJlc2FtcGxlIGVhY2ggY2hhbm5lbCBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidXMuCiAgICAgLy8g
RklYTUU6IG9wdGltaXplIGZvciB0aGUgY29tbW9uIHN0ZXJlbyBjYXNlIHdoZXJlIGl0J3MgZmFz
dGVyIHRvIHByb2Nlc3MgYm90aCBsZWZ0L3JpZ2h0IGNoYW5uZWxzIGluIHRoZSBzYW1lIGlubmVy
IGxvb3AuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsr
aSkgewotICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5l
bChpKS0+ZGF0YSgpOworICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1
cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKTsKICAgICAgICAgbV9rZXJuZWxzW2ldLT5wcm9j
ZXNzKGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4
IGM0Nzk1ZjRmODFlYmZjOGVkOWJmNzZhNTk4NDE0ZTc4OTlkODJlZGQuLmE1NTIwNTcwNWQ5NTEw
YmYyMGQ5ZGIzNTQ4NzkzOTY1ZWUwMmVlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMTE1LDEwICsxMTUsMTAg
QEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldEVtcGhhc2lzUGFyYW1ldGVycyhmbG9hdCBn
YWluLCBmbG9hdCBhbmNob3JGcmVxLCBmbG8KICAgICBzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVy
cygzLCBnYWluLCBhbmNob3JGcmVxIC8gKGZpbHRlclN0YWdlUmF0aW8gKiBmaWx0ZXJTdGFnZVJh
dGlvICogZmlsdGVyU3RhZ2VSYXRpbykpOwogfQogCi12b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6
cHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHVu
c2lnbmVkIGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNz
KGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgdW5z
aWduZWQgZnJhbWVzVG9Qcm9jZXNzKQogewotICAgIGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVz
LT5jaGFubmVsKDApLT5kYXRhKCk7Ci0gICAgZmxvYXQqIHNvdXJjZVI7CisgICAgY29uc3QgZmxv
YXQqIHNvdXJjZUwgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICBjb25zdCBm
bG9hdCogc291cmNlUjsKIAogICAgIGlmIChzb3VyY2VCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSA+
IDEpCiAgICAgICAgIHNvdXJjZVIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKQEAg
LTEyNyw4ICsxMjcsOCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2VzcyhBdWRpb0J1
cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsCiAKICAgICBBU1NFUlQoZGVz
dGluYXRpb25CdXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9PSAyKTsKIAotICAgIGZsb2F0KiBkZXN0
aW5hdGlvbkwgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOwotICAgIGZsb2F0
KiBkZXN0aW5hdGlvblIgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpOworICAg
IGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJs
ZURhdGEoKTsKKyAgICBmbG9hdCogZGVzdGluYXRpb25SID0gZGVzdGluYXRpb25CdXMtPmNoYW5u
ZWwoMSktPm11dGFibGVEYXRhKCk7CiAKICAgICBmbG9hdCBmaWx0ZXJTdGFnZUdhaW4gPSBwYXJh
bWV0ZXJWYWx1ZShQYXJhbUZpbHRlclN0YWdlR2Fpbik7CiAgICAgZmxvYXQgZmlsdGVyU3RhZ2VS
YXRpbyA9IHBhcmFtZXRlclZhbHVlKFBhcmFtRmlsdGVyU3RhZ2VSYXRpbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCmluZGV4IDIx
NTI5NTEyZGVmMTkwNDY2Y2VjYTg1Y2E4MWMzZDg3NmViMDBmYTYuLmUwMTE1ZWUyNzNlNDMwZjlj
MjhmNTY0YmZjOWNjNDRlYmM2NmM2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIER5bmFtaWNzQ29tcHJlc3Nvcihib29sIGlzU3RlcmVvLCBmbG9hdCBzYW1wbGVSYXRl
KTsKIAotICAgIHZvaWQgcHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVz
dGluYXRpb25CdXMsIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9jZXNz
KGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgdW5z
aWduZWQgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICBmbG9hdCBw
YXJhbWV0ZXJWYWx1ZSh1bnNpZ25lZCBwYXJhbWV0ZXJJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcApp
bmRleCBlOWY0OTZhNWJmYWUzZjRhMWZiYzRhNWE0ZDc4YmFlOGZlZDMyMDE2Li5hN2E0YzEyMTI3
NTIwMmVjZjNiYWIyZTE1ZTA1ZmNjNGI0YWRhMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAg
LTgyLDkgKzgyLDkgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5
VGltZShmbG9hdCBwcmVEZWxheVRpbWUpCiAgICAgfQogfQogCi12b2lkIER5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlTCwKK3ZvaWQgRHluYW1pY3NDb21wcmVz
c29yS2VybmVsOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBzb3VyY2VSLCAvKiBzdGVyZW8tbGlu
a2VkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9h
dCogc291cmNlUiwgLyogc3RlcmVvLWxpbmtlZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2VzcywKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWwuaAppbmRleCA4ZTVmNzA5OWQ4OGJiNTVhZTc4ZDQ3OGNkNzk2ZGNmNGExOTZkMjE4Li5jZjMx
OWIzNzhhZGViNTkwNjI5NTNkZWFiMDkyZTMzMzljNmY2ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApA
QCAtMzgsOSArMzgsOSBAQCBwdWJsaWM6CiAgICAgRHluYW1pY3NDb21wcmVzc29yS2VybmVsKGZs
b2F0IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gUGVyZm9ybXMgc3RlcmVvLWxpbmtlZCBjb21wcmVz
c2lvbi4KLSAgICB2b2lkIHByb2Nlc3MoZmxvYXQgKnNvdXJjZUwsCisgICAgdm9pZCBwcm9jZXNz
KGNvbnN0IGZsb2F0ICpzb3VyY2VMLAogICAgICAgICAgICAgICAgICBmbG9hdCAqZGVzdGluYXRp
b25MLAotICAgICAgICAgICAgICAgICBmbG9hdCAqc291cmNlUiwKKyAgICAgICAgICAgICAgICAg
Y29uc3QgZmxvYXQgKnNvdXJjZVIsCiAgICAgICAgICAgICAgICAgIGZsb2F0ICpkZXN0aW5hdGlv
blIsCiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2VzcywKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcAppbmRl
eCAwZGE3NjIyMzY0MDkxNzJhNTg0NTZmZjBiNmRkNzJmZTU4YmM3ODQ5Li5hMmQyZGZmNGMwMDBh
ODJiZjQ0ODgzOWQxMjBkM2QyNjk2ZGZiZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcApAQCAtNDksNyArNDksNyBAQCBFcXVh
bFBvd2VyUGFubmVyOjpFcXVhbFBvd2VyUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgbV9z
bW9vdGhpbmdDb25zdGFudCA9IEF1ZGlvVXRpbGl0aWVzOjpkaXNjcmV0ZVRpbWVDb25zdGFudEZv
clNhbXBsZVJhdGUoU21vb3RoaW5nVGltZUNvbnN0YW50LCBzYW1wbGVSYXRlKTsKIH0KIAotdm9p
ZCBFcXVhbFBvd2VyUGFubmVyOjpwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSAvKmVsZXZhdGlv
biovLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCit2b2lkIEVxdWFsUG93ZXJQYW5uZXI6OnBhbihkb3VibGUgYXppbXV0aCwg
ZG91YmxlIC8qZWxldmF0aW9uKi8sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMq
IG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHN0ZXJlbyBzb3VyY2VzCiAgICAgYm9vbCBpc0lucHV0U2FmZSA9IGlucHV0QnVzICYm
IGlucHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgPT0gMSAmJiBmcmFtZXNUb1Byb2Nlc3MgPD0g
aW5wdXRCdXMtPmxlbmd0aCgpOwpAQCAtNjIsMTAgKzYyLDEwIEBAIHZvaWQgRXF1YWxQb3dlclBh
bm5lcjo6cGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgLyplbGV2YXRpb24qLywgQXVkaW9CdXMq
IGlucHV0CiAgICAgaWYgKCFpc091dHB1dFNhZmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF1
ZGlvQ2hhbm5lbCogY2hhbm5lbCA9IGlucHV0QnVzLT5jaGFubmVsKDApOwotICAgIGZsb2F0KiBz
b3VyY2VQID0gY2hhbm5lbC0+ZGF0YSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICBmbG9hdCogZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlv
QnVzOjpDaGFubmVsTGVmdCktPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gb3V0
cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsUmlnaHQpLT5kYXRhKCk7Cisg
ICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsID0gaW5wdXRCdXMtPmNoYW5uZWwoMCk7Cisg
ICAgY29uc3QgZmxvYXQqIHNvdXJjZVAgPSBjaGFubmVsLT5kYXRhKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAorICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNo
YW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+bXV0YWJsZURhdGEoKTsKKyAgICBm
bG9hdCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpD
aGFubmVsUmlnaHQpLT5tdXRhYmxlRGF0YSgpOwogCiAgICAgaWYgKCFzb3VyY2VQIHx8ICFkZXN0
aW5hdGlvbkwgfHwgIWRlc3RpbmF0aW9uUikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDRmNjAwMWRm
OTE0MjBlYzU0NGFmY2VkY2RmNjg5N2U4NDQ4MGQ3NTAuLjAxNmNkNGFhMTRjN2ZmNmRlNTBjNDE4
YzI5OTAwNzJjMGFjOGMwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9FcXVhbFBvd2VyUGFubmVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRXF1YWxQb3dlclBh
bm5lciA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgogICAgIEVxdWFsUG93ZXJQYW5uZXIoZmxv
YXQgc2FtcGxlUmF0ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBhemltdXRoLCBk
b3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdWYs
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6
aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9C
dXMqIG91dHB1dEJ1Ziwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcmVzZXQoKSB7IG1faXNGaXJzdFJlbmRlciA9IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5jcHAKaW5kZXggOTA5MzQzMzgwMWM2YjA1
NmFkYmNjY2Q5MDQ4YWQ0NjcxZGQxM2Q2Yy4uMjMyMWRlMGNmMTEwNDU5MDVkZDE1OThhYThlNmVi
YTdiZWM1OTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
Q29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252
b2x2ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEZGVENvbnZvbHZlcjo6RkZUQ29udm9sdmVyKHNp
emVfdCBmZnRTaXplKQogewogfQogCi12b2lkIEZGVENvbnZvbHZlcjo6cHJvY2VzcyhGRlRGcmFt
ZSogZmZ0S2VybmVsLCBmbG9hdCogc291cmNlUCwgZmxvYXQqIGRlc3RQLCBzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQordm9pZCBGRlRDb252b2x2ZXI6OnByb2Nlc3MoRkZURnJhbWUqIGZmdEtlcm5l
bCwgY29uc3QgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykKIHsKICAgICAvLyBGSVhNRTogbWFrZSBzbyBmcmFtZXNUb1Byb2Nlc3MgaXMgbm90IHJl
cXVpcmVkIHRvIGZpdCBldmVubHkgaW50byBmZnRTaXplLzIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAppbmRleCBjMWI1MDAyNzY1YjU1NmM2ZDM3Yjlm
ZTY1MjE0NTVlYTQ3ZjAxNDRlLi4zNzViZjJjNjUwZDJkM2Q3MTEyMWNmNzVlNWViYmZiZWYxNWZj
NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGlucHV0IHRvIG91dHB1dCBsYXRl
bmN5IGlzIGVxdWFsIHRvIGZmdFNpemUgLyAyCiAgICAgLy8KICAgICAvLyBQcm9jZXNzaW5nIGlu
LXBsYWNlIGlzIGFsbG93ZWQuLi4KLSAgICB2b2lkIHByb2Nlc3MoRkZURnJhbWUqIGZmdEtlcm5l
bCwgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7
CisgICAgdm9pZCBwcm9jZXNzKEZGVEZyYW1lKiBmZnRLZXJuZWwsIGNvbnN0IGZsb2F0KiBzb3Vy
Y2VQLCBmbG9hdCogZGVzdFAsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgdm9pZCBy
ZXNldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKaW5k
ZXggNGYwMzJhMjZhYTgwMmYyNGMxN2ZmZjQ1YTZlZjMzYTliMzcyMmU1NC4uYTFhMGE1MGRhY2Vi
Y2I2ZDkwMzY0NGM2MDJkMTQ0OGM4MDI5YjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0ZGVEZyYW1lLmNwcApAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZUKGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCit2b2lkIEZGVEZyYW1lOjpkb1BhZGRlZEZGVChjb25zdCBmbG9hdCogZGF0YSwgc2l6
ZV90IGRhdGFTaXplKQogewogICAgIC8vIFplcm8tcGFkIHRoZSBpbXB1bHNlIHJlc3BvbnNlCiAg
ICAgQXVkaW9GbG9hdEFycmF5IHBhZGRlZFJlc3BvbnNlKGZmdFNpemUoKSk7IC8vIHplcm8taW5p
dGlhbGl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCmluZGV4IGIy
NWQyNzk1NmRkY2FlOTUyMWY0Y2U3YzAyMDc2MDRlMzAwYzk2ZDMuLjA0MjYzM2NkMjMxMjg2Nzhi
OTNhYjM4MzY4M2RjZTU5MDg0NDY1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZURnJhbWUuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplKCk7CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cCgpOwotICAgIHZvaWQgZG9GRlQo
ZmxvYXQqIGRhdGEpOworICAgIHZvaWQgZG9GRlQoY29uc3QgZmxvYXQqIGRhdGEpOwogICAgIHZv
aWQgZG9JbnZlcnNlRkZUKGZsb2F0KiBkYXRhKTsKICAgICB2b2lkIG11bHRpcGx5KGNvbnN0IEZG
VEZyYW1lJiBmcmFtZSk7IC8vIG11bHRpcGxpZXMgb3Vyc2VsZiB3aXRoIGZyYW1lIDogZWZmZWN0
aXZlbHkgb3BlcmF0b3IqPSgpCiAKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIC8vIElu
dGVycG9sYXRlcyBmcm9tIGZyYW1lMSAtPiBmcmFtZTIgYXMgeCBnb2VzIGZyb20gMC4wIC0+IDEu
MAogICAgIHN0YXRpYyBQYXNzT3duUHRyPEZGVEZyYW1lPiBjcmVhdGVJbnRlcnBvbGF0ZWRGcmFt
ZShjb25zdCBGRlRGcmFtZSYgZnJhbWUxLCBjb25zdCBGRlRGcmFtZSYgZnJhbWUyLCBkb3VibGUg
eCk7CiAKLSAgICB2b2lkIGRvUGFkZGVkRkZUKGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0YVNpemUp
OyAvLyB6ZXJvLXBhZGRpbmcgd2l0aCBkYXRhU2l6ZSA8PSBmZnRTaXplCisgICAgdm9pZCBkb1Bh
ZGRlZEZGVChjb25zdCBmbG9hdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKTsgLy8gemVyby1wYWRk
aW5nIHdpdGggZGF0YVNpemUgPD0gZmZ0U2l6ZQogICAgIGRvdWJsZSBleHRyYWN0QXZlcmFnZUdy
b3VwRGVsYXkoKTsKICAgICB2b2lkIGFkZENvbnN0YW50R3JvdXBEZWxheShkb3VibGUgc2FtcGxl
RnJhbWVEZWxheSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2
YXRpb24uaAppbmRleCBjY2ZmMDk3ZjhhZDZjZjExYjUyYzg5NzdlMGY4YWYzM2UwNzlkMjJiLi40
NDZlNjZkMGU3NjRkN2MyYWU2ODgxZWQzZmMwZTAxYjY1Nzc1ZmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdFIoKSB7IHJldHVybiBtX2tlcm5l
bExpc3RSLmdldCgpOyB9CiAKICAgICBkb3VibGUgZWxldmF0aW9uQW5nbGUoKSBjb25zdCB7IHJl
dHVybiBtX2VsZXZhdGlvbkFuZ2xlOyB9Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZBemltdXRocygp
IHsgcmV0dXJuIE51bWJlck9mVG90YWxBemltdXRoczsgfQorICAgIHVuc2lnbmVkIG51bWJlck9m
QXppbXV0aHMoKSBjb25zdCB7IHJldHVybiBOdW1iZXJPZlRvdGFsQXppbXV0aHM7IH0KICAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgCiAg
ICAgLy8gUmV0dXJucyB0aGUgbGVmdCBhbmQgcmlnaHQga2VybmVscyBmb3IgdGhlIGdpdmVuIGF6
aW11dGggaW5kZXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwu
Y3BwCmluZGV4IGM0NGRlOTMyZGQyNzBiZjJhOTk4ODM4ZTI2ZjBjMjUxOTkwZDJhNTIuLjM5MWY5
MDQwMjAwNDQyMDNmM2FhMGU0MDRjMDBjYmE1MmU5MGRhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBm
bG9hdCBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXpl
X3QgYW5hbHlzaXNGRlRTCiB7CiAgICAgQVNTRVJUKGNoYW5uZWwpOwogICAgICAgICAKLSAgICBm
bG9hdCogaW1wdWxzZVAgPSBjaGFubmVsLT5kYXRhKCk7CisgICAgZmxvYXQqIGltcHVsc2VQID0g
Y2hhbm5lbC0+bXV0YWJsZURhdGEoKTsKICAgICAKICAgICBib29sIGlzU2l6ZUdvb2QgPSBjaGFu
bmVsLT5sZW5ndGgoKSA+PSBhbmFseXNpc0ZGVFNpemU7CiAgICAgQVNTRVJUKGlzU2l6ZUdvb2Qp
OwpAQCAtNzgsNyArNzgsNyBAQCBIUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCog
Y2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGZsb2F0IHNhbXBsZVJhdGUsCiAgICAgLy8gRGV0ZXJt
aW5lIHRoZSBsZWFkaW5nIGRlbGF5IChhdmVyYWdlIGdyb3VwIGRlbGF5KSBmb3IgdGhlIHJlc3Bv
bnNlLgogICAgIG1fZnJhbWVEZWxheSA9IGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheShjaGFubmVs
LCBmZnRTaXplIC8gMik7CiAKLSAgICBmbG9hdCogaW1wdWxzZVJlc3BvbnNlID0gY2hhbm5lbC0+
ZGF0YSgpOworICAgIGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UgPSBjaGFubmVsLT5tdXRhYmxlRGF0
YSgpOwogICAgIHNpemVfdCByZXNwb25zZUxlbmd0aCA9IGNoYW5uZWwtPmxlbmd0aCgpOwogCiAg
ICAgaWYgKGJhc3NCb29zdCkgewpAQCAtMTE0LDcgKzExNCw3IEBAIFBhc3NPd25QdHI8QXVkaW9D
aGFubmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UoKQogCiAgICAgLy8gQWRk
IGxlYWRpbmcgZGVsYXkgYmFjayBpbi4KICAgICBmZnRGcmFtZS5hZGRDb25zdGFudEdyb3VwRGVs
YXkobV9mcmFtZURlbGF5KTsKLSAgICBmZnRGcmFtZS5kb0ludmVyc2VGRlQoY2hhbm5lbC0+ZGF0
YSgpKTsKKyAgICBmZnRGcmFtZS5kb0ludmVyc2VGRlQoY2hhbm5lbC0+bXV0YWJsZURhdGEoKSk7
CiAKICAgICByZXR1cm4gY2hhbm5lbC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3BwCmluZGV4IDk3ODM3MWNlZjdiOTViYzU4Nzk0ZDcx
ZTI4ZmQ1YjRiYjlhNGYwOTcuLmYwOTk2MWZhMWRlZmY3NWMwNDRhZmFmM2U5N2M5YWMwZmExMDgz
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgaW50IEhSVEZQYW5uZXI6OmNhbGN1bGF0ZURlc2lyZWRBemltdXRo
SW5kZXhBbmRCbGVuZChkb3VibGUgYXppbXV0aCwgZG91YmxlJiBhemkKICAgICByZXR1cm4gZGVz
aXJlZEF6aW11dGhJbmRleDsKIH0KIAotdm9pZCBIUlRGUGFubmVyOjpwYW4oZG91YmxlIGRlc2ly
ZWRBemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVz
KiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit2b2lkIEhSVEZQYW5uZXI6OnBh
bihkb3VibGUgZGVzaXJlZEF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIGNvbnN0IEF1ZGlvQnVz
KiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykK
IHsKICAgICB1bnNpZ25lZCBudW1JbnB1dENoYW5uZWxzID0gaW5wdXRCdXMgPyBpbnB1dEJ1cy0+
bnVtYmVyT2ZDaGFubmVscygpIDogMDsKIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdm9pZCBIUlRG
UGFubmVyOjpwYW4oZG91YmxlIGRlc2lyZWRBemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBBdWRp
b0J1cyogaW5wdXRCdXMKIAogICAgIC8vIE5vcm1hbGx5LCB3ZSdsbCBqdXN0IGJlIGRlYWxpbmcg
d2l0aCBtb25vIHNvdXJjZXMuCiAgICAgLy8gSWYgd2UgaGF2ZSBhIHN0ZXJlbyBpbnB1dCwgaW1w
bGVtZW50IHN0ZXJlbyBwYW5uaW5nIHdpdGggbGVmdCBzb3VyY2UgcHJvY2Vzc2VkIGJ5IGxlZnQg
SFJURiwgYW5kIHJpZ2h0IHNvdXJjZSBieSByaWdodCBIUlRGLgotICAgIEF1ZGlvQ2hhbm5lbCog
aW5wdXRDaGFubmVsTCA9IGlucHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVs
TGVmdCk7Ci0gICAgQXVkaW9DaGFubmVsKiBpbnB1dENoYW5uZWxSID0gbnVtSW5wdXRDaGFubmVs
cyA+IDEgPyBpbnB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KSA6
IDA7CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBpbnB1dENoYW5uZWxMID0gaW5wdXRCdXMtPmNo
YW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KTsKKyAgICBjb25zdCBBdWRpb0NoYW5u
ZWwqIGlucHV0Q2hhbm5lbFIgPSBudW1JbnB1dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFu
bmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsUmlnaHQpIDogMDsKIAogICAgIC8vIEdldCBzb3Vy
Y2UgYW5kIGRlc3RpbmF0aW9uIHBvaW50ZXJzLgotICAgIGZsb2F0KiBzb3VyY2VMID0gaW5wdXRD
aGFubmVsTC0+ZGF0YSgpOwotICAgIGZsb2F0KiBzb3VyY2VSID0gbnVtSW5wdXRDaGFubmVscyA+
IDEgPyBpbnB1dENoYW5uZWxSLT5kYXRhKCkgOiBzb3VyY2VMOwotICAgIGZsb2F0KiBkZXN0aW5h
dGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+
ZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5
cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291
cmNlTCA9IGlucHV0Q2hhbm5lbEwtPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlUiA9
IG51bUlucHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRDaGFubmVsUi0+ZGF0YSgpIDogc291cmNlTDsK
KyAgICBmbG9hdCogZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlv
QnVzOjpDaGFubmVsTGVmdCktPm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9u
UiA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KS0+bXV0
YWJsZURhdGEoKTsKIAogICAgIGRvdWJsZSBhemltdXRoQmxlbmQ7CiAgICAgaW50IGRlc2lyZWRB
emltdXRoSW5kZXggPSBjYWxjdWxhdGVEZXNpcmVkQXppbXV0aEluZGV4QW5kQmxlbmQoYXppbXV0
aCwgYXppbXV0aEJsZW5kKTsKQEAgLTIwNyw4ICsyMDcsOCBAQCB2b2lkIEhSVEZQYW5uZXI6OnBh
bihkb3VibGUgZGVzaXJlZEF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlvQnVzKiBpbnB1
dEJ1cwogICAgICAgICAgICAgCiAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbiBwb2ludGVycyBmb3IgdGhlIGN1cnJlbnQgc2VnbWVudC4KICAgICAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gc2VnbWVudCAqIGZyYW1lc1BlclNlZ21lbnQ7Ci0gICAgICAgIGZsb2F0
KiBzZWdtZW50U291cmNlTCA9IHNvdXJjZUwgKyBvZmZzZXQ7Ci0gICAgICAgIGZsb2F0KiBzZWdt
ZW50U291cmNlUiA9IHNvdXJjZVIgKyBvZmZzZXQ7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzZWdt
ZW50U291cmNlTCA9IHNvdXJjZUwgKyBvZmZzZXQ7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzZWdt
ZW50U291cmNlUiA9IHNvdXJjZVIgKyBvZmZzZXQ7CiAgICAgICAgIGZsb2F0KiBzZWdtZW50RGVz
dGluYXRpb25MID0gZGVzdGluYXRpb25MICsgb2Zmc2V0OwogICAgICAgICBmbG9hdCogc2VnbWVu
dERlc3RpbmF0aW9uUiA9IGRlc3RpbmF0aW9uUiArIG9mZnNldDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmluZGV4IGU3NzFiYTI4YjNlNGFhZGVkNmY4MDIx
NTY0NjMyMjdhNmZmZTEyODEuLmFkNmY3OWEwODQ1NTY4OGE3YjNkNDJhMDY5NDAwNmI3N2NkYTMz
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTM3
LDcgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhSVEZQYW5uZXIoKTsKIAogICAgIC8v
IFBhbm5lcgotICAgIHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSBlbGV2
YXRpb24sIEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHBhbihkb3VibGUgYXppbXV0aCwgZG91
YmxlIGVsZXZhdGlvbiwgY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0
QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsK
IAogICAgIHNpemVfdCBmZnRTaXplKCkgeyByZXR1cm4gZmZ0U2l6ZUZvclNhbXBsZVJhdGUobV9z
YW1wbGVSYXRlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggZGI1MWU5MGVkZWE3Mzk4YWIyNDE2NTM0
NzUxODY4YzBlNTdmZWQ5Yy4uZjZjMDdlN2MxNzgwZmU3NDMwY2FjNzg2YjY1OTdjNTg0NzA3ODEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
Q29weSB0aGUgY2hhbm5lbCBkYXRhIGZyb20gd2hhdCB3ZSByZWNlaXZlZCBmcm9tIG1fbXVsdGlD
aGFubmVsUHJvdmlkZXIuCiAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRDaGFubmVsIDw9IG1fbnVt
YmVyT2ZDaGFubmVscyk7CiAgICAgICAgIGlmIChtX2N1cnJlbnRDaGFubmVsIDwgbV9udW1iZXJP
ZkNoYW5uZWxzKSB7Ci0gICAgICAgICAgICBtZW1jcHkoYnVzLT5jaGFubmVsKDApLT5kYXRhKCks
IG1fbXVsdGlDaGFubmVsQnVzLT5jaGFubmVsKG1fY3VycmVudENoYW5uZWwpLT5kYXRhKCksIHNp
emVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICAgICAgbWVtY3B5KGJ1cy0+
Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKSwgbV9tdWx0aUNoYW5uZWxCdXMtPmNoYW5uZWwobV9j
dXJyZW50Q2hhbm5lbCktPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7
CiAgICAgICAgICAgICArK21fY3VycmVudENoYW5uZWw7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MTMsNyArMTEzLDcgQEAgdm9pZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9T
b3VyY2VQcm92aWRlciogcHJvdmlkZXIsIEF1ZGlvQnVzKiBkZXMKICAgICAgICAgLy8gSG93ZXZl
ciwgaWYgaXQgY2FsbHMgcHJvdmlkZUlucHV0KCkgZm9yIHRoZSBmaXJzdCBjaGFubmVsLCB0aGVu
IGl0IHdpbGwgY2FsbCBpdCBmb3IgdGhlIHJlbWFpbmluZwogICAgICAgICAvLyBjaGFubmVscywg
c2luY2UgdGhleSBhbGwgYnVmZmVyIGluIHRoZSBzYW1lIHdheSBhbmQgYXJlIHByb2Nlc3Npbmcg
dGhlIHNhbWUgbnVtYmVyIG9mIGZyYW1lcy4KICAgICAgICAgbV9rZXJuZWxzW2NoYW5uZWxJbmRl
eF0tPnByb2Nlc3MoJmNoYW5uZWxQcm92aWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdGluYXRpb24tPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi0+
Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmgKaW5kZXggNGI3MjgzMjdkMjlhZThiM2MzZDgz
OWY1ZDlmMGUxYWY3NmRiNGQ2Ni4uZDhiOGRkMGYxYWQ0ZjhlNjI5MGNkMDZlZGI5NjBkM2E3OTVj
MDUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogCiAgICAgUGFubmluZ01vZGVsIHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFubmluZ01vZGVsOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBh
emltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBv
dXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBjb25zdCBBdWRpb0J1cyogaW5w
dXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYi5jcHAKaW5kZXggMzQxNjI2ZmQ4Y2ExOGI3NzNkYThjYWQ1Mjg3MmQwYjcz
M2EwZTJlOC4uMTIyZTIxYjY4OTVlMGI0NzUyNGRkYTNmOTdmN2IxYmE4ZmE4YmRjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAg
dm9pZCBSZXZlcmI6OmluaXRpYWxpemUoQXVkaW9CdXMqIGltcHVsc2VSZXNwb25zZUJ1ZmZlciwg
c2l6ZV90IHJlbmRlclNsaWNlU2l6ZSwKICAgICAgICAgbV90ZW1wQnVmZmVyID0gYWRvcHRQdHIo
bmV3IEF1ZGlvQnVzKDIsIE1heEZyYW1lU2l6ZSkpOwogfQogCi12b2lkIFJldmVyYjo6cHJvY2Vz
cyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCit2b2lkIFJldmVyYjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291
cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
CiB7CiAgICAgLy8gRG8gYSBmYWlybHkgY29tcHJlaGVuc2l2ZSBzYW5pdHkgY2hlY2suCiAgICAg
Ly8gSWYgdGhlc2UgY29uZGl0aW9ucyBhcmUgc2F0aXNmaWVkLCBhbGwgb2YgdGhlIHNvdXJjZSBh
bmQgZGVzdGluYXRpb24gcG9pbnRlcnMgd2lsbCBiZSB2YWxpZCBmb3IgdGhlIHZhcmlvdXMgbWF0
cml4aW5nIGNhc2VzLgpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgUmV2ZXJiOjpwcm9jZXNzKEF1
ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgc2l6ZV90IGZyYW1l
CiAgICAgfQogCiAgICAgQXVkaW9DaGFubmVsKiBkZXN0aW5hdGlvbkNoYW5uZWxMID0gZGVzdGlu
YXRpb25CdXMtPmNoYW5uZWwoMCk7Ci0gICAgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsTCA9
IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKTsKKyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNo
YW5uZWxMID0gc291cmNlQnVzLT5jaGFubmVsKDApOwogCiAgICAgLy8gSGFuZGxlIGlucHV0IC0+
IG91dHB1dCBtYXRyaXhpbmcuLi4KICAgICBzaXplX3QgbnVtSW5wdXRDaGFubmVscyA9IHNvdXJj
ZUJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUmV2ZXJi
Ojpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywg
c2l6ZV90IGZyYW1lCiAKICAgICBpZiAobnVtSW5wdXRDaGFubmVscyA9PSAyICYmIG51bVJldmVy
YkNoYW5uZWxzID09IDIgJiYgbnVtT3V0cHV0Q2hhbm5lbHMgPT0gMikgewogICAgICAgICAvLyAy
IC0+IDIgLT4gMgotICAgICAgICBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWxSID0gc291cmNl
QnVzLT5jaGFubmVsKDEpOworICAgICAgICBjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5u
ZWxSID0gc291cmNlQnVzLT5jaGFubmVsKDEpOwogICAgICAgICBBdWRpb0NoYW5uZWwqIGRlc3Rp
bmF0aW9uQ2hhbm5lbFIgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgxKTsKICAgICAgICAgbV9j
b252b2x2ZXJzWzBdLT5wcm9jZXNzKHNvdXJjZUNoYW5uZWxMLCBkZXN0aW5hdGlvbkNoYW5uZWxM
LCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgICAgICBtX2NvbnZvbHZlcnNbMV0tPnByb2Nlc3Moc291
cmNlQ2hhbm5lbFIsIGRlc3RpbmF0aW9uQ2hhbm5lbFIsIGZyYW1lc1RvUHJvY2Vzcyk7CkBAIC0x
NzcsMTMgKzE3NywxMyBAQCB2b2lkIFJldmVyYjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVz
LCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZQogICAgICAgICBBU1NFUlQo
aXNDb3B5U2FmZSk7CiAgICAgICAgIGlmICghaXNDb3B5U2FmZSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uQ2hhbm5lbFItPmRhdGEoKSwgZGVzdGluYXRp
b25DaGFubmVsTC0+ZGF0YSgpLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKKyAg
ICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uQ2hhbm5lbFItPm11dGFibGVEYXRhKCksIGRlc3RpbmF0
aW9uQ2hhbm5lbEwtPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CiAg
ICAgfSBlbHNlIGlmIChudW1JbnB1dENoYW5uZWxzID09IDEgJiYgbnVtUmV2ZXJiQ2hhbm5lbHMg
PT0gMSAmJiBudW1PdXRwdXRDaGFubmVscyA9PSAxKSB7CiAgICAgICAgIC8vIDEgLT4gMSAtPiAx
CiAgICAgICAgIG1fY29udm9sdmVyc1swXS0+cHJvY2Vzcyhzb3VyY2VDaGFubmVsTCwgZGVzdGlu
YXRpb25DaGFubmVsTCwgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB9IGVsc2UgaWYgKG51bUlucHV0
Q2hhbm5lbHMgPT0gMiAmJiBudW1SZXZlcmJDaGFubmVscyA9PSA0ICYmIG51bU91dHB1dENoYW5u
ZWxzID09IDIpIHsKICAgICAgICAgLy8gMiAtPiA0IC0+IDIgKCJUcnVlIiBzdGVyZW8pCi0gICAg
ICAgIEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbFIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSk7
CisgICAgICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbFIgPSBzb3VyY2VCdXMt
PmNoYW5uZWwoMSk7CiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsUiA9
IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDEpOwogCiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogdGVt
cENoYW5uZWxMID0gbV90ZW1wQnVmZmVyLT5jaGFubmVsKDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmIuaAppbmRleCBmMTYyZTBiNzA5ZTliZjY4NTBhOTAxMzE5YzJjYjlkNGJk
NGVhMjkyLi43NzllN2JiYTQ5MzQ0YzgyZTQ1N2M3MjNlNmQwYTYxODg4MWRkZWM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgLy8gcmVuZGVyU2xpY2VTaXplIGlzIGEgcmVuZGVyaW5nIGhpbnQsIHNvIHRoZSBGRlRz
IGNhbiBiZSBvcHRpbWl6ZWQgdG8gbm90IGFsbCBvY2N1ciBhdCB0aGUgc2FtZSB0aW1lICh2ZXJ5
IGJhZCB3aGVuIHJlbmRlcmluZyBvbiBhIHJlYWwtdGltZSB0aHJlYWQpLgogICAgIFJldmVyYihB
dWRpb0J1cyogaW1wdWxzZVJlc3BvbnNlQnVmZmVyLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLCBz
aXplX3QgbWF4RkZUU2l6ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgdXNlQmFja2dy
b3VuZFRocmVhZHMsIGJvb2wgbm9ybWFsaXplKTsKIAotICAgIHZvaWQgcHJvY2VzcyhBdWRpb0J1
cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBBdWRp
b0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIHZvaWQg
cmVzZXQoKTsKIAogICAgIHVuc2lnbmVkIGltcHVsc2VSZXNwb25zZUxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wdWxzZVJlc3BvbnNlTGVuZ3RoOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCBiYmI1NTA4N2YwZDEwYjE1
MGI5Mzc5NmY0YWJmNThhZDgyYzgyZWYzLi5jNjExNDE0Y2JjMTZkYzE2ZDdkMWVjYTM1MWM1N2I1
OTQ1ZWMwZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJD
b252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkK
ICAgICAvLyBPdGhlcndpc2UsIGFzc3VtZSB3ZSdyZSBiZWluZyBydW4gZnJvbSBhIGNvbW1hbmQt
bGluZSB0b29sLgogICAgIGJvb2wgaGFzUmVhbHRpbWVDb25zdHJhaW50ID0gdXNlQmFja2dyb3Vu
ZFRocmVhZHM7CiAKLSAgICBmbG9hdCogcmVzcG9uc2UgPSBpbXB1bHNlUmVzcG9uc2UtPmRhdGEo
KTsKKyAgICBjb25zdCBmbG9hdCogcmVzcG9uc2UgPSBpbXB1bHNlUmVzcG9uc2UtPmRhdGEoKTsK
ICAgICBzaXplX3QgdG90YWxSZXNwb25zZUxlbmd0aCA9IGltcHVsc2VSZXNwb25zZS0+bGVuZ3Ro
KCk7CiAKICAgICAvLyBCZWNhdXNlIHdlJ3JlIG5vdCB1c2luZyBkaXJlY3QtY29udm9sdXRpb24g
aW4gdGhlIGxlYWRpbmcgcG9ydGlvbiwgdGhlIHJldmVyYiBoYXMgYW4gb3ZlcmFsbCBsYXRlbmN5
IG9mIGhhbGYgdGhlIGZpcnN0LXN0YWdlIEZGVCBzaXplCkBAIC0xNzUsMTUgKzE3NSwxNSBAQCB2
b2lkIFJldmVyYkNvbnZvbHZlcjo6YmFja2dyb3VuZFRocmVhZEVudHJ5KCkKICAgICB9CiB9CiAK
LXZvaWQgUmV2ZXJiQ29udm9sdmVyOjpwcm9jZXNzKEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5l
bCwgQXVkaW9DaGFubmVsKiBkZXN0aW5hdGlvbkNoYW5uZWwsIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpCit2b2lkIFJldmVyYkNvbnZvbHZlcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0NoYW5uZWwqIHNv
dXJjZUNoYW5uZWwsIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQogewogICAgIGJvb2wgaXNTYWZlID0gc291cmNlQ2hhbm5lbCAmJiBkZXN0
aW5hdGlvbkNoYW5uZWwgJiYgc291cmNlQ2hhbm5lbC0+bGVuZ3RoKCkgPj0gZnJhbWVzVG9Qcm9j
ZXNzICYmIGRlc3RpbmF0aW9uQ2hhbm5lbC0+bGVuZ3RoKCkgPj0gZnJhbWVzVG9Qcm9jZXNzOwog
ICAgIEFTU0VSVChpc1NhZmUpOwogICAgIGlmICghaXNTYWZlKQogICAgICAgICByZXR1cm47CiAg
ICAgICAgIAotICAgIGZsb2F0KiBzb3VyY2UgPSBzb3VyY2VDaGFubmVsLT5kYXRhKCk7Ci0gICAg
ZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25DaGFubmVsLT5kYXRhKCk7CisgICAgY29u
c3QgZmxvYXQqIHNvdXJjZSA9IHNvdXJjZUNoYW5uZWwtPmRhdGEoKTsKKyAgICBmbG9hdCogZGVz
dGluYXRpb24gPSBkZXN0aW5hdGlvbkNoYW5uZWwtPm11dGFibGVEYXRhKCk7CiAgICAgYm9vbCBp
c0RhdGFTYWZlID0gc291cmNlICYmIGRlc3RpbmF0aW9uOwogICAgIEFTU0VSVChpc0RhdGFTYWZl
KTsKICAgICBpZiAoIWlzRGF0YVNhZmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5oCmluZGV4IDAxM2I2ODQ5NzFmODkwOWQzYzVmZmZkZWJjZDVm
NGI5NThmOGMzMTIuLjM3MGI4NzIwNjQ4MjllMWNjZTI5YjZlZDI1NzEyNmM5MGY1NjhiZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVs
KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGljZVNpemUsIHNpemVfdCBtYXhGRlRT
aXplLCBzaXplX3QgY29udm9sdmVyUmVuZGVyUGhhc2UsIGJvb2wgdXNlQmFja2dyb3VuZFRocmVh
ZHMpOwogICAgIH5SZXZlcmJDb252b2x2ZXIoKTsKIAotICAgIHZvaWQgcHJvY2VzcyhBdWRpb0No
YW5uZWwqIHNvdXJjZUNoYW5uZWwsIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9DaGFu
bmVsKiBzb3VyY2VDaGFubmVsLCBBdWRpb0NoYW5uZWwqIGRlc3RpbmF0aW9uQ2hhbm5lbCwgc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgc2l6ZV90IGlt
cHVsc2VSZXNwb25zZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wdWxzZVJlc3BvbnNlTGVu
Z3RoOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXJTdGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXJTdGFnZS5jcHAKaW5kZXggZjIwN2QxOWRlYjBjNDhiYmZlZjZiOGFkNWJhYjg1Mjg5
ZTg3MjUxMC4uNTNiYjY1MDA4MzEwNjQ3MTkxZTAwYTlkYjk1OWEwM2RhOWZmZWEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0
YWdlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBWZWN0b3JNYXRoOwogCi1SZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9s
dmVyU3RhZ2UoZmxvYXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoLCBz
aXplX3QgcmV2ZXJiVG90YWxMYXRlbmN5LCBzaXplX3Qgc3RhZ2VPZmZzZXQsIHNpemVfdCBzdGFn
ZUxlbmd0aCwKK1JldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZShjb25z
dCBmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVzcG9uc2VMZW5ndGgsIHNpemVfdCBy
ZXZlcmJUb3RhbExhdGVuY3ksIHNpemVfdCBzdGFnZU9mZnNldCwgc2l6ZV90IHN0YWdlTGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBmZnRT
aXplLCBzaXplX3QgcmVuZGVyUGhhc2UsIHNpemVfdCByZW5kZXJTbGljZVNpemUsIFJldmVyYkFj
Y3VtdWxhdGlvbkJ1ZmZlciogYWNjdW11bGF0aW9uQnVmZmVyKQogICAgIDogbV9mZnRLZXJuZWwo
ZmZ0U2l6ZSkKICAgICAsIG1fYWNjdW11bGF0aW9uQnVmZmVyKGFjY3VtdWxhdGlvbkJ1ZmZlcikK
QEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6cHJvY2Vzc0luQmFj
a2dyb3VuZChSZXZlcmJDb252b2x2ZXIqIGNvbnZvbHZlciwgc2l6ZV8KICAgICBwcm9jZXNzKHNv
dXJjZSwgZnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAotdm9pZCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6
cHJvY2VzcyhmbG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBSZXZl
cmJDb252b2x2ZXJTdGFnZTo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQogewogICAgIEFTU0VSVChzb3VyY2UpOwogICAgIGlmICghc291cmNlKQpA
QCAtOTYsNyArOTYsOCBAQCB2b2lkIFJldmVyYkNvbnZvbHZlclN0YWdlOjpwcm9jZXNzKGZsb2F0
KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgCiAgICAgLy8gRGVhbCB3aXRo
IHByZS1kZWxheSBzdHJlYW0gOiBub3RlIHNwZWNpYWwgaGFuZGxpbmcgb2YgemVybyBkZWxheS4K
IAotICAgIGZsb2F0KiBwcmVEZWxheWVkU291cmNlOworICAgIGNvbnN0IGZsb2F0KiBwcmVEZWxh
eWVkU291cmNlOworICAgIGZsb2F0KiBwcmVEZWxheWVkRGVzdGluYXRpb247CiAgICAgZmxvYXQq
IHRlbXBvcmFyeUJ1ZmZlcjsKICAgICBib29sIGlzVGVtcG9yYXJ5QnVmZmVyU2FmZSA9IGZhbHNl
OwogICAgIGlmIChtX3ByZURlbGF5TGVuZ3RoID4gMCkgewpAQCAtMTA4LDEwICsxMDksMTIgQEAg
dm9pZCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6cHJvY2VzcyhmbG9hdCogc291cmNlLCBzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKQogCiAgICAgICAgIGlzVGVtcG9yYXJ5QnVmZmVyU2FmZSA9IGZyYW1l
c1RvUHJvY2VzcyA8PSBtX3RlbXBvcmFyeUJ1ZmZlci5zaXplKCk7CiAKLSAgICAgICAgcHJlRGVs
YXllZFNvdXJjZSA9IG1fcHJlRGVsYXlCdWZmZXIuZGF0YSgpICsgbV9wcmVSZWFkV3JpdGVJbmRl
eDsKKyAgICAgICAgcHJlRGVsYXllZERlc3RpbmF0aW9uID0gbV9wcmVEZWxheUJ1ZmZlci5kYXRh
KCkgKyBtX3ByZVJlYWRXcml0ZUluZGV4OworICAgICAgICBwcmVEZWxheWVkU291cmNlID0gcHJl
RGVsYXllZERlc3RpbmF0aW9uOwogICAgICAgICB0ZW1wb3JhcnlCdWZmZXIgPSBtX3RlbXBvcmFy
eUJ1ZmZlci5kYXRhKCk7ICAgICAgICAKICAgICB9IGVsc2UgewogICAgICAgICAvLyBaZXJvIGRl
bGF5CisgICAgICAgIHByZURlbGF5ZWREZXN0aW5hdGlvbiA9IDA7CiAgICAgICAgIHByZURlbGF5
ZWRTb3VyY2UgPSBzb3VyY2U7CiAgICAgICAgIHRlbXBvcmFyeUJ1ZmZlciA9IG1fcHJlRGVsYXlC
dWZmZXIuZGF0YSgpOwogICAgICAgICAKQEAgLTEzOCw3ICsxNDEsNyBAQCB2b2lkIFJldmVyYkNv
bnZvbHZlclN0YWdlOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpCiAKICAgICAvLyBGaW5hbGx5IGNvcHkgaW5wdXQgdG8gcHJlLWRlbGF5LgogICAgIGlmICht
X3ByZURlbGF5TGVuZ3RoID4gMCkgewotICAgICAgICBtZW1jcHkocHJlRGVsYXllZFNvdXJjZSwg
c291cmNlLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgbWVtY3B5
KHByZURlbGF5ZWREZXN0aW5hdGlvbiwgc291cmNlLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Q
cm9jZXNzKTsKICAgICAgICAgbV9wcmVSZWFkV3JpdGVJbmRleCArPSBmcmFtZXNUb1Byb2Nlc3M7
CiAKICAgICAgICAgQVNTRVJUKG1fcHJlUmVhZFdyaXRlSW5kZXggPD0gbV9wcmVEZWxheUxlbmd0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXJTdGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyU3RhZ2UuaAppbmRleCBmYzA1YTBlMDhmYTMzYjAyNjhlY2RkMzU0NzhhYWZhOTk5M2FlZTM0
Li45ODExYmM2MDMyMTY3NjQ2MDBjOWNiMTcyNTE3ZGVmMTU4YTM2ZGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKQEAg
LTQ1LDExICs0NSwxMSBAQCBjbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSB7CiBwdWJsaWM6CiAg
ICAgLy8gcmVuZGVyUGhhc2UgaXMgdXNlZnVsIHRvIGtub3cgc28gdGhhdCB3ZSBjYW4gbWFuaXB1
bGF0ZSB0aGUgcHJlIHZlcnN1cyBwb3N0IGRlbGF5IHNvIHRoYXQgc3RhZ2VzIHdpbGwgcGVyZm9y
bQogICAgIC8vIHRoZWlyIGhlYXZ5IHdvcmsgKEZGVCBwcm9jZXNzaW5nKSBvbiBkaWZmZXJlbnQg
c2xpY2VzIHRvIGJhbGFuY2UgdGhlIGxvYWQgaW4gYSByZWFsLXRpbWUgdGhyZWFkLgotICAgIFJl
dmVyYkNvbnZvbHZlclN0YWdlKGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZXNwb25z
ZUxlbmd0aCwgc2l6ZV90IHJldmVyYlRvdGFsTGF0ZW5jeSwgc2l6ZV90IHN0YWdlT2Zmc2V0LCBz
aXplX3Qgc3RhZ2VMZW5ndGgsCisgICAgUmV2ZXJiQ29udm9sdmVyU3RhZ2UoY29uc3QgZmxvYXQq
IGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoLCBzaXplX3QgcmV2ZXJiVG90
YWxMYXRlbmN5LCBzaXplX3Qgc3RhZ2VPZmZzZXQsIHNpemVfdCBzdGFnZUxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgZmZ0U2l6ZSwgc2l6ZV90IHJlbmRlclBoYXNlLCBz
aXplX3QgcmVuZGVyU2xpY2VTaXplLCBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIqIGFjY3VtdWxh
dGlvbkJ1ZmZlcik7CiAKICAgICAvLyBXQVJOSU5HOiBmcmFtZXNUb1Byb2Nlc3MgbXVzdCBiZSBz
dWNoIHRoYXQgaXQgZXZlbmx5IGRpdmlkZXMgdGhlIGRlbGF5IGJ1ZmZlciBzaXplIChzdGFnZV9v
ZmZzZXQpLgotICAgIHZvaWQgcHJvY2VzcyhmbG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKTsKKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcyk7CiAKICAgICB2b2lkIHByb2Nlc3NJbkJhY2tncm91bmQoUmV2ZXJiQ29u
dm9sdmVyKiBjb252b2x2ZXIsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAKaW5kZXgg
ZjI3MGY2ZmFhNGM3NGZhZjUxOWIzMjdhMzcyY2VjODlhNTEwY2RlNy4uMWJlOWFmODg0ZTQyNWU0
ZDBlMzhiMzgwYzZhY2E0MDAyZjVhNzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZXZl
cmJJbnB1dEJ1ZmZlcjo6UmV2ZXJiSW5wdXRCdWZmZXIoc2l6ZV90IGxlbmd0aCkKIHsKIH0KIAot
dm9pZCBSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGUoZmxvYXQqIHNvdXJjZVAsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcykKK3ZvaWQgUmV2ZXJiSW5wdXRCdWZmZXI6OndyaXRlKGNvbnN0IGZsb2F0KiBz
b3VyY2VQLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0
aCA9IG1fYnVmZmVyLnNpemUoKTsKICAgICBib29sIGlzQ29weVNhZmUgPSBtX3dyaXRlSW5kZXgg
KyBudW1iZXJPZkZyYW1lcyA8PSBidWZmZXJMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAppbmRleCAxNWEyODE4MjRkMzZiZGU2
OGQ3OWE1ZTEwYjM1NzkyNTE2NTE4OTY5Li41MDM2NTc1Yjk4NjFiZDhjZDRlMGExYTExNWY1MDI2
YWU1NzQ4OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJJbnB1dEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YklucHV0QnVmZmVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIC8vIFRoZSByZWFs
dGltZSBhdWRpbyB0aHJlYWQga2VlcHMgd3JpdGluZyBzYW1wbGVzIGhlcmUuCiAgICAgLy8gVGhl
IGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgYnVmZmVyJ3MgbGVuZ3RoIGlzIGV2ZW5seSBkaXZpc2li
bGUgYnkgbnVtYmVyT2ZGcmFtZXMgKGZvciBuZWFybHkgYWxsIGNhc2VzIHRoaXMgd2lsbCBiZSBm
aW5lKS4KICAgICAvLyBGSVhNRTogcmVtb3ZlIG51bWJlck9mRnJhbWVzIHJlc3RyaWN0aW9uLi4u
Ci0gICAgdm9pZCB3cml0ZShmbG9hdCogc291cmNlUCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsK
KyAgICB2b2lkIHdyaXRlKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpOwogCiAgICAgLy8gQmFja2dyb3VuZCB0aHJlYWRzIGNhbiBjYWxsIHRoaXMgdG8gY2hlY2sg
aWYgdGhlcmUncyBhbnl0aGluZyB0byByZWFkLi4uCiAgICAgc2l6ZV90IHdyaXRlSW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX3dyaXRlSW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKaW5kZXggMGU0Yjg0OTg1MDFlNGIzOTZmMDQyYjA0
YWQ0Y2ZmZDVjYzJkM2Q2Mi4uNGFkZWIyN2E5ZThhMmU4MjFjNDVhOGMzYjBjOTdlN2I5M2YzZjNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OmluaXRpYWxpemVLZXJu
ZWwoKQogICAgIH0KIH0KIAotdm9pZCBTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0
KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKQordm9pZCBTaW5jUmVzYW1w
bGVyOjpjb25zdW1lU291cmNlKGNvbnN0IGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9m
U291cmNlRnJhbWVzKQogewogICAgIEFTU0VSVChtX3NvdXJjZVByb3ZpZGVyKTsKICAgICBpZiAo
IW1fc291cmNlUHJvdmlkZXIpCkBAIC0xMzUsNyArMTM1LDkgQEAgdm9pZCBTaW5jUmVzYW1wbGVy
Ojpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJh
bWVzKQogICAgIAogICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1ZmZlciBieSBhbiBBdWRpb0J1
cyBmb3IgdXNlIGJ5IHRoZSBzb3VyY2UgcHJvdmlkZXIuCiAgICAgQXVkaW9CdXMgYnVzKDEsIG51
bWJlck9mU291cmNlRnJhbWVzLCBmYWxzZSk7Ci0gICAgYnVzLnNldENoYW5uZWxNZW1vcnkoMCwg
YnVmZmVyLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CisKKyAgICAvLyBGSVhNRTogZmluZCBhIHdh
eSB0byBtYWtlIHRoZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKKyAgICBidXMuc2V0Q2hhbm5l
bE1lbW9yeSgwLCBjb25zdF9jYXN0PGZsb2F0Kj4oYnVmZmVyKSwgbnVtYmVyT2ZTb3VyY2VGcmFt
ZXMpOwogICAgIAogICAgIG1fc291cmNlUHJvdmlkZXItPnByb3ZpZGVJbnB1dCgmYnVzLCBudW1i
ZXJPZlNvdXJjZUZyYW1lcyk7CiB9CkBAIC0xNDYsNyArMTQ4LDcgQEAgbmFtZXNwYWNlIHsKIAog
Y2xhc3MgQnVmZmVyU291cmNlUHJvdmlkZXIgOiBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7
CiBwdWJsaWM6Ci0gICAgQnVmZmVyU291cmNlUHJvdmlkZXIoZmxvYXQqIHNvdXJjZSwgc2l6ZV90
IG51bWJlck9mU291cmNlRnJhbWVzKQorICAgIEJ1ZmZlclNvdXJjZVByb3ZpZGVyKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIHNpemVfdCBudW1iZXJPZlNvdXJjZUZyYW1lcykKICAgICAgICAgOiBtX3Nv
dXJjZShzb3VyY2UpCiAgICAgICAgICwgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGUobnVtYmVyT2ZT
b3VyY2VGcmFtZXMpCiAgICAgewpAQCAtMTU5LDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKCFtX3NvdXJjZSB8fCAhYnVzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
Ci0gICAgICAgIGZsb2F0KiBidWZmZXIgPSBidXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICAg
ICAgZmxvYXQqIGJ1ZmZlciA9IGJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKIAogICAg
ICAgICAvLyBDbGFtcCB0byBudW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZSBhbmQgemVyby1wYWQu
CiAgICAgICAgIHNpemVfdCBmcmFtZXNUb0NvcHkgPSBtaW4obV9zb3VyY2VGcmFtZXNBdmFpbGFi
bGUsIGZyYW1lc1RvUHJvY2Vzcyk7CkBAIC0xNzQsMTMgKzE3NiwxMyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogcHJpdmF0ZToKLSAgICBmbG9hdCogbV9zb3VyY2U7CisgICAgY29uc3QgZmxvYXQq
IG1fc291cmNlOwogICAgIHNpemVfdCBtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlCiAKLXZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhmbG9hdCogc291cmNl
LCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKQordm9p
ZCBTaW5jUmVzYW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCiB7CiAgICAgLy8gUmVzYW1w
bGUgYW4gaW4tbWVtb3J5IGJ1ZmZlciB1c2luZyBhbiBBdWRpb1NvdXJjZVByb3ZpZGVyLgogICAg
IEJ1ZmZlclNvdXJjZVByb3ZpZGVyIHNvdXJjZVByb3ZpZGVyKHNvdXJjZSwgbnVtYmVyT2ZTb3Vy
Y2VGcmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5oCmluZGV4IGJiZTBjNTU4YzNjY2MyMWUwN2E5YmJmMzNmNzUwMjY0MjM3MmJmZjMuLjllOTc3
OGM0NjQxZmY5NTQ2YmZjMTQwZTE3NTAxZjRiZjkxMGU1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBwdWJs
aWM6CiAgICAgU2luY1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIGtlcm5l
bFNpemUgPSAzMiwgdW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZzZXRzID0gMzIpOwogICAgIAog
ICAgIC8vIFByb2Nlc3NlcyBudW1iZXJPZlNvdXJjZUZyYW1lcyBmcm9tIHNvdXJjZSB0byBwcm9k
dWNlIG51bWJlck9mU291cmNlRnJhbWVzIC8gc2NhbGVGYWN0b3IgZnJhbWVzIGluIGRlc3RpbmF0
aW9uLgotICAgIHZvaWQgcHJvY2VzcyhmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKTsKKyAgICB2b2lkIHByb2Nlc3MoY29uc3Qg
ZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJj
ZUZyYW1lcyk7CiAKICAgICAvLyBQcm9jZXNzIHdpdGggaW5wdXQgc291cmNlIGNhbGxiYWNrIGZ1
bmN0aW9uIGZvciBzdHJlYW1pbmcgYXBwbGljYXRpb25zLgogICAgIHZvaWQgcHJvY2VzcyhBdWRp
b1NvdXJjZVByb3ZpZGVyKiwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKTsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZUtlcm5lbCgpOwotICAgIHZv
aWQgY29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZy
YW1lcyk7CisgICAgdm9pZCBjb25zdW1lU291cmNlKGNvbnN0IGZsb2F0KiBidWZmZXIsIHVuc2ln
bmVkIG51bWJlck9mU291cmNlRnJhbWVzKTsKICAgICAKICAgICBkb3VibGUgbV9zY2FsZUZhY3Rv
cjsKICAgICB1bnNpZ25lZCBtX2tlcm5lbFNpemU7CkBAIC03MSw3ICs3MSw3IEBAIHByb3RlY3Rl
ZDoKICAgICAvLyBTb3VyY2UgaXMgY29waWVkIGludG8gdGhpcyBidWZmZXIgZm9yIGVhY2ggcHJv
Y2Vzc2luZyBwYXNzLgogICAgIEF1ZGlvRmxvYXRBcnJheSBtX2lucHV0QnVmZmVyOwogCi0gICAg
ZmxvYXQqIG1fc291cmNlOworICAgIGNvbnN0IGZsb2F0KiBtX3NvdXJjZTsKICAgICB1bnNpZ25l
ZCBtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZTsKICAgICAKICAgICAvLyBtX3NvdXJjZVByb3ZpZGVy
IGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgYXVkaW8gaW5wdXQgc3RyZWFtIHRvIHRoZSByZXNhbXBs
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAKaW5kZXggMmZh
NDQwMDNhN2E1MTAwZGU5MWI3NTBmNjFmMTcxNTU0NzUyZDM4YS4uOWU2ZjFiNjM1NmU5Yjc4NWRm
NDAwZTQ0MTU2NzY0OTVlNTI3MTM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vWmVyb1BvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1plcm9Qb2xlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXZvaWQgWmVyb1BvbGU6OnByb2Nlc3MoZmxvYXQgKnNvdXJjZSwgZmxvYXQgKmRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpCit2b2lkIFplcm9Qb2xlOjpwcm9jZXNzKGNvbnN0
IGZsb2F0ICpzb3VyY2UsIGZsb2F0ICpkZXN0aW5hdGlvbiwgdW5zaWduZWQgZnJhbWVzVG9Qcm9j
ZXNzKQogewogICAgIGZsb2F0IHplcm8gPSBtX3plcm87CiAgICAgZmxvYXQgcG9sZSA9IG1fcG9s
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCmluZGV4IDkzZmQwZDZm
OTc1MzdhNWYyYTA3NmJhNGY5ZjY2MjI4YTcyMzliYTMuLjRjYjFkMTc0NTYzZjE3NWIyOGNhYWM5
NTVkYTU2MjY4YmRlMWRkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1plcm9Qb2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1Bv
bGUuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
cHJvY2VzcyhmbG9hdCAqc291cmNlLCBmbG9hdCAqZGVzdGluYXRpb24sIHVuc2lnbmVkIGZyYW1l
c1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0ICpzb3VyY2UsIGZsb2F0
ICpkZXN0aW5hdGlvbiwgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIC8vIFJlc2V0
IGZpbHRlciBzdGF0ZS4KICAgICB2b2lkIHJlc2V0KCkgeyBtX2xhc3RYID0gMDsgbV9sYXN0WSA9
IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2ZmbXBlZy9G
RlRGcmFtZUZGTVBFRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZm1wZWcv
RkZURnJhbWVGRk1QRUcuY3BwCmluZGV4IDlmODkzMjQ0NTFkNzRmYmM4N2JiYTdkY2JiODliNGE3
ODQwMTZkNzkuLmQ0NjI0YTcwYjY2MjNiZTE1ZGJiY2U1MzE0NWRlOTk4ZWM4YmU1OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2ZmbXBlZy9GRlRGcmFtZUZGTVBF
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZmZtcGVnL0ZGVEZyYW1l
RkZNUEVHLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRkZURnJhbWU6Om11bHRpcGx5KGNv
bnN0IEZGVEZyYW1lJiBmcmFtZSkKICAgICBWZWN0b3JNYXRoOjp2c211bChpbWFnUDEsIDEsICZz
Y2FsZSwgaW1hZ1AxLCAxLCBoYWxmU2l6ZSk7CiB9CiAKLXZvaWQgRkZURnJhbWU6OmRvRkZUKGZs
b2F0KiBkYXRhKQordm9pZCBGRlRGcmFtZTo6ZG9GRlQoY29uc3QgZmxvYXQqIGRhdGEpCiB7CiAg
ICAgLy8gQ29weSBzaW5jZSBwcm9jZXNzaW5nIGlzIGluLXBsYWNlLgogICAgIGZsb2F0KiBwID0g
bV9jb21wbGV4RGF0YS5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCmluZGV4IDk1NTAyNjM2YjkzYWQz
YmNmODdkNDUwNWFkMDdiYWE3MTBkMTVhNTIuLmQwZWNmMWEzMTMwN2RlYjkxMTQyZWJlM2M1ZWFh
MTI0ZDYzYTMwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgUGFzc093
blB0cjxBdWRpb0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0
ZSwgYm9vbCBtaXhUb01vbm8KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJP
ZkNoYW5uZWxzOyArK2kpIHsKICAgICAgICAgICAgIGJ1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1O
dW1iZXJDaGFubmVscyA9IDE7CiAgICAgICAgICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5t
RGF0YUJ5dGVTaXplID0gbnVtYmVyT2ZGcmFtZXMgKiBzaXplb2YoZmxvYXQpOwotICAgICAgICAg
ICAgYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGEgPSBhdWRpb0J1cy0+Y2hhbm5lbChpKS0+
ZGF0YSgpOworICAgICAgICAgICAgYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGEgPSBhdWRp
b0J1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjI0LDcgKzIyNCw3IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3Jl
YXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vCiAKICAgICBpZiAobWl4VG9N
b25vICYmIG51bWJlck9mQ2hhbm5lbHMgPT0gMikgewogICAgICAgICAvLyBNaXggc3RlcmVvIGRv
d24gdG8gbW9ubwotICAgICAgICBmbG9hdCogZGVzdEwgPSBhdWRpb0J1cy0+Y2hhbm5lbCgwKS0+
ZGF0YSgpOworICAgICAgICBmbG9hdCogZGVzdEwgPSBhdWRpb0J1cy0+Y2hhbm5lbCgwKS0+bXV0
YWJsZURhdGEoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkZyYW1l
czsgaSsrKQogICAgICAgICAgICAgZGVzdExbaV0gPSAwLjVmICogKGJ1ZmZlckxbaV0gKyBidWZm
ZXJSW2ldKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvRkZURnJhbWVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0ZGVEZyYW1lTWFjLmNwcAppbmRleCA2ZGZiYmVjY2IyZGVmOGQ5YmI0ODI0Y2ZhN2VhNWExM2Fm
OTQ1NWU0Li44Y2VmOTI4ZDQ3MjU3YzkxZjVlMjc5ZjllNzBmNTU0YTRlYTliMmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKQEAg
LTEyNyw3ICsxMjcsNyBAQCB2b2lkIEZGVEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYg
ZnJhbWUpCiAgICAgVmVjdG9yTWF0aDo6dnNtdWwoaW1hZ1AxLCAxLCAmc2NhbGUsIGltYWdQMSwg
MSwgaGFsZlNpemUpOwogfQogCi12b2lkIEZGVEZyYW1lOjpkb0ZGVChmbG9hdCogZGF0YSkKK3Zv
aWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKQogewogICAgIHZEU1BfY3Rveigo
RFNQQ29tcGxleCopZGF0YSwgMiwgJm1fZnJhbWUsIDEsIG1fRkZUU2l6ZSAvIDIpOwogICAgIHZE
U1BfZmZ0X3pyaXAobV9GRlRTZXR1cCwgJm1fZnJhbWUsIDEsIG1fbG9nMkZGVFNpemUsIEZGVF9G
T1JXQVJEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21rbC9G
RlRGcmFtZU1LTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ta2wvRkZURnJh
bWVNS0wuY3BwCmluZGV4IDZiZjJjMWUyMDQxMzIxOGUwMDM1YWNmMjQyM2ZmNDkwODE0Yjc4ZjAu
LjBmM2EyODI3ZjU5ODk5YmNmMjI2MjQ2YWZlMmY0ZDNmN2ViMDQzNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21rbC9GRlRGcmFtZU1LTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWtsL0ZGVEZyYW1lTUtMLmNwcApAQCAtMTcwLDcg
KzE3MCw3IEBAIHZvaWQgRkZURnJhbWU6Om11bHRpcGx5KGNvbnN0IEZGVEZyYW1lJiBmcmFtZSkK
ICAgICB9CiB9CiAKLXZvaWQgRkZURnJhbWU6OmRvRkZUKGZsb2F0KiBkYXRhKQordm9pZCBGRlRG
cmFtZTo6ZG9GRlQoY29uc3QgZmxvYXQqIGRhdGEpCiB7CiAgICAgLy8gQ29tcHV0ZSBGb3J3YXJk
IHRyYW5zZm9ybS4KICAgICBNS0xfTE9ORyBzdGF0dXMgPSBEZnRpQ29tcHV0ZUZvcndhcmQobV9o
YW5kbGUsIGRhdGEsIG1fY29tcGxleERhdGEuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDFmZDJmMzg0ODI2ZTdh
Mzg5ZDJmNjIwNGVhNTQyMTZhN2YyZjIxYjEuLmEwY2IxM2EyYmY3NzA5NGZjMDhhNzNjYTJmOTU3
ZTIxODYwZWE2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmIChpc1NhZmUpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgb3V0cHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkKLSAgICAgICAgICAg
ICAgICAgICAgbWVtc2V0KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpICsgemVyb1N0YXJ0
RnJhbWUsIDAsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1plcm8pOworICAgICAgICAgICAgICAg
ICAgICBtZW1zZXQob3V0cHV0QnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpICsgemVyb1N0
YXJ0RnJhbWUsIDAsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1plcm8pOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBtX2lzUGxheWluZyA9IGZhbHNlOwpAQCAtMTk5LDExICsxOTksMTEg
QEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIoQXVkaW9CdXMq
IGJ1cywgdW5zaWduZWQgZGVzdGluYXRpb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0
IHRoZSBkZXN0aW5hdGlvbiBwb2ludGVycy4KLSAgICBmbG9hdCogZGVzdGluYXRpb25MID0gYnVz
LT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGJ1cy0+Y2hh
bm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKICAgICBBU1NFUlQoZGVzdGluYXRpb25MKTsKICAgICBp
ZiAoIWRlc3RpbmF0aW9uTCkKICAgICAgICAgcmV0dXJuOwotICAgIGZsb2F0KiBkZXN0aW5hdGlv
blIgPSAobnVtYmVyT2ZDaGFubmVscyA8IDIpID8gMCA6IGJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgp
OworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSAobnVtYmVyT2ZDaGFubmVscyA8IDIpID8gMCA6
IGJ1cy0+Y2hhbm5lbCgxKS0+bXV0YWJsZURhdGEoKTsKICAgICAKICAgICBib29sIGlzU3RlcmVv
ID0gZGVzdGluYXRpb25SOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5jcHAKaW5kZXggMTIyNDNjMGM5OWJlMWNjNzc1M2VjMmE5Zjc5NTI4MzlmODY5OTYy
NS4uZTFhZWM3NTg4MTU2MjBjOWE2YmIwOGUwYjY3NWY1MTYxMWViZjU3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAg
dm9pZCBCaXF1YWRQcm9jZXNzb3I6OmNoZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQogICAgIH0K
IH0KIAotdm9pZCBCaXF1YWRQcm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVk
aW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBCaXF1YWRQ
cm9jZXNzb3I6OnByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIGlmICghaXNJbml0aWFsaXpl
ZCgpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CkBAIC0xMjUsNyArMTI1LDcgQEAg
dm9pZCBCaXF1YWRQcm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMq
IGRlc3RpbmF0aW9uLCBzaXplX3QgZnIKICAgICAgICAgICAgIAogICAgIC8vIEZvciBlYWNoIGNo
YW5uZWwgb2Ygb3VyIGlucHV0LCBwcm9jZXNzIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIEJpcXVh
ZERTUEtlcm5lbCBpbnRvIHRoZSBvdXRwdXQgY2hhbm5lbC4KICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9rZXJuZWxzLnNpemUoKTsgKytpKQotICAgICAgICBtX2tlcm5lbHNbaV0tPnBy
b2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkp
LT5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vz
cyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEoKSwgZGVzdGluYXRpb24tPmNoYW5uZWwoaSktPm11
dGFibGVEYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKIHZvaWQgQmlxdWFkUHJvY2Vzc29y
OjpzZXRUeXBlKEZpbHRlclR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFk
UHJvY2Vzc29yLmgKaW5kZXggYzdmN2QzMDY4YTNjZjVkZTVjODI0MTMxOTEzYmNmNjQ1OTIzNzk4
Ni4uOTFhMWNjY2QxNzA0OWQxNDg4ODFkMDA0NjM5Njc5MDczYmNkZDdkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2Vy
bmVsKCk7CiAgICAgICAgIAotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3Vy
Y2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAg
dmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRl
c3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIC8vIEdldCB0aGUgbWFn
bml0dWRlIGFuZCBwaGFzZSByZXNwb25zZSBvZiB0aGUgZmlsdGVyIGF0IHRoZSBnaXZlbgogICAg
IC8vIHNldCBvZiBmcmVxdWVuY2llcyAoaW4gSHopLiBUaGUgcGhhc2UgcmVzcG9uc2UgaXMgaW4g
cmFkaWFucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRB
dWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9k
ZS5jcHAKaW5kZXggNDIyMTUwOWNmOTljNjE3NDM1ZWU4MDg2M2RlY2YyOGViZTA3YWE0OC4uYmY4
MzE0NzUzMzE1ZDBiNWNhY2JhYzlkY2M4MTE0NTQ5MTQzODEyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAKQEAgLTE2MSwxMCArMTYxLDEw
IEBAIHZvaWQgSmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQogICAgIGlmICghY2hhbm5lbHNBcmVHb29kKQogICAgICAgICByZXR1cm47CiAKLSAgICBm
bG9hdCogc291cmNlTCA9IGlucHV0QnVzLT5jaGFubmVsKDApLT5kYXRhKCk7Ci0gICAgZmxvYXQq
IHNvdXJjZVIgPSBudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRCdXMtPmNoYW5uZWwo
MSktPmRhdGEoKSA6IDA7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hh
bm5lbCgwKS0+ZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNo
YW5uZWwoMSktPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IGlucHV0QnVzLT5j
aGFubmVsKDApLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBudW1iZXJPZklu
cHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRCdXMtPmNoYW5uZWwoMSktPmRhdGEoKSA6IDA7CisgICAg
ZmxvYXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEo
KTsKKyAgICBmbG9hdCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVzLT5jaGFubmVsKDEpLT5tdXRh
YmxlRGF0YSgpOwogCiAgICAgLy8gQ29weSBmcm9tIHRoZSBpbnB1dCB0byB0aGUgaW5wdXQgYnVm
ZmVyLiAgU2VlICJidWZmZXJzQXJlR29vZCIgY2hlY2sgYWJvdmUgZm9yIHNhZmV0eS4KICAgICBz
aXplX3QgYnl0ZXNUb0NvcHkgPSBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKaW5kZXggYWUxODM1YjlhYWI4NmY0YjEyZTFiNDUyOGVlY2MzMjkwNDE4YzNhYy4u
MTk4YTUwMjBiZTkxZDAwZGIxMGY1YTUwOTMwNzYxMjY4Njk5NmQ3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJl
bmRlcigpCiAgICAgICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGVUb0NvcHkgPSBtaW4oZnJhbWVz
VG9Qcm9jZXNzLCByZW5kZXJRdWFudHVtU2l6ZSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7
ICsrY2hhbm5lbEluZGV4KSB7Ci0gICAgICAgICAgICBmbG9hdCogc291cmNlID0gbV9yZW5kZXJC
dXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOworICAgICAgICAgICAgY29uc3QgZmxv
YXQqIHNvdXJjZSA9IG1fcmVuZGVyQnVzLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsK
ICAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fcmVuZGVyVGFyZ2V0LT5nZXRDaGFu
bmVsRGF0YShjaGFubmVsSW5kZXgpLT5kYXRhKCk7CiAgICAgICAgICAgICBtZW1jcHkoZGVzdGlu
YXRpb24gKyBuLCBzb3VyY2UsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNBdmFpbGFibGVUb0NvcHkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGlt
ZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
Y3BwCmluZGV4IGNjZDg2NTUyMjZkNTE5NDRjNmYwMTVmMTA5NWYxMzUwMTdlY2I3NDMuLmEzZjgw
N2Q4MzdmNzdjNDljY2IwNDE1NTBhNmE5YzkwZDg0YzVlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBS
ZWFsdGltZUFuYWx5c2VyOjp3cml0ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpCiAgICAgCiAgICAgLy8gUGVyZm9ybSByZWFsLXRpbWUgYW5hbHlzaXMKICAgICAv
LyBGSVhNRSA6IGZvciBub3cganVzdCB1c2UgbGVmdCBjaGFubmVsIChtdXN0IG1peCBpZiBzdGVy
ZW8gc291cmNlKQotICAgIGZsb2F0KiBzb3VyY2UgPSBidXMtPmNoYW5uZWwoMCktPmRhdGEoKTsK
KyAgICBjb25zdCBmbG9hdCogc291cmNlID0gYnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CiAKICAg
ICAvLyBUaGUgc291cmNlIGhhcyBhbHJlYWR5IGJlZW4gc2FuaXR5IGNoZWNrZWQgd2l0aCBpc0J1
c0dvb2QgYWJvdmUuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9X
YXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJQcm9jZXNzb3IuY3BwCmluZGV4IGY3NTcxZGViYjcxMmM5NTRkMmFmOWE0OGY2NjQxYTgyMzc2
NjBkNmMuLjRmODNlMTY2OThjZTE0NjQzODA2MGY4OWNjMTVlMzc5MDNhYzg2ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5
KiBjdXJ2ZSkKICAgICBtX2N1cnZlID0gY3VydmU7CiB9CiAKLXZvaWQgV2F2ZVNoYXBlclByb2Nl
c3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCit2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnByb2Nlc3Mo
Y29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQogewogICAgIGlmICghaXNJbml0aWFsaXplZCgpKSB7CiAgICAgICAgIGRl
c3RpbmF0aW9uLT56ZXJvKCk7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2F2ZVNoYXBlclByb2Nl
c3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNp
emVfCiAgICAgaWYgKG1fcHJvY2Vzc0xvY2sudHJ5TG9jaygpKSB7ICAgICAgICAKICAgICAgICAg
Ly8gRm9yIGVhY2ggY2hhbm5lbCBvZiBvdXIgaW5wdXQsIHByb2Nlc3MgdXNpbmcgdGhlIGNvcnJl
c3BvbmRpbmcgV2F2ZVNoYXBlckRTUEtlcm5lbCBpbnRvIHRoZSBvdXRwdXQgY2hhbm5lbC4KICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fa2VybmVscy5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEo
KSwgZGVzdGluYXRpb24tPmNoYW5uZWwoaSktPmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAg
ICAgICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEo
KSwgZGVzdGluYXRpb24tPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCksIGZyYW1lc1RvUHJvY2Vz
cyk7CiAKICAgICAgICAgbV9wcm9jZXNzTG9jay51bmxvY2soKTsKICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCmluZGV4IDQwMTZl
OGJkZWY3MWUxMjEwZGY0MzQ5ODk2OWMzMGJmNTlhY2NhOGUuLjQ3MzVlZmRhMjVmNzIzM2EyYTE3
NDlkM2NhNTQ1MGYyMjQ3OWRjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L1dhdmVTaGFwZXJQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZl
U2hhcGVyUHJvY2Vzc29yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3Qg
QXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKTsKIAogICAgIHZvaWQgc2V0Q3VydmUoRmxvYXQzMkFycmF5Kik7CiAgICAgRmxvYXQz
MkFycmF5KiBjdXJ2ZSgpIHsgcmV0dXJuIG1fY3VydmUuZ2V0KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123035</attachid>
            <date>2012-01-18 16:39:20 -0800</date>
            <delta_ts>2012-01-18 20:45:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76573-20120118163919.patch</filename>
            <type>text/plain</type>
            <size>66962</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYxZWFkZGViM2VjYTVj
MjI2OTRiMDBkZmU4MzRhMmZjNjk5MWViYS4uYjZiOWY2Y2MyMGVjM2UxY2ZlMmVmZmJlMDg1NmUz
NzAwNTQ0MzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMi0wMS0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkF1ZGlvIEFQ
SSBjb25zdC1jb3JyZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHM7IG5vIG5ldCBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgc28g
Y292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGUgbm9uLWNvbnN0IGRhdGEo
KSBhY2Nlc3NvciB3YXMgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIHRvIGV4cG9zZSBjb25zdC1jb3Jy
ZWN0bmVzcworICAgICAgICBidWdzIGR1cmluZyBjb21waWxlIHRpbWU6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5u
ZWw6Om11dGFibGVEYXRhKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJl
IG1hZGUgY29uc3QgY29ycmVjdDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0FycmF5Ojpjb3B5VG9SYW5nZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNy
ZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZUQ29udm9sdmVyOjpwcm9jZXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9QYWRk
ZWRGRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlclN0YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0
YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVz
YW1wbGVyOjpjb25zdW1lU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6
OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpa
ZXJvUG9sZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1czo6Y2hhbm5lbEJ5VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpnYWluKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Byb2Nlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnBy
b2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXF1YWxQb3dlclBhbm5lcjo6cGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6bnVtYmVyT2ZBemltdXRocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjpwcm9jZXNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9s
dmVyOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9ta2wvRkZURnJhbWVNS0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRv
RkZUKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIHRv
IHVzZSB0aGUgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIGFjY2Vzc29yOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpwcm9j
ZXNzV2l0aEdhaW5Gcm9tTW9ub1N0ZXJlbyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6
Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVs
OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNvcHlGcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6Y29weUZyb21SYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnN1bUZyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcjo6cHJvY2Vz
cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
cXVhbFBvd2VyUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJu
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnBh
bik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6cHJvY2Vzcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVy
Yjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0ZGVEZyYW1lTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZG
VCk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1
YWRQcm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2Vz
cyk6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKToK
KyAgICAgICAgKiB3ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lQW5hbHlzZXI6OndyaXRlSW5wdXQpOgorICAgICAgICAqIHdlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nl
c3Nvcjo6cHJvY2Vzcyk6CisKIDIwMTItMDEtMTggIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0
aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiNjc4ZDZjZmM1OTY3NmE5ZmViYmNm
Nzc5NjFjZDZmZGQzMTUxNjZmLi5lOTEyNTc2OGQzNmRlNWRmNmIyMWYyMzFhYmZhMzczMzhjYjQw
ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAx
LTE4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2Vi
QXVkaW8gQVBJIGNvbnN0LWNvcnJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHdlcmUgbW9kaWZpZWQgdG8g
dXNlIHRoZSByZW5hbWVkIG11dGFibGVEYXRhKCkgYWNjZXNzb3I6CisgICAgICAgICogc3JjL0F1
ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ2hyb21pdW06OkZJRk86OmZpbGxCdWZmZXIpOgorCiAyMDEyLTAxLTE4ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgogCiAgICAgICAgIEFjY2Vzc2liaWxpdHk6
IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3Ig
dG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQXJyYXkuaAppbmRleCBhMTRjOTUwZGQ2ZmM3Y2NiZThiMDRiMWU5MjYwZGEyYjEwMjFkYTU4
Li43YTIyNTFiMzhiMmY0MmUwNWM4ZTQwYTEwYmI3MzQyYzRiMmU2NGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVi
bGljOgogICAgICAgICBtZW1zZXQodGhpcy0+ZGF0YSgpICsgc3RhcnQsIDAsIHNpemVvZihUKSAq
IChlbmQgLSBzdGFydCkpOwogICAgIH0KIAotICAgIHZvaWQgY29weVRvUmFuZ2UoVCogc291cmNl
RGF0YSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKKyAgICB2b2lkIGNvcHlUb1Jhbmdl
KGNvbnN0IFQqIHNvdXJjZURhdGEsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAg
ewogICAgICAgICBib29sIGlzU2FmZSA9IChzdGFydCA8PSBlbmQpICYmIChlbmQgPD0gdGhpcy0+
c2l6ZSgpKTsKICAgICAgICAgQVNTRVJUKGlzU2FmZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5jcHAKaW5kZXggMzA0ODliYWE3NTFlMTM0M2Q2NzI5YWY0NjhiNjky
NThjNzBhN2NhYy4uYjgxMDdiOTU3OWI5ODY2YTVmYTFhNzY5MjQzN2U1ZjllNzEzNjc3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtMTMwLDYgKzEz
MCwxMSBAQCBBdWRpb0NoYW5uZWwqIEF1ZGlvQnVzOjpjaGFubmVsQnlUeXBlKHVuc2lnbmVkIGNo
YW5uZWxUeXBlKQogICAgIHJldHVybiAwOwogfQogCitjb25zdCBBdWRpb0NoYW5uZWwqIEF1ZGlv
QnVzOjpjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8QXVkaW9CdXMqPih0aGlzKS0+Y2hhbm5lbEJ5VHlwZSh0eXBlKTsKK30KKwogLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBjaGFubmVsIGNvdW50IGFuZCBmcmFtZS1zaXplIG1hdGNoLgog
Ym9vbCBBdWRpb0J1czo6dG9wb2xvZ3lNYXRjaGVzKGNvbnN0IEF1ZGlvQnVzJiBidXMpIGNvbnN0
CiB7CkBAIC0xNDMsNyArMTQ4LDcgQEAgYm9vbCBBdWRpb0J1czo6dG9wb2xvZ3lNYXRjaGVzKGNv
bnN0IEF1ZGlvQnVzJiBidXMpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NPd25Q
dHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UoQXVkaW9CdXMqIHNv
dXJjZUJ1ZmZlciwgdW5zaWduZWQgc3RhcnRGcmFtZSwgdW5zaWduZWQgZW5kRnJhbWUpCitQYXNz
T3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGNvbnN0IEF1
ZGlvQnVzKiBzb3VyY2VCdWZmZXIsIHVuc2lnbmVkIHN0YXJ0RnJhbWUsIHVuc2lnbmVkIGVuZEZy
YW1lKQogewogICAgIHNpemVfdCBudW1iZXJPZlNvdXJjZUZyYW1lcyA9IHNvdXJjZUJ1ZmZlci0+
bGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyA9IHNvdXJjZUJ1ZmZlci0+
bnVtYmVyT2ZDaGFubmVscygpOwpAQCAtMzQ1LDggKzM1MCw4IEBAIHZvaWQgQXVkaW9CdXM6OnBy
b2Nlc3NXaXRoR2FpbkZyb21Nb25vU3RlcmVvKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZs
b2F0KiBsCiAgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBzb3VyY2VCdXNTYWZlLmNoYW5uZWxC
eVR5cGUoQ2hhbm5lbExlZnQpLT5kYXRhKCk7CiAgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBu
dW1iZXJPZlNvdXJjZUNoYW5uZWxzID4gMSA/IHNvdXJjZUJ1c1NhZmUuY2hhbm5lbEJ5VHlwZShD
aGFubmVsUmlnaHQpLT5kYXRhKCkgOiAwOwogCi0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGNo
YW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9u
UiA9IG51bWJlck9mRGVzdGluYXRpb25DaGFubmVscyA+IDEgPyBjaGFubmVsQnlUeXBlKENoYW5u
ZWxSaWdodCktPmRhdGEoKSA6IDA7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGNoYW5uZWxC
eVR5cGUoQ2hhbm5lbExlZnQpLT5tdXRhYmxlRGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlv
blIgPSBudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMgPiAxID8gY2hhbm5lbEJ5VHlwZShDaGFu
bmVsUmlnaHQpLT5tdXRhYmxlRGF0YSgpIDogMDsKIAogICAgIGNvbnN0IGZsb2F0IERlemlwcGVy
UmF0ZSA9IDAuMDA1ZjsKICAgICBpbnQgZnJhbWVzVG9Qcm9jZXNzID0gbGVuZ3RoKCk7CkBAIC00
MzcsNyArNDQyLDcgQEAgdm9pZCBBdWRpb0J1czo6Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5W
YWx1ZXNGcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGYKICAgICBmb3IgKHVuc2lnbmVk
IGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHMoKTsgKytj
aGFubmVsSW5kZXgpIHsKICAgICAgICAgaWYgKHNvdXJjZUJ1cy5udW1iZXJPZkNoYW5uZWxzKCkg
PT0gbnVtYmVyT2ZDaGFubmVscygpKQogICAgICAgICAgICAgc291cmNlID0gc291cmNlQnVzLmNo
YW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwotICAgICAgICBmbG9hdCogZGVzdGluYXRpb24g
PSBjaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0
aW9uID0gY2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICB2bXVs
KHNvdXJjZSwgMSwgZ2FpblZhbHVlcywgMSwgZGVzdGluYXRpb24sIDEsIG51bWJlck9mR2FpblZh
bHVlcyk7CiAgICAgfQogfQpAQCAtNDUyLDcgKzQ1Nyw3IEBAIHZvaWQgQXVkaW9CdXM6OnN1bVdp
dGhHYWluRnJvbShjb25zdCBBdWRpb0J1cyAmc291cmNlQnVzLCBmbG9hdCogbGFzdE1peEdhaW4s
IGZsCiAgICAgcHJvY2Vzc1dpdGhHYWluRnJvbShzb3VyY2VCdXMsIGxhc3RNaXhHYWluLCB0YXJn
ZXRHYWluLCB0cnVlKTsKIH0KIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0
ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMqIHNvdXJjZUJ1cywgYm9vbCBtaXhUb01v
bm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKQorUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6
OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywg
Ym9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKQogewogICAgIC8vIHNvdXJjZUJ1
cydzIHNhbXBsZS1yYXRlIG11c3QgYmUga25vd24uCiAgICAgQVNTRVJUKHNvdXJjZUJ1cyAmJiBz
b3VyY2VCdXMtPnNhbXBsZVJhdGUoKSk7CkBAIC00NzYsNyArNDgxLDcgQEAgUGFzc093blB0cjxB
dWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMq
IHNvdXJjZUJ1cywKICAgICB9CiAgICAgCiAgICAgLy8gRmlyc3QsIG1peCB0byBtb25vIChpZiBu
ZWNlc3NhcnkpIHRoZW4gc2FtcGxlLXJhdGUgY29udmVydC4KLSAgICBBdWRpb0J1cyogcmVzYW1w
bGVyU291cmNlQnVzOworICAgIGNvbnN0IEF1ZGlvQnVzKiByZXNhbXBsZXJTb3VyY2VCdXM7CiAg
ICAgT3duUHRyPEF1ZGlvQnVzPiBtaXhlZE1vbm9CdXM7CiAgICAgaWYgKG1peFRvTW9ubykgewog
ICAgICAgICBtaXhlZE1vbm9CdXMgPSBBdWRpb0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oc291
cmNlQnVzKTsKQEAgLTQ5Nyw4ICs1MDIsOCBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1
czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhBdWRpb0J1cyogc291cmNlQnVzLAogCiAg
ICAgLy8gU2FtcGxlLXJhdGUgY29udmVydCBlYWNoIGNoYW5uZWwuCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mRGVzdGluYXRpb25DaGFubmVsczsgKytpKSB7Ci0gICAgICAg
IGZsb2F0KiBzb3VyY2UgPSByZXNhbXBsZXJTb3VyY2VCdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsK
LSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoaSkt
PmRhdGEoKTsKKyAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IHJlc2FtcGxlclNvdXJjZUJ1
cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0
aW5hdGlvbkJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKTsKIAogICAgICAgICBTaW5jUmVz
YW1wbGVyIHJlc2FtcGxlcihzYW1wbGVSYXRlUmF0aW8pOwogICAgICAgICByZXNhbXBsZXIucHJv
Y2Vzcyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBzb3VyY2VMZW5ndGgpOwpAQCAtNTA4LDcgKzUxMyw3
IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252
ZXJ0aW5nKEF1ZGlvQnVzKiBzb3VyY2VCdXMsCiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uQnVzLnJl
bGVhc2UoKTsKIH0KIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4
aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3VyY2VCdXMpCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRp
b0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cykKIHsK
ICAgICBzd2l0Y2ggKHNvdXJjZUJ1cy0+bnVtYmVyT2ZDaGFubmVscygpKSB7CiAgICAgY2FzZSAx
OgpAQCAtNTE5LDkgKzUyNCw5IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVh
dGVCeU1peGluZ1RvTW9ubyhBdWRpb0J1cyogc291cmNlQnVzKQogICAgICAgICAgICAgdW5zaWdu
ZWQgbiA9IHNvdXJjZUJ1cy0+bGVuZ3RoKCk7CiAgICAgICAgICAgICBPd25QdHI8QXVkaW9CdXM+
IGRlc3RpbmF0aW9uQnVzKGFkb3B0UHRyKG5ldyBBdWRpb0J1cygxLCBuKSkpOwogCi0gICAgICAg
ICAgICBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOwotICAg
ICAgICAgICAgZmxvYXQqIHNvdXJjZVIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsK
LSAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVs
KDApLT5kYXRhKCk7CisgICAgICAgICAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1
cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIg
PSBzb3VyY2VCdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKKyAgICAgICAgICAgIGZsb2F0KiBkZXN0
aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOwogICAg
ICAgICAKICAgICAgICAgICAgIC8vIERvIHRoZSBtb25vIG1peGRvd24uCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmgKaW5kZXggNjM3MGM4YjUyMzQ2MTQ3Y2E4NzBjMzFlNTNjYzdhY2Q0NTg3
M2JmYy4uYjNkYTBmNDUxZDE4MTQzYTdiMDFmNGNkZDIwOTc3MDBkOGQxNTljMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCkBAIC03MSw2ICs3MSw3IEBAIHB1Ymxp
YzoKICAgICBBdWRpb0NoYW5uZWwqIGNoYW5uZWwodW5zaWduZWQgY2hhbm5lbCkgeyByZXR1cm4g
bV9jaGFubmVsc1tjaGFubmVsXS5nZXQoKTsgfQogICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogY2hh
bm5lbCh1bnNpZ25lZCBjaGFubmVsKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEF1ZGlvQnVz
Kj4odGhpcyktPm1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7IH0KICAgICBBdWRpb0NoYW5uZWwq
IGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlwZSk7CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBj
aGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpIGNvbnN0OwogCiAgICAgLy8gTnVtYmVyIG9mIHNh
bXBsZS1mcmFtZXMKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7
IH0KQEAgLTg3LDI0ICs4OCwyNCBAQCBwdWJsaWM6CiAKICAgICAvLyBDcmVhdGVzIGEgbmV3IGJ1
ZmZlciBmcm9tIGEgcmFuZ2UgaW4gdGhlIHNvdXJjZSBidWZmZXIuCiAgICAgLy8gMCBtYXkgYmUg
cmV0dXJuZWQgaWYgdGhlIHJhbmdlIGRvZXMgbm90IGZpdCBpbiB0aGUgc291cmNlQnVmZmVyCi0g
ICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1ZmZlckZyb21SYW5nZShBdWRp
b0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFt
ZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1ZmZlckZyb21SYW5n
ZShjb25zdCBBdWRpb0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNp
Z25lZCBlbmRGcmFtZSk7CiAKIAogICAgIC8vIENyZWF0ZXMgYSBuZXcgQXVkaW9CdXMgYnkgc2Ft
cGxlLXJhdGUgY29udmVydGluZyBzb3VyY2VCdXMgdG8gdGhlIG5ld1NhbXBsZVJhdGUuCiAgICAg
Ly8gc2V0U2FtcGxlUmF0ZSgpIG11c3QgaGF2ZSBiZWVuIHByZXZpb3VzbHkgY2FsbGVkIG9uIHNv
dXJjZUJ1cy4KICAgICAvLyBOb3RlOiBzYW1wbGUtcmF0ZSBjb252ZXJzaW9uIGlzIGFscmVhZHkg
aGFuZGxlZCBpbiB0aGUgZmlsZS1yZWFkaW5nIGNvZGUgZm9yIHRoZSBtYWMgcG9ydCwgc28gd2Ug
ZG9uJ3QgbmVlZCB0aGlzLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVC
eVNhbXBsZVJhdGVDb252ZXJ0aW5nKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIGJvb2wgbWl4VG9Nb25v
LCBkb3VibGUgbmV3U2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+
IGNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywg
Ym9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKTsKIAogICAgIC8vIENyZWF0ZXMg
YSBuZXcgQXVkaW9CdXMgYnkgbWl4aW5nIGFsbCB0aGUgY2hhbm5lbHMgZG93biB0byBtb25vLgog
ICAgIC8vIElmIHNvdXJjZUJ1cyBpcyBhbHJlYWR5IG1vbm8sIHRoZW4gdGhlIHJldHVybmVkIEF1
ZGlvQnVzIHdpbGwgc2ltcGx5IGJlIGEgY29weS4KLSAgICBzdGF0aWMgUGFzc093blB0cjxBdWRp
b0J1cz4gY3JlYXRlQnlNaXhpbmdUb01vbm8oQXVkaW9CdXMqIHNvdXJjZUJ1cyk7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ5TWl4aW5nVG9Nb25vKGNvbnN0IEF1ZGlv
QnVzKiBzb3VyY2VCdXMpOwogCiAgICAgLy8gU2NhbGVzIGFsbCBzYW1wbGVzIGJ5IHRoZSBzYW1l
IGFtb3VudC4KICAgICB2b2lkIHNjYWxlKGZsb2F0IHNjYWxlKTsKIAogICAgIC8vIE1hc3RlciBn
YWluIGZvciB0aGlzIGJ1cyAtIHVzZWQgd2l0aCBzdW1XaXRoR2FpbkZyb20oKSBiZWxvdwogICAg
IHZvaWQgc2V0R2FpbihmbG9hdCBnYWluKSB7IG1fYnVzR2FpbiA9IGdhaW47IH0KLSAgICBmbG9h
dCBnYWluKCkgeyByZXR1cm4gbV9idXNHYWluOyB9CisgICAgZmxvYXQgZ2FpbigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVzR2FpbjsgfQogCiAgICAgdm9pZCByZXNldCgpIHsgbV9pc0ZpcnN0VGltZSA9
IHRydWU7IH0gLy8gZm9yIGRlLXppcHBlcmluZwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcAppbmRleCBlYmJmM2JiZjU1MGQyYTM3MjJjMTBhODZm
ZjQ1MjRlZjQzNTczNTBkLi4zYzc0OGU2MzM5OTBlYzE3YmNkYzAzOGYwNzBhOTUyNDJmYWE5ZGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CiAKIHZvaWQgQXVk
aW9DaGFubmVsOjpzY2FsZShmbG9hdCBzY2FsZSkKIHsKLSAgICB2c211bChkYXRhKCksIDEsICZz
Y2FsZSwgZGF0YSgpLCAxLCBsZW5ndGgoKSk7CisgICAgdnNtdWwoZGF0YSgpLCAxLCAmc2NhbGUs
IG11dGFibGVEYXRhKCksIDEsIGxlbmd0aCgpKTsKIH0KIAogdm9pZCBBdWRpb0NoYW5uZWw6OmNv
cHlGcm9tKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCkKQEAgLTUzLDcgKzUzLDcg
QEAgdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNl
Q2hhbm5lbCkKICAgICBpZiAoIWlzU2FmZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbWVtY3B5
KGRhdGEoKSwgc291cmNlQ2hhbm5lbC0+ZGF0YSgpLCBzaXplb2YoZmxvYXQpICogbGVuZ3RoKCkp
OworICAgIG1lbWNweShtdXRhYmxlRGF0YSgpLCBzb3VyY2VDaGFubmVsLT5kYXRhKCksIHNpemVv
ZihmbG9hdCkgKiBsZW5ndGgoKSk7CiB9CiAKIHZvaWQgQXVkaW9DaGFubmVsOjpjb3B5RnJvbVJh
bmdlKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCwgdW5zaWduZWQgc3RhcnRGcmFt
ZSwgdW5zaWduZWQgZW5kRnJhbWUpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgQXVkaW9DaGFubmVs
Ojpjb3B5RnJvbVJhbmdlKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCwgdW5zaWdu
ZWQgc3RhCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBzb3Vy
Y2VDaGFubmVsLT5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGF0YSgpOworICAg
IGZsb2F0KiBkZXN0aW5hdGlvbiA9IG11dGFibGVEYXRhKCk7CiAgICAgbWVtY3B5KGRlc3RpbmF0
aW9uLCBzb3VyY2UgKyBzdGFydEZyYW1lLCBzaXplb2YoZmxvYXQpICogcmFuZ2VMZW5ndGgpOwog
fQogCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgQXVkaW9DaGFubmVsOjpzdW1Gcm9tKGNvbnN0IEF1
ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCkKICAgICBpZiAoIWlzU2FmZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdmFkZChkYXRhKCksIDEsIHNvdXJjZUNoYW5uZWwtPmRhdGEoKSwgMSwgZGF0
YSgpLCAxLCBsZW5ndGgoKSk7CisgICAgdmFkZChkYXRhKCksIDEsIHNvdXJjZUNoYW5uZWwtPmRh
dGEoKSwgMSwgbXV0YWJsZURhdGEoKSwgMSwgbGVuZ3RoKCkpOwogfQogCiBmbG9hdCBBdWRpb0No
YW5uZWw6Om1heEFic1ZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9DaGFubmVsLmgKaW5kZXggODgwM2U3NWNkMWUzZjdhZTIyYTUwODY5ZjYxZThkZDQ1
ZGJiZDRjYy4uMjRkZTNmOWU4MjA2MmM3YzBhZTgzZGRjMmU1ZjA0MWVmMTE0MjhhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKQEAgLTczLDcgKzcz
LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0
aDsgfQogCiAgICAgLy8gRGlyZWN0IGFjY2VzcyB0byBQQ00gc2FtcGxlIGRhdGEKLSAgICBmbG9h
dCogZGF0YSgpIHsgcmV0dXJuIG1fcmF3UG9pbnRlciA/IG1fcmF3UG9pbnRlciA6IG1fbWVtQnVm
ZmVyLT5kYXRhKCk7IH0KKyAgICBmbG9hdCogbXV0YWJsZURhdGEoKSB7IHJldHVybiBtX3Jhd1Bv
aW50ZXIgPyBtX3Jhd1BvaW50ZXIgOiBtX21lbUJ1ZmZlci0+ZGF0YSgpOyB9CiAgICAgY29uc3Qg
ZmxvYXQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jhd1BvaW50ZXIgPyBtX3Jhd1BvaW50ZXIg
OiBtX21lbUJ1ZmZlci0+ZGF0YSgpOyB9CiAKICAgICAvLyBaZXJvZXMgb3V0IGFsbCBzYW1wbGUg
dmFsdWVzIGluIGJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcAppbmRleCBjZjRkMmQzNTE3NWE1Mzg5
M2UxNWNlZjUwM2YwYmY5ZTM2YTBhYzgzLi41ZjkxMzlmMDMwODg0Y2Q0OTJiNTNhYTAzZDgwYjNl
OWZhYzQ1M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgQXVk
aW9EU1BLZXJuZWxQcm9jZXNzb3I6OnVuaW5pdGlhbGl6ZSgpCiAgICAgbV9pbml0aWFsaXplZCA9
IGZhbHNlOwogfQogCi12b2lkIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlv
QnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykKK3ZvaWQgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3I6OnByb2Nlc3MoY29uc3QgQXVkaW9CdXMq
IHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQog
ewogICAgIEFTU0VSVChzb3VyY2UgJiYgZGVzdGluYXRpb24pOwogICAgIGlmICghc291cmNlIHx8
ICFkZXN0aW5hdGlvbikKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBBdWRpb0RTUEtlcm5lbFByb2Nl
c3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHMK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9rZXJuZWxzLnNpemUoKTsgKytpKQotICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291
cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5kYXRhKCks
IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2Ut
PmNoYW5uZWwoaSktPmRhdGEoKSwgZGVzdGluYXRpb24tPmNoYW5uZWwoaSktPm11dGFibGVEYXRh
KCksIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKIC8vIFJlc2V0cyBmaWx0ZXIgc3RhdGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vz
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nl
c3Nvci5oCmluZGV4IDQwYjVhYjhkNjczODNlMmRjODk3Y2Y3NTNmNjQ5YzFjMDAzN2IzYjAuLjdm
OGY4MWQyZmQ4NmZkYjhiNDVlYTk3MmFjZjJlNjk1ODUxODMyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaApA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQXVkaW9Qcm9jZXNzb3IgbWV0aG9kcwog
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlh
bGl6ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlv
QnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdmlydHVhbCB2
b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9u
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Q
cm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHJvY2Vzc29y
LmgKaW5kZXggMmQ3YjYwYTdjZTYwZWIwNjY1ZTJkMjg4ZmJjOTQ5NjY2ZmZkY2JjZi4uNDY5Zjgz
MzIyNDM2MDc4MWQ0MDIyYjAzZGU3Y2I1YTc2OGMwNDcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nlc3Nvci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCkgPSAwOwogCiAgICAgLy8gUHJvY2Vz
c2VzIHRoZSBzb3VyY2UgdG8gZGVzdGluYXRpb24gYnVzLiAgVGhlIG51bWJlciBvZiBjaGFubmVs
cyBtdXN0IG1hdGNoIGluIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uCi0gICAgdmlydHVhbCB2b2lk
IHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVk
aW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKSA9IDA7CiAKICAgICAvLyBSZXNldHMgZmlsdGVyIHN0YXRlCiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9S
ZXNhbXBsZXIuY3BwCmluZGV4IGJhNWI1OGU2NDUwOGYwMTE4ODMyZDAyYzViYzVhNTkyMmRlNjA5
ZDUuLjFhOWY4MWU3YTc0M2FhNjJmZTEyNDVlZjQ4ZjNkNjRlZmZhMjI1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCB2b2lkIEF1ZGlvUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlk
ZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVzdGluYXRpbwogICAgIC8vIE5vdyB0aGF0IHdlIGhh
dmUgdGhlIHNvdXJjZSBkYXRhLCByZXNhbXBsZSBlYWNoIGNoYW5uZWwgaW50byB0aGUgZGVzdGlu
YXRpb24gYnVzLgogICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSBmb3IgdGhlIGNvbW1vbiBzdGVyZW8g
Y2FzZSB3aGVyZSBpdCdzIGZhc3RlciB0byBwcm9jZXNzIGJvdGggbGVmdC9yaWdodCBjaGFubmVs
cyBpbiB0aGUgc2FtZSBpbm5lciBsb29wLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVz
dGluYXRpb25CdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0
aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CiAgICAgICAg
IG1fa2VybmVsc1tpXS0+cHJvY2VzcyhkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yLmNwcAppbmRleCBjNDc5NWY0ZjgxZWJmYzhlZDliZjc2YTU5ODQxNGU3ODk5ZDgy
ZWRkLi5hNTUyMDU3MDVkOTUxMGJmMjBkOWRiMzU0ODc5Mzk2NWVlMDJlZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAK
QEAgLTExNSwxMCArMTE1LDEwIEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXRFbXBoYXNp
c1BhcmFtZXRlcnMoZmxvYXQgZ2FpbiwgZmxvYXQgYW5jaG9yRnJlcSwgZmxvCiAgICAgc2V0RW1w
aGFzaXNTdGFnZVBhcmFtZXRlcnMoMywgZ2FpbiwgYW5jaG9yRnJlcSAvIChmaWx0ZXJTdGFnZVJh
dGlvICogZmlsdGVyU3RhZ2VSYXRpbyAqIGZpbHRlclN0YWdlUmF0aW8pKTsKIH0KIAotdm9pZCBE
eW5hbWljc0NvbXByZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMq
IGRlc3RpbmF0aW9uQnVzLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpCit2b2lkIER5bmFtaWNz
Q29tcHJlc3Nvcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyog
ZGVzdGluYXRpb25CdXMsIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICBmbG9hdCog
c291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOwotICAgIGZsb2F0KiBzb3Vy
Y2VSOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVzLT5jaGFubmVsKDApLT5k
YXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZVI7CiAKICAgICBpZiAoc291cmNlQnVzLT5u
dW1iZXJPZkNoYW5uZWxzKCkgPiAxKQogICAgICAgICBzb3VyY2VSID0gc291cmNlQnVzLT5jaGFu
bmVsKDEpLT5kYXRhKCk7CkBAIC0xMjcsOCArMTI3LDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNz
b3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVz
LAogCiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uQnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgPT0gMik7
CiAKLSAgICBmbG9hdCogZGVzdGluYXRpb25MID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMCkt
PmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gZGVzdGluYXRpb25CdXMtPmNoYW5u
ZWwoMSktPmRhdGEoKTsKKyAgICBmbG9hdCogZGVzdGluYXRpb25MID0gZGVzdGluYXRpb25CdXMt
PmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IGRl
c3RpbmF0aW9uQnVzLT5jaGFubmVsKDEpLT5tdXRhYmxlRGF0YSgpOwogCiAgICAgZmxvYXQgZmls
dGVyU3RhZ2VHYWluID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1GaWx0ZXJTdGFnZUdhaW4pOwogICAg
IGZsb2F0IGZpbHRlclN0YWdlUmF0aW8gPSBwYXJhbWV0ZXJWYWx1ZShQYXJhbUZpbHRlclN0YWdl
UmF0aW8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuaAppbmRleCAyMTUyOTUxMmRlZjE5MDQ2NmNlY2E4NWNhODFjM2Q4NzZlYjAwZmE2
Li5lMDExNWVlMjczZTQzMGY5YzI4ZjU2NGJmYzljYzQ0ZWJjNjZjNjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBEeW5hbWljc0NvbXByZXNzb3IoYm9vbCBpc1N0ZXJl
bywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICB2b2lkIHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJj
ZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3Mp
OworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyog
ZGVzdGluYXRpb25CdXMsIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgdm9pZCByZXNl
dCgpOwogCiAgICAgZmxvYXQgcGFyYW1ldGVyVmFsdWUodW5zaWduZWQgcGFyYW1ldGVySUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbC5jcHAKaW5kZXggZTlmNDk2YTViZmFlM2Y0YTFmYmM0YTVhNGQ3OGJhZThm
ZWQzMjAxNi4uYTdhNGMxMjEyNzUyMDJlY2YzYmFiMmUxNWUwNWZjYzRiNGFkYTBmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuY3BwCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxvYXQgcHJlRGVsYXlUaW1lKQogICAgIH0KIH0KIAot
dm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCit2
b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNl
TCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5h
dGlvbkwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCogc291
cmNlUiwgLyogc3RlcmVvLWxpbmtlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIsIC8qIHN0ZXJlby1saW5rZWQgKi8KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvblIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZXNUb1By
b2Nlc3MsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yS2VybmVsLmgKaW5kZXggOGU1ZjcwOTlkODhiYjU1YWU3OGQ0NzhjZDc5
NmRjZjRhMTk2ZDIxOC4uY2YzMTliMzc4YWRlYjU5MDYyOTUzZGVhYjA5MmUzMzM5YzZmNjg4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmgKQEAgLTM4LDkgKzM4LDkgQEAgcHVibGljOgogICAgIER5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbChmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIFBlcmZvcm1zIHN0
ZXJlby1saW5rZWQgY29tcHJlc3Npb24uCi0gICAgdm9pZCBwcm9jZXNzKGZsb2F0ICpzb3VyY2VM
LAorICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCAqc291cmNlTCwKICAgICAgICAgICAgICAg
ICAgZmxvYXQgKmRlc3RpbmF0aW9uTCwKLSAgICAgICAgICAgICAgICAgZmxvYXQgKnNvdXJjZVIs
CisgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0ICpzb3VyY2VSLAogICAgICAgICAgICAgICAg
ICBmbG9hdCAqZGVzdGluYXRpb25SLAogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZXNU
b1Byb2Nlc3MsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Vx
dWFsUG93ZXJQYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQ
b3dlclBhbm5lci5jcHAKaW5kZXggMGRhNzYyMjM2NDA5MTcyYTU4NDU2ZmYwYjZkZDcyZmU1OGJj
Nzg0OS4uYTJkMmRmZjRjMDAwYTgyYmY0NDg4MzlkMTIwZDNkMjY5NmRmYmVkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgRXF1YWxQb3dlclBhbm5lcjo6RXF1YWxQb3dlclBhbm5lcihmbG9hdCBz
YW1wbGVSYXRlKQogICAgIG1fc21vb3RoaW5nQ29uc3RhbnQgPSBBdWRpb1V0aWxpdGllczo6ZGlz
Y3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKFNtb290aGluZ1RpbWVDb25zdGFudCwgc2Ft
cGxlUmF0ZSk7CiB9CiAKLXZvaWQgRXF1YWxQb3dlclBhbm5lcjo6cGFuKGRvdWJsZSBhemltdXRo
LCBkb3VibGUgLyplbGV2YXRpb24qLywgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0
cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBFcXVhbFBvd2VyUGFubmVyOjpw
YW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSAvKmVsZXZhdGlvbiovLCBjb25zdCBBdWRpb0J1cyog
aW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7
CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdGVyZW8gc291cmNlcwogICAgIGJvb2wgaXNJbnB1
dFNhZmUgPSBpbnB1dEJ1cyAmJiBpbnB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygpID09IDEgJiYg
ZnJhbWVzVG9Qcm9jZXNzIDw9IGlucHV0QnVzLT5sZW5ndGgoKTsKQEAgLTYyLDEwICs2MiwxMCBA
QCB2b2lkIEVxdWFsUG93ZXJQYW5uZXI6OnBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIC8qZWxl
dmF0aW9uKi8sIEF1ZGlvQnVzKiBpbnB1dAogICAgIGlmICghaXNPdXRwdXRTYWZlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBBdWRpb0NoYW5uZWwqIGNoYW5uZWwgPSBpbnB1dEJ1cy0+Y2hhbm5l
bCgwKTsKLSAgICBmbG9hdCogc291cmNlUCA9IGNoYW5uZWwtPmRhdGEoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+
Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQpLT5kYXRhKCk7Ci0gICAgZmxvYXQq
IGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5l
bFJpZ2h0KS0+ZGF0YSgpOworICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCA9IGlucHV0
QnVzLT5jaGFubmVsKDApOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VQID0gY2hhbm5lbC0+ZGF0
YSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmbG9hdCogZGVzdGluYXRp
b25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsTGVmdCktPm11
dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5l
bEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KS0+bXV0YWJsZURhdGEoKTsKIAogICAgIGlm
ICghc291cmNlUCB8fCAhZGVzdGluYXRpb25MIHx8ICFkZXN0aW5hdGlvblIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93
ZXJQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5u
ZXIuaAppbmRleCA0ZjYwMDFkZjkxNDIwZWM1NDRhZmNlZGNkZjY4OTdlODQ0ODBkNzUwLi4wMTZj
ZDRhYTE0YzdmZjZkZTUwYzQxOGMyOTkwMDcyYzBhYzhjMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCkBAIC0zNSw3ICszNSw3IEBA
IGNsYXNzIEVxdWFsUG93ZXJQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBF
cXVhbFBvd2VyUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHBh
bihkb3VibGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgQXVkaW9CdXMqIGlucHV0QnVzLCBB
dWRpb0J1cyogb3V0cHV0QnVmLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBjb25zdCBBdWRpb0J1
cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdWYsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
OwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgeyBtX2lzRmlyc3RSZW5kZXIgPSB0cnVlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuY3BwCmlu
ZGV4IDkwOTM0MzM4MDFjNmIwNTZhZGJjY2NkOTA0OGFkNDY3MWRkMTNkNmMuLjIzMjFkZTBjZjEx
MDQ1OTA1ZGQxNTk4YWE4ZTZlYmE3YmVjNTk5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBGRlRDb252b2x2
ZXI6OkZGVENvbnZvbHZlcihzaXplX3QgZmZ0U2l6ZSkKIHsKIH0KIAotdm9pZCBGRlRDb252b2x2
ZXI6OnByb2Nlc3MoRkZURnJhbWUqIGZmdEtlcm5lbCwgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBk
ZXN0UCwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgRkZUQ29udm9sdmVyOjpwcm9jZXNz
KEZGVEZyYW1lKiBmZnRLZXJuZWwsIGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAs
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgLy8gRklYTUU6IG1ha2Ugc28gZnJhbWVz
VG9Qcm9jZXNzIGlzIG5vdCByZXF1aXJlZCB0byBmaXQgZXZlbmx5IGludG8gZmZ0U2l6ZS8yCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKaW5kZXggYzFi
NTAwMjc2NWI1NTZjNmQzN2I5ZmU2NTIxNDU1ZWE0N2YwMTQ0ZS4uMzc1YmYyYzY1MGQyZDNkNzEx
MjFjZjc1ZTVlYmJmYmVmMTVmYzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZUQ29udm9sdmVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBp
bnB1dCB0byBvdXRwdXQgbGF0ZW5jeSBpcyBlcXVhbCB0byBmZnRTaXplIC8gMgogICAgIC8vCiAg
ICAgLy8gUHJvY2Vzc2luZyBpbi1wbGFjZSBpcyBhbGxvd2VkLi4uCi0gICAgdm9pZCBwcm9jZXNz
KEZGVEZyYW1lKiBmZnRLZXJuZWwsIGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAsIHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZvaWQgcHJvY2VzcyhGRlRGcmFtZSogZmZ0S2VybmVs
LCBjb25zdCBmbG9hdCogc291cmNlUCwgZmxvYXQqIGRlc3RQLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKTsKIAogICAgIHZvaWQgcmVzZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuY3BwCmluZGV4IDRmMDMyYTI2YWE4MDJmMjRjMTdmZmY0NWE2ZWYzM2E5YjM3
MjJlNTQuLmExYTBhNTBkYWNlYmNiNmQ5MDM2NDRjNjAyZDE0NDhjODAyOWIyMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEZGVEZyYW1lOjpkb1BhZGRlZEZGVChmbG9h
dCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQordm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29u
c3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIHsKICAgICAvLyBaZXJvLXBhZCB0aGUg
aW1wdWxzZSByZXNwb25zZQogICAgIEF1ZGlvRmxvYXRBcnJheSBwYWRkZWRSZXNwb25zZShmZnRT
aXplKCkpOyAvLyB6ZXJvLWluaXRpYWxpemVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZURnJhbWUuaAppbmRleCBiMjVkMjc5NTZkZGNhZTk1MjFmNGNlN2MwMjA3NjA0ZTMwMGM5NmQz
Li4wNDI2MzNjZDIzMTI4Njc4YjkzYWIzODM2ODNkY2U1OTA4NDQ2NWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFudXAo
KTsKLSAgICB2b2lkIGRvRkZUKGZsb2F0KiBkYXRhKTsKKyAgICB2b2lkIGRvRkZUKGNvbnN0IGZs
b2F0KiBkYXRhKTsKICAgICB2b2lkIGRvSW52ZXJzZUZGVChmbG9hdCogZGF0YSk7CiAgICAgdm9p
ZCBtdWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpOyAvLyBtdWx0aXBsaWVzIG91cnNlbGYg
d2l0aCBmcmFtZSA6IGVmZmVjdGl2ZWx5IG9wZXJhdG9yKj0oKQogCkBAIC04OCw3ICs4OCw3IEBA
IHB1YmxpYzoKICAgICAvLyBJbnRlcnBvbGF0ZXMgZnJvbSBmcmFtZTEgLT4gZnJhbWUyIGFzIHgg
Z29lcyBmcm9tIDAuMCAtPiAxLjAKICAgICBzdGF0aWMgUGFzc093blB0cjxGRlRGcmFtZT4gY3Jl
YXRlSW50ZXJwb2xhdGVkRnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lMSwgY29uc3QgRkZURnJh
bWUmIGZyYW1lMiwgZG91YmxlIHgpOwogCi0gICAgdm9pZCBkb1BhZGRlZEZGVChmbG9hdCogZGF0
YSwgc2l6ZV90IGRhdGFTaXplKTsgLy8gemVyby1wYWRkaW5nIHdpdGggZGF0YVNpemUgPD0gZmZ0
U2l6ZQorICAgIHZvaWQgZG9QYWRkZWRGRlQoY29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRh
U2l6ZSk7IC8vIHplcm8tcGFkZGluZyB3aXRoIGRhdGFTaXplIDw9IGZmdFNpemUKICAgICBkb3Vi
bGUgZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KCk7CiAgICAgdm9pZCBhZGRDb25zdGFudEdyb3Vw
RGVsYXkoZG91YmxlIHNhbXBsZUZyYW1lRGVsYXkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKaW5kZXggY2NmZjA5N2Y4YWQ2Y2YxMWI1MmM4OTc3
ZTBmOGFmMzNlMDc5ZDIyYi4uNDQ2ZTY2ZDBlNzY0ZDdjMmFlNjg4MWVkM2ZjMGUwMWI2NTc3NWZl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaApA
QCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5lbExpc3RS
KCkgeyByZXR1cm4gbV9rZXJuZWxMaXN0Ui5nZXQoKTsgfQogCiAgICAgZG91YmxlIGVsZXZhdGlv
bkFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9lbGV2YXRpb25BbmdsZTsgfQotICAgIHVuc2lnbmVk
IG51bWJlck9mQXppbXV0aHMoKSB7IHJldHVybiBOdW1iZXJPZlRvdGFsQXppbXV0aHM7IH0KKyAg
ICB1bnNpZ25lZCBudW1iZXJPZkF6aW11dGhzKCkgY29uc3QgeyByZXR1cm4gTnVtYmVyT2ZUb3Rh
bEF6aW11dGhzOyB9CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ft
cGxlUmF0ZTsgfQogICAgIAogICAgIC8vIFJldHVybnMgdGhlIGxlZnQgYW5kIHJpZ2h0IGtlcm5l
bHMgZm9yIHRoZSBnaXZlbiBhemltdXRoIGluZGV4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGS2VybmVsLmNwcAppbmRleCBjNDRkZTkzMmRkMjcwYmYyYTk5ODgzOGUyNmYw
YzI1MTk5MGQyYTUyLi4zOTFmOTA0MDIwMDQ0MjAzZjNhYTBlNDA0YzAwY2JhNTJlOTBkYTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBzdGF0aWMgZmxvYXQgZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KEF1ZGlvQ2hh
bm5lbCogY2hhbm5lbCwgc2l6ZV90IGFuYWx5c2lzRkZUUwogewogICAgIEFTU0VSVChjaGFubmVs
KTsKICAgICAgICAgCi0gICAgZmxvYXQqIGltcHVsc2VQID0gY2hhbm5lbC0+ZGF0YSgpOworICAg
IGZsb2F0KiBpbXB1bHNlUCA9IGNoYW5uZWwtPm11dGFibGVEYXRhKCk7CiAgICAgCiAgICAgYm9v
bCBpc1NpemVHb29kID0gY2hhbm5lbC0+bGVuZ3RoKCkgPj0gYW5hbHlzaXNGRlRTaXplOwogICAg
IEFTU0VSVChpc1NpemVHb29kKTsKQEAgLTc4LDcgKzc4LDcgQEAgSFJURktlcm5lbDo6SFJURktl
cm5lbChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVS
YXRlLAogICAgIC8vIERldGVybWluZSB0aGUgbGVhZGluZyBkZWxheSAoYXZlcmFnZSBncm91cCBk
ZWxheSkgZm9yIHRoZSByZXNwb25zZS4KICAgICBtX2ZyYW1lRGVsYXkgPSBleHRyYWN0QXZlcmFn
ZUdyb3VwRGVsYXkoY2hhbm5lbCwgZmZ0U2l6ZSAvIDIpOwogCi0gICAgZmxvYXQqIGltcHVsc2VS
ZXNwb25zZSA9IGNoYW5uZWwtPmRhdGEoKTsKKyAgICBmbG9hdCogaW1wdWxzZVJlc3BvbnNlID0g
Y2hhbm5lbC0+bXV0YWJsZURhdGEoKTsKICAgICBzaXplX3QgcmVzcG9uc2VMZW5ndGggPSBjaGFu
bmVsLT5sZW5ndGgoKTsKIAogICAgIGlmIChiYXNzQm9vc3QpIHsKQEAgLTExNCw3ICsxMTQsNyBA
QCBQYXNzT3duUHRyPEF1ZGlvQ2hhbm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3Bv
bnNlKCkKIAogICAgIC8vIEFkZCBsZWFkaW5nIGRlbGF5IGJhY2sgaW4uCiAgICAgZmZ0RnJhbWUu
YWRkQ29uc3RhbnRHcm91cERlbGF5KG1fZnJhbWVEZWxheSk7Ci0gICAgZmZ0RnJhbWUuZG9JbnZl
cnNlRkZUKGNoYW5uZWwtPmRhdGEoKSk7CisgICAgZmZ0RnJhbWUuZG9JbnZlcnNlRkZUKGNoYW5u
ZWwtPm11dGFibGVEYXRhKCkpOwogCiAgICAgcmV0dXJuIGNoYW5uZWwucmVsZWFzZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcAppbmRleCA5Nzgz
NzFjZWY3Yjk1YmM1ODc5NGQ3MWUyOGZkNWI0YmI5YTRmMDk3Li5mMDk5NjFmYTFkZWZmNzVjMDQ0
YWZhZjNlOTdjOWFjMGZhMTA4M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGUGFubmVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGludCBIUlRGUGFubmVyOjpjYWxj
dWxhdGVEZXNpcmVkQXppbXV0aEluZGV4QW5kQmxlbmQoZG91YmxlIGF6aW11dGgsIGRvdWJsZSYg
YXppCiAgICAgcmV0dXJuIGRlc2lyZWRBemltdXRoSW5kZXg7CiB9CiAKLXZvaWQgSFJURlBhbm5l
cjo6cGFuKGRvdWJsZSBkZXNpcmVkQXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgQXVkaW9CdXMq
IGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQor
dm9pZCBIUlRGUGFubmVyOjpwYW4oZG91YmxlIGRlc2lyZWRBemltdXRoLCBkb3VibGUgZWxldmF0
aW9uLCBjb25zdCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgdW5zaWduZWQgbnVtSW5wdXRDaGFubmVscyA9IGlu
cHV0QnVzID8gaW5wdXRCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSA6IDA7CiAKQEAgLTE0NywxNCAr
MTQ3LDE0IEBAIHZvaWQgSFJURlBhbm5lcjo6cGFuKGRvdWJsZSBkZXNpcmVkQXppbXV0aCwgZG91
YmxlIGVsZXZhdGlvbiwgQXVkaW9CdXMqIGlucHV0QnVzCiAKICAgICAvLyBOb3JtYWxseSwgd2Un
bGwganVzdCBiZSBkZWFsaW5nIHdpdGggbW9ubyBzb3VyY2VzLgogICAgIC8vIElmIHdlIGhhdmUg
YSBzdGVyZW8gaW5wdXQsIGltcGxlbWVudCBzdGVyZW8gcGFubmluZyB3aXRoIGxlZnQgc291cmNl
IHByb2Nlc3NlZCBieSBsZWZ0IEhSVEYsIGFuZCByaWdodCBzb3VyY2UgYnkgcmlnaHQgSFJURi4K
LSAgICBBdWRpb0NoYW5uZWwqIGlucHV0Q2hhbm5lbEwgPSBpbnB1dEJ1cy0+Y2hhbm5lbEJ5VHlw
ZShBdWRpb0J1czo6Q2hhbm5lbExlZnQpOwotICAgIEF1ZGlvQ2hhbm5lbCogaW5wdXRDaGFubmVs
UiA9IG51bUlucHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9C
dXM6OkNoYW5uZWxSaWdodCkgOiAwOworICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogaW5wdXRDaGFu
bmVsTCA9IGlucHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsTGVmdCk7Cisg
ICAgY29uc3QgQXVkaW9DaGFubmVsKiBpbnB1dENoYW5uZWxSID0gbnVtSW5wdXRDaGFubmVscyA+
IDEgPyBpbnB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KSA6IDA7
CiAKICAgICAvLyBHZXQgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBwb2ludGVycy4KLSAgICBmbG9h
dCogc291cmNlTCA9IGlucHV0Q2hhbm5lbEwtPmRhdGEoKTsKLSAgICBmbG9hdCogc291cmNlUiA9
IG51bUlucHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRDaGFubmVsUi0+ZGF0YSgpIDogc291cmNlTDsK
LSAgICBmbG9hdCogZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlv
QnVzOjpDaGFubmVsTGVmdCktPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gb3V0
cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsUmlnaHQpLT5kYXRhKCk7Cisg
ICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBpbnB1dENoYW5uZWxMLT5kYXRhKCk7CisgICAgY29u
c3QgZmxvYXQqIHNvdXJjZVIgPSBudW1JbnB1dENoYW5uZWxzID4gMSA/IGlucHV0Q2hhbm5lbFIt
PmRhdGEoKSA6IHNvdXJjZUw7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+
Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQpLT5tdXRhYmxlRGF0YSgpOworICAg
IGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6
OkNoYW5uZWxSaWdodCktPm11dGFibGVEYXRhKCk7CiAKICAgICBkb3VibGUgYXppbXV0aEJsZW5k
OwogICAgIGludCBkZXNpcmVkQXppbXV0aEluZGV4ID0gY2FsY3VsYXRlRGVzaXJlZEF6aW11dGhJ
bmRleEFuZEJsZW5kKGF6aW11dGgsIGF6aW11dGhCbGVuZCk7CkBAIC0yMDcsOCArMjA3LDggQEAg
dm9pZCBIUlRGUGFubmVyOjpwYW4oZG91YmxlIGRlc2lyZWRBemltdXRoLCBkb3VibGUgZWxldmF0
aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMKICAgICAgICAgICAgIAogICAgICAgICAvLyBDYWxjdWxh
dGUgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcG9pbnRlcnMgZm9yIHRoZSBjdXJyZW50IHNl
Z21lbnQuCiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNlZ21lbnQgKiBmcmFtZXNQZXJTZWdt
ZW50OwotICAgICAgICBmbG9hdCogc2VnbWVudFNvdXJjZUwgPSBzb3VyY2VMICsgb2Zmc2V0Owot
ICAgICAgICBmbG9hdCogc2VnbWVudFNvdXJjZVIgPSBzb3VyY2VSICsgb2Zmc2V0OworICAgICAg
ICBjb25zdCBmbG9hdCogc2VnbWVudFNvdXJjZUwgPSBzb3VyY2VMICsgb2Zmc2V0OworICAgICAg
ICBjb25zdCBmbG9hdCogc2VnbWVudFNvdXJjZVIgPSBzb3VyY2VSICsgb2Zmc2V0OwogICAgICAg
ICBmbG9hdCogc2VnbWVudERlc3RpbmF0aW9uTCA9IGRlc3RpbmF0aW9uTCArIG9mZnNldDsKICAg
ICAgICAgZmxvYXQqIHNlZ21lbnREZXN0aW5hdGlvblIgPSBkZXN0aW5hdGlvblIgKyBvZmZzZXQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAppbmRleCBlNzcx
YmEyOGIzZTRhYWRlZDZmODAyMTU2NDYzMjI3YTZmZmUxMjgxLi5hZDZmNzlhMDg0NTU2ODhhN2Iz
ZDQyYTA2OTQwMDZiNzdjZGEzMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURlBhbm5lci5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IUlRG
UGFubmVyKCk7CiAKICAgICAvLyBQYW5uZXIKLSAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBh
emltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBv
dXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwYW4o
ZG91YmxlIGF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1
cywgQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgdmly
dHVhbCB2b2lkIHJlc2V0KCk7CiAKICAgICBzaXplX3QgZmZ0U2l6ZSgpIHsgcmV0dXJuIGZmdFNp
emVGb3JTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCmluZGV4IGRiNTFl
OTBlZGVhNzM5OGFiMjQxNjUzNDc1MTg2OGMwZTU3ZmVkOWMuLmY2YzA3ZTdjMTc4MGZlNzQzMGNh
Yzc4NmI2NTk3YzU4NDcwNzgxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIENvcHkgdGhlIGNoYW5uZWwgZGF0YSBmcm9tIHdoYXQgd2UgcmVj
ZWl2ZWQgZnJvbSBtX211bHRpQ2hhbm5lbFByb3ZpZGVyLgogICAgICAgICBBU1NFUlQobV9jdXJy
ZW50Q2hhbm5lbCA8PSBtX251bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICBpZiAobV9jdXJyZW50
Q2hhbm5lbCA8IG1fbnVtYmVyT2ZDaGFubmVscykgewotICAgICAgICAgICAgbWVtY3B5KGJ1cy0+
Y2hhbm5lbCgwKS0+ZGF0YSgpLCBtX211bHRpQ2hhbm5lbEJ1cy0+Y2hhbm5lbChtX2N1cnJlbnRD
aGFubmVsKS0+ZGF0YSgpLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAg
ICAgICAgIG1lbWNweShidXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCksIG1fbXVsdGlDaGFu
bmVsQnVzLT5jaGFubmVsKG1fY3VycmVudENoYW5uZWwpLT5kYXRhKCksIHNpemVvZihmbG9hdCkg
KiBmcmFtZXNUb1Byb2Nlc3MpOwogICAgICAgICAgICAgKyttX2N1cnJlbnRDaGFubmVsOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgTXVsdGlDaGFubmVsUmVzYW1w
bGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVz
CiAgICAgICAgIC8vIEhvd2V2ZXIsIGlmIGl0IGNhbGxzIHByb3ZpZGVJbnB1dCgpIGZvciB0aGUg
Zmlyc3QgY2hhbm5lbCwgdGhlbiBpdCB3aWxsIGNhbGwgaXQgZm9yIHRoZSByZW1haW5pbmcKICAg
ICAgICAgLy8gY2hhbm5lbHMsIHNpbmNlIHRoZXkgYWxsIGJ1ZmZlciBpbiB0aGUgc2FtZSB3YXkg
YW5kIGFyZSBwcm9jZXNzaW5nIHRoZSBzYW1lIG51bWJlciBvZiBmcmFtZXMuCiAgICAgICAgIG1f
a2VybmVsc1tjaGFubmVsSW5kZXhdLT5wcm9jZXNzKCZjaGFubmVsUHJvdmlkZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLT5jaGFubmVsKGNo
YW5uZWxJbmRleCktPmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdGluYXRpb24tPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzVG9Qcm9jZXNz
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
YW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oCmluZGV4IDRi
NzI4MzI3ZDI5YWU4YjNjM2Q4MzlmNWQ5ZjBlMWFmNzZkYjRkNjYuLmQ4YjhkZDBmMWFkNGY4ZTYy
OTBjZDA2ZWRiOTYwZDNhNzk1YzA1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1Bhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bh
bm5lci5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIFBhbm5pbmdNb2RlbCBwYW5u
aW5nTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Bhbm5pbmdNb2RlbDsgfQogCi0gICAgdmlydHVh
bCB2b2lkIHBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgQXVkaW9CdXMqIGlu
cHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwg
Y29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCmluZGV4IDM0MTYyNmZkOGNhMThi
NzczZGE4Y2FkNTI4NzJkMGI3MzNhMGUyZTguLjEyMmUyMWI2ODk1ZTBiNDc1MjRkZGEzZjk3Zjdi
MWJhOGZhOGJkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApA
QCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmV2ZXJiOjppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1
bHNlUmVzcG9uc2VCdWZmZXIsIHNpemVfdCByZW5kZXJTbGljZVNpemUsCiAgICAgICAgIG1fdGVt
cEJ1ZmZlciA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cygyLCBNYXhGcmFtZVNpemUpKTsKIH0KIAot
dm9pZCBSZXZlcmI6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3Rp
bmF0aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBSZXZlcmI6OnByb2Nlc3Mo
Y29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIC8vIERvIGEgZmFpcmx5IGNvbXByZWhlbnNpdmUg
c2FuaXR5IGNoZWNrLgogICAgIC8vIElmIHRoZXNlIGNvbmRpdGlvbnMgYXJlIHNhdGlzZmllZCwg
YWxsIG9mIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHBvaW50ZXJzIHdpbGwgYmUgdmFsaWQg
Zm9yIHRoZSB2YXJpb3VzIG1hdHJpeGluZyBjYXNlcy4KQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lk
IFJldmVyYjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRp
b25CdXMsIHNpemVfdCBmcmFtZQogICAgIH0KIAogICAgIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRp
b25DaGFubmVsTCA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDApOwotICAgIEF1ZGlvQ2hhbm5l
bCogc291cmNlQ2hhbm5lbEwgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMCk7CisgICAgY29uc3QgQXVk
aW9DaGFubmVsKiBzb3VyY2VDaGFubmVsTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKTsKIAogICAg
IC8vIEhhbmRsZSBpbnB1dCAtPiBvdXRwdXQgbWF0cml4aW5nLi4uCiAgICAgc2l6ZV90IG51bUlu
cHV0Q2hhbm5lbHMgPSBzb3VyY2VCdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsKQEAgLTE1Nyw3ICsx
NTcsNyBAQCB2b2lkIFJldmVyYjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1
cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZQogCiAgICAgaWYgKG51bUlucHV0Q2hhbm5l
bHMgPT0gMiAmJiBudW1SZXZlcmJDaGFubmVscyA9PSAyICYmIG51bU91dHB1dENoYW5uZWxzID09
IDIpIHsKICAgICAgICAgLy8gMiAtPiAyIC0+IDIKLSAgICAgICAgQXVkaW9DaGFubmVsKiBzb3Vy
Y2VDaGFubmVsUiA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgxKTsKKyAgICAgICAgY29uc3QgQXVkaW9D
aGFubmVsKiBzb3VyY2VDaGFubmVsUiA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgxKTsKICAgICAgICAg
QXVkaW9DaGFubmVsKiBkZXN0aW5hdGlvbkNoYW5uZWxSID0gZGVzdGluYXRpb25CdXMtPmNoYW5u
ZWwoMSk7CiAgICAgICAgIG1fY29udm9sdmVyc1swXS0+cHJvY2Vzcyhzb3VyY2VDaGFubmVsTCwg
ZGVzdGluYXRpb25DaGFubmVsTCwgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICAgICAgbV9jb252b2x2
ZXJzWzFdLT5wcm9jZXNzKHNvdXJjZUNoYW5uZWxSLCBkZXN0aW5hdGlvbkNoYW5uZWxSLCBmcmFt
ZXNUb1Byb2Nlc3MpOwpAQCAtMTc3LDEzICsxNzcsMTMgQEAgdm9pZCBSZXZlcmI6OnByb2Nlc3Mo
QXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJh
bWUKICAgICAgICAgQVNTRVJUKGlzQ29weVNhZmUpOwogICAgICAgICBpZiAoIWlzQ29weVNhZmUp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1lbWNweShkZXN0aW5hdGlvbkNoYW5uZWxS
LT5kYXRhKCksIGRlc3RpbmF0aW9uQ2hhbm5lbEwtPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGZy
YW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbkNoYW5uZWxSLT5tdXRh
YmxlRGF0YSgpLCBkZXN0aW5hdGlvbkNoYW5uZWxMLT5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBm
cmFtZXNUb1Byb2Nlc3MpOwogICAgIH0gZWxzZSBpZiAobnVtSW5wdXRDaGFubmVscyA9PSAxICYm
IG51bVJldmVyYkNoYW5uZWxzID09IDEgJiYgbnVtT3V0cHV0Q2hhbm5lbHMgPT0gMSkgewogICAg
ICAgICAvLyAxIC0+IDEgLT4gMQogICAgICAgICBtX2NvbnZvbHZlcnNbMF0tPnByb2Nlc3Moc291
cmNlQ2hhbm5lbEwsIGRlc3RpbmF0aW9uQ2hhbm5lbEwsIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAg
fSBlbHNlIGlmIChudW1JbnB1dENoYW5uZWxzID09IDIgJiYgbnVtUmV2ZXJiQ2hhbm5lbHMgPT0g
NCAmJiBudW1PdXRwdXRDaGFubmVscyA9PSAyKSB7CiAgICAgICAgIC8vIDIgLT4gNCAtPiAyICgi
VHJ1ZSIgc3RlcmVvKQotICAgICAgICBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWxSID0gc291
cmNlQnVzLT5jaGFubmVsKDEpOworICAgICAgICBjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNo
YW5uZWxSID0gc291cmNlQnVzLT5jaGFubmVsKDEpOwogICAgICAgICBBdWRpb0NoYW5uZWwqIGRl
c3RpbmF0aW9uQ2hhbm5lbFIgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgxKTsKIAogICAgICAg
ICBBdWRpb0NoYW5uZWwqIHRlbXBDaGFubmVsTCA9IG1fdGVtcEJ1ZmZlci0+Y2hhbm5lbCgwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKaW5kZXggZjE2MmUwYjcwOWU5YmY2
ODUwYTkwMTMxOWMyY2I5ZDRiZDRlYTI5Mi4uNzc5ZTdiYmE0OTM0NGM4MmU0NTdjNzIzZTZkMGE2
MTg4ODFkZGVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIC8vIHJlbmRlclNsaWNlU2l6ZSBpcyBhIHJlbmRlcmlu
ZyBoaW50LCBzbyB0aGUgRkZUcyBjYW4gYmUgb3B0aW1pemVkIHRvIG5vdCBhbGwgb2NjdXIgYXQg
dGhlIHNhbWUgdGltZSAodmVyeSBiYWQgd2hlbiByZW5kZXJpbmcgb24gYSByZWFsLXRpbWUgdGhy
ZWFkKS4KICAgICBSZXZlcmIoQXVkaW9CdXMqIGltcHVsc2VSZXNwb25zZUJ1ZmZlciwgc2l6ZV90
IHJlbmRlclNsaWNlU2l6ZSwgc2l6ZV90IG1heEZGVFNpemUsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzLCBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzLCBib29sIG5vcm1hbGl6ZSk7CiAKLSAgICB2
b2lkIHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVz
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9C
dXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICB1bnNpZ25lZCBpbXB1bHNlUmVzcG9u
c2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2ltcHVsc2VSZXNwb25zZUxlbmd0aDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5k
ZXggYmJiNTUwODdmMGQxMGIxNTBiOTM3OTZmNGFiZjU4YWQ4MmM4MmVmMy4uYzYxMTQxNGNiYzE2
ZGMxNmQ3ZDFlY2EzNTFjNTdiNTk0NWVjMGYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJldmVy
YkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNl
LCBzaXplX3QgcmVuZGVyU2xpCiAgICAgLy8gT3RoZXJ3aXNlLCBhc3N1bWUgd2UncmUgYmVpbmcg
cnVuIGZyb20gYSBjb21tYW5kLWxpbmUgdG9vbC4KICAgICBib29sIGhhc1JlYWx0aW1lQ29uc3Ry
YWludCA9IHVzZUJhY2tncm91bmRUaHJlYWRzOwogCi0gICAgZmxvYXQqIHJlc3BvbnNlID0gaW1w
dWxzZVJlc3BvbnNlLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHJlc3BvbnNlID0gaW1wdWxz
ZVJlc3BvbnNlLT5kYXRhKCk7CiAgICAgc2l6ZV90IHRvdGFsUmVzcG9uc2VMZW5ndGggPSBpbXB1
bHNlUmVzcG9uc2UtPmxlbmd0aCgpOwogCiAgICAgLy8gQmVjYXVzZSB3ZSdyZSBub3QgdXNpbmcg
ZGlyZWN0LWNvbnZvbHV0aW9uIGluIHRoZSBsZWFkaW5nIHBvcnRpb24sIHRoZSByZXZlcmIgaGFz
IGFuIG92ZXJhbGwgbGF0ZW5jeSBvZiBoYWxmIHRoZSBmaXJzdC1zdGFnZSBGRlQgc2l6ZQpAQCAt
MTc1LDE1ICsxNzUsMTUgQEAgdm9pZCBSZXZlcmJDb252b2x2ZXI6OmJhY2tncm91bmRUaHJlYWRF
bnRyeSgpCiAgICAgfQogfQogCi12b2lkIFJldmVyYkNvbnZvbHZlcjo6cHJvY2VzcyhBdWRpb0No
YW5uZWwqIHNvdXJjZUNoYW5uZWwsIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBSZXZlcmJDb252b2x2ZXI6OnByb2Nlc3MoY29u
c3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsLCBBdWRpb0NoYW5uZWwqIGRlc3RpbmF0aW9u
Q2hhbm5lbCwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBib29sIGlzU2FmZSA9IHNv
dXJjZUNoYW5uZWwgJiYgZGVzdGluYXRpb25DaGFubmVsICYmIHNvdXJjZUNoYW5uZWwtPmxlbmd0
aCgpID49IGZyYW1lc1RvUHJvY2VzcyAmJiBkZXN0aW5hdGlvbkNoYW5uZWwtPmxlbmd0aCgpID49
IGZyYW1lc1RvUHJvY2VzczsKICAgICBBU1NFUlQoaXNTYWZlKTsKICAgICBpZiAoIWlzU2FmZSkK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBmbG9hdCogc291cmNlID0gc291cmNlQ2hh
bm5lbC0+ZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQ2hhbm5l
bC0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBzb3VyY2VDaGFubmVsLT5kYXRh
KCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25DaGFubmVsLT5tdXRhYmxl
RGF0YSgpOwogICAgIGJvb2wgaXNEYXRhU2FmZSA9IHNvdXJjZSAmJiBkZXN0aW5hdGlvbjsKICAg
ICBBU1NFUlQoaXNEYXRhU2FmZSk7CiAgICAgaWYgKCFpc0RhdGFTYWZlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAppbmRleCAwMTNiNjg0OTcx
Zjg5MDlkM2M1ZmZmZGViY2Q1ZjRiOTU4ZjhjMzEyLi4zNzBiODcyMDY0ODI5ZTFjY2UyOWI2ZWQy
NTcxMjZjOTBmNTY4YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmV2ZXJiQ29u
dm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpY2VT
aXplLCBzaXplX3QgbWF4RkZUU2l6ZSwgc2l6ZV90IGNvbnZvbHZlclJlbmRlclBoYXNlLCBib29s
IHVzZUJhY2tncm91bmRUaHJlYWRzKTsKICAgICB+UmV2ZXJiQ29udm9sdmVyKCk7CiAKLSAgICB2
b2lkIHByb2Nlc3MoQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsLCBBdWRpb0NoYW5uZWwqIGRl
c3RpbmF0aW9uQ2hhbm5lbCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9j
ZXNzKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCwgQXVkaW9DaGFubmVsKiBkZXN0
aW5hdGlvbkNoYW5uZWwsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIHZvaWQgcmVzZXQo
KTsKIAogICAgIHNpemVfdCBpbXB1bHNlUmVzcG9uc2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2ltcHVsc2VSZXNwb25zZUxlbmd0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCmluZGV4IGYyMDdkMTlkZWIwYzQ4
YmJmZWY2YjhhZDViYWI4NTI4OWU4NzI1MTAuLjUzYmI2NTAwODMxMDY0NzE5MWUwMGE5ZGI5NTlh
MDNkYTlmZmVhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlclN0YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKIAotUmV2ZXJiQ29udm9sdmVy
U3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVf
dCByZXNwb25zZUxlbmd0aCwgc2l6ZV90IHJldmVyYlRvdGFsTGF0ZW5jeSwgc2l6ZV90IHN0YWdl
T2Zmc2V0LCBzaXplX3Qgc3RhZ2VMZW5ndGgsCitSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJi
Q29udm9sdmVyU3RhZ2UoY29uc3QgZmxvYXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlc3Bv
bnNlTGVuZ3RoLCBzaXplX3QgcmV2ZXJiVG90YWxMYXRlbmN5LCBzaXplX3Qgc3RhZ2VPZmZzZXQs
IHNpemVfdCBzdGFnZUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZmZ0U2l6ZSwgc2l6ZV90IHJlbmRlclBoYXNlLCBzaXplX3QgcmVuZGVy
U2xpY2VTaXplLCBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIqIGFjY3VtdWxhdGlvbkJ1ZmZlcikK
ICAgICA6IG1fZmZ0S2VybmVsKGZmdFNpemUpCiAgICAgLCBtX2FjY3VtdWxhdGlvbkJ1ZmZlcihh
Y2N1bXVsYXRpb25CdWZmZXIpCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVy
U3RhZ2U6OnByb2Nlc3NJbkJhY2tncm91bmQoUmV2ZXJiQ29udm9sdmVyKiBjb252b2x2ZXIsIHNp
emVfCiAgICAgcHJvY2Vzcyhzb3VyY2UsIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKLXZvaWQgUmV2
ZXJiQ29udm9sdmVyU3RhZ2U6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKK3ZvaWQgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OnByb2Nlc3MoY29uc3QgZmxvYXQq
IHNvdXJjZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBBU1NFUlQoc291cmNlKTsK
ICAgICBpZiAoIXNvdXJjZSkKQEAgLTk2LDcgKzk2LDggQEAgdm9pZCBSZXZlcmJDb252b2x2ZXJT
dGFnZTo6cHJvY2VzcyhmbG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAg
IAogICAgIC8vIERlYWwgd2l0aCBwcmUtZGVsYXkgc3RyZWFtIDogbm90ZSBzcGVjaWFsIGhhbmRs
aW5nIG9mIHplcm8gZGVsYXkuCiAKLSAgICBmbG9hdCogcHJlRGVsYXllZFNvdXJjZTsKKyAgICBj
b25zdCBmbG9hdCogcHJlRGVsYXllZFNvdXJjZTsKKyAgICBmbG9hdCogcHJlRGVsYXllZERlc3Rp
bmF0aW9uOwogICAgIGZsb2F0KiB0ZW1wb3JhcnlCdWZmZXI7CiAgICAgYm9vbCBpc1RlbXBvcmFy
eUJ1ZmZlclNhZmUgPSBmYWxzZTsKICAgICBpZiAobV9wcmVEZWxheUxlbmd0aCA+IDApIHsKQEAg
LTEwOCwxMCArMTA5LDEyIEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OnByb2Nlc3MoZmxv
YXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIAogICAgICAgICBpc1RlbXBvcmFy
eUJ1ZmZlclNhZmUgPSBmcmFtZXNUb1Byb2Nlc3MgPD0gbV90ZW1wb3JhcnlCdWZmZXIuc2l6ZSgp
OwogCi0gICAgICAgIHByZURlbGF5ZWRTb3VyY2UgPSBtX3ByZURlbGF5QnVmZmVyLmRhdGEoKSAr
IG1fcHJlUmVhZFdyaXRlSW5kZXg7CisgICAgICAgIHByZURlbGF5ZWREZXN0aW5hdGlvbiA9IG1f
cHJlRGVsYXlCdWZmZXIuZGF0YSgpICsgbV9wcmVSZWFkV3JpdGVJbmRleDsKKyAgICAgICAgcHJl
RGVsYXllZFNvdXJjZSA9IHByZURlbGF5ZWREZXN0aW5hdGlvbjsKICAgICAgICAgdGVtcG9yYXJ5
QnVmZmVyID0gbV90ZW1wb3JhcnlCdWZmZXIuZGF0YSgpOyAgICAgICAgCiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gWmVybyBkZWxheQorICAgICAgICBwcmVEZWxheWVkRGVzdGluYXRpb24gPSAw
OwogICAgICAgICBwcmVEZWxheWVkU291cmNlID0gc291cmNlOwogICAgICAgICB0ZW1wb3JhcnlC
dWZmZXIgPSBtX3ByZURlbGF5QnVmZmVyLmRhdGEoKTsKICAgICAgICAgCkBAIC0xMzgsNyArMTQx
LDcgQEAgdm9pZCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6cHJvY2VzcyhmbG9hdCogc291cmNlLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogCiAgICAgLy8gRmluYWxseSBjb3B5IGlucHV0IHRvIHBy
ZS1kZWxheS4KICAgICBpZiAobV9wcmVEZWxheUxlbmd0aCA+IDApIHsKLSAgICAgICAgbWVtY3B5
KHByZURlbGF5ZWRTb3VyY2UsIHNvdXJjZSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vz
cyk7CisgICAgICAgIG1lbWNweShwcmVEZWxheWVkRGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZW9m
KGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgICAgIG1fcHJlUmVhZFdyaXRlSW5kZXgg
Kz0gZnJhbWVzVG9Qcm9jZXNzOwogCiAgICAgICAgIEFTU0VSVChtX3ByZVJlYWRXcml0ZUluZGV4
IDw9IG1fcHJlRGVsYXlMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKaW5kZXggZmMwNWEwZTA4ZmEzM2IwMjY4ZWNk
ZDM1NDc4YWFmYTk5OTNhZWUzNC4uOTgxMWJjNjAzMjE2NzY0NjAwYzljYjE3MjUxN2RlZjE1OGEz
NmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXJTdGFnZS5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgUmV2ZXJiQ29udm9sdmVy
U3RhZ2UgewogcHVibGljOgogICAgIC8vIHJlbmRlclBoYXNlIGlzIHVzZWZ1bCB0byBrbm93IHNv
IHRoYXQgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIHByZSB2ZXJzdXMgcG9zdCBkZWxheSBzbyB0aGF0
IHN0YWdlcyB3aWxsIHBlcmZvcm0KICAgICAvLyB0aGVpciBoZWF2eSB3b3JrIChGRlQgcHJvY2Vz
c2luZykgb24gZGlmZmVyZW50IHNsaWNlcyB0byBiYWxhbmNlIHRoZSBsb2FkIGluIGEgcmVhbC10
aW1lIHRocmVhZC4KLSAgICBSZXZlcmJDb252b2x2ZXJTdGFnZShmbG9hdCogaW1wdWxzZVJlc3Bv
bnNlLCBzaXplX3QgcmVzcG9uc2VMZW5ndGgsIHNpemVfdCByZXZlcmJUb3RhbExhdGVuY3ksIHNp
emVfdCBzdGFnZU9mZnNldCwgc2l6ZV90IHN0YWdlTGVuZ3RoLAorICAgIFJldmVyYkNvbnZvbHZl
clN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZXNwb25zZUxlbmd0
aCwgc2l6ZV90IHJldmVyYlRvdGFsTGF0ZW5jeSwgc2l6ZV90IHN0YWdlT2Zmc2V0LCBzaXplX3Qg
c3RhZ2VMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGZmdFNpemUsIHNp
emVfdCByZW5kZXJQaGFzZSwgc2l6ZV90IHJlbmRlclNsaWNlU2l6ZSwgUmV2ZXJiQWNjdW11bGF0
aW9uQnVmZmVyKiBhY2N1bXVsYXRpb25CdWZmZXIpOwogCiAgICAgLy8gV0FSTklORzogZnJhbWVz
VG9Qcm9jZXNzIG11c3QgYmUgc3VjaCB0aGF0IGl0IGV2ZW5seSBkaXZpZGVzIHRoZSBkZWxheSBi
dWZmZXIgc2l6ZSAoc3RhZ2Vfb2Zmc2V0KS4KLSAgICB2b2lkIHByb2Nlc3MoZmxvYXQqIHNvdXJj
ZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0
KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgdm9pZCBwcm9jZXNzSW5C
YWNrZ3JvdW5kKFJldmVyYkNvbnZvbHZlciogY29udm9sdmVyLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
SW5wdXRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5w
dXRCdWZmZXIuY3BwCmluZGV4IGYyNzBmNmZhYTRjNzRmYWY1MTliMzI3YTM3MmNlYzg5YTUxMGNk
ZTcuLjFiZTlhZjg4NGU0MjVlNGQwZTM4YjM4MGM2YWNhNDAwMmY1YTc0N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgUmV2ZXJiSW5wdXRCdWZmZXI6OlJldmVyYklucHV0QnVmZmVyKHNpemVf
dCBsZW5ndGgpCiB7CiB9CiAKLXZvaWQgUmV2ZXJiSW5wdXRCdWZmZXI6OndyaXRlKGZsb2F0KiBz
b3VyY2VQLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCit2b2lkIFJldmVyYklucHV0QnVmZmVyOjp3
cml0ZShjb25zdCBmbG9hdCogc291cmNlUCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKQogewogICAg
IHNpemVfdCBidWZmZXJMZW5ndGggPSBtX2J1ZmZlci5zaXplKCk7CiAgICAgYm9vbCBpc0NvcHlT
YWZlID0gbV93cml0ZUluZGV4ICsgbnVtYmVyT2ZGcmFtZXMgPD0gYnVmZmVyTGVuZ3RoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKaW5k
ZXggMTVhMjgxODI0ZDM2YmRlNjhkNzlhNWUxMGIzNTc5MjUxNjUxODk2OS4uNTAzNjU3NWI5ODYx
YmQ4Y2Q0ZTBhMWExMTVmNTAyNmFlNTc0ODliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBUaGUgcmVhbHRpbWUgYXVkaW8gdGhyZWFkIGtlZXBzIHdyaXRpbmcgc2FtcGxl
cyBoZXJlLgogICAgIC8vIFRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIGJ1ZmZlcidzIGxlbmd0
aCBpcyBldmVubHkgZGl2aXNpYmxlIGJ5IG51bWJlck9mRnJhbWVzIChmb3IgbmVhcmx5IGFsbCBj
YXNlcyB0aGlzIHdpbGwgYmUgZmluZSkuCiAgICAgLy8gRklYTUU6IHJlbW92ZSBudW1iZXJPZkZy
YW1lcyByZXN0cmljdGlvbi4uLgotICAgIHZvaWQgd3JpdGUoZmxvYXQqIHNvdXJjZVAsIHNpemVf
dCBudW1iZXJPZkZyYW1lcyk7CisgICAgdm9pZCB3cml0ZShjb25zdCBmbG9hdCogc291cmNlUCwg
c2l6ZV90IG51bWJlck9mRnJhbWVzKTsKIAogICAgIC8vIEJhY2tncm91bmQgdGhyZWFkcyBjYW4g
Y2FsbCB0aGlzIHRvIGNoZWNrIGlmIHRoZXJlJ3MgYW55dGhpbmcgdG8gcmVhZC4uLgogICAgIHNp
emVfdCB3cml0ZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV93cml0ZUluZGV4OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCmluZGV4IDBlNGI4
NDk4NTAxZTRiMzk2ZjA0MmIwNGFkNGNmZmQ1Y2MyZDNkNjIuLjRhZGViMjdhOWU4YTJlODIxYzQ1
YThjM2IwYzk3ZTdiOTNmM2YzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBTaW5jUmVzYW1w
bGVyOjppbml0aWFsaXplS2VybmVsKCkKICAgICB9CiB9CiAKLXZvaWQgU2luY1Jlc2FtcGxlcjo6
Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1l
cykKK3ZvaWQgU2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJjZShjb25zdCBmbG9hdCogYnVmZmVy
LCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKIHsKICAgICBBU1NFUlQobV9zb3VyY2VQ
cm92aWRlcik7CiAgICAgaWYgKCFtX3NvdXJjZVByb3ZpZGVyKQpAQCAtMTM1LDcgKzEzNSw5IEBA
IHZvaWQgU2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25l
ZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKICAgICAKICAgICAvLyBXcmFwIHRoZSBwcm92aWRlZCBi
dWZmZXIgYnkgYW4gQXVkaW9CdXMgZm9yIHVzZSBieSB0aGUgc291cmNlIHByb3ZpZGVyLgogICAg
IEF1ZGlvQnVzIGJ1cygxLCBudW1iZXJPZlNvdXJjZUZyYW1lcywgZmFsc2UpOwotICAgIGJ1cy5z
ZXRDaGFubmVsTWVtb3J5KDAsIGJ1ZmZlciwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOworCisgICAg
Ly8gRklYTUU6IGZpbmQgYSB3YXkgdG8gbWFrZSB0aGUgZm9sbG93aW5nIGNvbnN0LWNvcnJlY3Q6
CisgICAgYnVzLnNldENoYW5uZWxNZW1vcnkoMCwgY29uc3RfY2FzdDxmbG9hdCo+KGJ1ZmZlciks
IG51bWJlck9mU291cmNlRnJhbWVzKTsKICAgICAKICAgICBtX3NvdXJjZVByb3ZpZGVyLT5wcm92
aWRlSW5wdXQoJmJ1cywgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOwogfQpAQCAtMTQ2LDcgKzE0OCw3
IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZVByb3ZpZGVyIDogcHVibGljIEF1
ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGljOgotICAgIEJ1ZmZlclNvdXJjZVByb3ZpZGVyKGZs
b2F0KiBzb3VyY2UsIHNpemVfdCBudW1iZXJPZlNvdXJjZUZyYW1lcykKKyAgICBCdWZmZXJTb3Vy
Y2VQcm92aWRlcihjb25zdCBmbG9hdCogc291cmNlLCBzaXplX3QgbnVtYmVyT2ZTb3VyY2VGcmFt
ZXMpCiAgICAgICAgIDogbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAsIG1fc291cmNlRnJhbWVz
QXZhaWxhYmxlKG51bWJlck9mU291cmNlRnJhbWVzKQogICAgIHsKQEAgLTE1OSw3ICsxNjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9zb3VyY2UgfHwgIWJ1cykKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIAotICAgICAgICBmbG9hdCogYnVmZmVyID0gYnVzLT5jaGFubmVs
KDApLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBidWZmZXIgPSBidXMtPmNoYW5uZWwoMCktPm11
dGFibGVEYXRhKCk7CiAKICAgICAgICAgLy8gQ2xhbXAgdG8gbnVtYmVyIG9mIGZyYW1lcyBhdmFp
bGFibGUgYW5kIHplcm8tcGFkLgogICAgICAgICBzaXplX3QgZnJhbWVzVG9Db3B5ID0gbWluKG1f
c291cmNlRnJhbWVzQXZhaWxhYmxlLCBmcmFtZXNUb1Byb2Nlc3MpOwpAQCAtMTc0LDEzICsxNzYs
MTMgQEAgcHVibGljOgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgZmxvYXQqIG1fc291cmNl
OworICAgIGNvbnN0IGZsb2F0KiBtX3NvdXJjZTsKICAgICBzaXplX3QgbV9zb3VyY2VGcmFtZXNB
dmFpbGFibGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIFNpbmNSZXNhbXBsZXI6OnBy
b2Nlc3MoZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudW1iZXJP
ZlNvdXJjZUZyYW1lcykKK3ZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2Vzcyhjb25zdCBmbG9hdCog
c291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVz
KQogewogICAgIC8vIFJlc2FtcGxlIGFuIGluLW1lbW9yeSBidWZmZXIgdXNpbmcgYW4gQXVkaW9T
b3VyY2VQcm92aWRlci4KICAgICBCdWZmZXJTb3VyY2VQcm92aWRlciBzb3VyY2VQcm92aWRlcihz
b3VyY2UsIG51bWJlck9mU291cmNlRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAppbmRleCBiYmUwYzU1OGMzY2NjMjFlMDdhOWJiZjMzZjc1
MDI2NDIzNzJiZmYzLi45ZTk3NzhjNDY0MWZmOTU0NmJmYzE0MGUxNzUwMWY0YmY5MTBlNTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBAIC00
NCwxNCArNDQsMTQgQEAgcHVibGljOgogICAgIFNpbmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFj
dG9yLCB1bnNpZ25lZCBrZXJuZWxTaXplID0gMzIsIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zm
c2V0cyA9IDMyKTsKICAgICAKICAgICAvLyBQcm9jZXNzZXMgbnVtYmVyT2ZTb3VyY2VGcmFtZXMg
ZnJvbSBzb3VyY2UgdG8gcHJvZHVjZSBudW1iZXJPZlNvdXJjZUZyYW1lcyAvIHNjYWxlRmFjdG9y
IGZyYW1lcyBpbiBkZXN0aW5hdGlvbi4KLSAgICB2b2lkIHByb2Nlc3MoZmxvYXQqIHNvdXJjZSwg
ZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CisgICAg
dm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOwogCiAgICAgLy8gUHJvY2VzcyB3aXRoIGlucHV0
IHNvdXJjZSBjYWxsYmFjayBmdW5jdGlvbiBmb3Igc3RyZWFtaW5nIGFwcGxpY2F0aW9ucy4KICAg
ICB2b2lkIHByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciosIGZsb2F0KiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxp
emVLZXJuZWwoKTsKLSAgICB2b2lkIGNvbnN1bWVTb3VyY2UoZmxvYXQqIGJ1ZmZlciwgdW5zaWdu
ZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOworICAgIHZvaWQgY29uc3VtZVNvdXJjZShjb25zdCBm
bG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CiAgICAgCiAgICAg
ZG91YmxlIG1fc2NhbGVGYWN0b3I7CiAgICAgdW5zaWduZWQgbV9rZXJuZWxTaXplOwpAQCAtNzEs
NyArNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU291cmNlIGlzIGNvcGllZCBpbnRvIHRoaXMg
YnVmZmVyIGZvciBlYWNoIHByb2Nlc3NpbmcgcGFzcy4KICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9p
bnB1dEJ1ZmZlcjsKIAotICAgIGZsb2F0KiBtX3NvdXJjZTsKKyAgICBjb25zdCBmbG9hdCogbV9z
b3VyY2U7CiAgICAgdW5zaWduZWQgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGU7CiAgICAgCiAgICAg
Ly8gbV9zb3VyY2VQcm92aWRlciBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGF1ZGlvIGlucHV0IHN0
cmVhbSB0byB0aGUgcmVzYW1wbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vWmVyb1BvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVy
b1BvbGUuY3BwCmluZGV4IDJmYTQ0MDAzYTdhNTEwMGRlOTFiNzUwZjYxZjE3MTU1NDc1MmQzOGEu
LjllNmYxYjYzNTZlOWI3ODVkZjQwMGU0NDE1Njc2NDk1ZTUyNzEzNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFplcm9Qb2xlOjpwcm9jZXNzKGZsb2F0ICpzb3VyY2Us
IGZsb2F0ICpkZXN0aW5hdGlvbiwgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBaZXJv
UG9sZTo6cHJvY2Vzcyhjb25zdCBmbG9hdCAqc291cmNlLCBmbG9hdCAqZGVzdGluYXRpb24sIHVu
c2lnbmVkIGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBmbG9hdCB6ZXJvID0gbV96ZXJvOwogICAg
IGZsb2F0IHBvbGUgPSBtX3BvbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9aZXJvUG9sZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1Bv
bGUuaAppbmRleCA5M2ZkMGQ2Zjk3NTM3YTVmMmEwNzZiYTRmOWY2NjIyOGE3MjM5YmEzLi40Y2Ix
ZDE3NDU2M2YxNzViMjhjYWFjOTU1ZGE1NjI2OGJkZTFkZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICB2b2lkIHByb2Nlc3MoZmxvYXQgKnNvdXJjZSwgZmxvYXQgKmRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBm
bG9hdCAqc291cmNlLCBmbG9hdCAqZGVzdGluYXRpb24sIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2Vz
cyk7CiAKICAgICAvLyBSZXNldCBmaWx0ZXIgc3RhdGUuCiAgICAgdm9pZCByZXNldCgpIHsgbV9s
YXN0WCA9IDA7IG1fbGFzdFkgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZmZtcGVnL0ZGVEZyYW1lRkZNUEVHLmNwcAppbmRleCA5Zjg5MzI0NDUxZDc0
ZmJjODdiYmE3ZGNiYjg5YjRhNzg0MDE2ZDc5Li5kNDYyNGE3MGI2NjIzYmUxNWRiYmNlNTMxNDVk
ZTk5OGVjOGJlNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9m
Zm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2ZmbXBlZy9GRlRGcmFtZUZGTVBFRy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZG
VEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgVmVjdG9yTWF0aDo6
dnNtdWwoaW1hZ1AxLCAxLCAmc2NhbGUsIGltYWdQMSwgMSwgaGFsZlNpemUpOwogfQogCi12b2lk
IEZGVEZyYW1lOjpkb0ZGVChmbG9hdCogZGF0YSkKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0
IGZsb2F0KiBkYXRhKQogewogICAgIC8vIENvcHkgc2luY2UgcHJvY2Vzc2luZyBpcyBpbi1wbGFj
ZS4KICAgICBmbG9hdCogcCA9IG1fY29tcGxleERhdGEuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApp
bmRleCA5NTUwMjYzNmI5M2FkM2JjZjg3ZDQ1MDVhZDA3YmFhNzEwZDE1YTUyLi5kMGVjZjFhMzEz
MDdkZWI5MTE0MmViZTNjNWVhYTEyNGQ2M2EzMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMjEy
LDcgKzIxMiw3IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRl
QnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vCiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7CiAgICAgICAgICAgICBidWZmZXJM
aXN0LT5tQnVmZmVyc1tpXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOwogICAgICAgICAgICAgYnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGFCeXRlU2l6ZSA9IG51bWJlck9mRnJhbWVzICogc2l6ZW9m
KGZsb2F0KTsKLSAgICAgICAgICAgIGJ1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhID0gYXVk
aW9CdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgICAgIGJ1ZmZlckxpc3QtPm1CdWZm
ZXJzW2ldLm1EYXRhID0gYXVkaW9CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBB
dWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9u
bwogCiAgICAgaWYgKG1peFRvTW9ubyAmJiBudW1iZXJPZkNoYW5uZWxzID09IDIpIHsKICAgICAg
ICAgLy8gTWl4IHN0ZXJlbyBkb3duIHRvIG1vbm8KLSAgICAgICAgZmxvYXQqIGRlc3RMID0gYXVk
aW9CdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RMID0gYXVkaW9C
dXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtYmVyT2ZGcmFtZXM7IGkrKykKICAgICAgICAgICAgIGRlc3RMW2ldID0gMC41ZiAq
IChidWZmZXJMW2ldICsgYnVmZmVyUltpXSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKaW5kZXggNmRmYmJlY2NiMmRlZjhk
OWJiNDgyNGNmYTdlYTVhMTNhZjk0NTVlNC4uOGNlZjkyOGQ0NzI1N2M5MWY1ZTI3OWY5ZTcwZjU1
NGE0ZWE5YjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0ZGVEZyYW1lTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
RkZURnJhbWVNYWMuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBGRlRGcmFtZTo6bXVsdGlw
bHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIFZlY3Rvck1hdGg6OnZzbXVsKGltYWdQMSwg
MSwgJnNjYWxlLCBpbWFnUDEsIDEsIGhhbGZTaXplKTsKIH0KIAotdm9pZCBGRlRGcmFtZTo6ZG9G
RlQoZmxvYXQqIGRhdGEpCit2b2lkIEZGVEZyYW1lOjpkb0ZGVChjb25zdCBmbG9hdCogZGF0YSkK
IHsKICAgICB2RFNQX2N0b3ooKERTUENvbXBsZXgqKWRhdGEsIDIsICZtX2ZyYW1lLCAxLCBtX0ZG
VFNpemUgLyAyKTsKICAgICB2RFNQX2ZmdF96cmlwKG1fRkZUU2V0dXAsICZtX2ZyYW1lLCAxLCBt
X2xvZzJGRlRTaXplLCBGRlRfRk9SV0FSRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9ta2wvRkZURnJhbWVNS0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWtsL0ZGVEZyYW1lTUtMLmNwcAppbmRleCA2YmYyYzFlMjA0MTMyMThlMDAzNWFj
ZjI0MjNmZjQ5MDgxNGI3OGYwLi4wZjNhMjgyN2Y1OTg5OWJjZjIyNjI0NmFmZTJmNGQzZjdlYjA0
Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ta2wvRkZURnJh
bWVNS0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21rbC9GRlRGcmFt
ZU1LTC5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEZGVEZyYW1lOjptdWx0aXBseShjb25z
dCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgfQogfQogCi12b2lkIEZGVEZyYW1lOjpkb0ZGVChmbG9h
dCogZGF0YSkKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKQogewogICAg
IC8vIENvbXB1dGUgRm9yd2FyZCB0cmFuc2Zvcm0uCiAgICAgTUtMX0xPTkcgc3RhdHVzID0gRGZ0
aUNvbXB1dGVGb3J3YXJkKG1faGFuZGxlLCBkYXRhLCBtX2NvbXBsZXhEYXRhLmRhdGEoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApp
bmRleCAxZmQyZjM4NDgyNmU3YTM4OWQyZjYyMDRlYTU0MjE2YTdmMmYyMWIxLi5hMGNiMTNhMmJm
NzcwOTRmYzA4YTczY2EyZjk1N2UyMTg2MGVhNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2
b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaXNTYWZlKSB7CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygp
OyArK2kpCi0gICAgICAgICAgICAgICAgICAgIG1lbXNldChvdXRwdXRCdXMtPmNoYW5uZWwoaSkt
PmRhdGEoKSArIHplcm9TdGFydEZyYW1lLCAwLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9aZXJv
KTsKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0
YWJsZURhdGEoKSArIHplcm9TdGFydEZyYW1lLCAwLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9a
ZXJvKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsK
QEAgLTE5OSwxMSArMTk5LDExIEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJG
cm9tQnVmZmVyKEF1ZGlvQnVzKiBidXMsIHVuc2lnbmVkIGRlc3RpbmF0aW9uCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIEdldCB0aGUgZGVzdGluYXRpb24gcG9pbnRlcnMuCi0gICAgZmxvYXQq
IGRlc3RpbmF0aW9uTCA9IGJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgIGZsb2F0KiBkZXN0
aW5hdGlvbkwgPSBidXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7CiAgICAgQVNTRVJUKGRl
c3RpbmF0aW9uTCk7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkwpCiAgICAgICAgIHJldHVybjsKLSAg
ICBmbG9hdCogZGVzdGluYXRpb25SID0gKG51bWJlck9mQ2hhbm5lbHMgPCAyKSA/IDAgOiBidXMt
PmNoYW5uZWwoMSktPmRhdGEoKTsKKyAgICBmbG9hdCogZGVzdGluYXRpb25SID0gKG51bWJlck9m
Q2hhbm5lbHMgPCAyKSA/IDAgOiBidXMtPmNoYW5uZWwoMSktPm11dGFibGVEYXRhKCk7CiAgICAg
CiAgICAgYm9vbCBpc1N0ZXJlbyA9IGRlc3RpbmF0aW9uUjsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCmluZGV4IDEyMjQzYzBjOTliZTFjYzc3NTNl
YzJhOWY3OTUyODM5Zjg2OTk2MjUuLmUxYWVjNzU4ODE1NjIwYzlhNmJiMDhlMGI2NzVmNTE2MTFl
YmY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApA
QCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpjaGVja0ZvckRpcnR5Q29l
ZmZpY2llbnRzKCkKICAgICB9CiB9CiAKLXZvaWQgQmlxdWFkUHJvY2Vzc29yOjpwcm9jZXNzKEF1
ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykKK3ZvaWQgQmlxdWFkUHJvY2Vzc29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3Vy
Y2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAg
ICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOwpA
QCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlvQnVz
KiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyCiAgICAgICAgICAgICAK
ICAgICAvLyBGb3IgZWFjaCBjaGFubmVsIG9mIG91ciBpbnB1dCwgcHJvY2VzcyB1c2luZyB0aGUg
Y29ycmVzcG9uZGluZyBCaXF1YWREU1BLZXJuZWwgaW50byB0aGUgb3V0cHV0IGNoYW5uZWwuCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fa2VybmVscy5zaXplKCk7ICsraSkKLSAgICAg
ICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNzKHNvdXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0
aW5hdGlvbi0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBt
X2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0
aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogfQogCiB2
b2lkIEJpcXVhZFByb2Nlc3Nvcjo6c2V0VHlwZShGaWx0ZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCmluZGV4IGM3ZjdkMzA2OGEzY2Y1ZGU1Yzgy
NDEzMTkxM2JjZjY0NTkyMzc5ODYuLjkxYTFjY2NkMTcwNDlkMTQ4ODgxZDAwNDYzOTY3OTA3M2Jj
ZGQ3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC01
OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXVkaW9E
U1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpOwogICAgICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBz
b3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAK
ICAgICAvLyBHZXQgdGhlIG1hZ25pdHVkZSBhbmQgcGhhc2UgcmVzcG9uc2Ugb2YgdGhlIGZpbHRl
ciBhdCB0aGUgZ2l2ZW4KICAgICAvLyBzZXQgb2YgZnJlcXVlbmNpZXMgKGluIEh6KS4gVGhlIHBo
YXNlIHJlc3BvbnNlIGlzIGluIHJhZGlhbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCmluZGV4IDQyMjE1MDljZjk5YzYxNzQzNWVlODA4NjNk
ZWNmMjhlYmUwN2FhNDguLmJmODMxNDc1MzMxNWQwYjVjYWNiYWM5ZGNjODExNDU0OTE0MzgxMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3Bw
CkBAIC0xNjEsMTAgKzE2MSwxMCBAQCB2b2lkIEphdmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3Mo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICBpZiAoIWNoYW5uZWxzQXJlR29vZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZmxvYXQqIHNvdXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKS0+
ZGF0YSgpOwotICAgIGZsb2F0KiBzb3VyY2VSID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/
IGlucHV0QnVzLT5jaGFubmVsKDEpLT5kYXRhKCkgOiAwOwotICAgIGZsb2F0KiBkZXN0aW5hdGlv
bkwgPSBvdXRwdXRCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRp
b25SID0gb3V0cHV0QnVzLT5jaGFubmVsKDEpLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNv
dXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBz
b3VyY2VSID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsKDEp
LT5kYXRhKCkgOiAwOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5u
ZWwoMCktPm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1
cy0+Y2hhbm5lbCgxKS0+bXV0YWJsZURhdGEoKTsKIAogICAgIC8vIENvcHkgZnJvbSB0aGUgaW5w
dXQgdG8gdGhlIGlucHV0IGJ1ZmZlci4gIFNlZSAiYnVmZmVyc0FyZUdvb2QiIGNoZWNrIGFib3Zl
IGZvciBzYWZldHkuCiAgICAgc2l6ZV90IGJ5dGVzVG9Db3B5ID0gc2l6ZW9mKGZsb2F0KSAqIGZy
YW1lc1RvUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGFlMTgzNWI5YWFiODZmNGIxMmUxYjQ1
MjhlZWNjMzI5MDQxOGMzYWMuLjE5OGE1MDIwYmU5MWQwMGRiMTBmNWE1MDkzMDc2MTI2ODY5OTZk
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpyZW5kZXIoKQogICAgICAgICBzaXplX3QgZnJhbWVzQXZhaWxhYmxl
VG9Db3B5ID0gbWluKGZyYW1lc1RvUHJvY2VzcywgcmVuZGVyUXVhbnR1bVNpemUpOwogICAgICAg
ICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXgg
PCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewotICAgICAgICAgICAgZmxvYXQq
IHNvdXJjZSA9IG1fcmVuZGVyQnVzLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKKyAg
ICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBtX3JlbmRlckJ1cy0+Y2hhbm5lbChjaGFu
bmVsSW5kZXgpLT5kYXRhKCk7CiAgICAgICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBtX3Jl
bmRlclRhcmdldC0+Z2V0Q2hhbm5lbERhdGEoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwogICAgICAg
ICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uICsgbiwgc291cmNlLCBzaXplb2YoZmxvYXQpICogZnJh
bWVzQXZhaWxhYmxlVG9Db3B5KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCBjY2Q4NjU1MjI2ZDUxOTQ0YzZmMDE1ZjEwOTVm
MTM1MDE3ZWNiNzQzLi5hM2Y4MDdkODM3Zjc3YzQ5Y2NiMDQxNTUwYTZhOWM5MGQ4NGM1ZTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6d3JpdGVJbnB1dChBdWRpb0J1cyog
YnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgIAogICAgIC8vIFBlcmZvcm0gcmVhbC10
aW1lIGFuYWx5c2lzCiAgICAgLy8gRklYTUUgOiBmb3Igbm93IGp1c3QgdXNlIGxlZnQgY2hhbm5l
bCAobXVzdCBtaXggaWYgc3RlcmVvIHNvdXJjZSkKLSAgICBmbG9hdCogc291cmNlID0gYnVzLT5j
aGFubmVsKDApLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IGJ1cy0+Y2hhbm5l
bCgwKS0+ZGF0YSgpOwogCiAgICAgLy8gVGhlIHNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIHNhbml0
eSBjaGVja2VkIHdpdGggaXNCdXNHb29kIGFib3ZlLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCBmNzU3MWRlYmI3MTJjOTU0
ZDJhZjlhNDhmNjY0MWE4MjM3NjYwZDZjLi40ZjgzZTE2Njk4Y2UxNDY0MzgwNjBmODljYzE1ZTM3
OTAzYWM4NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVy
UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJv
Y2Vzc29yLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnNl
dEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCiAgICAgbV9jdXJ2ZSA9IGN1cnZlOwogfQogCi12
b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBXYXZlU2hhcGVy
UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBpZiAoIWlzSW5pdGlhbGl6
ZWQoKSkgewogICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOwpAQCAtNjgsNyArNjgsNyBAQCB2
b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uLCBzaXplXwogICAgIGlmIChtX3Byb2Nlc3NMb2NrLnRyeUxvY2soKSkg
eyAgICAgICAgCiAgICAgICAgIC8vIEZvciBlYWNoIGNoYW5uZWwgb2Ygb3VyIGlucHV0LCBwcm9j
ZXNzIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIFdhdmVTaGFwZXJEU1BLZXJuZWwgaW50byB0aGUg
b3V0cHV0IGNoYW5uZWwuCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tlcm5l
bHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNl
LT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5kYXRhKCksIGZy
YW1lc1RvUHJvY2Vzcyk7CisgICAgICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNl
LT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0
YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgICAgIG1fcHJvY2Vzc0xvY2sudW5sb2NrKCk7
CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9j
ZXNzb3IuaAppbmRleCA0MDE2ZThiZGVmNzFlMTIxMGRmNDM0OTg5NjljMzBiZjU5YWNjYThlLi40
NzM1ZWZkYTI1ZjcyMzNhMmExNzQ5ZDNjYTU0NTBmMjI0NzlkY2IyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2Vy
bmVsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRp
b0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICB2b2lkIHNldEN1cnZlKEZsb2F0MzJB
cnJheSopOwogICAgIEZsb2F0MzJBcnJheSogY3VydmUoKSB7IHJldHVybiBtX2N1cnZlLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0
aW9uQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5h
dGlvbkNocm9taXVtLmNwcAppbmRleCBlNmVmN2QxMGI3ZTNlMWNhNmNiOGEyNjZlYjBiNDRlMzk4
NjE2YWI5Li5jZjIzZmE3YzhmNjM1NTAyZGUwMjQxNmQ5OTJkNWViZTIyZTkxODBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJv
bWl1bS5jcHAKQEAgLTIxOSw4ICsyMTksOCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1
bTo6RklGTzo6ZmlsbEJ1ZmZlcihzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCiAgICAgICAgIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOwog
ICAgICAgICAKICAgICAgICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgICAgIGZs
b2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+
ZGF0YSgpOwotICAgICAgICAgICAgZmxvYXQqIHNvdXJjZSA9IG1fdGVtcEJ1cy5jaGFubmVsKGNo
YW5uZWxJbmRleCktPmRhdGEoKTsKKyAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1f
Zmlmb0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKTsKKyAgICAg
ICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBtX3RlbXBCdXMuY2hhbm5lbChjaGFubmVsSW5k
ZXgpLT5kYXRhKCk7CiAKICAgICAgICAgICAgIGJvb2wgaXNDb3B5R29vZCA9IChwYXJ0MUxlbmd0
aCA8PSBtX3Byb3ZpZGVyU2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChw
YXJ0MUxlbmd0aCArIHBhcnQyTGVuZ3RoKSA8PSBtX3Byb3ZpZGVyU2l6ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123063</attachid>
            <date>2012-01-18 20:45:59 -0800</date>
            <delta_ts>2012-01-18 21:47:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76573-20120118204558.patch</filename>
            <type>text/plain</type>
            <size>67731</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYxZWFkZGViM2VjYTVj
MjI2OTRiMDBkZmU4MzRhMmZjNjk5MWViYS4uYjZiOWY2Y2MyMGVjM2UxY2ZlMmVmZmJlMDg1NmUz
NzAwNTQ0MzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMi0wMS0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkF1ZGlvIEFQ
SSBjb25zdC1jb3JyZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHM7IG5vIG5ldCBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgc28g
Y292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGUgbm9uLWNvbnN0IGRhdGEo
KSBhY2Nlc3NvciB3YXMgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIHRvIGV4cG9zZSBjb25zdC1jb3Jy
ZWN0bmVzcworICAgICAgICBidWdzIGR1cmluZyBjb21waWxlIHRpbWU6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5u
ZWw6Om11dGFibGVEYXRhKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJl
IG1hZGUgY29uc3QgY29ycmVjdDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0FycmF5Ojpjb3B5VG9SYW5nZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNy
ZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZUQ29udm9sdmVyOjpwcm9jZXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9QYWRk
ZWRGRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlclN0YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0
YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVz
YW1wbGVyOjpjb25zdW1lU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6
OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpa
ZXJvUG9sZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1czo6Y2hhbm5lbEJ5VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpnYWluKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Byb2Nlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnBy
b2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXF1YWxQb3dlclBhbm5lcjo6cGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6bnVtYmVyT2ZBemltdXRocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjpwcm9jZXNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9s
dmVyOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9ta2wvRkZURnJhbWVNS0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRv
RkZUKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIHRv
IHVzZSB0aGUgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIGFjY2Vzc29yOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpwcm9j
ZXNzV2l0aEdhaW5Gcm9tTW9ub1N0ZXJlbyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6
Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVs
OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNvcHlGcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6Y29weUZyb21SYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnN1bUZyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcjo6cHJvY2Vz
cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
cXVhbFBvd2VyUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJu
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnBh
bik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6cHJvY2Vzcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVy
Yjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0ZGVEZyYW1lTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZG
VCk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1
YWRQcm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2Vz
cyk6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKToK
KyAgICAgICAgKiB3ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lQW5hbHlzZXI6OndyaXRlSW5wdXQpOgorICAgICAgICAqIHdlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nl
c3Nvcjo6cHJvY2Vzcyk6CisKIDIwMTItMDEtMTggIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0
aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiNjc4ZDZjZmM1OTY3NmE5ZmViYmNm
Nzc5NjFjZDZmZGQzMTUxNjZmLi5iZGI3MGI2Mzc2NmZiZmQ2MDZlNDJjNmMwMGZhMWViZGRhMDY3
NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAx
LTE4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2Vi
QXVkaW8gQVBJIGNvbnN0LWNvcnJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHdlcmUgbW9kaWZpZWQgdG8g
dXNlIHRoZSByZW5hbWVkIG11dGFibGVEYXRhKCkgYWNjZXNzb3I6CisgICAgICAgICogc3JjL0F1
ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ2hyb21pdW06OkZJRk86OmZpbGxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNocm9taXVtOjpGSUZPOjpjb25zdW1lKToKKwogMjAxMi0wMS0xOCAgRG9t
aW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBY2Nlc3NpYmls
aXR5OiBDaHJvbWl1bSBuZWVkcyBtZXRob2RzIHRvIHNjcm9sbCBhbiBvYmplY3QgaW50byB2aWV3
IG9yIHRvIGEgc3BlY2lmaWMgbG9jYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0FycmF5LmgKaW5kZXggYTE0Yzk1MGRkNmZjN2NjYmU4YjA0YjFlOTI2MGRhMmIxMDIx
ZGE1OC4uN2EyMjUxYjM4YjJmNDJlMDVjOGU0MGExMGJiNzM0MmM0YjJlNjRkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaApAQCAtMTI3LDcgKzEyNyw3IEBA
IHB1YmxpYzoKICAgICAgICAgbWVtc2V0KHRoaXMtPmRhdGEoKSArIHN0YXJ0LCAwLCBzaXplb2Yo
VCkgKiAoZW5kIC0gc3RhcnQpKTsKICAgICB9CiAKLSAgICB2b2lkIGNvcHlUb1JhbmdlKFQqIHNv
dXJjZURhdGEsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCisgICAgdm9pZCBjb3B5VG9S
YW5nZShjb25zdCBUKiBzb3VyY2VEYXRhLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKQog
ICAgIHsKICAgICAgICAgYm9vbCBpc1NhZmUgPSAoc3RhcnQgPD0gZW5kKSAmJiAoZW5kIDw9IHRo
aXMtPnNpemUoKSk7CiAgICAgICAgIEFTU0VSVChpc1NhZmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCmluZGV4IDMwNDg5YmFhNzUxZTEzNDNkNjcyOWFmNDY4
YjY5MjU4YzcwYTdjYWMuLmI4MTA3Yjk1NzliOTg2NmE1ZmExYTc2OTI0MzdlNWY5ZTcxMzY3N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKQEAgLTEzMCw2
ICsxMzAsMTEgQEAgQXVkaW9DaGFubmVsKiBBdWRpb0J1czo6Y2hhbm5lbEJ5VHlwZSh1bnNpZ25l
ZCBjaGFubmVsVHlwZSkKICAgICByZXR1cm4gMDsKIH0KIAorY29uc3QgQXVkaW9DaGFubmVsKiBB
dWRpb0J1czo6Y2hhbm5lbEJ5VHlwZSh1bnNpZ25lZCB0eXBlKSBjb25zdAoreworICAgIHJldHVy
biBjb25zdF9jYXN0PEF1ZGlvQnVzKj4odGhpcyktPmNoYW5uZWxCeVR5cGUodHlwZSk7Cit9CisK
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhbm5lbCBjb3VudCBhbmQgZnJhbWUtc2l6ZSBtYXRj
aC4KIGJvb2wgQXVkaW9CdXM6OnRvcG9sb2d5TWF0Y2hlcyhjb25zdCBBdWRpb0J1cyYgYnVzKSBj
b25zdAogewpAQCAtMTQzLDcgKzE0OCw3IEBAIGJvb2wgQXVkaW9CdXM6OnRvcG9sb2d5TWF0Y2hl
cyhjb25zdCBBdWRpb0J1cyYgYnVzKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNz
T3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKEF1ZGlvQnVz
KiBzb3VyY2VCdWZmZXIsIHVuc2lnbmVkIHN0YXJ0RnJhbWUsIHVuc2lnbmVkIGVuZEZyYW1lKQor
UGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ1ZmZlckZyb21SYW5nZShjb25z
dCBBdWRpb0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBl
bmRGcmFtZSkKIHsKICAgICBzaXplX3QgbnVtYmVyT2ZTb3VyY2VGcmFtZXMgPSBzb3VyY2VCdWZm
ZXItPmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMgPSBzb3VyY2VCdWZm
ZXItPm51bWJlck9mQ2hhbm5lbHMoKTsKQEAgLTM0NSw4ICszNTAsOCBAQCB2b2lkIEF1ZGlvQnVz
Ojpwcm9jZXNzV2l0aEdhaW5Gcm9tTW9ub1N0ZXJlbyhjb25zdCBBdWRpb0J1cyAmc291cmNlQnVz
LCBmbG9hdCogbAogICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVzU2FmZS5jaGFu
bmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+ZGF0YSgpOwogICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VS
ID0gbnVtYmVyT2ZTb3VyY2VDaGFubmVscyA+IDEgPyBzb3VyY2VCdXNTYWZlLmNoYW5uZWxCeVR5
cGUoQ2hhbm5lbFJpZ2h0KS0+ZGF0YSgpIDogMDsKIAotICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwg
PSBjaGFubmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+ZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5h
dGlvblIgPSBudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHMgPiAxID8gY2hhbm5lbEJ5VHlwZShD
aGFubmVsUmlnaHQpLT5kYXRhKCkgOiAwOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBjaGFu
bmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+bXV0YWJsZURhdGEoKTsKKyAgICBmbG9hdCogZGVzdGlu
YXRpb25SID0gbnVtYmVyT2ZEZXN0aW5hdGlvbkNoYW5uZWxzID4gMSA/IGNoYW5uZWxCeVR5cGUo
Q2hhbm5lbFJpZ2h0KS0+bXV0YWJsZURhdGEoKSA6IDA7CiAKICAgICBjb25zdCBmbG9hdCBEZXpp
cHBlclJhdGUgPSAwLjAwNWY7CiAgICAgaW50IGZyYW1lc1RvUHJvY2VzcyA9IGxlbmd0aCgpOwpA
QCAtNDM3LDcgKzQ0Miw3IEBAIHZvaWQgQXVkaW9CdXM6OmNvcHlXaXRoU2FtcGxlQWNjdXJhdGVH
YWluVmFsdWVzRnJvbShjb25zdCBBdWRpb0J1cyAmc291cmNlQnVzLCBmCiAgICAgZm9yICh1bnNp
Z25lZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzKCk7
ICsrY2hhbm5lbEluZGV4KSB7CiAgICAgICAgIGlmIChzb3VyY2VCdXMubnVtYmVyT2ZDaGFubmVs
cygpID09IG51bWJlck9mQ2hhbm5lbHMoKSkKICAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZUJ1
cy5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0
aW9uID0gY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBkZXN0
aW5hdGlvbiA9IGNoYW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKTsKICAgICAgICAg
dm11bChzb3VyY2UsIDEsIGdhaW5WYWx1ZXMsIDEsIGRlc3RpbmF0aW9uLCAxLCBudW1iZXJPZkdh
aW5WYWx1ZXMpOwogICAgIH0KIH0KQEAgLTQ1Miw3ICs0NTcsNyBAQCB2b2lkIEF1ZGlvQnVzOjpz
dW1XaXRoR2FpbkZyb20oY29uc3QgQXVkaW9CdXMgJnNvdXJjZUJ1cywgZmxvYXQqIGxhc3RNaXhH
YWluLCBmbAogICAgIHByb2Nlc3NXaXRoR2FpbkZyb20oc291cmNlQnVzLCBsYXN0TWl4R2Fpbiwg
dGFyZ2V0R2FpbiwgdHJ1ZSk7CiB9CiAKLVBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpj
cmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIGJvb2wgbWl4
VG9Nb25vLCBkb3VibGUgbmV3U2FtcGxlUmF0ZSkKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlv
QnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VC
dXMsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgbmV3U2FtcGxlUmF0ZSkKIHsKICAgICAvLyBzb3Vy
Y2VCdXMncyBzYW1wbGUtcmF0ZSBtdXN0IGJlIGtub3duLgogICAgIEFTU0VSVChzb3VyY2VCdXMg
JiYgc291cmNlQnVzLT5zYW1wbGVSYXRlKCkpOwpAQCAtNDc2LDcgKzQ4MSw3IEBAIFBhc3NPd25Q
dHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKEF1ZGlv
QnVzKiBzb3VyY2VCdXMsCiAgICAgfQogICAgIAogICAgIC8vIEZpcnN0LCBtaXggdG8gbW9ubyAo
aWYgbmVjZXNzYXJ5KSB0aGVuIHNhbXBsZS1yYXRlIGNvbnZlcnQuCi0gICAgQXVkaW9CdXMqIHJl
c2FtcGxlclNvdXJjZUJ1czsKKyAgICBjb25zdCBBdWRpb0J1cyogcmVzYW1wbGVyU291cmNlQnVz
OwogICAgIE93blB0cjxBdWRpb0J1cz4gbWl4ZWRNb25vQnVzOwogICAgIGlmIChtaXhUb01vbm8p
IHsKICAgICAgICAgbWl4ZWRNb25vQnVzID0gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25v
KHNvdXJjZUJ1cyk7CkBAIC00OTcsOCArNTAyLDggQEAgUGFzc093blB0cjxBdWRpb0J1cz4gQXVk
aW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMqIHNvdXJjZUJ1cywK
IAogICAgIC8vIFNhbXBsZS1yYXRlIGNvbnZlcnQgZWFjaCBjaGFubmVsLgogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkRlc3RpbmF0aW9uQ2hhbm5lbHM7ICsraSkgewotICAg
ICAgICBmbG9hdCogc291cmNlID0gcmVzYW1wbGVyU291cmNlQnVzLT5jaGFubmVsKGkpLT5kYXRh
KCk7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVs
KGkpLT5kYXRhKCk7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSByZXNhbXBsZXJTb3Vy
Y2VCdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0g
ZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CiAKICAgICAgICAgU2lu
Y1Jlc2FtcGxlciByZXNhbXBsZXIoc2FtcGxlUmF0ZVJhdGlvKTsKICAgICAgICAgcmVzYW1wbGVy
LnByb2Nlc3Moc291cmNlLCBkZXN0aW5hdGlvbiwgc291cmNlTGVuZ3RoKTsKQEAgLTUwOCw3ICs1
MTMsNyBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRl
Q29udmVydGluZyhBdWRpb0J1cyogc291cmNlQnVzLAogICAgIHJldHVybiBkZXN0aW5hdGlvbkJ1
cy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVC
eU1peGluZ1RvTW9ubyhBdWRpb0J1cyogc291cmNlQnVzKQorUGFzc093blB0cjxBdWRpb0J1cz4g
QXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMp
CiB7CiAgICAgc3dpdGNoIChzb3VyY2VCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSkgewogICAgIGNh
c2UgMToKQEAgLTUxOSw5ICs1MjQsOSBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6
Y3JlYXRlQnlNaXhpbmdUb01vbm8oQXVkaW9CdXMqIHNvdXJjZUJ1cykKICAgICAgICAgICAgIHVu
c2lnbmVkIG4gPSBzb3VyY2VCdXMtPmxlbmd0aCgpOwogICAgICAgICAgICAgT3duUHRyPEF1ZGlv
QnVzPiBkZXN0aW5hdGlvbkJ1cyhhZG9wdFB0cihuZXcgQXVkaW9CdXMoMSwgbikpKTsKIAotICAg
ICAgICAgICAgZmxvYXQqIHNvdXJjZUwgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsK
LSAgICAgICAgICAgIGZsb2F0KiBzb3VyY2VSID0gc291cmNlQnVzLT5jaGFubmVsKDEpLT5kYXRh
KCk7Ci0gICAgICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hh
bm5lbCgwKS0+ZGF0YSgpOworICAgICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBzb3Vy
Y2VCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3Vy
Y2VSID0gc291cmNlQnVzLT5jaGFubmVsKDEpLT5kYXRhKCk7CisgICAgICAgICAgICBmbG9hdCog
ZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsK
ICAgICAgICAgCiAgICAgICAgICAgICAvLyBEbyB0aGUgbW9ubyBtaXhkb3duLgogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oCmluZGV4IDYzNzBjOGI1MjM0NjE0N2NhODcwYzMxZTUzY2M3YWNk
NDU4NzNiZmMuLmIzZGEwZjQ1MWQxODE0M2E3YjAxZjRjZGQyMDk3NzAwZDhkMTU5YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaApAQCAtNzEsNiArNzEsNyBAQCBw
dWJsaWM6CiAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNoYW5uZWwpIHsgcmV0
dXJuIG1fY2hhbm5lbHNbY2hhbm5lbF0uZ2V0KCk7IH0KICAgICBjb25zdCBBdWRpb0NoYW5uZWwq
IGNoYW5uZWwodW5zaWduZWQgY2hhbm5lbCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxBdWRp
b0J1cyo+KHRoaXMpLT5tX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgpOyB9CiAgICAgQXVkaW9DaGFu
bmVsKiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUpOworICAgIGNvbnN0IEF1ZGlvQ2hhbm5l
bCogY2hhbm5lbEJ5VHlwZSh1bnNpZ25lZCB0eXBlKSBjb25zdDsKIAogICAgIC8vIE51bWJlciBv
ZiBzYW1wbGUtZnJhbWVzCiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9CkBAIC04NywyNCArODgsMjQgQEAgcHVibGljOgogCiAgICAgLy8gQ3JlYXRlcyBhIG5l
dyBidWZmZXIgZnJvbSBhIHJhbmdlIGluIHRoZSBzb3VyY2UgYnVmZmVyLgogICAgIC8vIDAgbWF5
IGJlIHJldHVybmVkIGlmIHRoZSByYW5nZSBkb2VzIG5vdCBmaXQgaW4gdGhlIHNvdXJjZUJ1ZmZl
cgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdWZmZXJGcm9tUmFuZ2Uo
QXVkaW9CdXMqIHNvdXJjZUJ1ZmZlciwgdW5zaWduZWQgc3RhcnRGcmFtZSwgdW5zaWduZWQgZW5k
RnJhbWUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdWZmZXJGcm9t
UmFuZ2UoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1ZmZlciwgdW5zaWduZWQgc3RhcnRGcmFtZSwg
dW5zaWduZWQgZW5kRnJhbWUpOwogCiAKICAgICAvLyBDcmVhdGVzIGEgbmV3IEF1ZGlvQnVzIGJ5
IHNhbXBsZS1yYXRlIGNvbnZlcnRpbmcgc291cmNlQnVzIHRvIHRoZSBuZXdTYW1wbGVSYXRlLgog
ICAgIC8vIHNldFNhbXBsZVJhdGUoKSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGNhbGxlZCBv
biBzb3VyY2VCdXMuCiAgICAgLy8gTm90ZTogc2FtcGxlLXJhdGUgY29udmVyc2lvbiBpcyBhbHJl
YWR5IGhhbmRsZWQgaW4gdGhlIGZpbGUtcmVhZGluZyBjb2RlIGZvciB0aGUgbWFjIHBvcnQsIHNv
IHdlIGRvbid0IG5lZWQgdGhpcy4KLSAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0J1cz4gY3Jl
YXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhBdWRpb0J1cyogc291cmNlQnVzLCBib29sIG1peFRv
TW9ubywgZG91YmxlIG5ld1NhbXBsZVJhdGUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlv
QnVzPiBjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VC
dXMsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgbmV3U2FtcGxlUmF0ZSk7CiAKICAgICAvLyBDcmVh
dGVzIGEgbmV3IEF1ZGlvQnVzIGJ5IG1peGluZyBhbGwgdGhlIGNoYW5uZWxzIGRvd24gdG8gbW9u
by4KICAgICAvLyBJZiBzb3VyY2VCdXMgaXMgYWxyZWFkeSBtb25vLCB0aGVuIHRoZSByZXR1cm5l
ZCBBdWRpb0J1cyB3aWxsIHNpbXBseSBiZSBhIGNvcHkuCi0gICAgc3RhdGljIFBhc3NPd25QdHI8
QXVkaW9CdXM+IGNyZWF0ZUJ5TWl4aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3VyY2VCdXMpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCeU1peGluZ1RvTW9ubyhjb25zdCBB
dWRpb0J1cyogc291cmNlQnVzKTsKIAogICAgIC8vIFNjYWxlcyBhbGwgc2FtcGxlcyBieSB0aGUg
c2FtZSBhbW91bnQuCiAgICAgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSk7CiAKICAgICAvLyBNYXN0
ZXIgZ2FpbiBmb3IgdGhpcyBidXMgLSB1c2VkIHdpdGggc3VtV2l0aEdhaW5Gcm9tKCkgYmVsb3cK
ICAgICB2b2lkIHNldEdhaW4oZmxvYXQgZ2FpbikgeyBtX2J1c0dhaW4gPSBnYWluOyB9Ci0gICAg
ZmxvYXQgZ2FpbigpIHsgcmV0dXJuIG1fYnVzR2FpbjsgfQorICAgIGZsb2F0IGdhaW4oKSBjb25z
dCB7IHJldHVybiBtX2J1c0dhaW47IH0KIAogICAgIHZvaWQgcmVzZXQoKSB7IG1faXNGaXJzdFRp
bWUgPSB0cnVlOyB9IC8vIGZvciBkZS16aXBwZXJpbmcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAKaW5kZXggZWJiZjNiYmY1NTBkMmEzNzIyYzEw
YTg2ZmY0NTI0ZWY0MzU3MzUwZC4uM2M3NDhlNjMzOTkwZWMxN2JjZGMwMzhmMDcwYTk1MjQyZmFh
OWRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwu
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBWZWN0b3JNYXRoOwogCiB2b2lk
IEF1ZGlvQ2hhbm5lbDo6c2NhbGUoZmxvYXQgc2NhbGUpCiB7Ci0gICAgdnNtdWwoZGF0YSgpLCAx
LCAmc2NhbGUsIGRhdGEoKSwgMSwgbGVuZ3RoKCkpOworICAgIHZzbXVsKGRhdGEoKSwgMSwgJnNj
YWxlLCBtdXRhYmxlRGF0YSgpLCAxLCBsZW5ndGgoKSk7CiB9CiAKIHZvaWQgQXVkaW9DaGFubmVs
Ojpjb3B5RnJvbShjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWwpCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgQXVkaW9DaGFubmVsOjpjb3B5RnJvbShjb25zdCBBdWRpb0NoYW5uZWwqIHNv
dXJjZUNoYW5uZWwpCiAgICAgaWYgKCFpc1NhZmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1l
bWNweShkYXRhKCksIHNvdXJjZUNoYW5uZWwtPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGxlbmd0
aCgpKTsKKyAgICBtZW1jcHkobXV0YWJsZURhdGEoKSwgc291cmNlQ2hhbm5lbC0+ZGF0YSgpLCBz
aXplb2YoZmxvYXQpICogbGVuZ3RoKCkpOwogfQogCiB2b2lkIEF1ZGlvQ2hhbm5lbDo6Y29weUZy
b21SYW5nZShjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWwsIHVuc2lnbmVkIHN0YXJ0
RnJhbWUsIHVuc2lnbmVkIGVuZEZyYW1lKQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEF1ZGlvQ2hh
bm5lbDo6Y29weUZyb21SYW5nZShjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWwsIHVu
c2lnbmVkIHN0YQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBmbG9hdCogc291cmNlID0g
c291cmNlQ2hhbm5lbC0+ZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRhdGEoKTsK
KyAgICBmbG9hdCogZGVzdGluYXRpb24gPSBtdXRhYmxlRGF0YSgpOwogICAgIG1lbWNweShkZXN0
aW5hdGlvbiwgc291cmNlICsgc3RhcnRGcmFtZSwgc2l6ZW9mKGZsb2F0KSAqIHJhbmdlTGVuZ3Ro
KTsKIH0KIApAQCAtODMsNyArODMsNyBAQCB2b2lkIEF1ZGlvQ2hhbm5lbDo6c3VtRnJvbShjb25z
dCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWwpCiAgICAgaWYgKCFpc1NhZmUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHZhZGQoZGF0YSgpLCAxLCBzb3VyY2VDaGFubmVsLT5kYXRhKCksIDEs
IGRhdGEoKSwgMSwgbGVuZ3RoKCkpOworICAgIHZhZGQoZGF0YSgpLCAxLCBzb3VyY2VDaGFubmVs
LT5kYXRhKCksIDEsIG11dGFibGVEYXRhKCksIDEsIGxlbmd0aCgpKTsKIH0KIAogZmxvYXQgQXVk
aW9DaGFubmVsOjptYXhBYnNWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCmluZGV4IDg4MDNlNzVjZDFlM2Y3YWUyMmE1MDg2OWY2MWU4
ZGQ0NWRiYmQ0Y2MuLjI0ZGUzZjllODIwNjJjN2MwYWU4M2RkYzJlNWYwNDFlZjExNDI4YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCkBAIC03Myw3
ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGg7IH0KIAogICAgIC8vIERpcmVjdCBhY2Nlc3MgdG8gUENNIHNhbXBsZSBkYXRhCi0gICAg
ZmxvYXQqIGRhdGEoKSB7IHJldHVybiBtX3Jhd1BvaW50ZXIgPyBtX3Jhd1BvaW50ZXIgOiBtX21l
bUJ1ZmZlci0+ZGF0YSgpOyB9CisgICAgZmxvYXQqIG11dGFibGVEYXRhKCkgeyByZXR1cm4gbV9y
YXdQb2ludGVyID8gbV9yYXdQb2ludGVyIDogbV9tZW1CdWZmZXItPmRhdGEoKTsgfQogICAgIGNv
bnN0IGZsb2F0KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yYXdQb2ludGVyID8gbV9yYXdQb2lu
dGVyIDogbV9tZW1CdWZmZXItPmRhdGEoKTsgfQogCiAgICAgLy8gWmVyb2VzIG91dCBhbGwgc2Ft
cGxlIHZhbHVlcyBpbiBidWZmZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAKaW5kZXggY2Y0ZDJkMzUxNzVh
NTM4OTNlMTVjZWY1MDNmMGJmOWUzNmEwYWM4My4uNWY5MTM5ZjAzMDg4NGNkNDkyYjUzYWEwM2Q4
MGIzZTlmYWM0NTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lk
IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yOjp1bmluaXRpYWxpemUoKQogICAgIG1faW5pdGlhbGl6
ZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2VzcyhB
dWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpCit2b2lkIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlv
QnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykKIHsKICAgICBBU1NFUlQoc291cmNlICYmIGRlc3RpbmF0aW9uKTsKICAgICBpZiAoIXNvdXJj
ZSB8fCAhZGVzdGluYXRpb24pCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgQXVkaW9EU1BLZXJuZWxQ
cm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9u
LCBzCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fa2VybmVscy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNz
KHNvdXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+Y2hhbm5lbChpKS0+ZGF0
YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291
cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxl
RGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogfQogCiAvLyBSZXNldHMgZmlsdGVyIHN0YXRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFBy
b2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQ
cm9jZXNzb3IuaAppbmRleCA0MGI1YWI4ZDY3MzgzZTJkYzg5N2NmNzUzZjY0OWMxYzAwMzdiM2Iw
Li43ZjhmODFkMmZkODZmZGI4YjQ1ZWE5NzJhY2YyZTY5NTg1MTgzMjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIC8vIEF1ZGlvUHJvY2Vzc29yIG1ldGhv
ZHMKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1bmlu
aXRpYWxpemUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBB
dWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nl
c3Nvci5oCmluZGV4IDJkN2I2MGE3Y2U2MGViMDY2NWUyZDI4OGZiYzk0OTY2NmZmZGNiY2YuLjQ2
OWY4MzMyMjQzNjA3ODFkNDAyMmIwM2RlN2NiNWE3NjhjMDQ3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpID0gMDsKIAogICAgIC8vIFBy
b2Nlc3NlcyB0aGUgc291cmNlIHRvIGRlc3RpbmF0aW9uIGJ1cy4gIFRoZSBudW1iZXIgb2YgY2hh
bm5lbHMgbXVzdCBtYXRjaCBpbiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLgotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKGNvbnN0
IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykgPSAwOwogCiAgICAgLy8gUmVzZXRzIGZpbHRlciBzdGF0ZQogICAgIHZpcnR1YWwg
dm9pZCByZXNldCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyLmNwcAppbmRleCBiYTViNThlNjQ1MDhmMDExODgzMmQwMmM1YmM1YTU5MjJk
ZTYwOWQ1Li4xYTlmODFlN2E3NDNhYTYyZmUxMjQ1ZWY0OGYzZDY0ZWZmYTIyNWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgdm9pZCBBdWRpb1Jlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVBy
b3ZpZGVyKiBwcm92aWRlciwgQXVkaW9CdXMqIGRlc3RpbmF0aW8KICAgICAvLyBOb3cgdGhhdCB3
ZSBoYXZlIHRoZSBzb3VyY2UgZGF0YSwgcmVzYW1wbGUgZWFjaCBjaGFubmVsIGludG8gdGhlIGRl
c3RpbmF0aW9uIGJ1cy4KICAgICAvLyBGSVhNRTogb3B0aW1pemUgZm9yIHRoZSBjb21tb24gc3Rl
cmVvIGNhc2Ugd2hlcmUgaXQncyBmYXN0ZXIgdG8gcHJvY2VzcyBib3RoIGxlZnQvcmlnaHQgY2hh
bm5lbHMgaW4gdGhlIHNhbWUgaW5uZXIgbG9vcC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9
IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBkZXN0
aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwogICAg
ICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3MoZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5jcHAKaW5kZXggYzQ3OTVmNGY4MWViZmM4ZWQ5YmY3NmE1OTg0MTRlNzg5
OWQ4MmVkZC4uYTU1MjA1NzA1ZDk1MTBiZjIwZDlkYjM1NDg3OTM5NjVlZTAyZWUxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
Y3BwCkBAIC0xMTUsMTAgKzExNSwxMCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0RW1w
aGFzaXNQYXJhbWV0ZXJzKGZsb2F0IGdhaW4sIGZsb2F0IGFuY2hvckZyZXEsIGZsbwogICAgIHNl
dEVtcGhhc2lzU3RhZ2VQYXJhbWV0ZXJzKDMsIGdhaW4sIGFuY2hvckZyZXEgLyAoZmlsdGVyU3Rh
Z2VSYXRpbyAqIGZpbHRlclN0YWdlUmF0aW8gKiBmaWx0ZXJTdGFnZVJhdGlvKSk7CiB9CiAKLXZv
aWQgRHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlv
QnVzKiBkZXN0aW5hdGlvbkJ1cywgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBEeW5h
bWljc0NvbXByZXNzb3I6OnByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uQnVzLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpCiB7Ci0gICAgZmxv
YXQqIHNvdXJjZUwgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKLSAgICBmbG9hdCog
c291cmNlUjsKKyAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgw
KS0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VSOwogCiAgICAgaWYgKHNvdXJjZUJ1
cy0+bnVtYmVyT2ZDaGFubmVscygpID4gMSkKICAgICAgICAgc291cmNlUiA9IHNvdXJjZUJ1cy0+
Y2hhbm5lbCgxKS0+ZGF0YSgpOwpAQCAtMTI3LDggKzEyNyw4IEBAIHZvaWQgRHluYW1pY3NDb21w
cmVzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
bkJ1cywKIAogICAgIEFTU0VSVChkZXN0aW5hdGlvbkJ1cy0+bnVtYmVyT2ZDaGFubmVscygpID09
IDIpOwogCi0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVs
KDApLT5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IGRlc3RpbmF0aW9uQnVzLT5j
aGFubmVsKDEpLT5kYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGRlc3RpbmF0aW9u
QnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIg
PSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgxKS0+bXV0YWJsZURhdGEoKTsKIAogICAgIGZsb2F0
IGZpbHRlclN0YWdlR2FpbiA9IHBhcmFtZXRlclZhbHVlKFBhcmFtRmlsdGVyU3RhZ2VHYWluKTsK
ICAgICBmbG9hdCBmaWx0ZXJTdGFnZVJhdGlvID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1GaWx0ZXJT
dGFnZVJhdGlvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmgKaW5kZXggMjE1Mjk1MTJkZWYxOTA0NjZjZWNhODVjYTgxYzNkODc2ZWIw
MGZhNi4uZTAxMTVlZTI3M2U0MzBmOWMyOGY1NjRiZmM5Y2M0NGViYzY2YzY5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgRHluYW1pY3NDb21wcmVzc29yKGJvb2wgaXNT
dGVyZW8sIGZsb2F0IHNhbXBsZVJhdGUpOwogCi0gICAgdm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBz
b3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgdW5zaWduZWQgZnJhbWVzVG9Qcm9j
ZXNzKTsKKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uQnVzLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIHZvaWQg
cmVzZXQoKTsKIAogICAgIGZsb2F0IHBhcmFtZXRlclZhbHVlKHVuc2lnbmVkIHBhcmFtZXRlcklE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuY3BwCmluZGV4IGU5ZjQ5NmE1YmZhZTNmNGExZmJjNGE1YTRkNzhi
YWU4ZmVkMzIwMTYuLmE3YTRjMTIxMjc1MjAyZWNmM2JhYjJlMTVlMDVmY2M0YjRhZGEwZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcApAQCAtODIsOSArODIsOSBAQCB2b2lkIER5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbDo6c2V0UHJlRGVsYXlUaW1lKGZsb2F0IHByZURlbGF5VGltZSkKICAgICB9CiB9
CiAKLXZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2VM
LAordm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNv
dXJjZUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCogZGVz
dGluYXRpb25MLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQq
IHNvdXJjZVIsIC8qIHN0ZXJlby1saW5rZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VSLCAvKiBzdGVyZW8tbGlua2VkICovCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCogZGVzdGluYXRpb25S
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnJhbWVz
VG9Qcm9jZXNzLAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCmluZGV4IDhlNWY3MDk5ZDg4YmI1NWFlNzhkNDc4
Y2Q3OTZkY2Y0YTE5NmQyMTguLmNmMzE5YjM3OGFkZWI1OTA2Mjk1M2RlYWIwOTJlMzMzOWM2ZjY4
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5oCkBAIC0zOCw5ICszOCw5IEBAIHB1YmxpYzoKICAgICBEeW5h
bWljc0NvbXByZXNzb3JLZXJuZWwoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBQZXJmb3Jt
cyBzdGVyZW8tbGlua2VkIGNvbXByZXNzaW9uLgotICAgIHZvaWQgcHJvY2VzcyhmbG9hdCAqc291
cmNlTCwKKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQgKnNvdXJjZUwsCiAgICAgICAgICAg
ICAgICAgIGZsb2F0ICpkZXN0aW5hdGlvbkwsCi0gICAgICAgICAgICAgICAgIGZsb2F0ICpzb3Vy
Y2VSLAorICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqc291cmNlUiwKICAgICAgICAgICAg
ICAgICAgZmxvYXQgKmRlc3RpbmF0aW9uUiwKICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnJh
bWVzVG9Qcm9jZXNzLAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9FcXVhbFBvd2VyUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Vx
dWFsUG93ZXJQYW5uZXIuY3BwCmluZGV4IDBkYTc2MjIzNjQwOTE3MmE1ODQ1NmZmMGI2ZGQ3MmZl
NThiYzc4NDkuLmEyZDJkZmY0YzAwMGE4MmJmNDQ4ODM5ZDEyMGQzZDI2OTZkZmJlZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIEVxdWFsUG93ZXJQYW5uZXI6OkVxdWFsUG93ZXJQYW5uZXIoZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICBtX3Ntb290aGluZ0NvbnN0YW50ID0gQXVkaW9VdGlsaXRpZXM6
OmRpc2NyZXRlVGltZUNvbnN0YW50Rm9yU2FtcGxlUmF0ZShTbW9vdGhpbmdUaW1lQ29uc3RhbnQs
IHNhbXBsZVJhdGUpOwogfQogCi12b2lkIEVxdWFsUG93ZXJQYW5uZXI6OnBhbihkb3VibGUgYXpp
bXV0aCwgZG91YmxlIC8qZWxldmF0aW9uKi8sIEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMq
IG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgRXF1YWxQb3dlclBhbm5l
cjo6cGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgLyplbGV2YXRpb24qLywgY29uc3QgQXVkaW9C
dXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc3RlcmVvIHNvdXJjZXMKICAgICBib29sIGlz
SW5wdXRTYWZlID0gaW5wdXRCdXMgJiYgaW5wdXRCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9PSAx
ICYmIGZyYW1lc1RvUHJvY2VzcyA8PSBpbnB1dEJ1cy0+bGVuZ3RoKCk7CkBAIC02MiwxMCArNjIs
MTAgQEAgdm9pZCBFcXVhbFBvd2VyUGFubmVyOjpwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSAv
KmVsZXZhdGlvbiovLCBBdWRpb0J1cyogaW5wdXQKICAgICBpZiAoIWlzT3V0cHV0U2FmZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQXVkaW9DaGFubmVsKiBjaGFubmVsID0gaW5wdXRCdXMtPmNo
YW5uZWwoMCk7Ci0gICAgZmxvYXQqIHNvdXJjZVAgPSBjaGFubmVsLT5kYXRhKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAotICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRC
dXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+ZGF0YSgpOwotICAgIGZs
b2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNo
YW5uZWxSaWdodCktPmRhdGEoKTsKKyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWwgPSBp
bnB1dEJ1cy0+Y2hhbm5lbCgwKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlUCA9IGNoYW5uZWwt
PmRhdGEoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZmxvYXQqIGRlc3Rp
bmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQp
LT5tdXRhYmxlRGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNo
YW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPm11dGFibGVEYXRhKCk7CiAKICAg
ICBpZiAoIXNvdXJjZVAgfHwgIWRlc3RpbmF0aW9uTCB8fCAhZGVzdGluYXRpb25SKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2Vy
UGFubmVyLmgKaW5kZXggNGY2MDAxZGY5MTQyMGVjNTQ0YWZjZWRjZGY2ODk3ZTg0NDgwZDc1MC4u
MDE2Y2Q0YWExNGM3ZmY2ZGU1MGM0MThjMjk5MDA3MmMwYWM4YzBkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAg
ICAgRXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlvQnVzKiBpbnB1dEJ1
cywgQXVkaW9CdXMqIG91dHB1dEJ1Ziwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdmly
dHVhbCB2b2lkIHBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgY29uc3QgQXVk
aW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVmLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIHsgbV9pc0ZpcnN0UmVuZGVyID0gdHJ1
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNw
cAppbmRleCA5MDkzNDMzODAxYzZiMDU2YWRiY2NjZDkwNDhhZDQ2NzFkZDEzZDZjLi4yMzIxZGUw
Y2YxMTA0NTkwNWRkMTU5OGFhOGU2ZWJhN2JlYzU5OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRkZUQ29u
dm9sdmVyOjpGRlRDb252b2x2ZXIoc2l6ZV90IGZmdFNpemUpCiB7CiB9CiAKLXZvaWQgRkZUQ29u
dm9sdmVyOjpwcm9jZXNzKEZGVEZyYW1lKiBmZnRLZXJuZWwsIGZsb2F0KiBzb3VyY2VQLCBmbG9h
dCogZGVzdFAsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit2b2lkIEZGVENvbnZvbHZlcjo6cHJv
Y2VzcyhGRlRGcmFtZSogZmZ0S2VybmVsLCBjb25zdCBmbG9hdCogc291cmNlUCwgZmxvYXQqIGRl
c3RQLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIC8vIEZJWE1FOiBtYWtlIHNvIGZy
YW1lc1RvUHJvY2VzcyBpcyBub3QgcmVxdWlyZWQgdG8gZml0IGV2ZW5seSBpbnRvIGZmdFNpemUv
MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCmluZGV4
IGMxYjUwMDI3NjViNTU2YzZkMzdiOWZlNjUyMTQ1NWVhNDdmMDE0NGUuLjM3NWJmMmM2NTBkMmQz
ZDcxMTIxY2Y3NWU1ZWJiZmJlZjE1ZmM1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0ZGVENvbnZvbHZlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAvLyBU
aGUgaW5wdXQgdG8gb3V0cHV0IGxhdGVuY3kgaXMgZXF1YWwgdG8gZmZ0U2l6ZSAvIDIKICAgICAv
LwogICAgIC8vIFByb2Nlc3NpbmcgaW4tcGxhY2UgaXMgYWxsb3dlZC4uLgotICAgIHZvaWQgcHJv
Y2VzcyhGRlRGcmFtZSogZmZ0S2VybmVsLCBmbG9hdCogc291cmNlUCwgZmxvYXQqIGRlc3RQLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lkIHByb2Nlc3MoRkZURnJhbWUqIGZmdEtl
cm5lbCwgY29uc3QgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcyk7CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCA0ZjAzMmEyNmFhODAyZjI0YzE3ZmZmNDVhNmVmMzNh
OWIzNzIyZTU0Li5hMWEwYTUwZGFjZWJjYjZkOTAzNjQ0YzYwMmQxNDQ4YzgwMjliMjJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC00Myw3ICs0Myw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQo
ZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKK3ZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZU
KGNvbnN0IGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCiB7CiAgICAgLy8gWmVyby1wYWQg
dGhlIGltcHVsc2UgcmVzcG9uc2UKICAgICBBdWRpb0Zsb2F0QXJyYXkgcGFkZGVkUmVzcG9uc2Uo
ZmZ0U2l6ZSgpKTsgLy8gemVyby1pbml0aWFsaXplZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0ZGVEZyYW1lLmgKaW5kZXggYjI1ZDI3OTU2ZGRjYWU5NTIxZjRjZTdjMDIwNzYwNGUzMDBj
OTZkMy4uMDQyNjMzY2QyMzEyODY3OGI5M2FiMzgzNjgzZGNlNTkwODQ0NjVlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCkBAIC03Myw3ICs3Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKICAgICBzdGF0aWMgdm9pZCBjbGVh
bnVwKCk7Ci0gICAgdm9pZCBkb0ZGVChmbG9hdCogZGF0YSk7CisgICAgdm9pZCBkb0ZGVChjb25z
dCBmbG9hdCogZGF0YSk7CiAgICAgdm9pZCBkb0ludmVyc2VGRlQoZmxvYXQqIGRhdGEpOwogICAg
IHZvaWQgbXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKTsgLy8gbXVsdGlwbGllcyBvdXJz
ZWxmIHdpdGggZnJhbWUgOiBlZmZlY3RpdmVseSBvcGVyYXRvcio9KCkKIApAQCAtODgsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgLy8gSW50ZXJwb2xhdGVzIGZyb20gZnJhbWUxIC0+IGZyYW1lMiBh
cyB4IGdvZXMgZnJvbSAwLjAgLT4gMS4wCiAgICAgc3RhdGljIFBhc3NPd25QdHI8RkZURnJhbWU+
IGNyZWF0ZUludGVycG9sYXRlZEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZG
VEZyYW1lJiBmcmFtZTIsIGRvdWJsZSB4KTsKIAotICAgIHZvaWQgZG9QYWRkZWRGRlQoZmxvYXQq
IGRhdGEsIHNpemVfdCBkYXRhU2l6ZSk7IC8vIHplcm8tcGFkZGluZyB3aXRoIGRhdGFTaXplIDw9
IGZmdFNpemUKKyAgICB2b2lkIGRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBzaXplX3Qg
ZGF0YVNpemUpOyAvLyB6ZXJvLXBhZGRpbmcgd2l0aCBkYXRhU2l6ZSA8PSBmZnRTaXplCiAgICAg
ZG91YmxlIGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheSgpOwogICAgIHZvaWQgYWRkQ29uc3RhbnRH
cm91cERlbGF5KGRvdWJsZSBzYW1wbGVGcmFtZURlbGF5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCmluZGV4IGNjZmYwOTdmOGFkNmNmMTFiNTJj
ODk3N2UwZjhhZjMzZTA3OWQyMmIuLjQ0NmU2NmQwZTc2NGQ3YzJhZTY4ODFlZDNmYzBlMDFiNjU3
NzVmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9u
LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxM
aXN0UigpIHsgcmV0dXJuIG1fa2VybmVsTGlzdFIuZ2V0KCk7IH0KIAogICAgIGRvdWJsZSBlbGV2
YXRpb25BbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxldmF0aW9uQW5nbGU7IH0KLSAgICB1bnNp
Z25lZCBudW1iZXJPZkF6aW11dGhzKCkgeyByZXR1cm4gTnVtYmVyT2ZUb3RhbEF6aW11dGhzOyB9
CisgICAgdW5zaWduZWQgbnVtYmVyT2ZBemltdXRocygpIGNvbnN0IHsgcmV0dXJuIE51bWJlck9m
VG90YWxBemltdXRoczsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBt
X3NhbXBsZVJhdGU7IH0KICAgICAKICAgICAvLyBSZXR1cm5zIHRoZSBsZWZ0IGFuZCByaWdodCBr
ZXJuZWxzIGZvciB0aGUgZ2l2ZW4gYXppbXV0aCBpbmRleC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXggYzQ0ZGU5MzJkZDI3MGJmMmE5OTg4Mzhl
MjZmMGMyNTE5OTBkMmE1Mi4uMzkxZjkwNDAyMDA0NDIwM2YzYWEwZTQwNGMwMGNiYTUyZTkwZGE0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgc3RhdGljIGZsb2F0IGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheShBdWRp
b0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBhbmFseXNpc0ZGVFMKIHsKICAgICBBU1NFUlQoY2hh
bm5lbCk7CiAgICAgICAgIAotICAgIGZsb2F0KiBpbXB1bHNlUCA9IGNoYW5uZWwtPmRhdGEoKTsK
KyAgICBmbG9hdCogaW1wdWxzZVAgPSBjaGFubmVsLT5tdXRhYmxlRGF0YSgpOwogICAgIAogICAg
IGJvb2wgaXNTaXplR29vZCA9IGNoYW5uZWwtPmxlbmd0aCgpID49IGFuYWx5c2lzRkZUU2l6ZTsK
ICAgICBBU1NFUlQoaXNTaXplR29vZCk7CkBAIC03OCw3ICs3OCw3IEBAIEhSVEZLZXJuZWw6OkhS
VEZLZXJuZWwoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2Ft
cGxlUmF0ZSwKICAgICAvLyBEZXRlcm1pbmUgdGhlIGxlYWRpbmcgZGVsYXkgKGF2ZXJhZ2UgZ3Jv
dXAgZGVsYXkpIGZvciB0aGUgcmVzcG9uc2UuCiAgICAgbV9mcmFtZURlbGF5ID0gZXh0cmFjdEF2
ZXJhZ2VHcm91cERlbGF5KGNoYW5uZWwsIGZmdFNpemUgLyAyKTsKIAotICAgIGZsb2F0KiBpbXB1
bHNlUmVzcG9uc2UgPSBjaGFubmVsLT5kYXRhKCk7CisgICAgZmxvYXQqIGltcHVsc2VSZXNwb25z
ZSA9IGNoYW5uZWwtPm11dGFibGVEYXRhKCk7CiAgICAgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoID0g
Y2hhbm5lbC0+bGVuZ3RoKCk7CiAKICAgICBpZiAoYmFzc0Jvb3N0KSB7CkBAIC0xMTQsNyArMTE0
LDcgQEAgUGFzc093blB0cjxBdWRpb0NoYW5uZWw+IEhSVEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VS
ZXNwb25zZSgpCiAKICAgICAvLyBBZGQgbGVhZGluZyBkZWxheSBiYWNrIGluLgogICAgIGZmdEZy
YW1lLmFkZENvbnN0YW50R3JvdXBEZWxheShtX2ZyYW1lRGVsYXkpOwotICAgIGZmdEZyYW1lLmRv
SW52ZXJzZUZGVChjaGFubmVsLT5kYXRhKCkpOworICAgIGZmdEZyYW1lLmRvSW52ZXJzZUZGVChj
aGFubmVsLT5tdXRhYmxlRGF0YSgpKTsKIAogICAgIHJldHVybiBjaGFubmVsLnJlbGVhc2UoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKaW5kZXgg
OTc4MzcxY2VmN2I5NWJjNTg3OTRkNzFlMjhmZDViNGJiOWE0ZjA5Ny4uZjA5OTYxZmExZGVmZjc1
YzA0NGFmYWYzZTk3YzlhYzBmYTEwODNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURlBhbm5lci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgSFJURlBhbm5lcjo6
Y2FsY3VsYXRlRGVzaXJlZEF6aW11dGhJbmRleEFuZEJsZW5kKGRvdWJsZSBhemltdXRoLCBkb3Vi
bGUmIGF6aQogICAgIHJldHVybiBkZXNpcmVkQXppbXV0aEluZGV4OwogfQogCi12b2lkIEhSVEZQ
YW5uZXI6OnBhbihkb3VibGUgZGVzaXJlZEF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlv
QnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykKK3ZvaWQgSFJURlBhbm5lcjo6cGFuKGRvdWJsZSBkZXNpcmVkQXppbXV0aCwgZG91YmxlIGVs
ZXZhdGlvbiwgY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIHVuc2lnbmVkIG51bUlucHV0Q2hhbm5lbHMg
PSBpbnB1dEJ1cyA/IGlucHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgOiAwOwogCkBAIC0xNDcs
MTQgKzE0NywxNCBAQCB2b2lkIEhSVEZQYW5uZXI6OnBhbihkb3VibGUgZGVzaXJlZEF6aW11dGgs
IGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlvQnVzKiBpbnB1dEJ1cwogCiAgICAgLy8gTm9ybWFsbHks
IHdlJ2xsIGp1c3QgYmUgZGVhbGluZyB3aXRoIG1vbm8gc291cmNlcy4KICAgICAvLyBJZiB3ZSBo
YXZlIGEgc3RlcmVvIGlucHV0LCBpbXBsZW1lbnQgc3RlcmVvIHBhbm5pbmcgd2l0aCBsZWZ0IHNv
dXJjZSBwcm9jZXNzZWQgYnkgbGVmdCBIUlRGLCBhbmQgcmlnaHQgc291cmNlIGJ5IHJpZ2h0IEhS
VEYuCi0gICAgQXVkaW9DaGFubmVsKiBpbnB1dENoYW5uZWxMID0gaW5wdXRCdXMtPmNoYW5uZWxC
eVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KTsKLSAgICBBdWRpb0NoYW5uZWwqIGlucHV0Q2hh
bm5lbFIgPSBudW1JbnB1dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1
ZGlvQnVzOjpDaGFubmVsUmlnaHQpIDogMDsKKyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGlucHV0
Q2hhbm5lbEwgPSBpbnB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQp
OworICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogaW5wdXRDaGFubmVsUiA9IG51bUlucHV0Q2hhbm5l
bHMgPiAxID8gaW5wdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCkg
OiAwOwogCiAgICAgLy8gR2V0IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcG9pbnRlcnMuCi0gICAg
ZmxvYXQqIHNvdXJjZUwgPSBpbnB1dENoYW5uZWxMLT5kYXRhKCk7Ci0gICAgZmxvYXQqIHNvdXJj
ZVIgPSBudW1JbnB1dENoYW5uZWxzID4gMSA/IGlucHV0Q2hhbm5lbFItPmRhdGEoKSA6IHNvdXJj
ZUw7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShB
dWRpb0J1czo6Q2hhbm5lbExlZnQpLT5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9
IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KS0+ZGF0YSgp
OworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gaW5wdXRDaGFubmVsTC0+ZGF0YSgpOworICAg
IGNvbnN0IGZsb2F0KiBzb3VyY2VSID0gbnVtSW5wdXRDaGFubmVscyA+IDEgPyBpbnB1dENoYW5u
ZWxSLT5kYXRhKCkgOiBzb3VyY2VMOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRC
dXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+bXV0YWJsZURhdGEoKTsK
KyAgICBmbG9hdCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlv
QnVzOjpDaGFubmVsUmlnaHQpLT5tdXRhYmxlRGF0YSgpOwogCiAgICAgZG91YmxlIGF6aW11dGhC
bGVuZDsKICAgICBpbnQgZGVzaXJlZEF6aW11dGhJbmRleCA9IGNhbGN1bGF0ZURlc2lyZWRBemlt
dXRoSW5kZXhBbmRCbGVuZChhemltdXRoLCBhemltdXRoQmxlbmQpOwpAQCAtMjA3LDggKzIwNyw4
IEBAIHZvaWQgSFJURlBhbm5lcjo6cGFuKGRvdWJsZSBkZXNpcmVkQXppbXV0aCwgZG91YmxlIGVs
ZXZhdGlvbiwgQXVkaW9CdXMqIGlucHV0QnVzCiAgICAgICAgICAgICAKICAgICAgICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHBvaW50ZXJzIGZvciB0aGUgY3VycmVu
dCBzZWdtZW50LgogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBzZWdtZW50ICogZnJhbWVzUGVy
U2VnbWVudDsKLSAgICAgICAgZmxvYXQqIHNlZ21lbnRTb3VyY2VMID0gc291cmNlTCArIG9mZnNl
dDsKLSAgICAgICAgZmxvYXQqIHNlZ21lbnRTb3VyY2VSID0gc291cmNlUiArIG9mZnNldDsKKyAg
ICAgICAgY29uc3QgZmxvYXQqIHNlZ21lbnRTb3VyY2VMID0gc291cmNlTCArIG9mZnNldDsKKyAg
ICAgICAgY29uc3QgZmxvYXQqIHNlZ21lbnRTb3VyY2VSID0gc291cmNlUiArIG9mZnNldDsKICAg
ICAgICAgZmxvYXQqIHNlZ21lbnREZXN0aW5hdGlvbkwgPSBkZXN0aW5hdGlvbkwgKyBvZmZzZXQ7
CiAgICAgICAgIGZsb2F0KiBzZWdtZW50RGVzdGluYXRpb25SID0gZGVzdGluYXRpb25SICsgb2Zm
c2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFu
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKaW5kZXgg
ZTc3MWJhMjhiM2U0YWFkZWQ2ZjgwMjE1NjQ2MzIyN2E2ZmZlMTI4MS4uYWQ2Zjc5YTA4NDU1Njg4
YTdiM2Q0MmEwNjk0MDA2Yjc3Y2RhMzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZQYW5uZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SFJURlBhbm5lcigpOwogCiAgICAgLy8gUGFubmVyCi0gICAgdmlydHVhbCB2b2lkIHBhbihkb3Vi
bGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1
cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBjb25zdCBBdWRpb0J1cyogaW5w
dXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogICAg
IHZpcnR1YWwgdm9pZCByZXNldCgpOwogCiAgICAgc2l6ZV90IGZmdFNpemUoKSB7IHJldHVybiBm
ZnRTaXplRm9yU2FtcGxlUmF0ZShtX3NhbXBsZVJhdGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAppbmRleCBk
YjUxZTkwZWRlYTczOThhYjI0MTY1MzQ3NTE4NjhjMGU1N2ZlZDljLi5mNmMwN2U3YzE3ODBmZTc0
MzBjYWM3ODZiNjU5N2M1ODQ3MDc4MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgICAgICAvLyBDb3B5IHRoZSBjaGFubmVsIGRhdGEgZnJvbSB3aGF0IHdl
IHJlY2VpdmVkIGZyb20gbV9tdWx0aUNoYW5uZWxQcm92aWRlci4KICAgICAgICAgQVNTRVJUKG1f
Y3VycmVudENoYW5uZWwgPD0gbV9udW1iZXJPZkNoYW5uZWxzKTsKICAgICAgICAgaWYgKG1fY3Vy
cmVudENoYW5uZWwgPCBtX251bWJlck9mQ2hhbm5lbHMpIHsKLSAgICAgICAgICAgIG1lbWNweShi
dXMtPmNoYW5uZWwoMCktPmRhdGEoKSwgbV9tdWx0aUNoYW5uZWxCdXMtPmNoYW5uZWwobV9jdXJy
ZW50Q2hhbm5lbCktPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7Cisg
ICAgICAgICAgICBtZW1jcHkoYnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpLCBtX211bHRp
Q2hhbm5lbEJ1cy0+Y2hhbm5lbChtX2N1cnJlbnRDaGFubmVsKS0+ZGF0YSgpLCBzaXplb2YoZmxv
YXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKICAgICAgICAgICAgICsrbV9jdXJyZW50Q2hhbm5lbDsK
ICAgICAgICAgfQogICAgIH0KQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIE11bHRpQ2hhbm5lbFJl
c2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92aWRlciwgQXVkaW9CdXMq
IGRlcwogICAgICAgICAvLyBIb3dldmVyLCBpZiBpdCBjYWxscyBwcm92aWRlSW5wdXQoKSBmb3Ig
dGhlIGZpcnN0IGNoYW5uZWwsIHRoZW4gaXQgd2lsbCBjYWxsIGl0IGZvciB0aGUgcmVtYWluaW5n
CiAgICAgICAgIC8vIGNoYW5uZWxzLCBzaW5jZSB0aGV5IGFsbCBidWZmZXIgaW4gdGhlIHNhbWUg
d2F5IGFuZCBhcmUgcHJvY2Vzc2luZyB0aGUgc2FtZSBudW1iZXIgb2YgZnJhbWVzLgogICAgICAg
ICBtX2tlcm5lbHNbY2hhbm5lbEluZGV4XS0+cHJvY2VzcygmY2hhbm5lbFByb3ZpZGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi0+Y2hhbm5l
bChjaGFubmVsSW5kZXgpLT5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRh
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lc1RvUHJv
Y2Vzcyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaAppbmRl
eCA0YjcyODMyN2QyOWFlOGIzYzNkODM5ZjVkOWYwZTFhZjc2ZGI0ZDY2Li5kOGI4ZGQwZjFhZDRm
OGU2MjkwY2QwNmVkYjk2MGQzYTc5NWMwNTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QYW5uZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBQYW5uaW5nTW9kZWwg
cGFubmluZ01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlvQnVz
KiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSBlbGV2YXRp
b24sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCAzNDE2MjZmZDhj
YTE4Yjc3M2RhOGNhZDUyODcyZDBiNzMzYTBlMmU4Li4xMjJlMjFiNjg5NWUwYjQ3NTI0ZGRhM2Y5
N2Y3YjFiYThmYThiZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJldmVyYjo6aW5pdGlhbGl6ZShBdWRpb0J1cyog
aW1wdWxzZVJlc3BvbnNlQnVmZmVyLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLAogICAgICAgICBt
X3RlbXBCdWZmZXIgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMoMiwgTWF4RnJhbWVTaXplKSk7CiB9
CiAKLXZvaWQgUmV2ZXJiOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBk
ZXN0aW5hdGlvbkJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgUmV2ZXJiOjpwcm9j
ZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICAvLyBEbyBhIGZhaXJseSBjb21wcmVoZW5z
aXZlIHNhbml0eSBjaGVjay4KICAgICAvLyBJZiB0aGVzZSBjb25kaXRpb25zIGFyZSBzYXRpc2Zp
ZWQsIGFsbCBvZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBwb2ludGVycyB3aWxsIGJlIHZh
bGlkIGZvciB0aGUgdmFyaW91cyBtYXRyaXhpbmcgY2FzZXMuCkBAIC0xNDgsNyArMTQ4LDcgQEAg
dm9pZCBSZXZlcmI6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3Rp
bmF0aW9uQnVzLCBzaXplX3QgZnJhbWUKICAgICB9CiAKICAgICBBdWRpb0NoYW5uZWwqIGRlc3Rp
bmF0aW9uQ2hhbm5lbEwgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgwKTsKLSAgICBBdWRpb0No
YW5uZWwqIHNvdXJjZUNoYW5uZWxMID0gc291cmNlQnVzLT5jaGFubmVsKDApOworICAgIGNvbnN0
IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbEwgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMCk7CiAK
ICAgICAvLyBIYW5kbGUgaW5wdXQgLT4gb3V0cHV0IG1hdHJpeGluZy4uLgogICAgIHNpemVfdCBu
dW1JbnB1dENoYW5uZWxzID0gc291cmNlQnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7CkBAIC0xNTcs
NyArMTU3LDcgQEAgdm9pZCBSZXZlcmI6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVk
aW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWUKIAogICAgIGlmIChudW1JbnB1dENo
YW5uZWxzID09IDIgJiYgbnVtUmV2ZXJiQ2hhbm5lbHMgPT0gMiAmJiBudW1PdXRwdXRDaGFubmVs
cyA9PSAyKSB7CiAgICAgICAgIC8vIDIgLT4gMiAtPiAyCi0gICAgICAgIEF1ZGlvQ2hhbm5lbCog
c291cmNlQ2hhbm5lbFIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSk7CisgICAgICAgIGNvbnN0IEF1
ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbFIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSk7CiAgICAg
ICAgIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsUiA9IGRlc3RpbmF0aW9uQnVzLT5j
aGFubmVsKDEpOwogICAgICAgICBtX2NvbnZvbHZlcnNbMF0tPnByb2Nlc3Moc291cmNlQ2hhbm5l
bEwsIGRlc3RpbmF0aW9uQ2hhbm5lbEwsIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgICAgIG1fY29u
dm9sdmVyc1sxXS0+cHJvY2Vzcyhzb3VyY2VDaGFubmVsUiwgZGVzdGluYXRpb25DaGFubmVsUiwg
ZnJhbWVzVG9Qcm9jZXNzKTsKQEAgLTE3NywxMyArMTc3LDEzIEBAIHZvaWQgUmV2ZXJiOjpwcm9j
ZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgc2l6ZV90
IGZyYW1lCiAgICAgICAgIEFTU0VSVChpc0NvcHlTYWZlKTsKICAgICAgICAgaWYgKCFpc0NvcHlT
YWZlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25DaGFu
bmVsUi0+ZGF0YSgpLCBkZXN0aW5hdGlvbkNoYW5uZWxMLT5kYXRhKCksIHNpemVvZihmbG9hdCkg
KiBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25DaGFubmVsUi0+
bXV0YWJsZURhdGEoKSwgZGVzdGluYXRpb25DaGFubmVsTC0+ZGF0YSgpLCBzaXplb2YoZmxvYXQp
ICogZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB9IGVsc2UgaWYgKG51bUlucHV0Q2hhbm5lbHMgPT0g
MSAmJiBudW1SZXZlcmJDaGFubmVscyA9PSAxICYmIG51bU91dHB1dENoYW5uZWxzID09IDEpIHsK
ICAgICAgICAgLy8gMSAtPiAxIC0+IDEKICAgICAgICAgbV9jb252b2x2ZXJzWzBdLT5wcm9jZXNz
KHNvdXJjZUNoYW5uZWxMLCBkZXN0aW5hdGlvbkNoYW5uZWxMLCBmcmFtZXNUb1Byb2Nlc3MpOwog
ICAgIH0gZWxzZSBpZiAobnVtSW5wdXRDaGFubmVscyA9PSAyICYmIG51bVJldmVyYkNoYW5uZWxz
ID09IDQgJiYgbnVtT3V0cHV0Q2hhbm5lbHMgPT0gMikgewogICAgICAgICAvLyAyIC0+IDQgLT4g
MiAoIlRydWUiIHN0ZXJlbykKLSAgICAgICAgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsUiA9
IHNvdXJjZUJ1cy0+Y2hhbm5lbCgxKTsKKyAgICAgICAgY29uc3QgQXVkaW9DaGFubmVsKiBzb3Vy
Y2VDaGFubmVsUiA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgxKTsKICAgICAgICAgQXVkaW9DaGFubmVs
KiBkZXN0aW5hdGlvbkNoYW5uZWxSID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMSk7CiAKICAg
ICAgICAgQXVkaW9DaGFubmVsKiB0ZW1wQ2hhbm5lbEwgPSBtX3RlbXBCdWZmZXItPmNoYW5uZWwo
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCmluZGV4IGYxNjJlMGI3MDll
OWJmNjg1MGE5MDEzMTljMmNiOWQ0YmQ0ZWEyOTIuLjc3OWU3YmJhNDkzNDRjODJlNDU3YzcyM2U2
ZDBhNjE4ODgxZGRlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAvLyByZW5kZXJTbGljZVNpemUgaXMgYSByZW5k
ZXJpbmcgaGludCwgc28gdGhlIEZGVHMgY2FuIGJlIG9wdGltaXplZCB0byBub3QgYWxsIG9jY3Vy
IGF0IHRoZSBzYW1lIHRpbWUgKHZlcnkgYmFkIHdoZW4gcmVuZGVyaW5nIG9uIGEgcmVhbC10aW1l
IHRocmVhZCkuCiAgICAgUmV2ZXJiKEF1ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZmZXIsIHNp
emVfdCByZW5kZXJTbGljZVNpemUsIHNpemVfdCBtYXhGRlRTaXplLCBzaXplX3QgbnVtYmVyT2ZD
aGFubmVscywgYm9vbCB1c2VCYWNrZ3JvdW5kVGhyZWFkcywgYm9vbCBub3JtYWxpemUpOwogCi0g
ICAgdm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
bkJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IEF1
ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcyk7CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgdW5zaWduZWQgaW1wdWxzZVJl
c3BvbnNlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9pbXB1bHNlUmVzcG9uc2VMZW5ndGg7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3Bw
CmluZGV4IGJiYjU1MDg3ZjBkMTBiMTUwYjkzNzk2ZjRhYmY1OGFkODJjODJlZjMuLmM2MTE0MTRj
YmMxNmRjMTZkN2QxZWNhMzUxYzU3YjU5NDVlYzBmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtODIsNyArODIsNyBAQCBS
ZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcihBdWRpb0NoYW5uZWwqIGltcHVsc2VSZXNw
b25zZSwgc2l6ZV90IHJlbmRlclNsaQogICAgIC8vIE90aGVyd2lzZSwgYXNzdW1lIHdlJ3JlIGJl
aW5nIHJ1biBmcm9tIGEgY29tbWFuZC1saW5lIHRvb2wuCiAgICAgYm9vbCBoYXNSZWFsdGltZUNv
bnN0cmFpbnQgPSB1c2VCYWNrZ3JvdW5kVGhyZWFkczsKIAotICAgIGZsb2F0KiByZXNwb25zZSA9
IGltcHVsc2VSZXNwb25zZS0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiByZXNwb25zZSA9IGlt
cHVsc2VSZXNwb25zZS0+ZGF0YSgpOwogICAgIHNpemVfdCB0b3RhbFJlc3BvbnNlTGVuZ3RoID0g
aW1wdWxzZVJlc3BvbnNlLT5sZW5ndGgoKTsKIAogICAgIC8vIEJlY2F1c2Ugd2UncmUgbm90IHVz
aW5nIGRpcmVjdC1jb252b2x1dGlvbiBpbiB0aGUgbGVhZGluZyBwb3J0aW9uLCB0aGUgcmV2ZXJi
IGhhcyBhbiBvdmVyYWxsIGxhdGVuY3kgb2YgaGFsZiB0aGUgZmlyc3Qtc3RhZ2UgRkZUIHNpemUK
QEAgLTE3NSwxNSArMTc1LDE1IEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVyOjpiYWNrZ3JvdW5kVGhy
ZWFkRW50cnkoKQogICAgIH0KIH0KIAotdm9pZCBSZXZlcmJDb252b2x2ZXI6OnByb2Nlc3MoQXVk
aW9DaGFubmVsKiBzb3VyY2VDaGFubmVsLCBBdWRpb0NoYW5uZWwqIGRlc3RpbmF0aW9uQ2hhbm5l
bCwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgUmV2ZXJiQ29udm9sdmVyOjpwcm9jZXNz
KGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCwgQXVkaW9DaGFubmVsKiBkZXN0aW5h
dGlvbkNoYW5uZWwsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgYm9vbCBpc1NhZmUg
PSBzb3VyY2VDaGFubmVsICYmIGRlc3RpbmF0aW9uQ2hhbm5lbCAmJiBzb3VyY2VDaGFubmVsLT5s
ZW5ndGgoKSA+PSBmcmFtZXNUb1Byb2Nlc3MgJiYgZGVzdGluYXRpb25DaGFubmVsLT5sZW5ndGgo
KSA+PSBmcmFtZXNUb1Byb2Nlc3M7CiAgICAgQVNTRVJUKGlzU2FmZSk7CiAgICAgaWYgKCFpc1Nh
ZmUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgZmxvYXQqIHNvdXJjZSA9IHNvdXJj
ZUNoYW5uZWwtPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkNo
YW5uZWwtPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlID0gc291cmNlQ2hhbm5lbC0+
ZGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQ2hhbm5lbC0+bXV0
YWJsZURhdGEoKTsKICAgICBib29sIGlzRGF0YVNhZmUgPSBzb3VyY2UgJiYgZGVzdGluYXRpb247
CiAgICAgQVNTRVJUKGlzRGF0YVNhZmUpOwogICAgIGlmICghaXNEYXRhU2FmZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5kZXggMDEzYjY4
NDk3MWY4OTA5ZDNjNWZmZmRlYmNkNWY0Yjk1OGY4YzMxMi4uMzcwYjg3MjA2NDgyOWUxY2NlMjli
NmVkMjU3MTI2YzkwZjU2OGJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFJldmVy
YkNvbnZvbHZlcihBdWRpb0NoYW5uZWwqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlbmRlclNs
aWNlU2l6ZSwgc2l6ZV90IG1heEZGVFNpemUsIHNpemVfdCBjb252b2x2ZXJSZW5kZXJQaGFzZSwg
Ym9vbCB1c2VCYWNrZ3JvdW5kVGhyZWFkcyk7CiAgICAgflJldmVyYkNvbnZvbHZlcigpOwogCi0g
ICAgdm9pZCBwcm9jZXNzKEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCwgQXVkaW9DaGFubmVs
KiBkZXN0aW5hdGlvbkNoYW5uZWwsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZvaWQg
cHJvY2Vzcyhjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWwsIEF1ZGlvQ2hhbm5lbCog
ZGVzdGluYXRpb25DaGFubmVsLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB2b2lkIHJl
c2V0KCk7CiAKICAgICBzaXplX3QgaW1wdWxzZVJlc3BvbnNlTGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9pbXB1bHNlUmVzcG9uc2VMZW5ndGg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAppbmRleCBmMjA3ZDE5ZGVi
MGM0OGJiZmVmNmI4YWQ1YmFiODUyODllODcyNTEwLi41M2JiNjUwMDgzMTA2NDcxOTFlMDBhOWRi
OTU5YTAzZGE5ZmZlYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CiAKLVJldmVyYkNvbnZv
bHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZShmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBz
aXplX3QgcmVzcG9uc2VMZW5ndGgsIHNpemVfdCByZXZlcmJUb3RhbExhdGVuY3ksIHNpemVfdCBz
dGFnZU9mZnNldCwgc2l6ZV90IHN0YWdlTGVuZ3RoLAorUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJl
dmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCBy
ZXNwb25zZUxlbmd0aCwgc2l6ZV90IHJldmVyYlRvdGFsTGF0ZW5jeSwgc2l6ZV90IHN0YWdlT2Zm
c2V0LCBzaXplX3Qgc3RhZ2VMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGZmdFNpemUsIHNpemVfdCByZW5kZXJQaGFzZSwgc2l6ZV90IHJl
bmRlclNsaWNlU2l6ZSwgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyKiBhY2N1bXVsYXRpb25CdWZm
ZXIpCiAgICAgOiBtX2ZmdEtlcm5lbChmZnRTaXplKQogICAgICwgbV9hY2N1bXVsYXRpb25CdWZm
ZXIoYWNjdW11bGF0aW9uQnVmZmVyKQpAQCAtODgsNyArODgsNyBAQCB2b2lkIFJldmVyYkNvbnZv
bHZlclN0YWdlOjpwcm9jZXNzSW5CYWNrZ3JvdW5kKFJldmVyYkNvbnZvbHZlciogY29udm9sdmVy
LCBzaXplXwogICAgIHByb2Nlc3Moc291cmNlLCBmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi12b2lk
IFJldmVyYkNvbnZvbHZlclN0YWdlOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCit2b2lkIFJldmVyYkNvbnZvbHZlclN0YWdlOjpwcm9jZXNzKGNvbnN0IGZs
b2F0KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUKHNvdXJj
ZSk7CiAgICAgaWYgKCFzb3VyY2UpCkBAIC05Niw3ICs5Niw4IEBAIHZvaWQgUmV2ZXJiQ29udm9s
dmVyU3RhZ2U6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykK
ICAgICAKICAgICAvLyBEZWFsIHdpdGggcHJlLWRlbGF5IHN0cmVhbSA6IG5vdGUgc3BlY2lhbCBo
YW5kbGluZyBvZiB6ZXJvIGRlbGF5LgogCi0gICAgZmxvYXQqIHByZURlbGF5ZWRTb3VyY2U7Cisg
ICAgY29uc3QgZmxvYXQqIHByZURlbGF5ZWRTb3VyY2U7CisgICAgZmxvYXQqIHByZURlbGF5ZWRE
ZXN0aW5hdGlvbjsKICAgICBmbG9hdCogdGVtcG9yYXJ5QnVmZmVyOwogICAgIGJvb2wgaXNUZW1w
b3JhcnlCdWZmZXJTYWZlID0gZmFsc2U7CiAgICAgaWYgKG1fcHJlRGVsYXlMZW5ndGggPiAwKSB7
CkBAIC0xMDgsMTAgKzEwOSwxMiBAQCB2b2lkIFJldmVyYkNvbnZvbHZlclN0YWdlOjpwcm9jZXNz
KGZsb2F0KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAKICAgICAgICAgaXNUZW1w
b3JhcnlCdWZmZXJTYWZlID0gZnJhbWVzVG9Qcm9jZXNzIDw9IG1fdGVtcG9yYXJ5QnVmZmVyLnNp
emUoKTsKIAotICAgICAgICBwcmVEZWxheWVkU291cmNlID0gbV9wcmVEZWxheUJ1ZmZlci5kYXRh
KCkgKyBtX3ByZVJlYWRXcml0ZUluZGV4OworICAgICAgICBwcmVEZWxheWVkRGVzdGluYXRpb24g
PSBtX3ByZURlbGF5QnVmZmVyLmRhdGEoKSArIG1fcHJlUmVhZFdyaXRlSW5kZXg7CisgICAgICAg
IHByZURlbGF5ZWRTb3VyY2UgPSBwcmVEZWxheWVkRGVzdGluYXRpb247CiAgICAgICAgIHRlbXBv
cmFyeUJ1ZmZlciA9IG1fdGVtcG9yYXJ5QnVmZmVyLmRhdGEoKTsgICAgICAgIAogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIFplcm8gZGVsYXkKKyAgICAgICAgcHJlRGVsYXllZERlc3RpbmF0aW9u
ID0gMDsKICAgICAgICAgcHJlRGVsYXllZFNvdXJjZSA9IHNvdXJjZTsKICAgICAgICAgdGVtcG9y
YXJ5QnVmZmVyID0gbV9wcmVEZWxheUJ1ZmZlci5kYXRhKCk7CiAgICAgICAgIApAQCAtMTM4LDcg
KzE0MSw3IEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OnByb2Nlc3MoZmxvYXQqIHNvdXJj
ZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIAogICAgIC8vIEZpbmFsbHkgY29weSBpbnB1dCB0
byBwcmUtZGVsYXkuCiAgICAgaWYgKG1fcHJlRGVsYXlMZW5ndGggPiAwKSB7Ci0gICAgICAgIG1l
bWNweShwcmVEZWxheWVkU291cmNlLCBzb3VyY2UsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1By
b2Nlc3MpOworICAgICAgICBtZW1jcHkocHJlRGVsYXllZERlc3RpbmF0aW9uLCBzb3VyY2UsIHNp
emVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwogICAgICAgICBtX3ByZVJlYWRXcml0ZUlu
ZGV4ICs9IGZyYW1lc1RvUHJvY2VzczsKIAogICAgICAgICBBU1NFUlQobV9wcmVSZWFkV3JpdGVJ
bmRleCA8PSBtX3ByZURlbGF5TGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCmluZGV4IGZjMDVhMGUwOGZhMzNiMDI2
OGVjZGQzNTQ3OGFhZmE5OTkzYWVlMzQuLjk4MTFiYzYwMzIxNjc2NDYwMGM5Y2IxNzI1MTdkZWYx
NThhMzZkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlclN0YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyU3RhZ2UuaApAQCAtNDUsMTEgKzQ1LDExIEBAIGNsYXNzIFJldmVyYkNvbnZv
bHZlclN0YWdlIHsKIHB1YmxpYzoKICAgICAvLyByZW5kZXJQaGFzZSBpcyB1c2VmdWwgdG8ga25v
dyBzbyB0aGF0IHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBwcmUgdmVyc3VzIHBvc3QgZGVsYXkgc28g
dGhhdCBzdGFnZXMgd2lsbCBwZXJmb3JtCiAgICAgLy8gdGhlaXIgaGVhdnkgd29yayAoRkZUIHBy
b2Nlc3NpbmcpIG9uIGRpZmZlcmVudCBzbGljZXMgdG8gYmFsYW5jZSB0aGUgbG9hZCBpbiBhIHJl
YWwtdGltZSB0aHJlYWQuCi0gICAgUmV2ZXJiQ29udm9sdmVyU3RhZ2UoZmxvYXQqIGltcHVsc2VS
ZXNwb25zZSwgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoLCBzaXplX3QgcmV2ZXJiVG90YWxMYXRlbmN5
LCBzaXplX3Qgc3RhZ2VPZmZzZXQsIHNpemVfdCBzdGFnZUxlbmd0aCwKKyAgICBSZXZlcmJDb252
b2x2ZXJTdGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVzcG9uc2VM
ZW5ndGgsIHNpemVfdCByZXZlcmJUb3RhbExhdGVuY3ksIHNpemVfdCBzdGFnZU9mZnNldCwgc2l6
ZV90IHN0YWdlTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBmZnRTaXpl
LCBzaXplX3QgcmVuZGVyUGhhc2UsIHNpemVfdCByZW5kZXJTbGljZVNpemUsIFJldmVyYkFjY3Vt
dWxhdGlvbkJ1ZmZlciogYWNjdW11bGF0aW9uQnVmZmVyKTsKIAogICAgIC8vIFdBUk5JTkc6IGZy
YW1lc1RvUHJvY2VzcyBtdXN0IGJlIHN1Y2ggdGhhdCBpdCBldmVubHkgZGl2aWRlcyB0aGUgZGVs
YXkgYnVmZmVyIHNpemUgKHN0YWdlX29mZnNldCkuCi0gICAgdm9pZCBwcm9jZXNzKGZsb2F0KiBz
b3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBm
bG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIHZvaWQgcHJvY2Vz
c0luQmFja2dyb3VuZChSZXZlcmJDb252b2x2ZXIqIGNvbnZvbHZlciwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YklucHV0QnVmZmVyLmNwcAppbmRleCBmMjcwZjZmYWE0Yzc0ZmFmNTE5YjMyN2EzNzJjZWM4OWE1
MTBjZGU3Li4xYmU5YWY4ODRlNDI1ZTRkMGUzOGIzODBjNmFjYTQwMDJmNWE3NDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIFJldmVyYklucHV0QnVmZmVyOjpSZXZlcmJJbnB1dEJ1ZmZlcihz
aXplX3QgbGVuZ3RoKQogewogfQogCi12b2lkIFJldmVyYklucHV0QnVmZmVyOjp3cml0ZShmbG9h
dCogc291cmNlUCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKQordm9pZCBSZXZlcmJJbnB1dEJ1ZmZl
cjo6d3JpdGUoY29uc3QgZmxvYXQqIHNvdXJjZVAsIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsK
ICAgICBzaXplX3QgYnVmZmVyTGVuZ3RoID0gbV9idWZmZXIuc2l6ZSgpOwogICAgIGJvb2wgaXND
b3B5U2FmZSA9IG1fd3JpdGVJbmRleCArIG51bWJlck9mRnJhbWVzIDw9IGJ1ZmZlckxlbmd0aDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5o
CmluZGV4IDE1YTI4MTgyNGQzNmJkZTY4ZDc5YTVlMTBiMzU3OTI1MTY1MTg5NjkuLjUwMzY1NzVi
OTg2MWJkOGNkNGUwYTFhMTE1ZjUwMjZhZTU3NDg5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAgICAgLy8gVGhlIHJlYWx0aW1lIGF1ZGlvIHRocmVhZCBrZWVwcyB3cml0aW5nIHNh
bXBsZXMgaGVyZS4KICAgICAvLyBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZSBidWZmZXIncyBs
ZW5ndGggaXMgZXZlbmx5IGRpdmlzaWJsZSBieSBudW1iZXJPZkZyYW1lcyAoZm9yIG5lYXJseSBh
bGwgY2FzZXMgdGhpcyB3aWxsIGJlIGZpbmUpLgogICAgIC8vIEZJWE1FOiByZW1vdmUgbnVtYmVy
T2ZGcmFtZXMgcmVzdHJpY3Rpb24uLi4KLSAgICB2b2lkIHdyaXRlKGZsb2F0KiBzb3VyY2VQLCBz
aXplX3QgbnVtYmVyT2ZGcmFtZXMpOworICAgIHZvaWQgd3JpdGUoY29uc3QgZmxvYXQqIHNvdXJj
ZVAsIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CiAKICAgICAvLyBCYWNrZ3JvdW5kIHRocmVhZHMg
Y2FuIGNhbGwgdGhpcyB0byBjaGVjayBpZiB0aGVyZSdzIGFueXRoaW5nIHRvIHJlYWQuLi4KICAg
ICBzaXplX3Qgd3JpdGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVJbmRleDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAppbmRleCAw
ZTRiODQ5ODUwMWU0YjM5NmYwNDJiMDRhZDRjZmZkNWNjMmQzZDYyLi40YWRlYjI3YTllOGEyZTgy
MWM0NWE4YzNiMGM5N2U3YjkzZjNmM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgU2luY1Jl
c2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCiAgICAgfQogfQogCi12b2lkIFNpbmNSZXNhbXBs
ZXI6OmNvbnN1bWVTb3VyY2UoZmxvYXQqIGJ1ZmZlciwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VG
cmFtZXMpCit2b2lkIFNpbmNSZXNhbXBsZXI6OmNvbnN1bWVTb3VyY2UoY29uc3QgZmxvYXQqIGJ1
ZmZlciwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCiB7CiAgICAgQVNTRVJUKG1fc291
cmNlUHJvdmlkZXIpOwogICAgIGlmICghbV9zb3VyY2VQcm92aWRlcikKQEAgLTEzNSw3ICsxMzUs
OSBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OmNvbnN1bWVTb3VyY2UoZmxvYXQqIGJ1ZmZlciwgdW5z
aWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCiAgICAgCiAgICAgLy8gV3JhcCB0aGUgcHJvdmlk
ZWQgYnVmZmVyIGJ5IGFuIEF1ZGlvQnVzIGZvciB1c2UgYnkgdGhlIHNvdXJjZSBwcm92aWRlci4K
ICAgICBBdWRpb0J1cyBidXMoMSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMsIGZhbHNlKTsKLSAgICBi
dXMuc2V0Q2hhbm5lbE1lbW9yeSgwLCBidWZmZXIsIG51bWJlck9mU291cmNlRnJhbWVzKTsKKwor
ICAgIC8vIEZJWE1FOiBmaW5kIGEgd2F5IHRvIG1ha2UgdGhlIGZvbGxvd2luZyBjb25zdC1jb3Jy
ZWN0OgorICAgIGJ1cy5zZXRDaGFubmVsTWVtb3J5KDAsIGNvbnN0X2Nhc3Q8ZmxvYXQqPihidWZm
ZXIpLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CiAgICAgCiAgICAgbV9zb3VyY2VQcm92aWRlci0+
cHJvdmlkZUlucHV0KCZidXMsIG51bWJlck9mU291cmNlRnJhbWVzKTsKIH0KQEAgLTE0Niw3ICsx
NDgsNyBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBCdWZmZXJTb3VyY2VQcm92aWRlciA6IHB1Ymxp
YyBBdWRpb1NvdXJjZVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBCdWZmZXJTb3VyY2VQcm92aWRl
cihmbG9hdCogc291cmNlLCBzaXplX3QgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCisgICAgQnVmZmVy
U291cmNlUHJvdmlkZXIoY29uc3QgZmxvYXQqIHNvdXJjZSwgc2l6ZV90IG51bWJlck9mU291cmNl
RnJhbWVzKQogICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkKICAgICAgICAgLCBtX3NvdXJjZUZy
YW1lc0F2YWlsYWJsZShudW1iZXJPZlNvdXJjZUZyYW1lcykKICAgICB7CkBAIC0xNTksNyArMTYx
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fc291cmNlIHx8ICFidXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgZmxvYXQqIGJ1ZmZlciA9IGJ1cy0+Y2hh
bm5lbCgwKS0+ZGF0YSgpOworICAgICAgICBmbG9hdCogYnVmZmVyID0gYnVzLT5jaGFubmVsKDAp
LT5tdXRhYmxlRGF0YSgpOwogCiAgICAgICAgIC8vIENsYW1wIHRvIG51bWJlciBvZiBmcmFtZXMg
YXZhaWxhYmxlIGFuZCB6ZXJvLXBhZC4KICAgICAgICAgc2l6ZV90IGZyYW1lc1RvQ29weSA9IG1p
bihtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZSwgZnJhbWVzVG9Qcm9jZXNzKTsKQEAgLTE3NCwxMyAr
MTc2LDEzIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIGZsb2F0KiBtX3Nv
dXJjZTsKKyAgICBjb25zdCBmbG9hdCogbV9zb3VyY2U7CiAgICAgc2l6ZV90IG1fc291cmNlRnJh
bWVzQXZhaWxhYmxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKIAotdm9pZCBTaW5jUmVzYW1wbGVy
Ojpwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbnVt
YmVyT2ZTb3VyY2VGcmFtZXMpCit2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoY29uc3QgZmxv
YXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZy
YW1lcykKIHsKICAgICAvLyBSZXNhbXBsZSBhbiBpbi1tZW1vcnkgYnVmZmVyIHVzaW5nIGFuIEF1
ZGlvU291cmNlUHJvdmlkZXIuCiAgICAgQnVmZmVyU291cmNlUHJvdmlkZXIgc291cmNlUHJvdmlk
ZXIoc291cmNlLCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXggYmJlMGM1NThjM2NjYzIxZTA3YTliYmYz
M2Y3NTAyNjQyMzcyYmZmMy4uOWU5Nzc4YzQ2NDFmZjk1NDZiZmMxNDBlMTc1MDFmNGJmOTEwZTUz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApA
QCAtNDQsMTQgKzQ0LDE0IEBAIHB1YmxpYzoKICAgICBTaW5jUmVzYW1wbGVyKGRvdWJsZSBzY2Fs
ZUZhY3RvciwgdW5zaWduZWQga2VybmVsU2l6ZSA9IDMyLCB1bnNpZ25lZCBudW1iZXJPZktlcm5l
bE9mZnNldHMgPSAzMik7CiAgICAgCiAgICAgLy8gUHJvY2Vzc2VzIG51bWJlck9mU291cmNlRnJh
bWVzIGZyb20gc291cmNlIHRvIHByb2R1Y2UgbnVtYmVyT2ZTb3VyY2VGcmFtZXMgLyBzY2FsZUZh
Y3RvciBmcmFtZXMgaW4gZGVzdGluYXRpb24uCi0gICAgdm9pZCBwcm9jZXNzKGZsb2F0KiBzb3Vy
Y2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOwor
ICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKTsKIAogICAgIC8vIFByb2Nlc3Mgd2l0aCBp
bnB1dCBzb3VyY2UgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHN0cmVhbWluZyBhcHBsaWNhdGlvbnMu
CiAgICAgdm9pZCBwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqLCBmbG9hdCogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0
aWFsaXplS2VybmVsKCk7Ci0gICAgdm9pZCBjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVu
c2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKTsKKyAgICB2b2lkIGNvbnN1bWVTb3VyY2UoY29u
c3QgZmxvYXQqIGJ1ZmZlciwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOwogICAgIAog
ICAgIGRvdWJsZSBtX3NjYWxlRmFjdG9yOwogICAgIHVuc2lnbmVkIG1fa2VybmVsU2l6ZTsKQEAg
LTcxLDcgKzcxLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFNvdXJjZSBpcyBjb3BpZWQgaW50byB0
aGlzIGJ1ZmZlciBmb3IgZWFjaCBwcm9jZXNzaW5nIHBhc3MuCiAgICAgQXVkaW9GbG9hdEFycmF5
IG1faW5wdXRCdWZmZXI7CiAKLSAgICBmbG9hdCogbV9zb3VyY2U7CisgICAgY29uc3QgZmxvYXQq
IG1fc291cmNlOwogICAgIHVuc2lnbmVkIG1fc291cmNlRnJhbWVzQXZhaWxhYmxlOwogICAgIAog
ICAgIC8vIG1fc291cmNlUHJvdmlkZXIgaXMgdXNlZCB0byBwcm92aWRlIHRoZSBhdWRpbyBpbnB1
dCBzdHJlYW0gdG8gdGhlIHJlc2FtcGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1plcm9Qb2xlLmNwcAppbmRleCAyZmE0NDAwM2E3YTUxMDBkZTkxYjc1MGY2MWYxNzE1NTQ3NTJk
MzhhLi45ZTZmMWI2MzU2ZTliNzg1ZGY0MDBlNDQxNTY3NjQ5NWU1MjcxMzY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBaZXJvUG9sZTo6cHJvY2VzcyhmbG9hdCAqc291
cmNlLCBmbG9hdCAqZGVzdGluYXRpb24sIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQg
WmVyb1BvbGU6OnByb2Nlc3MoY29uc3QgZmxvYXQgKnNvdXJjZSwgZmxvYXQgKmRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgZmxvYXQgemVybyA9IG1femVybzsK
ICAgICBmbG9hdCBwb2xlID0gbV9wb2xlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1pl
cm9Qb2xlLmgKaW5kZXggOTNmZDBkNmY5NzUzN2E1ZjJhMDc2YmE0ZjlmNjYyMjhhNzIzOWJhMy4u
NGNiMWQxNzQ1NjNmMTc1YjI4Y2FhYzk1NWRhNTYyNjhiZGUxZGRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgdm9pZCBwcm9jZXNzKGZsb2F0ICpzb3VyY2UsIGZsb2F0ICpkZXN0
aW5hdGlvbiwgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lkIHByb2Nlc3MoY29u
c3QgZmxvYXQgKnNvdXJjZSwgZmxvYXQgKmRlc3RpbmF0aW9uLCB1bnNpZ25lZCBmcmFtZXNUb1By
b2Nlc3MpOwogCiAgICAgLy8gUmVzZXQgZmlsdGVyIHN0YXRlLgogICAgIHZvaWQgcmVzZXQoKSB7
IG1fbGFzdFggPSAwOyBtX2xhc3RZID0gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZmZtcGVnL0ZGVEZyYW1lRkZNUEVHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2ZmbXBlZy9GRlRGcmFtZUZGTVBFRy5jcHAKaW5kZXggOWY4OTMyNDQ1
MWQ3NGZiYzg3YmJhN2RjYmI4OWI0YTc4NDAxNmQ3OS4uZDQ2MjRhNzBiNjYyM2JlMTVkYmJjZTUz
MTQ1ZGU5OThlYzhiZTU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZmZtcGVnL0ZGVEZyYW1lRkZNUEVHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9p
ZCBGRlRGcmFtZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIFZlY3Rvck1h
dGg6OnZzbXVsKGltYWdQMSwgMSwgJnNjYWxlLCBpbWFnUDEsIDEsIGhhbGZTaXplKTsKIH0KIAot
dm9pZCBGRlRGcmFtZTo6ZG9GRlQoZmxvYXQqIGRhdGEpCit2b2lkIEZGVEZyYW1lOjpkb0ZGVChj
b25zdCBmbG9hdCogZGF0YSkKIHsKICAgICAvLyBDb3B5IHNpbmNlIHByb2Nlc3NpbmcgaXMgaW4t
cGxhY2UuCiAgICAgZmxvYXQqIHAgPSBtX2NvbXBsZXhEYXRhLmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5j
cHAKaW5kZXggOTU1MDI2MzZiOTNhZDNiY2Y4N2Q0NTA1YWQwN2JhYTcxMGQxNWE1Mi4uZDBlY2Yx
YTMxMzA3ZGViOTExNDJlYmUzYzVlYWExMjRkNjNhMzAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAKQEAg
LTIxMiw3ICsyMTIsNyBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNy
ZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewogICAgICAgICAgICAgYnVm
ZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubU51bWJlckNoYW5uZWxzID0gMTsKICAgICAgICAgICAgIGJ1
ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhQnl0ZVNpemUgPSBudW1iZXJPZkZyYW1lcyAqIHNp
emVvZihmbG9hdCk7Ci0gICAgICAgICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tRGF0YSA9
IGF1ZGlvQnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAgICAgICBidWZmZXJMaXN0LT5t
QnVmZmVyc1tpXS5tRGF0YSA9IGF1ZGlvQnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0yMjQsNyArMjI0LDcgQEAgUGFzc093blB0cjxBdWRpb0J1
cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhU
b01vbm8KIAogICAgIGlmIChtaXhUb01vbm8gJiYgbnVtYmVyT2ZDaGFubmVscyA9PSAyKSB7CiAg
ICAgICAgIC8vIE1peCBzdGVyZW8gZG93biB0byBtb25vCi0gICAgICAgIGZsb2F0KiBkZXN0TCA9
IGF1ZGlvQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBkZXN0TCA9IGF1
ZGlvQnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mRnJhbWVzOyBpKyspCiAgICAgICAgICAgICBkZXN0TFtpXSA9IDAu
NWYgKiAoYnVmZmVyTFtpXSArIGJ1ZmZlclJbaV0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCmluZGV4IDZkZmJiZWNjYjJk
ZWY4ZDliYjQ4MjRjZmE3ZWE1YTEzYWY5NDU1ZTQuLjhjZWY5MjhkNDcyNTdjOTFmNWUyNzlmOWU3
MGY1NTRhNGVhOWIyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9GRlRGcmFtZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0ZGVEZyYW1lTWFjLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgRkZURnJhbWU6Om11
bHRpcGx5KGNvbnN0IEZGVEZyYW1lJiBmcmFtZSkKICAgICBWZWN0b3JNYXRoOjp2c211bChpbWFn
UDEsIDEsICZzY2FsZSwgaW1hZ1AxLCAxLCBoYWxmU2l6ZSk7CiB9CiAKLXZvaWQgRkZURnJhbWU6
OmRvRkZUKGZsb2F0KiBkYXRhKQordm9pZCBGRlRGcmFtZTo6ZG9GRlQoY29uc3QgZmxvYXQqIGRh
dGEpCiB7CiAgICAgdkRTUF9jdG96KChEU1BDb21wbGV4KilkYXRhLCAyLCAmbV9mcmFtZSwgMSwg
bV9GRlRTaXplIC8gMik7CiAgICAgdkRTUF9mZnRfenJpcChtX0ZGVFNldHVwLCAmbV9mcmFtZSwg
MSwgbV9sb2cyRkZUU2l6ZSwgRkZUX0ZPUldBUkQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWtsL0ZGVEZyYW1lTUtMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21rbC9GRlRGcmFtZU1LTC5jcHAKaW5kZXggNmJmMmMxZTIwNDEzMjE4ZTAw
MzVhY2YyNDIzZmY0OTA4MTRiNzhmMC4uMGYzYTI4MjdmNTk4OTliY2YyMjYyNDZhZmUyZjRkM2Y3
ZWIwNDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWtsL0ZG
VEZyYW1lTUtMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ta2wvRkZU
RnJhbWVNS0wuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBGRlRGcmFtZTo6bXVsdGlwbHko
Y29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIH0KIH0KIAotdm9pZCBGRlRGcmFtZTo6ZG9GRlQo
ZmxvYXQqIGRhdGEpCit2b2lkIEZGVEZyYW1lOjpkb0ZGVChjb25zdCBmbG9hdCogZGF0YSkKIHsK
ICAgICAvLyBDb21wdXRlIEZvcndhcmQgdHJhbnNmb3JtLgogICAgIE1LTF9MT05HIHN0YXR1cyA9
IERmdGlDb21wdXRlRm9yd2FyZChtX2hhbmRsZSwgZGF0YSwgbV9jb21wbGV4RGF0YS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAKaW5kZXggMWZkMmYzODQ4MjZlN2EzODlkMmY2MjA0ZWE1NDIxNmE3ZjJmMjFiMS4uYTBjYjEz
YTJiZjc3MDk0ZmMwOGE3M2NhMmY5NTdlMjE4NjBlYTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC0xNDIsNyArMTQyLDcg
QEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzU2FmZSkgewogICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvdXRwdXRCdXMtPm51bWJlck9mQ2hhbm5l
bHMoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBtZW1zZXQob3V0cHV0QnVzLT5jaGFubmVs
KGkpLT5kYXRhKCkgKyB6ZXJvU3RhcnRGcmFtZSwgMCwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1Rv
WmVybyk7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldChvdXRwdXRCdXMtPmNoYW5uZWwoaSkt
Pm11dGFibGVEYXRhKCkgKyB6ZXJvU3RhcnRGcmFtZSwgMCwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1l
c1RvWmVybyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1faXNQbGF5aW5nID0gZmFs
c2U7CkBAIC0xOTksMTEgKzE5OSwxMSBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVu
ZGVyRnJvbUJ1ZmZlcihBdWRpb0J1cyogYnVzLCB1bnNpZ25lZCBkZXN0aW5hdGlvbgogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBHZXQgdGhlIGRlc3RpbmF0aW9uIHBvaW50ZXJzLgotICAgIGZs
b2F0KiBkZXN0aW5hdGlvbkwgPSBidXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICBmbG9hdCog
ZGVzdGluYXRpb25MID0gYnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOwogICAgIEFTU0VS
VChkZXN0aW5hdGlvbkwpOwogICAgIGlmICghZGVzdGluYXRpb25MKQogICAgICAgICByZXR1cm47
Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IChudW1iZXJPZkNoYW5uZWxzIDwgMikgPyAwIDog
YnVzLT5jaGFubmVsKDEpLT5kYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IChudW1i
ZXJPZkNoYW5uZWxzIDwgMikgPyAwIDogYnVzLT5jaGFubmVsKDEpLT5tdXRhYmxlRGF0YSgpOwog
ICAgIAogICAgIGJvb2wgaXNTdGVyZW8gPSBkZXN0aW5hdGlvblI7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAxMjI0M2MwYzk5YmUxY2M3
NzUzZWMyYTlmNzk1MjgzOWY4Njk5NjI1Li5lMWFlYzc1ODgxNTYyMGM5YTZiYjA4ZTBiNjc1ZjUx
NjExZWJmNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9j
ZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5j
cHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Y2hlY2tGb3JEaXJ0
eUNvZWZmaWNpZW50cygpCiAgICAgfQogfQogCi12b2lkIEJpcXVhZFByb2Nlc3Nvcjo6cHJvY2Vz
cyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpCit2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyog
c291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7
CiAgICAgaWYgKCFpc0luaXRpYWxpemVkKCkpIHsKICAgICAgICAgZGVzdGluYXRpb24tPnplcm8o
KTsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6cHJvY2VzcyhBdWRp
b0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcgogICAgICAgICAg
ICAgCiAgICAgLy8gRm9yIGVhY2ggY2hhbm5lbCBvZiBvdXIgaW5wdXQsIHByb2Nlc3MgdXNpbmcg
dGhlIGNvcnJlc3BvbmRpbmcgQmlxdWFkRFNQS2VybmVsIGludG8gdGhlIG91dHB1dCBjaGFubmVs
LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tlcm5lbHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEoKSwg
ZGVzdGluYXRpb24tPmNoYW5uZWwoaSktPmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAg
ICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNzKHNvdXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0
aW5hdGlvbi0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKIH0K
IAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6OnNldFR5cGUoRmlsdGVyVHlwZSB0eXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmggYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAppbmRleCBjN2Y3ZDMwNjhhM2NmNWRl
NWM4MjQxMzE5MTNiY2Y2NDU5MjM3OTg2Li45MWExY2NjZDE3MDQ5ZDE0ODg4MWQwMDQ2Mzk2Nzkw
NzNiY2RkN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9j
ZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaApA
QCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPEF1
ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKTsKICAgICAgICAgCi0gICAgdmlydHVhbCB2b2lk
IHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1
cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
OwogCiAgICAgLy8gR2V0IHRoZSBtYWduaXR1ZGUgYW5kIHBoYXNlIHJlc3BvbnNlIG9mIHRoZSBm
aWx0ZXIgYXQgdGhlIGdpdmVuCiAgICAgLy8gc2V0IG9mIGZyZXF1ZW5jaWVzIChpbiBIeikuIFRo
ZSBwaGFzZSByZXNwb25zZSBpcyBpbiByYWRpYW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcAppbmRleCA0MjIxNTA5Y2Y5OWM2MTc0MzVlZTgw
ODYzZGVjZjI4ZWJlMDdhYTQ4Li5iZjgzMTQ3NTMzMTVkMGI1Y2FjYmFjOWRjYzgxMTQ1NDkxNDM4
MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2Rl
LmNwcApAQCAtMTYxLDEwICsxNjEsMTAgQEAgdm9pZCBKYXZhU2NyaXB0QXVkaW9Ob2RlOjpwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgaWYgKCFjaGFubmVsc0FyZUdvb2QpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGZsb2F0KiBzb3VyY2VMID0gaW5wdXRCdXMtPmNoYW5uZWwo
MCktPmRhdGEoKTsKLSAgICBmbG9hdCogc291cmNlUiA9IG51bWJlck9mSW5wdXRDaGFubmVscyA+
IDEgPyBpbnB1dEJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpIDogMDsKLSAgICBmbG9hdCogZGVzdGlu
YXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsKDApLT5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3Rp
bmF0aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2VMID0gaW5wdXRCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICBjb25zdCBmbG9h
dCogc291cmNlUiA9IG51bWJlck9mSW5wdXRDaGFubmVscyA+IDEgPyBpbnB1dEJ1cy0+Y2hhbm5l
bCgxKS0+ZGF0YSgpIDogMDsKKyAgICBmbG9hdCogZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5j
aGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRw
dXRCdXMtPmNoYW5uZWwoMSktPm11dGFibGVEYXRhKCk7CiAKICAgICAvLyBDb3B5IGZyb20gdGhl
IGlucHV0IHRvIHRoZSBpbnB1dCBidWZmZXIuICBTZWUgImJ1ZmZlcnNBcmVHb29kIiBjaGVjayBh
Ym92ZSBmb3Igc2FmZXR5LgogICAgIHNpemVfdCBieXRlc1RvQ29weSA9IHNpemVvZihmbG9hdCkg
KiBmcmFtZXNUb1Byb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBhZTE4MzViOWFhYjg2ZjRiMTJl
MWI0NTI4ZWVjYzMyOTA0MThjM2FjLi4xOThhNTAyMGJlOTFkMDBkYjEwZjVhNTA5MzA3NjEyNjg2
OTk2ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIE9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKCkKICAgICAgICAgc2l6ZV90IGZyYW1lc0F2YWls
YWJsZVRvQ29weSA9IG1pbihmcmFtZXNUb1Byb2Nlc3MsIHJlbmRlclF1YW50dW1TaXplKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgICAgIGZs
b2F0KiBzb3VyY2UgPSBtX3JlbmRlckJ1cy0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7
CisgICAgICAgICAgICBjb25zdCBmbG9hdCogc291cmNlID0gbV9yZW5kZXJCdXMtPmNoYW5uZWwo
Y2hhbm5lbEluZGV4KS0+ZGF0YSgpOwogICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0g
bV9yZW5kZXJUYXJnZXQtPmdldENoYW5uZWxEYXRhKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKICAg
ICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG4sIHNvdXJjZSwgc2l6ZW9mKGZsb2F0KSAq
IGZyYW1lc0F2YWlsYWJsZVRvQ29weSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggY2NkODY1NTIyNmQ1MTk0NGM2ZjAxNWYx
MDk1ZjEzNTAxN2VjYjc0My4uYTNmODA3ZDgzN2Y3N2M0OWNjYjA0MTU1MGE2YTljOTBkODRjNWUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OndyaXRlSW5wdXQoQXVkaW9C
dXMqIGJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAKICAgICAvLyBQZXJmb3JtIHJl
YWwtdGltZSBhbmFseXNpcwogICAgIC8vIEZJWE1FIDogZm9yIG5vdyBqdXN0IHVzZSBsZWZ0IGNo
YW5uZWwgKG11c3QgbWl4IGlmIHN0ZXJlbyBzb3VyY2UpCi0gICAgZmxvYXQqIHNvdXJjZSA9IGJ1
cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBidXMtPmNo
YW5uZWwoMCktPmRhdGEoKTsKIAogICAgIC8vIFRoZSBzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBz
YW5pdHkgY2hlY2tlZCB3aXRoIGlzQnVzR29vZCBhYm92ZS4KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXggZjc1NzFkZWJiNzEy
Yzk1NGQyYWY5YTQ4ZjY2NDFhODIzNzY2MGQ2Yy4uNGY4M2UxNjY5OGNlMTQ2NDM4MDYwZjg5Y2Mx
NWUzNzkwM2FjODZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNo
YXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBl
clByb2Nlc3Nvci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29y
OjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1cnZlKQogICAgIG1fY3VydmUgPSBjdXJ2ZTsKIH0K
IAotdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1
ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgV2F2ZVNo
YXBlclByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyog
ZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFpc0luaXRp
YWxpemVkKCkpIHsKICAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKQEAgLTY4LDcgKzY4LDcg
QEAgdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1
ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV8KICAgICBpZiAobV9wcm9jZXNzTG9jay50cnlMb2Nr
KCkpIHsgICAgICAgIAogICAgICAgICAvLyBGb3IgZWFjaCBjaGFubmVsIG9mIG91ciBpbnB1dCwg
cHJvY2VzcyB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBXYXZlU2hhcGVyRFNQS2VybmVsIGludG8g
dGhlIG91dHB1dCBjaGFubmVsLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9r
ZXJuZWxzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNzKHNv
dXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+Y2hhbm5lbChpKS0+ZGF0YSgp
LCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICAgICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNzKHNv
dXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+Y2hhbm5lbChpKS0+bXV0YWJs
ZURhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgICAgICBtX3Byb2Nlc3NMb2NrLnVubG9j
aygpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9X
YXZlU2hhcGVyUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVy
UHJvY2Vzc29yLmgKaW5kZXggNDAxNmU4YmRlZjcxZTEyMTBkZjQzNDk4OTY5YzMwYmY1OWFjY2E4
ZS4uNDczNWVmZGEyNWY3MjMzYTJhMTc0OWQzY2E1NDUwZjIyNDc5ZGNiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaApAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0
ZUtlcm5lbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwg
QXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGlu
YXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgdm9pZCBzZXRDdXJ2ZShGbG9h
dDMyQXJyYXkqKTsKICAgICBGbG9hdDMyQXJyYXkqIGN1cnZlKCkgeyByZXR1cm4gbV9jdXJ2ZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0
aW5hdGlvbkNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1ZGlvRGVz
dGluYXRpb25DaHJvbWl1bS5jcHAKaW5kZXggZTZlZjdkMTBiN2UzZTFjYTZjYjhhMjY2ZWIwYjQ0
ZTM5ODYxNmFiOS4uNmM4MjM4NWM4MDhmNzQxNWVjMDhiOTg4M2Y2NDQwZjU0ZjIyZmZjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9u
Q2hyb21pdW0uY3BwCkBAIC0xNjAsOCArMTYwLDggQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ2hy
b21pdW06OkZJRk86OmNvbnN1bWUoQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWUK
ICAgICBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyA9IG1fZmlmb0F1ZGlvQnVzLm51bWJlck9mQ2hh
bm5lbHMoKTsKIAogICAgIGZvciAoc2l6ZV90IGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRl
eCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KSB7Ci0gICAgICAgIGZsb2F0KiBk
ZXN0aW5hdGlvbkRhdGEgPSBkZXN0aW5hdGlvbi0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRh
KCk7Ci0gICAgICAgIGZsb2F0KiBzb3VyY2VEYXRhID0gbV9maWZvQXVkaW9CdXMuY2hhbm5lbChj
aGFubmVsSW5kZXgpLT5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbkRhdGEgPSBk
ZXN0aW5hdGlvbi0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgpOworICAgICAg
ICBjb25zdCBmbG9hdCogc291cmNlRGF0YSA9IG1fZmlmb0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5l
bEluZGV4KS0+ZGF0YSgpOwogCiAgICAgICAgIGJvb2wgaXNDb3B5R29vZCA9ICgobV9yZWFkSW5k
ZXggPCBtX2ZpZm9MZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9yZWFk
SW5kZXggKyBwYXJ0MUxlbmd0aCkgPD0gbV9maWZvTGVuZ3RoCkBAIC0yMTksOCArMjE5LDggQEAg
dm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkZJRk86OmZpbGxCdWZmZXIoc2l6ZV90IG51
bWJlck9mRnJhbWVzKQogICAgICAgICBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyA9IG1fZmlmb0F1
ZGlvQnVzLm51bWJlck9mQ2hhbm5lbHMoKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoc2l6ZV90
IGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hh
bm5lbEluZGV4KSB7Ci0gICAgICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBtX2ZpZm9BdWRp
b0J1cy5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKLSAgICAgICAgICAgIGZsb2F0KiBz
b3VyY2UgPSBtX3RlbXBCdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7CisgICAgICAg
ICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBtX2ZpZm9BdWRpb0J1cy5jaGFubmVsKGNoYW5uZWxJ
bmRleCktPm11dGFibGVEYXRhKCk7CisgICAgICAgICAgICBjb25zdCBmbG9hdCogc291cmNlID0g
bV90ZW1wQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwogCiAgICAgICAgICAgICBi
b29sIGlzQ29weUdvb2QgPSAocGFydDFMZW5ndGggPD0gbV9wcm92aWRlclNpemUKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiAocGFydDFMZW5ndGggKyBwYXJ0Mkxlbmd0aCkgPD0g
bV9wcm92aWRlclNpemUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123070</attachid>
            <date>2012-01-18 21:47:51 -0800</date>
            <delta_ts>2012-01-19 10:23:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76573-20120118214750.patch</filename>
            <type>text/plain</type>
            <size>69046</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYxZWFkZGViM2VjYTVj
MjI2OTRiMDBkZmU4MzRhMmZjNjk5MWViYS4uYjZiOWY2Y2MyMGVjM2UxY2ZlMmVmZmJlMDg1NmUz
NzAwNTQ0MzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMi0wMS0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkF1ZGlvIEFQ
SSBjb25zdC1jb3JyZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHM7IG5vIG5ldCBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgc28g
Y292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGUgbm9uLWNvbnN0IGRhdGEo
KSBhY2Nlc3NvciB3YXMgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIHRvIGV4cG9zZSBjb25zdC1jb3Jy
ZWN0bmVzcworICAgICAgICBidWdzIGR1cmluZyBjb21waWxlIHRpbWU6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5u
ZWw6Om11dGFibGVEYXRhKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJl
IG1hZGUgY29uc3QgY29ycmVjdDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0FycmF5Ojpjb3B5VG9SYW5nZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNy
ZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZUQ29udm9sdmVyOjpwcm9jZXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9QYWRk
ZWRGRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlclN0YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0
YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVz
YW1wbGVyOjpjb25zdW1lU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6
OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpa
ZXJvUG9sZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1czo6Y2hhbm5lbEJ5VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpnYWluKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Byb2Nlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnBy
b2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXF1YWxQb3dlclBhbm5lcjo6cGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6bnVtYmVyT2ZBemltdXRocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjpwcm9jZXNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9s
dmVyOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9ta2wvRkZURnJhbWVNS0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRv
RkZUKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIHRv
IHVzZSB0aGUgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIGFjY2Vzc29yOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpwcm9j
ZXNzV2l0aEdhaW5Gcm9tTW9ub1N0ZXJlbyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6
Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVs
OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNvcHlGcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6Y29weUZyb21SYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnN1bUZyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcjo6cHJvY2Vz
cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
cXVhbFBvd2VyUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJu
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnBh
bik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6cHJvY2Vzcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVy
Yjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0ZGVEZyYW1lTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZG
VCk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1
YWRQcm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2Vz
cyk6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKToK
KyAgICAgICAgKiB3ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lQW5hbHlzZXI6OndyaXRlSW5wdXQpOgorICAgICAgICAqIHdlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nl
c3Nvcjo6cHJvY2Vzcyk6CisKIDIwMTItMDEtMTggIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0
aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiNjc4ZDZjZmM1OTY3NmE5ZmViYmNm
Nzc5NjFjZDZmZGQzMTUxNjZmLi5iMmE2MDM3NjgxNDUxYjRmM2U0YWJjZjFjMTRlODk4NDk3YTVh
NjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAx
LTE4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgV2Vi
QXVkaW8gQVBJIGNvbnN0LWNvcnJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHdlcmUgbW9kaWZpZWQgdG8g
dXNlIHRoZSByZW5hbWVkIG11dGFibGVEYXRhKCkgYWNjZXNzb3I6CisgICAgICAgICogc3JjL0F1
ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uQ2hyb21pdW06OkZJRk86OmZpbGxCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkNocm9taXVtOjpGSUZPOjpjb25zdW1lKToKKyAgICAgICAgKiBzcmMvV2Vi
QXVkaW9EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVzOjpjaGFubmVsRGF0
YSk6CisKIDIwMTItMDEtMTggIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+
CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0aG9kcyB0byBzY3Jv
bGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oCmluZGV4IGExNGM5NTBkZDZmYzdj
Y2JlOGIwNGIxZTkyNjBkYTJiMTAyMWRhNTguLjdhMjI1MWIzOGIyZjQyZTA1YzhlNDBhMTBiYjcz
NDJjNGIyZTY0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5
LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1lbXNldCh0aGlzLT5kYXRh
KCkgKyBzdGFydCwgMCwgc2l6ZW9mKFQpICogKGVuZCAtIHN0YXJ0KSk7CiAgICAgfQogCi0gICAg
dm9pZCBjb3B5VG9SYW5nZShUKiBzb3VyY2VEYXRhLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
ZW5kKQorICAgIHZvaWQgY29weVRvUmFuZ2UoY29uc3QgVCogc291cmNlRGF0YSwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGVuZCkKICAgICB7CiAgICAgICAgIGJvb2wgaXNTYWZlID0gKHN0YXJ0
IDw9IGVuZCkgJiYgKGVuZCA8PSB0aGlzLT5zaXplKCkpOwogICAgICAgICBBU1NFUlQoaXNTYWZl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCAzMDQ4
OWJhYTc1MWUxMzQzZDY3MjlhZjQ2OGI2OTI1OGM3MGE3Y2FjLi5iODEwN2I5NTc5Yjk4NjZhNWZh
MWE3NjkyNDM3ZTVmOWU3MTM2NzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuY3BwCkBAIC0xMzAsNiArMTMwLDExIEBAIEF1ZGlvQ2hhbm5lbCogQXVkaW9CdXM6
OmNoYW5uZWxCeVR5cGUodW5zaWduZWQgY2hhbm5lbFR5cGUpCiAgICAgcmV0dXJuIDA7CiB9CiAK
K2NvbnN0IEF1ZGlvQ2hhbm5lbCogQXVkaW9CdXM6OmNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlw
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxBdWRpb0J1cyo+KHRoaXMpLT5jaGFu
bmVsQnlUeXBlKHR5cGUpOworfQorCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNoYW5uZWwgY291
bnQgYW5kIGZyYW1lLXNpemUgbWF0Y2guCiBib29sIEF1ZGlvQnVzOjp0b3BvbG9neU1hdGNoZXMo
Y29uc3QgQXVkaW9CdXMmIGJ1cykgY29uc3QKIHsKQEAgLTE0Myw3ICsxNDgsNyBAQCBib29sIEF1
ZGlvQnVzOjp0b3BvbG9neU1hdGNoZXMoY29uc3QgQXVkaW9CdXMmIGJ1cykgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ1
ZmZlckZyb21SYW5nZShBdWRpb0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1l
LCB1bnNpZ25lZCBlbmRGcmFtZSkKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVh
dGVCdWZmZXJGcm9tUmFuZ2UoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1ZmZlciwgdW5zaWduZWQg
c3RhcnRGcmFtZSwgdW5zaWduZWQgZW5kRnJhbWUpCiB7CiAgICAgc2l6ZV90IG51bWJlck9mU291
cmNlRnJhbWVzID0gc291cmNlQnVmZmVyLT5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzID0gc291cmNlQnVmZmVyLT5udW1iZXJPZkNoYW5uZWxzKCk7CkBAIC0zNDUsOCAr
MzUwLDggQEAgdm9pZCBBdWRpb0J1czo6cHJvY2Vzc1dpdGhHYWluRnJvbU1vbm9TdGVyZW8oY29u
c3QgQXVkaW9CdXMgJnNvdXJjZUJ1cywgZmxvYXQqIGwKICAgICBjb25zdCBmbG9hdCogc291cmNl
TCA9IHNvdXJjZUJ1c1NhZmUuY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPmRhdGEoKTsKICAg
ICBjb25zdCBmbG9hdCogc291cmNlUiA9IG51bWJlck9mU291cmNlQ2hhbm5lbHMgPiAxID8gc291
cmNlQnVzU2FmZS5jaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPmRhdGEoKSA6IDA7CiAKLSAg
ICBmbG9hdCogZGVzdGluYXRpb25MID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPmRhdGEo
KTsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gbnVtYmVyT2ZEZXN0aW5hdGlvbkNoYW5uZWxz
ID4gMSA/IGNoYW5uZWxCeVR5cGUoQ2hhbm5lbFJpZ2h0KS0+ZGF0YSgpIDogMDsKKyAgICBmbG9h
dCogZGVzdGluYXRpb25MID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPm11dGFibGVEYXRh
KCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG51bWJlck9mRGVzdGluYXRpb25DaGFubmVs
cyA+IDEgPyBjaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPm11dGFibGVEYXRhKCkgOiAwOwog
CiAgICAgY29uc3QgZmxvYXQgRGV6aXBwZXJSYXRlID0gMC4wMDVmOwogICAgIGludCBmcmFtZXNU
b1Byb2Nlc3MgPSBsZW5ndGgoKTsKQEAgLTQzNyw3ICs0NDIsNyBAQCB2b2lkIEF1ZGlvQnVzOjpj
b3B5V2l0aFNhbXBsZUFjY3VyYXRlR2FpblZhbHVlc0Zyb20oY29uc3QgQXVkaW9CdXMgJnNvdXJj
ZUJ1cywgZgogICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4
IDwgbnVtYmVyT2ZDaGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewogICAgICAgICBpZiAoc291
cmNlQnVzLm51bWJlck9mQ2hhbm5lbHMoKSA9PSBudW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAg
ICAgICBzb3VyY2UgPSBzb3VyY2VCdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7Ci0g
ICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgp
OworICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBjaGFubmVsKGNoYW5uZWxJbmRleCktPm11
dGFibGVEYXRhKCk7CiAgICAgICAgIHZtdWwoc291cmNlLCAxLCBnYWluVmFsdWVzLCAxLCBkZXN0
aW5hdGlvbiwgMSwgbnVtYmVyT2ZHYWluVmFsdWVzKTsKICAgICB9CiB9CkBAIC00NTIsNyArNDU3
LDcgQEAgdm9pZCBBdWRpb0J1czo6c3VtV2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3Vy
Y2VCdXMsIGZsb2F0KiBsYXN0TWl4R2FpbiwgZmwKICAgICBwcm9jZXNzV2l0aEdhaW5Gcm9tKHNv
dXJjZUJ1cywgbGFzdE1peEdhaW4sIHRhcmdldEdhaW4sIHRydWUpOwogfQogCi1QYXNzT3duUHRy
PEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhBdWRpb0J1
cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91YmxlIG5ld1NhbXBsZVJhdGUpCitQYXNz
T3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhj
b25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91YmxlIG5ld1NhbXBs
ZVJhdGUpCiB7CiAgICAgLy8gc291cmNlQnVzJ3Mgc2FtcGxlLXJhdGUgbXVzdCBiZSBrbm93bi4K
ICAgICBBU1NFUlQoc291cmNlQnVzICYmIHNvdXJjZUJ1cy0+c2FtcGxlUmF0ZSgpKTsKQEAgLTQ3
Niw3ICs0ODEsNyBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1w
bGVSYXRlQ29udmVydGluZyhBdWRpb0J1cyogc291cmNlQnVzLAogICAgIH0KICAgICAKICAgICAv
LyBGaXJzdCwgbWl4IHRvIG1vbm8gKGlmIG5lY2Vzc2FyeSkgdGhlbiBzYW1wbGUtcmF0ZSBjb252
ZXJ0LgotICAgIEF1ZGlvQnVzKiByZXNhbXBsZXJTb3VyY2VCdXM7CisgICAgY29uc3QgQXVkaW9C
dXMqIHJlc2FtcGxlclNvdXJjZUJ1czsKICAgICBPd25QdHI8QXVkaW9CdXM+IG1peGVkTW9ub0J1
czsKICAgICBpZiAobWl4VG9Nb25vKSB7CiAgICAgICAgIG1peGVkTW9ub0J1cyA9IEF1ZGlvQnVz
OjpjcmVhdGVCeU1peGluZ1RvTW9ubyhzb3VyY2VCdXMpOwpAQCAtNDk3LDggKzUwMiw4IEBAIFBh
c3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5n
KEF1ZGlvQnVzKiBzb3VyY2VCdXMsCiAKICAgICAvLyBTYW1wbGUtcmF0ZSBjb252ZXJ0IGVhY2gg
Y2hhbm5lbC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZEZXN0aW5hdGlv
bkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgZmxvYXQqIHNvdXJjZSA9IHJlc2FtcGxlclNvdXJj
ZUJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOwotICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBk
ZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAgICAgICBjb25zdCBmbG9hdCog
c291cmNlID0gcmVzYW1wbGVyU291cmNlQnVzLT5jaGFubmVsKGkpLT5kYXRhKCk7CisgICAgICAg
IGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKGkpLT5tdXRhYmxl
RGF0YSgpOwogCiAgICAgICAgIFNpbmNSZXNhbXBsZXIgcmVzYW1wbGVyKHNhbXBsZVJhdGVSYXRp
byk7CiAgICAgICAgIHJlc2FtcGxlci5wcm9jZXNzKHNvdXJjZSwgZGVzdGluYXRpb24sIHNvdXJj
ZUxlbmd0aCk7CkBAIC01MDgsNyArNTEzLDcgQEAgUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9C
dXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMqIHNvdXJjZUJ1cywKICAg
ICByZXR1cm4gZGVzdGluYXRpb25CdXMucmVsZWFzZSgpOwogfQogCi1QYXNzT3duUHRyPEF1ZGlv
QnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oQXVkaW9CdXMqIHNvdXJjZUJ1cykK
K1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyhjb25z
dCBBdWRpb0J1cyogc291cmNlQnVzKQogewogICAgIHN3aXRjaCAoc291cmNlQnVzLT5udW1iZXJP
ZkNoYW5uZWxzKCkpIHsKICAgICBjYXNlIDE6CkBAIC01MTksOSArNTI0LDkgQEAgUGFzc093blB0
cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3Vy
Y2VCdXMpCiAgICAgICAgICAgICB1bnNpZ25lZCBuID0gc291cmNlQnVzLT5sZW5ndGgoKTsKICAg
ICAgICAgICAgIE93blB0cjxBdWRpb0J1cz4gZGVzdGluYXRpb25CdXMoYWRvcHRQdHIobmV3IEF1
ZGlvQnVzKDEsIG4pKSk7CiAKLSAgICAgICAgICAgIGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVz
LT5jaGFubmVsKDApLT5kYXRhKCk7Ci0gICAgICAgICAgICBmbG9hdCogc291cmNlUiA9IHNvdXJj
ZUJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpOwotICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9u
ID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICAgICAgICAgIGNvbnN0
IGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgICAg
ICAgICBjb25zdCBmbG9hdCogc291cmNlUiA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgp
OworICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5u
ZWwoMCktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIAogICAgICAgICAgICAgLy8gRG8gdGhlIG1v
bm8gbWl4ZG93bi4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCA2MzcwYzhiNTIz
NDYxNDdjYTg3MGMzMWU1M2NjN2FjZDQ1ODczYmZjLi5iM2RhMGY0NTFkMTgxNDNhN2IwMWY0Y2Rk
MjA5NzcwMGQ4ZDE1OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0J1cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVz
LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCh1
bnNpZ25lZCBjaGFubmVsKSB7IHJldHVybiBtX2NoYW5uZWxzW2NoYW5uZWxdLmdldCgpOyB9CiAg
ICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsKHVuc2lnbmVkIGNoYW5uZWwpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8QXVkaW9CdXMqPih0aGlzKS0+bV9jaGFubmVsc1tjaGFubmVsXS5n
ZXQoKTsgfQogICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5lbEJ5VHlwZSh1bnNpZ25lZCB0eXBlKTsK
KyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlwZSkgY29u
c3Q7CiAKICAgICAvLyBOdW1iZXIgb2Ygc2FtcGxlLWZyYW1lcwogICAgIHNpemVfdCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQpAQCAtODcsMjQgKzg4LDI0IEBAIHB1YmxpYzoK
IAogICAgIC8vIENyZWF0ZXMgYSBuZXcgYnVmZmVyIGZyb20gYSByYW5nZSBpbiB0aGUgc291cmNl
IGJ1ZmZlci4KICAgICAvLyAwIG1heSBiZSByZXR1cm5lZCBpZiB0aGUgcmFuZ2UgZG9lcyBub3Qg
Zml0IGluIHRoZSBzb3VyY2VCdWZmZXIKLSAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0J1cz4g
Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKEF1ZGlvQnVzKiBzb3VyY2VCdWZmZXIsIHVuc2lnbmVkIHN0
YXJ0RnJhbWUsIHVuc2lnbmVkIGVuZEZyYW1lKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRp
b0J1cz4gY3JlYXRlQnVmZmVyRnJvbVJhbmdlKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdWZmZXIs
IHVuc2lnbmVkIHN0YXJ0RnJhbWUsIHVuc2lnbmVkIGVuZEZyYW1lKTsKIAogCiAgICAgLy8gQ3Jl
YXRlcyBhIG5ldyBBdWRpb0J1cyBieSBzYW1wbGUtcmF0ZSBjb252ZXJ0aW5nIHNvdXJjZUJ1cyB0
byB0aGUgbmV3U2FtcGxlUmF0ZS4KICAgICAvLyBzZXRTYW1wbGVSYXRlKCkgbXVzdCBoYXZlIGJl
ZW4gcHJldmlvdXNseSBjYWxsZWQgb24gc291cmNlQnVzLgogICAgIC8vIE5vdGU6IHNhbXBsZS1y
YXRlIGNvbnZlcnNpb24gaXMgYWxyZWFkeSBoYW5kbGVkIGluIHRoZSBmaWxlLXJlYWRpbmcgY29k
ZSBmb3IgdGhlIG1hYyBwb3J0LCBzbyB3ZSBkb24ndCBuZWVkIHRoaXMuCi0gICAgc3RhdGljIFBh
c3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMq
IHNvdXJjZUJ1cywgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnlTYW1wbGVSYXRlQ29udmVydGluZyhj
b25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBib29sIG1peFRvTW9ubywgZG91YmxlIG5ld1NhbXBs
ZVJhdGUpOwogCiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBBdWRpb0J1cyBieSBtaXhpbmcgYWxsIHRo
ZSBjaGFubmVscyBkb3duIHRvIG1vbm8uCiAgICAgLy8gSWYgc291cmNlQnVzIGlzIGFscmVhZHkg
bW9ubywgdGhlbiB0aGUgcmV0dXJuZWQgQXVkaW9CdXMgd2lsbCBzaW1wbHkgYmUgYSBjb3B5Lgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCeU1peGluZ1RvTW9ubyhBdWRp
b0J1cyogc291cmNlQnVzKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRl
QnlNaXhpbmdUb01vbm8oY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cyk7CiAKICAgICAvLyBTY2Fs
ZXMgYWxsIHNhbXBsZXMgYnkgdGhlIHNhbWUgYW1vdW50LgogICAgIHZvaWQgc2NhbGUoZmxvYXQg
c2NhbGUpOwogCiAgICAgLy8gTWFzdGVyIGdhaW4gZm9yIHRoaXMgYnVzIC0gdXNlZCB3aXRoIHN1
bVdpdGhHYWluRnJvbSgpIGJlbG93CiAgICAgdm9pZCBzZXRHYWluKGZsb2F0IGdhaW4pIHsgbV9i
dXNHYWluID0gZ2FpbjsgfQotICAgIGZsb2F0IGdhaW4oKSB7IHJldHVybiBtX2J1c0dhaW47IH0K
KyAgICBmbG9hdCBnYWluKCkgY29uc3QgeyByZXR1cm4gbV9idXNHYWluOyB9CiAKICAgICB2b2lk
IHJlc2V0KCkgeyBtX2lzRmlyc3RUaW1lID0gdHJ1ZTsgfSAvLyBmb3IgZGUtemlwcGVyaW5nCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwCmluZGV4
IGViYmYzYmJmNTUwZDJhMzcyMmMxMGE4NmZmNDUyNGVmNDM1NzM1MGQuLjNjNzQ4ZTYzMzk5MGVj
MTdiY2RjMDM4ZjA3MGE5NTI0MmZhYTlkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgVmVjdG9yTWF0aDsKIAogdm9pZCBBdWRpb0NoYW5uZWw6OnNjYWxlKGZsb2F0IHNjYWxlKQog
ewotICAgIHZzbXVsKGRhdGEoKSwgMSwgJnNjYWxlLCBkYXRhKCksIDEsIGxlbmd0aCgpKTsKKyAg
ICB2c211bChkYXRhKCksIDEsICZzY2FsZSwgbXV0YWJsZURhdGEoKSwgMSwgbGVuZ3RoKCkpOwog
fQogCiB2b2lkIEF1ZGlvQ2hhbm5lbDo6Y29weUZyb20oY29uc3QgQXVkaW9DaGFubmVsKiBzb3Vy
Y2VDaGFubmVsKQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEF1ZGlvQ2hhbm5lbDo6Y29weUZyb20o
Y29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsKQogICAgIGlmICghaXNTYWZlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtZW1jcHkoZGF0YSgpLCBzb3VyY2VDaGFubmVsLT5kYXRhKCks
IHNpemVvZihmbG9hdCkgKiBsZW5ndGgoKSk7CisgICAgbWVtY3B5KG11dGFibGVEYXRhKCksIHNv
dXJjZUNoYW5uZWwtPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGxlbmd0aCgpKTsKIH0KIAogdm9p
ZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tUmFuZ2UoY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VD
aGFubmVsLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFtZSkKQEAgLTcyLDcg
KzcyLDcgQEAgdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tUmFuZ2UoY29uc3QgQXVkaW9DaGFu
bmVsKiBzb3VyY2VDaGFubmVsLCB1bnNpZ25lZCBzdGEKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Y29uc3QgZmxvYXQqIHNvdXJjZSA9IHNvdXJjZUNoYW5uZWwtPmRhdGEoKTsKLSAgICBmbG9hdCog
ZGVzdGluYXRpb24gPSBkYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gbXV0YWJsZURh
dGEoKTsKICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSArIHN0YXJ0RnJhbWUsIHNpemVv
ZihmbG9hdCkgKiByYW5nZUxlbmd0aCk7CiB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBBdWRp
b0NoYW5uZWw6OnN1bUZyb20oY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsKQogICAg
IGlmICghaXNTYWZlKQogICAgICAgICByZXR1cm47CiAKLSAgICB2YWRkKGRhdGEoKSwgMSwgc291
cmNlQ2hhbm5lbC0+ZGF0YSgpLCAxLCBkYXRhKCksIDEsIGxlbmd0aCgpKTsKKyAgICB2YWRkKGRh
dGEoKSwgMSwgc291cmNlQ2hhbm5lbC0+ZGF0YSgpLCAxLCBtdXRhYmxlRGF0YSgpLCAxLCBsZW5n
dGgoKSk7CiB9CiAKIGZsb2F0IEF1ZGlvQ2hhbm5lbDo6bWF4QWJzVmFsdWUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAppbmRleCA4ODAzZTc1
Y2QxZTNmN2FlMjJhNTA4NjlmNjFlOGRkNDVkYmJkNGNjLi4yNGRlM2Y5ZTgyMDYyYzdjMGFlODNk
ZGMyZTVmMDQxZWYxMTQyOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0NoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0NoYW5uZWwuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAvLyBEaXJlY3QgYWNjZXNzIHRv
IFBDTSBzYW1wbGUgZGF0YQotICAgIGZsb2F0KiBkYXRhKCkgeyByZXR1cm4gbV9yYXdQb2ludGVy
ID8gbV9yYXdQb2ludGVyIDogbV9tZW1CdWZmZXItPmRhdGEoKTsgfQorICAgIGZsb2F0KiBtdXRh
YmxlRGF0YSgpIHsgcmV0dXJuIG1fcmF3UG9pbnRlciA/IG1fcmF3UG9pbnRlciA6IG1fbWVtQnVm
ZmVyLT5kYXRhKCk7IH0KICAgICBjb25zdCBmbG9hdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmF3UG9pbnRlciA/IG1fcmF3UG9pbnRlciA6IG1fbWVtQnVmZmVyLT5kYXRhKCk7IH0KIAogICAg
IC8vIFplcm9lcyBvdXQgYWxsIHNhbXBsZSB2YWx1ZXMgaW4gYnVmZmVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Iu
Y3BwCmluZGV4IGNmNGQyZDM1MTc1YTUzODkzZTE1Y2VmNTAzZjBiZjllMzZhMGFjODMuLjVmOTEz
OWYwMzA4ODRjZDQ5MmI1M2FhMDNkODBiM2U5ZmFjNDUzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6dW5pbml0aWFs
aXplKCkKICAgICBtX2luaXRpYWxpemVkID0gZmFsc2U7CiB9CiAKLXZvaWQgQXVkaW9EU1BLZXJu
ZWxQcm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0
aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nv
cjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24s
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgQVNTRVJUKHNvdXJjZSAmJiBkZXN0aW5h
dGlvbik7CiAgICAgaWYgKCFzb3VyY2UgfHwgIWRlc3RpbmF0aW9uKQpAQCAtODgsNyArODgsNyBA
QCB2b2lkIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2Us
IEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgcwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tlcm5lbHMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEoKSwgZGVzdGlu
YXRpb24tPmNoYW5uZWwoaSktPmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgbV9r
ZXJuZWxzW2ldLT5wcm9jZXNzKHNvdXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0aW5hdGlv
bi0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAogLy8g
UmVzZXRzIGZpbHRlciBzdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgKaW5kZXggNDBiNWFiOGQ2NzM4M2UyZGM4
OTdjZjc1M2Y2NDljMWMwMDM3YjNiMC4uN2Y4ZjgxZDJmZDg2ZmRiOGI0NWVhOTcyYWNmMmU2OTU4
NTE4MzI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAv
LyBBdWRpb1Byb2Nlc3NvciBtZXRob2RzCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0aWFsaXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nl
c3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291
cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogICAg
IHZpcnR1YWwgdm9pZCByZXNldCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROdW1iZXJPZkNoYW5u
ZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaAppbmRleCAyZDdiNjBhN2NlNjBlYjA2NjVlMmQy
ODhmYmM5NDk2NjZmZmRjYmNmLi40NjlmODMzMjI0MzYwNzgxZDQwMjJiMDNkZTdjYjVhNzY4YzA0
NzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nl
c3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHJvY2Vzc29y
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxp
emUoKSA9IDA7CiAKICAgICAvLyBQcm9jZXNzZXMgdGhlIHNvdXJjZSB0byBkZXN0aW5hdGlvbiBi
dXMuICBUaGUgbnVtYmVyIG9mIGNoYW5uZWxzIG11c3QgbWF0Y2ggaW4gc291cmNlIGFuZCBkZXN0
aW5hdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRp
b0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGlu
YXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpID0gMDsKIAogICAgIC8vIFJlc2V0cyBmaWx0
ZXIgc3RhdGUKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKaW5kZXggYmE1YjU4ZTY0NTA4
ZjAxMTg4MzJkMDJjNWJjNWE1OTIyZGU2MDlkNS4uMWE5ZjgxZTdhNzQzYWE2MmZlMTI0NWVmNDhm
M2Q2NGVmZmEyMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQXVkaW9SZXNhbXBsZXI6
OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIsIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvCiAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSB0aGUgc291cmNlIGRhdGEsIHJlc2FtcGxlIGVh
Y2ggY2hhbm5lbCBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidXMuCiAgICAgLy8gRklYTUU6IG9wdGlt
aXplIGZvciB0aGUgY29tbW9uIHN0ZXJlbyBjYXNlIHdoZXJlIGl0J3MgZmFzdGVyIHRvIHByb2Nl
c3MgYm90aCBsZWZ0L3JpZ2h0IGNoYW5uZWxzIGluIHRoZSBzYW1lIGlubmVyIGxvb3AuCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAg
ICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgp
OworICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbChp
KS0+bXV0YWJsZURhdGEoKTsKICAgICAgICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNzKGRlc3RpbmF0
aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGM0Nzk1ZjRmODFl
YmZjOGVkOWJmNzZhNTk4NDE0ZTc4OTlkODJlZGQuLmE1NTIwNTcwNWQ5NTEwYmYyMGQ5ZGIzNTQ4
NzkzOTY1ZWUwMmVlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMTE1LDEwICsxMTUsMTAgQEAgdm9pZCBEeW5h
bWljc0NvbXByZXNzb3I6OnNldEVtcGhhc2lzUGFyYW1ldGVycyhmbG9hdCBnYWluLCBmbG9hdCBh
bmNob3JGcmVxLCBmbG8KICAgICBzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVycygzLCBnYWluLCBh
bmNob3JGcmVxIC8gKGZpbHRlclN0YWdlUmF0aW8gKiBmaWx0ZXJTdGFnZVJhdGlvICogZmlsdGVy
U3RhZ2VSYXRpbykpOwogfQogCi12b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2VzcyhBdWRp
b0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHVuc2lnbmVkIGZyYW1l
c1RvUHJvY2VzcykKK3ZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlv
QnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgdW5zaWduZWQgZnJhbWVz
VG9Qcm9jZXNzKQogewotICAgIGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVzLT5jaGFubmVsKDAp
LT5kYXRhKCk7Ci0gICAgZmxvYXQqIHNvdXJjZVI7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwg
PSBzb3VyY2VCdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNl
UjsKIAogICAgIGlmIChzb3VyY2VCdXMtPm51bWJlck9mQ2hhbm5lbHMoKSA+IDEpCiAgICAgICAg
IHNvdXJjZVIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKQEAgLTEyNyw4ICsxMjcs
OCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVz
LCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsCiAKICAgICBBU1NFUlQoZGVzdGluYXRpb25CdXMt
Pm51bWJlck9mQ2hhbm5lbHMoKSA9PSAyKTsKIAotICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBk
ZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlv
blIgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpOworICAgIGZsb2F0KiBkZXN0
aW5hdGlvbkwgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKKyAg
ICBmbG9hdCogZGVzdGluYXRpb25SID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMSktPm11dGFi
bGVEYXRhKCk7CiAKICAgICBmbG9hdCBmaWx0ZXJTdGFnZUdhaW4gPSBwYXJhbWV0ZXJWYWx1ZShQ
YXJhbUZpbHRlclN0YWdlR2Fpbik7CiAgICAgZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyA9IHBhcmFt
ZXRlclZhbHVlKFBhcmFtRmlsdGVyU3RhZ2VSYXRpbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCmluZGV4IDIxNTI5NTEyZGVmMTkw
NDY2Y2VjYTg1Y2E4MWMzZDg3NmViMDBmYTYuLmUwMTE1ZWUyNzNlNDMwZjljMjhmNTY0YmZjOWNj
NDRlYmM2NmM2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIER5bmFt
aWNzQ29tcHJlc3Nvcihib29sIGlzU3RlcmVvLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAotICAgIHZv
aWQgcHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMs
IHVuc2lnbmVkIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IEF1ZGlv
QnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgdW5zaWduZWQgZnJhbWVz
VG9Qcm9jZXNzKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICBmbG9hdCBwYXJhbWV0ZXJWYWx1
ZSh1bnNpZ25lZCBwYXJhbWV0ZXJJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCBlOWY0OTZh
NWJmYWUzZjRhMWZiYzRhNWE0ZDc4YmFlOGZlZDMyMDE2Li5hN2E0YzEyMTI3NTIwMmVjZjNiYWIy
ZTE1ZTA1ZmNjNGI0YWRhMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTgyLDkgKzgyLDkg
QEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5VGltZShmbG9hdCBw
cmVEZWxheVRpbWUpCiAgICAgfQogfQogCi12b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6
cHJvY2VzcyhmbG9hdCogc291cmNlTCwKK3ZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpw
cm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2VMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0KiBzb3VyY2VSLCAvKiBzdGVyZW8tbGlua2VkICovCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCogc291cmNlUiwg
Lyogc3RlcmVvLWxpbmtlZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQqIGRlc3RpbmF0aW9uUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2VzcywKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRleCA4
ZTVmNzA5OWQ4OGJiNTVhZTc4ZDQ3OGNkNzk2ZGNmNGExOTZkMjE4Li5jZjMxOWIzNzhhZGViNTkw
NjI5NTNkZWFiMDkyZTMzMzljNmY2ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApAQCAtMzgsOSArMzgs
OSBAQCBwdWJsaWM6CiAgICAgRHluYW1pY3NDb21wcmVzc29yS2VybmVsKGZsb2F0IHNhbXBsZVJh
dGUpOwogCiAgICAgLy8gUGVyZm9ybXMgc3RlcmVvLWxpbmtlZCBjb21wcmVzc2lvbi4KLSAgICB2
b2lkIHByb2Nlc3MoZmxvYXQgKnNvdXJjZUwsCisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0
ICpzb3VyY2VMLAogICAgICAgICAgICAgICAgICBmbG9hdCAqZGVzdGluYXRpb25MLAotICAgICAg
ICAgICAgICAgICBmbG9hdCAqc291cmNlUiwKKyAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQg
KnNvdXJjZVIsCiAgICAgICAgICAgICAgICAgIGZsb2F0ICpkZXN0aW5hdGlvblIsCiAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2VzcywKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcAppbmRleCAwZGE3NjIyMzY0
MDkxNzJhNTg0NTZmZjBiNmRkNzJmZTU4YmM3ODQ5Li5hMmQyZGZmNGMwMDBhODJiZjQ0ODgzOWQx
MjBkM2QyNjk2ZGZiZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9FcXVhbFBvd2VyUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9FcXVhbFBvd2VyUGFubmVyLmNwcApAQCAtNDksNyArNDksNyBAQCBFcXVhbFBvd2VyUGFubmVy
OjpFcXVhbFBvd2VyUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgbV9zbW9vdGhpbmdDb25z
dGFudCA9IEF1ZGlvVXRpbGl0aWVzOjpkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUo
U21vb3RoaW5nVGltZUNvbnN0YW50LCBzYW1wbGVSYXRlKTsKIH0KIAotdm9pZCBFcXVhbFBvd2Vy
UGFubmVyOjpwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSAvKmVsZXZhdGlvbiovLCBBdWRpb0J1
cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
Cit2b2lkIEVxdWFsUG93ZXJQYW5uZXI6OnBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIC8qZWxl
dmF0aW9uKi8sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1cywg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHN0ZXJl
byBzb3VyY2VzCiAgICAgYm9vbCBpc0lucHV0U2FmZSA9IGlucHV0QnVzICYmIGlucHV0QnVzLT5u
dW1iZXJPZkNoYW5uZWxzKCkgPT0gMSAmJiBmcmFtZXNUb1Byb2Nlc3MgPD0gaW5wdXRCdXMtPmxl
bmd0aCgpOwpAQCAtNjIsMTAgKzYyLDEwIEBAIHZvaWQgRXF1YWxQb3dlclBhbm5lcjo6cGFuKGRv
dWJsZSBhemltdXRoLCBkb3VibGUgLyplbGV2YXRpb24qLywgQXVkaW9CdXMqIGlucHV0CiAgICAg
aWYgKCFpc091dHB1dFNhZmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEF1ZGlvQ2hhbm5lbCog
Y2hhbm5lbCA9IGlucHV0QnVzLT5jaGFubmVsKDApOwotICAgIGZsb2F0KiBzb3VyY2VQID0gY2hh
bm5lbC0+ZGF0YSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICBmbG9hdCog
ZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVs
TGVmdCktPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVzLT5jaGFu
bmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsUmlnaHQpLT5kYXRhKCk7CisgICAgY29uc3QgQXVk
aW9DaGFubmVsKiBjaGFubmVsID0gaW5wdXRCdXMtPmNoYW5uZWwoMCk7CisgICAgY29uc3QgZmxv
YXQqIHNvdXJjZVAgPSBjaGFubmVsLT5kYXRhKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUo
QXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+bXV0YWJsZURhdGEoKTsKKyAgICBmbG9hdCogZGVzdGlu
YXRpb25SID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsUmlnaHQp
LT5tdXRhYmxlRGF0YSgpOwogCiAgICAgaWYgKCFzb3VyY2VQIHx8ICFkZXN0aW5hdGlvbkwgfHwg
IWRlc3RpbmF0aW9uUikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDRmNjAwMWRmOTE0MjBlYzU0NGFm
Y2VkY2RmNjg5N2U4NDQ4MGQ3NTAuLjAxNmNkNGFhMTRjN2ZmNmRlNTBjNDE4YzI5OTAwNzJjMGFj
OGMwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93
ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2Vy
UGFubmVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRXF1YWxQb3dlclBhbm5lciA6IHB1Ymxp
YyBQYW5uZXIgewogcHVibGljOgogICAgIEVxdWFsUG93ZXJQYW5uZXIoZmxvYXQgc2FtcGxlUmF0
ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgZWxldmF0
aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdWYsIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJs
ZSBlbGV2YXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1
Ziwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSB7
IG1faXNGaXJzdFJlbmRlciA9IHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0ZGVENvbnZvbHZlci5jcHAKaW5kZXggOTA5MzQzMzgwMWM2YjA1NmFkYmNjY2Q5MDQ4
YWQ0NjcxZGQxM2Q2Yy4uMjMyMWRlMGNmMTEwNDU5MDVkZDE1OThhYThlNmViYTdiZWM1OTk2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEZGVENvbnZvbHZlcjo6RkZUQ29udm9sdmVyKHNpemVfdCBmZnRTaXpl
KQogewogfQogCi12b2lkIEZGVENvbnZvbHZlcjo6cHJvY2VzcyhGRlRGcmFtZSogZmZ0S2VybmVs
LCBmbG9hdCogc291cmNlUCwgZmxvYXQqIGRlc3RQLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQor
dm9pZCBGRlRDb252b2x2ZXI6OnByb2Nlc3MoRkZURnJhbWUqIGZmdEtlcm5lbCwgY29uc3QgZmxv
YXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAg
ICAvLyBGSVhNRTogbWFrZSBzbyBmcmFtZXNUb1Byb2Nlc3MgaXMgbm90IHJlcXVpcmVkIHRvIGZp
dCBldmVubHkgaW50byBmZnRTaXplLzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9GRlRDb252b2x2ZXIuaAppbmRleCBjMWI1MDAyNzY1YjU1NmM2ZDM3YjlmZTY1MjE0NTVlYTQ3
ZjAxNDRlLi4zNzViZjJjNjUwZDJkM2Q3MTEyMWNmNzVlNWViYmZiZWYxNWZjNTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIGlucHV0IHRvIG91dHB1dCBsYXRlbmN5IGlzIGVxdWFs
IHRvIGZmdFNpemUgLyAyCiAgICAgLy8KICAgICAvLyBQcm9jZXNzaW5nIGluLXBsYWNlIGlzIGFs
bG93ZWQuLi4KLSAgICB2b2lkIHByb2Nlc3MoRkZURnJhbWUqIGZmdEtlcm5lbCwgZmxvYXQqIHNv
dXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBw
cm9jZXNzKEZGVEZyYW1lKiBmZnRLZXJuZWwsIGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCog
ZGVzdFAsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgdm9pZCByZXNldCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKaW5kZXggNGYwMzJhMjZh
YTgwMmYyNGMxN2ZmZjQ1YTZlZjMzYTliMzcyMmU1NC4uYTFhMGE1MGRhY2ViY2I2ZDkwMzY0NGM2
MDJkMTQ0OGM4MDI5YjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZy
YW1lLmNwcApAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
RkZURnJhbWU6OmRvUGFkZGVkRkZUKGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCit2b2lk
IEZGVEZyYW1lOjpkb1BhZGRlZEZGVChjb25zdCBmbG9hdCogZGF0YSwgc2l6ZV90IGRhdGFTaXpl
KQogewogICAgIC8vIFplcm8tcGFkIHRoZSBpbXB1bHNlIHJlc3BvbnNlCiAgICAgQXVkaW9GbG9h
dEFycmF5IHBhZGRlZFJlc3BvbnNlKGZmdFNpemUoKSk7IC8vIHplcm8taW5pdGlhbGl6ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCmluZGV4IGIyNWQyNzk1NmRkY2Fl
OTUyMWY0Y2U3YzAyMDc2MDRlMzAwYzk2ZDMuLjA0MjYzM2NkMjMxMjg2NzhiOTNhYjM4MzY4M2Rj
ZTU5MDg0NDY1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZG
VEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaApA
QCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7
CiAgICAgc3RhdGljIHZvaWQgY2xlYW51cCgpOwotICAgIHZvaWQgZG9GRlQoZmxvYXQqIGRhdGEp
OworICAgIHZvaWQgZG9GRlQoY29uc3QgZmxvYXQqIGRhdGEpOwogICAgIHZvaWQgZG9JbnZlcnNl
RkZUKGZsb2F0KiBkYXRhKTsKICAgICB2b2lkIG11bHRpcGx5KGNvbnN0IEZGVEZyYW1lJiBmcmFt
ZSk7IC8vIG11bHRpcGxpZXMgb3Vyc2VsZiB3aXRoIGZyYW1lIDogZWZmZWN0aXZlbHkgb3BlcmF0
b3IqPSgpCiAKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIC8vIEludGVycG9sYXRlcyBm
cm9tIGZyYW1lMSAtPiBmcmFtZTIgYXMgeCBnb2VzIGZyb20gMC4wIC0+IDEuMAogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEZGVEZyYW1lPiBjcmVhdGVJbnRlcnBvbGF0ZWRGcmFtZShjb25zdCBGRlRG
cmFtZSYgZnJhbWUxLCBjb25zdCBGRlRGcmFtZSYgZnJhbWUyLCBkb3VibGUgeCk7CiAKLSAgICB2
b2lkIGRvUGFkZGVkRkZUKGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpOyAvLyB6ZXJvLXBh
ZGRpbmcgd2l0aCBkYXRhU2l6ZSA8PSBmZnRTaXplCisgICAgdm9pZCBkb1BhZGRlZEZGVChjb25z
dCBmbG9hdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKTsgLy8gemVyby1wYWRkaW5nIHdpdGggZGF0
YVNpemUgPD0gZmZ0U2l6ZQogICAgIGRvdWJsZSBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoKTsK
ICAgICB2b2lkIGFkZENvbnN0YW50R3JvdXBEZWxheShkb3VibGUgc2FtcGxlRnJhbWVEZWxheSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAppbmRl
eCBjY2ZmMDk3ZjhhZDZjZjExYjUyYzg5NzdlMGY4YWYzM2UwNzlkMjJiLi40NDZlNjZkMGU3NjRk
N2MyYWU2ODgxZWQzZmMwZTAxYjY1Nzc1ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBI
UlRGS2VybmVsTGlzdCoga2VybmVsTGlzdFIoKSB7IHJldHVybiBtX2tlcm5lbExpc3RSLmdldCgp
OyB9CiAKICAgICBkb3VibGUgZWxldmF0aW9uQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2VsZXZh
dGlvbkFuZ2xlOyB9Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZBemltdXRocygpIHsgcmV0dXJuIE51
bWJlck9mVG90YWxBemltdXRoczsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mQXppbXV0aHMoKSBj
b25zdCB7IHJldHVybiBOdW1iZXJPZlRvdGFsQXppbXV0aHM7IH0KICAgICBmbG9hdCBzYW1wbGVS
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CiAgICAgCiAgICAgLy8gUmV0dXJu
cyB0aGUgbGVmdCBhbmQgcmlnaHQga2VybmVscyBmb3IgdGhlIGdpdmVuIGF6aW11dGggaW5kZXgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCmluZGV4IGM0
NGRlOTMyZGQyNzBiZjJhOTk4ODM4ZTI2ZjBjMjUxOTkwZDJhNTIuLjM5MWY5MDQwMjAwNDQyMDNm
M2FhMGU0MDRjMDBjYmE1MmU5MGRhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZLZXJuZWwuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBmbG9hdCBleHRyYWN0
QXZlcmFnZUdyb3VwRGVsYXkoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgYW5hbHlzaXNG
RlRTCiB7CiAgICAgQVNTRVJUKGNoYW5uZWwpOwogICAgICAgICAKLSAgICBmbG9hdCogaW1wdWxz
ZVAgPSBjaGFubmVsLT5kYXRhKCk7CisgICAgZmxvYXQqIGltcHVsc2VQID0gY2hhbm5lbC0+bXV0
YWJsZURhdGEoKTsKICAgICAKICAgICBib29sIGlzU2l6ZUdvb2QgPSBjaGFubmVsLT5sZW5ndGgo
KSA+PSBhbmFseXNpc0ZGVFNpemU7CiAgICAgQVNTRVJUKGlzU2l6ZUdvb2QpOwpAQCAtNzgsNyAr
NzgsNyBAQCBIUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6
ZV90IGZmdFNpemUsIGZsb2F0IHNhbXBsZVJhdGUsCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBsZWFk
aW5nIGRlbGF5IChhdmVyYWdlIGdyb3VwIGRlbGF5KSBmb3IgdGhlIHJlc3BvbnNlLgogICAgIG1f
ZnJhbWVEZWxheSA9IGV4dHJhY3RBdmVyYWdlR3JvdXBEZWxheShjaGFubmVsLCBmZnRTaXplIC8g
Mik7CiAKLSAgICBmbG9hdCogaW1wdWxzZVJlc3BvbnNlID0gY2hhbm5lbC0+ZGF0YSgpOworICAg
IGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UgPSBjaGFubmVsLT5tdXRhYmxlRGF0YSgpOwogICAgIHNp
emVfdCByZXNwb25zZUxlbmd0aCA9IGNoYW5uZWwtPmxlbmd0aCgpOwogCiAgICAgaWYgKGJhc3NC
b29zdCkgewpAQCAtMTE0LDcgKzExNCw3IEBAIFBhc3NPd25QdHI8QXVkaW9DaGFubmVsPiBIUlRG
S2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UoKQogCiAgICAgLy8gQWRkIGxlYWRpbmcgZGVs
YXkgYmFjayBpbi4KICAgICBmZnRGcmFtZS5hZGRDb25zdGFudEdyb3VwRGVsYXkobV9mcmFtZURl
bGF5KTsKLSAgICBmZnRGcmFtZS5kb0ludmVyc2VGRlQoY2hhbm5lbC0+ZGF0YSgpKTsKKyAgICBm
ZnRGcmFtZS5kb0ludmVyc2VGRlQoY2hhbm5lbC0+bXV0YWJsZURhdGEoKSk7CiAKICAgICByZXR1
cm4gY2hhbm5lbC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZQYW5uZXIuY3BwCmluZGV4IDk3ODM3MWNlZjdiOTViYzU4Nzk0ZDcxZTI4ZmQ1YjRiYjlh
NGYwOTcuLmYwOTk2MWZhMWRlZmY3NWMwNDRhZmFmM2U5N2M5YWMwZmExMDgzYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgaW50IEhSVEZQYW5uZXI6OmNhbGN1bGF0ZURlc2lyZWRBemltdXRoSW5kZXhBbmRCbGVu
ZChkb3VibGUgYXppbXV0aCwgZG91YmxlJiBhemkKICAgICByZXR1cm4gZGVzaXJlZEF6aW11dGhJ
bmRleDsKIH0KIAotdm9pZCBIUlRGUGFubmVyOjpwYW4oZG91YmxlIGRlc2lyZWRBemltdXRoLCBk
b3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMs
IHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit2b2lkIEhSVEZQYW5uZXI6OnBhbihkb3VibGUgZGVz
aXJlZEF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywg
QXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICB1bnNp
Z25lZCBudW1JbnB1dENoYW5uZWxzID0gaW5wdXRCdXMgPyBpbnB1dEJ1cy0+bnVtYmVyT2ZDaGFu
bmVscygpIDogMDsKIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdm9pZCBIUlRGUGFubmVyOjpwYW4o
ZG91YmxlIGRlc2lyZWRBemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRC
dXMKIAogICAgIC8vIE5vcm1hbGx5LCB3ZSdsbCBqdXN0IGJlIGRlYWxpbmcgd2l0aCBtb25vIHNv
dXJjZXMuCiAgICAgLy8gSWYgd2UgaGF2ZSBhIHN0ZXJlbyBpbnB1dCwgaW1wbGVtZW50IHN0ZXJl
byBwYW5uaW5nIHdpdGggbGVmdCBzb3VyY2UgcHJvY2Vzc2VkIGJ5IGxlZnQgSFJURiwgYW5kIHJp
Z2h0IHNvdXJjZSBieSByaWdodCBIUlRGLgotICAgIEF1ZGlvQ2hhbm5lbCogaW5wdXRDaGFubmVs
TCA9IGlucHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsTGVmdCk7Ci0gICAg
QXVkaW9DaGFubmVsKiBpbnB1dENoYW5uZWxSID0gbnVtSW5wdXRDaGFubmVscyA+IDEgPyBpbnB1
dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KSA6IDA7CisgICAgY29u
c3QgQXVkaW9DaGFubmVsKiBpbnB1dENoYW5uZWxMID0gaW5wdXRCdXMtPmNoYW5uZWxCeVR5cGUo
QXVkaW9CdXM6OkNoYW5uZWxMZWZ0KTsKKyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIGlucHV0Q2hh
bm5lbFIgPSBudW1JbnB1dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1
ZGlvQnVzOjpDaGFubmVsUmlnaHQpIDogMDsKIAogICAgIC8vIEdldCBzb3VyY2UgYW5kIGRlc3Rp
bmF0aW9uIHBvaW50ZXJzLgotICAgIGZsb2F0KiBzb3VyY2VMID0gaW5wdXRDaGFubmVsTC0+ZGF0
YSgpOwotICAgIGZsb2F0KiBzb3VyY2VSID0gbnVtSW5wdXRDaGFubmVscyA+IDEgPyBpbnB1dENo
YW5uZWxSLT5kYXRhKCkgOiBzb3VyY2VMOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRw
dXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+ZGF0YSgpOwotICAg
IGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6
OkNoYW5uZWxSaWdodCktPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IGlucHV0
Q2hhbm5lbEwtPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlUiA9IG51bUlucHV0Q2hh
bm5lbHMgPiAxID8gaW5wdXRDaGFubmVsUi0+ZGF0YSgpIDogc291cmNlTDsKKyAgICBmbG9hdCog
ZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVs
TGVmdCktPm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1
cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KS0+bXV0YWJsZURhdGEoKTsK
IAogICAgIGRvdWJsZSBhemltdXRoQmxlbmQ7CiAgICAgaW50IGRlc2lyZWRBemltdXRoSW5kZXgg
PSBjYWxjdWxhdGVEZXNpcmVkQXppbXV0aEluZGV4QW5kQmxlbmQoYXppbXV0aCwgYXppbXV0aEJs
ZW5kKTsKQEAgLTIwNyw4ICsyMDcsOCBAQCB2b2lkIEhSVEZQYW5uZXI6OnBhbihkb3VibGUgZGVz
aXJlZEF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlvQnVzKiBpbnB1dEJ1cwogICAgICAg
ICAgICAgCiAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBw
b2ludGVycyBmb3IgdGhlIGN1cnJlbnQgc2VnbWVudC4KICAgICAgICAgdW5zaWduZWQgb2Zmc2V0
ID0gc2VnbWVudCAqIGZyYW1lc1BlclNlZ21lbnQ7Ci0gICAgICAgIGZsb2F0KiBzZWdtZW50U291
cmNlTCA9IHNvdXJjZUwgKyBvZmZzZXQ7Ci0gICAgICAgIGZsb2F0KiBzZWdtZW50U291cmNlUiA9
IHNvdXJjZVIgKyBvZmZzZXQ7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzZWdtZW50U291cmNlTCA9
IHNvdXJjZUwgKyBvZmZzZXQ7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzZWdtZW50U291cmNlUiA9
IHNvdXJjZVIgKyBvZmZzZXQ7CiAgICAgICAgIGZsb2F0KiBzZWdtZW50RGVzdGluYXRpb25MID0g
ZGVzdGluYXRpb25MICsgb2Zmc2V0OwogICAgICAgICBmbG9hdCogc2VnbWVudERlc3RpbmF0aW9u
UiA9IGRlc3RpbmF0aW9uUiArIG9mZnNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURlBhbm5lci5oCmluZGV4IGU3NzFiYTI4YjNlNGFhZGVkNmY4MDIxNTY0NjMyMjdhNmZm
ZTEyODEuLmFkNmY3OWEwODQ1NTY4OGE3YjNkNDJhMDY5NDAwNmI3N2NkYTMzMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkhSVEZQYW5uZXIoKTsKIAogICAgIC8vIFBhbm5lcgotICAg
IHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSBlbGV2YXRpb24sIEF1ZGlv
QnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cyk7CisgICAgdmlydHVhbCB2b2lkIHBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlv
biwgY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKIAogICAgIHNpemVf
dCBmZnRTaXplKCkgeyByZXR1cm4gZmZ0U2l6ZUZvclNhbXBsZVJhdGUobV9zYW1wbGVSYXRlKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5l
bFJlc2FtcGxlci5jcHAKaW5kZXggZGI1MWU5MGVkZWE3Mzk4YWIyNDE2NTM0NzUxODY4YzBlNTdm
ZWQ5Yy4uZjZjMDdlN2MxNzgwZmU3NDMwY2FjNzg2YjY1OTdjNTg0NzA3ODExYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBs
ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gQ29weSB0aGUgY2hh
bm5lbCBkYXRhIGZyb20gd2hhdCB3ZSByZWNlaXZlZCBmcm9tIG1fbXVsdGlDaGFubmVsUHJvdmlk
ZXIuCiAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRDaGFubmVsIDw9IG1fbnVtYmVyT2ZDaGFubmVs
cyk7CiAgICAgICAgIGlmIChtX2N1cnJlbnRDaGFubmVsIDwgbV9udW1iZXJPZkNoYW5uZWxzKSB7
Ci0gICAgICAgICAgICBtZW1jcHkoYnVzLT5jaGFubmVsKDApLT5kYXRhKCksIG1fbXVsdGlDaGFu
bmVsQnVzLT5jaGFubmVsKG1fY3VycmVudENoYW5uZWwpLT5kYXRhKCksIHNpemVvZihmbG9hdCkg
KiBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICAgICAgbWVtY3B5KGJ1cy0+Y2hhbm5lbCgwKS0+
bXV0YWJsZURhdGEoKSwgbV9tdWx0aUNoYW5uZWxCdXMtPmNoYW5uZWwobV9jdXJyZW50Q2hhbm5l
bCktPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgICAgICAg
ICArK21fY3VycmVudENoYW5uZWw7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTMsNyArMTEzLDcg
QEAgdm9pZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRl
ciogcHJvdmlkZXIsIEF1ZGlvQnVzKiBkZXMKICAgICAgICAgLy8gSG93ZXZlciwgaWYgaXQgY2Fs
bHMgcHJvdmlkZUlucHV0KCkgZm9yIHRoZSBmaXJzdCBjaGFubmVsLCB0aGVuIGl0IHdpbGwgY2Fs
bCBpdCBmb3IgdGhlIHJlbWFpbmluZwogICAgICAgICAvLyBjaGFubmVscywgc2luY2UgdGhleSBh
bGwgYnVmZmVyIGluIHRoZSBzYW1lIHdheSBhbmQgYXJlIHByb2Nlc3NpbmcgdGhlIHNhbWUgbnVt
YmVyIG9mIGZyYW1lcy4KICAgICAgICAgbV9rZXJuZWxzW2NoYW5uZWxJbmRleF0tPnByb2Nlc3Mo
JmNoYW5uZWxQcm92aWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdGluYXRpb24tPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi0+Y2hhbm5lbChjaGFu
bmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGFubmVyLmgKaW5kZXggNGI3MjgzMjdkMjlhZThiM2MzZDgzOWY1ZDlmMGUxYWY3
NmRiNGQ2Ni4uZDhiOGRkMGYxYWQ0ZjhlNjI5MGNkMDZlZGI5NjBkM2E3OTVjMDUyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogCiAgICAgUGFubmluZ01vZGVsIHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFu
bmluZ01vZGVsOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBhemltdXRoLCBkb3Vi
bGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBh
emltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBjb25zdCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlv
QnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCByZXNldCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
Yi5jcHAKaW5kZXggMzQxNjI2ZmQ4Y2ExOGI3NzNkYThjYWQ1Mjg3MmQwYjczM2EwZTJlOC4uMTIy
ZTIxYjY4OTVlMGI0NzUyNGRkYTNmOTdmN2IxYmE4ZmE4YmRjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZXZlcmI6
OmluaXRpYWxpemUoQXVkaW9CdXMqIGltcHVsc2VSZXNwb25zZUJ1ZmZlciwgc2l6ZV90IHJlbmRl
clNsaWNlU2l6ZSwKICAgICAgICAgbV90ZW1wQnVmZmVyID0gYWRvcHRQdHIobmV3IEF1ZGlvQnVz
KDIsIE1heEZyYW1lU2l6ZSkpOwogfQogCi12b2lkIFJldmVyYjo6cHJvY2VzcyhBdWRpb0J1cyog
c291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpCit2b2lkIFJldmVyYjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBBdWRp
b0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgLy8g
RG8gYSBmYWlybHkgY29tcHJlaGVuc2l2ZSBzYW5pdHkgY2hlY2suCiAgICAgLy8gSWYgdGhlc2Ug
Y29uZGl0aW9ucyBhcmUgc2F0aXNmaWVkLCBhbGwgb2YgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gcG9pbnRlcnMgd2lsbCBiZSB2YWxpZCBmb3IgdGhlIHZhcmlvdXMgbWF0cml4aW5nIGNhc2Vz
LgpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgUmV2ZXJiOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3Vy
Y2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgc2l6ZV90IGZyYW1lCiAgICAgfQogCiAg
ICAgQXVkaW9DaGFubmVsKiBkZXN0aW5hdGlvbkNoYW5uZWxMID0gZGVzdGluYXRpb25CdXMtPmNo
YW5uZWwoMCk7Ci0gICAgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsTCA9IHNvdXJjZUJ1cy0+
Y2hhbm5lbCgwKTsKKyAgICBjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWxMID0gc291
cmNlQnVzLT5jaGFubmVsKDApOwogCiAgICAgLy8gSGFuZGxlIGlucHV0IC0+IG91dHB1dCBtYXRy
aXhpbmcuLi4KICAgICBzaXplX3QgbnVtSW5wdXRDaGFubmVscyA9IHNvdXJjZUJ1cy0+bnVtYmVy
T2ZDaGFubmVscygpOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUmV2ZXJiOjpwcm9jZXNzKEF1
ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgc2l6ZV90IGZyYW1l
CiAKICAgICBpZiAobnVtSW5wdXRDaGFubmVscyA9PSAyICYmIG51bVJldmVyYkNoYW5uZWxzID09
IDIgJiYgbnVtT3V0cHV0Q2hhbm5lbHMgPT0gMikgewogICAgICAgICAvLyAyIC0+IDIgLT4gMgot
ICAgICAgICBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWxSID0gc291cmNlQnVzLT5jaGFubmVs
KDEpOworICAgICAgICBjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWxSID0gc291cmNl
QnVzLT5jaGFubmVsKDEpOwogICAgICAgICBBdWRpb0NoYW5uZWwqIGRlc3RpbmF0aW9uQ2hhbm5l
bFIgPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgxKTsKICAgICAgICAgbV9jb252b2x2ZXJzWzBd
LT5wcm9jZXNzKHNvdXJjZUNoYW5uZWxMLCBkZXN0aW5hdGlvbkNoYW5uZWxMLCBmcmFtZXNUb1By
b2Nlc3MpOwogICAgICAgICBtX2NvbnZvbHZlcnNbMV0tPnByb2Nlc3Moc291cmNlQ2hhbm5lbFIs
IGRlc3RpbmF0aW9uQ2hhbm5lbFIsIGZyYW1lc1RvUHJvY2Vzcyk7CkBAIC0xNzcsMTMgKzE3Nywx
MyBAQCB2b2lkIFJldmVyYjo6cHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyog
ZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZQogICAgICAgICBBU1NFUlQoaXNDb3B5U2FmZSk7
CiAgICAgICAgIGlmICghaXNDb3B5U2FmZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
bWVtY3B5KGRlc3RpbmF0aW9uQ2hhbm5lbFItPmRhdGEoKSwgZGVzdGluYXRpb25DaGFubmVsTC0+
ZGF0YSgpLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgbWVtY3B5
KGRlc3RpbmF0aW9uQ2hhbm5lbFItPm11dGFibGVEYXRhKCksIGRlc3RpbmF0aW9uQ2hhbm5lbEwt
PmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgfSBlbHNlIGlm
IChudW1JbnB1dENoYW5uZWxzID09IDEgJiYgbnVtUmV2ZXJiQ2hhbm5lbHMgPT0gMSAmJiBudW1P
dXRwdXRDaGFubmVscyA9PSAxKSB7CiAgICAgICAgIC8vIDEgLT4gMSAtPiAxCiAgICAgICAgIG1f
Y29udm9sdmVyc1swXS0+cHJvY2Vzcyhzb3VyY2VDaGFubmVsTCwgZGVzdGluYXRpb25DaGFubmVs
TCwgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB9IGVsc2UgaWYgKG51bUlucHV0Q2hhbm5lbHMgPT0g
MiAmJiBudW1SZXZlcmJDaGFubmVscyA9PSA0ICYmIG51bU91dHB1dENoYW5uZWxzID09IDIpIHsK
ICAgICAgICAgLy8gMiAtPiA0IC0+IDIgKCJUcnVlIiBzdGVyZW8pCi0gICAgICAgIEF1ZGlvQ2hh
bm5lbCogc291cmNlQ2hhbm5lbFIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSk7CisgICAgICAgIGNv
bnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbFIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSk7
CiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsUiA9IGRlc3RpbmF0aW9u
QnVzLT5jaGFubmVsKDEpOwogCiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogdGVtcENoYW5uZWxMID0g
bV90ZW1wQnVmZmVyLT5jaGFubmVsKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmIuaAppbmRleCBmMTYyZTBiNzA5ZTliZjY4NTBhOTAxMzE5YzJjYjlkNGJkNGVhMjkyLi43Nzll
N2JiYTQ5MzQ0YzgyZTQ1N2M3MjNlNmQwYTYxODg4MWRkZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgLy8gcmVu
ZGVyU2xpY2VTaXplIGlzIGEgcmVuZGVyaW5nIGhpbnQsIHNvIHRoZSBGRlRzIGNhbiBiZSBvcHRp
bWl6ZWQgdG8gbm90IGFsbCBvY2N1ciBhdCB0aGUgc2FtZSB0aW1lICh2ZXJ5IGJhZCB3aGVuIHJl
bmRlcmluZyBvbiBhIHJlYWwtdGltZSB0aHJlYWQpLgogICAgIFJldmVyYihBdWRpb0J1cyogaW1w
dWxzZVJlc3BvbnNlQnVmZmVyLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLCBzaXplX3QgbWF4RkZU
U2l6ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMs
IGJvb2wgbm9ybWFsaXplKTsKIAotICAgIHZvaWQgcHJvY2VzcyhBdWRpb0J1cyogc291cmNlQnVz
LCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAg
IHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGlu
YXRpb25CdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIHZvaWQgcmVzZXQoKTsKIAog
ICAgIHVuc2lnbmVkIGltcHVsc2VSZXNwb25zZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1w
dWxzZVJlc3BvbnNlTGVuZ3RoOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCBiYmI1NTA4N2YwZDEwYjE1MGI5Mzc5NmY0YWJm
NThhZDgyYzgyZWYzLi5jNjExNDE0Y2JjMTZkYzE2ZDdkMWVjYTM1MWM1N2I1OTQ1ZWMwZjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVk
aW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkKICAgICAvLyBPdGhl
cndpc2UsIGFzc3VtZSB3ZSdyZSBiZWluZyBydW4gZnJvbSBhIGNvbW1hbmQtbGluZSB0b29sLgog
ICAgIGJvb2wgaGFzUmVhbHRpbWVDb25zdHJhaW50ID0gdXNlQmFja2dyb3VuZFRocmVhZHM7CiAK
LSAgICBmbG9hdCogcmVzcG9uc2UgPSBpbXB1bHNlUmVzcG9uc2UtPmRhdGEoKTsKKyAgICBjb25z
dCBmbG9hdCogcmVzcG9uc2UgPSBpbXB1bHNlUmVzcG9uc2UtPmRhdGEoKTsKICAgICBzaXplX3Qg
dG90YWxSZXNwb25zZUxlbmd0aCA9IGltcHVsc2VSZXNwb25zZS0+bGVuZ3RoKCk7CiAKICAgICAv
LyBCZWNhdXNlIHdlJ3JlIG5vdCB1c2luZyBkaXJlY3QtY29udm9sdXRpb24gaW4gdGhlIGxlYWRp
bmcgcG9ydGlvbiwgdGhlIHJldmVyYiBoYXMgYW4gb3ZlcmFsbCBsYXRlbmN5IG9mIGhhbGYgdGhl
IGZpcnN0LXN0YWdlIEZGVCBzaXplCkBAIC0xNzUsMTUgKzE3NSwxNSBAQCB2b2lkIFJldmVyYkNv
bnZvbHZlcjo6YmFja2dyb3VuZFRocmVhZEVudHJ5KCkKICAgICB9CiB9CiAKLXZvaWQgUmV2ZXJi
Q29udm9sdmVyOjpwcm9jZXNzKEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCwgQXVkaW9DaGFu
bmVsKiBkZXN0aW5hdGlvbkNoYW5uZWwsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit2b2lkIFJl
dmVyYkNvbnZvbHZlcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWws
IEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogewogICAgIGJvb2wgaXNTYWZlID0gc291cmNlQ2hhbm5lbCAmJiBkZXN0aW5hdGlvbkNoYW5u
ZWwgJiYgc291cmNlQ2hhbm5lbC0+bGVuZ3RoKCkgPj0gZnJhbWVzVG9Qcm9jZXNzICYmIGRlc3Rp
bmF0aW9uQ2hhbm5lbC0+bGVuZ3RoKCkgPj0gZnJhbWVzVG9Qcm9jZXNzOwogICAgIEFTU0VSVChp
c1NhZmUpOwogICAgIGlmICghaXNTYWZlKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAg
IGZsb2F0KiBzb3VyY2UgPSBzb3VyY2VDaGFubmVsLT5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3Rp
bmF0aW9uID0gZGVzdGluYXRpb25DaGFubmVsLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNv
dXJjZSA9IHNvdXJjZUNoYW5uZWwtPmRhdGEoKTsKKyAgICBmbG9hdCogZGVzdGluYXRpb24gPSBk
ZXN0aW5hdGlvbkNoYW5uZWwtPm11dGFibGVEYXRhKCk7CiAgICAgYm9vbCBpc0RhdGFTYWZlID0g
c291cmNlICYmIGRlc3RpbmF0aW9uOwogICAgIEFTU0VSVChpc0RhdGFTYWZlKTsKICAgICBpZiAo
IWlzRGF0YVNhZmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5oCmluZGV4IDAxM2I2ODQ5NzFmODkwOWQzYzVmZmZkZWJjZDVmNGI5NThmOGMzMTIu
LjM3MGI4NzIwNjQ4MjllMWNjZTI5YjZlZDI1NzEyNmM5MGY1NjhiZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVz
cG9uc2UsIHNpemVfdCByZW5kZXJTbGljZVNpemUsIHNpemVfdCBtYXhGRlRTaXplLCBzaXplX3Qg
Y29udm9sdmVyUmVuZGVyUGhhc2UsIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMpOwogICAgIH5S
ZXZlcmJDb252b2x2ZXIoKTsKIAotICAgIHZvaWQgcHJvY2VzcyhBdWRpb0NoYW5uZWwqIHNvdXJj
ZUNoYW5uZWwsIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsLCBzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKTsKKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VD
aGFubmVsLCBBdWRpb0NoYW5uZWwqIGRlc3RpbmF0aW9uQ2hhbm5lbCwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcyk7CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgc2l6ZV90IGltcHVsc2VSZXNwb25z
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wdWxzZVJlc3BvbnNlTGVuZ3RoOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFn
ZS5jcHAKaW5kZXggZjIwN2QxOWRlYjBjNDhiYmZlZjZiOGFkNWJhYjg1Mjg5ZTg3MjUxMC4uNTNi
YjY1MDA4MzEwNjQ3MTkxZTAwYTlkYjk1OWEwM2RhOWZmZWEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBWZWN0
b3JNYXRoOwogCi1SZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UoZmxv
YXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoLCBzaXplX3QgcmV2ZXJi
VG90YWxMYXRlbmN5LCBzaXplX3Qgc3RhZ2VPZmZzZXQsIHNpemVfdCBzdGFnZUxlbmd0aCwKK1Jl
dmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZShjb25zdCBmbG9hdCogaW1w
dWxzZVJlc3BvbnNlLCBzaXplX3QgcmVzcG9uc2VMZW5ndGgsIHNpemVfdCByZXZlcmJUb3RhbExh
dGVuY3ksIHNpemVfdCBzdGFnZU9mZnNldCwgc2l6ZV90IHN0YWdlTGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBmZnRTaXplLCBzaXplX3Qg
cmVuZGVyUGhhc2UsIHNpemVfdCByZW5kZXJTbGljZVNpemUsIFJldmVyYkFjY3VtdWxhdGlvbkJ1
ZmZlciogYWNjdW11bGF0aW9uQnVmZmVyKQogICAgIDogbV9mZnRLZXJuZWwoZmZ0U2l6ZSkKICAg
ICAsIG1fYWNjdW11bGF0aW9uQnVmZmVyKGFjY3VtdWxhdGlvbkJ1ZmZlcikKQEAgLTg4LDcgKzg4
LDcgQEAgdm9pZCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6cHJvY2Vzc0luQmFja2dyb3VuZChSZXZl
cmJDb252b2x2ZXIqIGNvbnZvbHZlciwgc2l6ZV8KICAgICBwcm9jZXNzKHNvdXJjZSwgZnJhbWVz
VG9Qcm9jZXNzKTsKIH0KIAotdm9pZCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6cHJvY2VzcyhmbG9h
dCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBSZXZlcmJDb252b2x2ZXJT
dGFnZTo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogewogICAgIEFTU0VSVChzb3VyY2UpOwogICAgIGlmICghc291cmNlKQpAQCAtOTYsNyArOTYs
OCBAQCB2b2lkIFJldmVyYkNvbnZvbHZlclN0YWdlOjpwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgCiAgICAgLy8gRGVhbCB3aXRoIHByZS1kZWxheSBz
dHJlYW0gOiBub3RlIHNwZWNpYWwgaGFuZGxpbmcgb2YgemVybyBkZWxheS4KIAotICAgIGZsb2F0
KiBwcmVEZWxheWVkU291cmNlOworICAgIGNvbnN0IGZsb2F0KiBwcmVEZWxheWVkU291cmNlOwor
ICAgIGZsb2F0KiBwcmVEZWxheWVkRGVzdGluYXRpb247CiAgICAgZmxvYXQqIHRlbXBvcmFyeUJ1
ZmZlcjsKICAgICBib29sIGlzVGVtcG9yYXJ5QnVmZmVyU2FmZSA9IGZhbHNlOwogICAgIGlmICht
X3ByZURlbGF5TGVuZ3RoID4gMCkgewpAQCAtMTA4LDEwICsxMDksMTIgQEAgdm9pZCBSZXZlcmJD
b252b2x2ZXJTdGFnZTo6cHJvY2VzcyhmbG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQogCiAgICAgICAgIGlzVGVtcG9yYXJ5QnVmZmVyU2FmZSA9IGZyYW1lc1RvUHJvY2VzcyA8
PSBtX3RlbXBvcmFyeUJ1ZmZlci5zaXplKCk7CiAKLSAgICAgICAgcHJlRGVsYXllZFNvdXJjZSA9
IG1fcHJlRGVsYXlCdWZmZXIuZGF0YSgpICsgbV9wcmVSZWFkV3JpdGVJbmRleDsKKyAgICAgICAg
cHJlRGVsYXllZERlc3RpbmF0aW9uID0gbV9wcmVEZWxheUJ1ZmZlci5kYXRhKCkgKyBtX3ByZVJl
YWRXcml0ZUluZGV4OworICAgICAgICBwcmVEZWxheWVkU291cmNlID0gcHJlRGVsYXllZERlc3Rp
bmF0aW9uOwogICAgICAgICB0ZW1wb3JhcnlCdWZmZXIgPSBtX3RlbXBvcmFyeUJ1ZmZlci5kYXRh
KCk7ICAgICAgICAKICAgICB9IGVsc2UgewogICAgICAgICAvLyBaZXJvIGRlbGF5CisgICAgICAg
IHByZURlbGF5ZWREZXN0aW5hdGlvbiA9IDA7CiAgICAgICAgIHByZURlbGF5ZWRTb3VyY2UgPSBz
b3VyY2U7CiAgICAgICAgIHRlbXBvcmFyeUJ1ZmZlciA9IG1fcHJlRGVsYXlCdWZmZXIuZGF0YSgp
OwogICAgICAgICAKQEAgLTEzOCw3ICsxNDEsNyBAQCB2b2lkIFJldmVyYkNvbnZvbHZlclN0YWdl
Ojpwcm9jZXNzKGZsb2F0KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAKICAgICAv
LyBGaW5hbGx5IGNvcHkgaW5wdXQgdG8gcHJlLWRlbGF5LgogICAgIGlmIChtX3ByZURlbGF5TGVu
Z3RoID4gMCkgewotICAgICAgICBtZW1jcHkocHJlRGVsYXllZFNvdXJjZSwgc291cmNlLCBzaXpl
b2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgbWVtY3B5KHByZURlbGF5ZWRE
ZXN0aW5hdGlvbiwgc291cmNlLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKICAg
ICAgICAgbV9wcmVSZWFkV3JpdGVJbmRleCArPSBmcmFtZXNUb1Byb2Nlc3M7CiAKICAgICAgICAg
QVNTRVJUKG1fcHJlUmVhZFdyaXRlSW5kZXggPD0gbV9wcmVEZWxheUxlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaApp
bmRleCBmYzA1YTBlMDhmYTMzYjAyNjhlY2RkMzU0NzhhYWZhOTk5M2FlZTM0Li45ODExYmM2MDMy
MTY3NjQ2MDBjOWNiMTcyNTE3ZGVmMTU4YTM2ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKQEAgLTQ1LDExICs0NSwx
MSBAQCBjbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSB7CiBwdWJsaWM6CiAgICAgLy8gcmVuZGVy
UGhhc2UgaXMgdXNlZnVsIHRvIGtub3cgc28gdGhhdCB3ZSBjYW4gbWFuaXB1bGF0ZSB0aGUgcHJl
IHZlcnN1cyBwb3N0IGRlbGF5IHNvIHRoYXQgc3RhZ2VzIHdpbGwgcGVyZm9ybQogICAgIC8vIHRo
ZWlyIGhlYXZ5IHdvcmsgKEZGVCBwcm9jZXNzaW5nKSBvbiBkaWZmZXJlbnQgc2xpY2VzIHRvIGJh
bGFuY2UgdGhlIGxvYWQgaW4gYSByZWFsLXRpbWUgdGhyZWFkLgotICAgIFJldmVyYkNvbnZvbHZl
clN0YWdlKGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZXNwb25zZUxlbmd0aCwgc2l6
ZV90IHJldmVyYlRvdGFsTGF0ZW5jeSwgc2l6ZV90IHN0YWdlT2Zmc2V0LCBzaXplX3Qgc3RhZ2VM
ZW5ndGgsCisgICAgUmV2ZXJiQ29udm9sdmVyU3RhZ2UoY29uc3QgZmxvYXQqIGltcHVsc2VSZXNw
b25zZSwgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoLCBzaXplX3QgcmV2ZXJiVG90YWxMYXRlbmN5LCBz
aXplX3Qgc3RhZ2VPZmZzZXQsIHNpemVfdCBzdGFnZUxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZmZ0U2l6ZSwgc2l6ZV90IHJlbmRlclBoYXNlLCBzaXplX3QgcmVuZGVy
U2xpY2VTaXplLCBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIqIGFjY3VtdWxhdGlvbkJ1ZmZlcik7
CiAKICAgICAvLyBXQVJOSU5HOiBmcmFtZXNUb1Byb2Nlc3MgbXVzdCBiZSBzdWNoIHRoYXQgaXQg
ZXZlbmx5IGRpdmlkZXMgdGhlIGRlbGF5IGJ1ZmZlciBzaXplIChzdGFnZV9vZmZzZXQpLgotICAg
IHZvaWQgcHJvY2VzcyhmbG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAg
ICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cyk7CiAKICAgICB2b2lkIHByb2Nlc3NJbkJhY2tncm91bmQoUmV2ZXJiQ29udm9sdmVyKiBjb252
b2x2ZXIsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAKaW5kZXggZjI3MGY2ZmFhNGM3
NGZhZjUxOWIzMjdhMzcyY2VjODlhNTEwY2RlNy4uMWJlOWFmODg0ZTQyNWU0ZDBlMzhiMzgwYzZh
Y2E0MDAyZjVhNzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiSW5wdXRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYklucHV0QnVmZmVyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZXZlcmJJbnB1dEJ1ZmZl
cjo6UmV2ZXJiSW5wdXRCdWZmZXIoc2l6ZV90IGxlbmd0aCkKIHsKIH0KIAotdm9pZCBSZXZlcmJJ
bnB1dEJ1ZmZlcjo6d3JpdGUoZmxvYXQqIHNvdXJjZVAsIHNpemVfdCBudW1iZXJPZkZyYW1lcykK
K3ZvaWQgUmV2ZXJiSW5wdXRCdWZmZXI6OndyaXRlKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IG1fYnVmZmVy
LnNpemUoKTsKICAgICBib29sIGlzQ29weVNhZmUgPSBtX3dyaXRlSW5kZXggKyBudW1iZXJPZkZy
YW1lcyA8PSBidWZmZXJMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAppbmRleCAxNWEyODE4MjRkMzZiZGU2OGQ3OWE1ZTEwYjM1
NzkyNTE2NTE4OTY5Li41MDM2NTc1Yjk4NjFiZDhjZDRlMGExYTExNWY1MDI2YWU1NzQ4OWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVy
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIC8vIFRoZSByZWFsdGltZSBhdWRpbyB0
aHJlYWQga2VlcHMgd3JpdGluZyBzYW1wbGVzIGhlcmUuCiAgICAgLy8gVGhlIGFzc3VtcHRpb24g
aXMgdGhhdCB0aGUgYnVmZmVyJ3MgbGVuZ3RoIGlzIGV2ZW5seSBkaXZpc2libGUgYnkgbnVtYmVy
T2ZGcmFtZXMgKGZvciBuZWFybHkgYWxsIGNhc2VzIHRoaXMgd2lsbCBiZSBmaW5lKS4KICAgICAv
LyBGSVhNRTogcmVtb3ZlIG51bWJlck9mRnJhbWVzIHJlc3RyaWN0aW9uLi4uCi0gICAgdm9pZCB3
cml0ZShmbG9hdCogc291cmNlUCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKKyAgICB2b2lkIHdy
aXRlKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpOwogCiAgICAg
Ly8gQmFja2dyb3VuZCB0aHJlYWRzIGNhbiBjYWxsIHRoaXMgdG8gY2hlY2sgaWYgdGhlcmUncyBh
bnl0aGluZyB0byByZWFkLi4uCiAgICAgc2l6ZV90IHdyaXRlSW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX3dyaXRlSW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5jcHAKaW5kZXggMGU0Yjg0OTg1MDFlNGIzOTZmMDQyYjA0YWQ0Y2ZmZDVjYzJk
M2Q2Mi4uNGFkZWIyN2E5ZThhMmU4MjFjNDVhOGMzYjBjOTdlN2I5M2YzZjNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKQEAgLTEyNyw3
ICsxMjcsNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OmluaXRpYWxpemVLZXJuZWwoKQogICAgIH0K
IH0KIAotdm9pZCBTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291cmNlKGZsb2F0KiBidWZmZXIsIHVu
c2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKQordm9pZCBTaW5jUmVzYW1wbGVyOjpjb25zdW1l
U291cmNlKGNvbnN0IGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVz
KQogewogICAgIEFTU0VSVChtX3NvdXJjZVByb3ZpZGVyKTsKICAgICBpZiAoIW1fc291cmNlUHJv
dmlkZXIpCkBAIC0xMzUsNyArMTM1LDkgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjpjb25zdW1lU291
cmNlKGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKQogICAgIAog
ICAgIC8vIFdyYXAgdGhlIHByb3ZpZGVkIGJ1ZmZlciBieSBhbiBBdWRpb0J1cyBmb3IgdXNlIGJ5
IHRoZSBzb3VyY2UgcHJvdmlkZXIuCiAgICAgQXVkaW9CdXMgYnVzKDEsIG51bWJlck9mU291cmNl
RnJhbWVzLCBmYWxzZSk7Ci0gICAgYnVzLnNldENoYW5uZWxNZW1vcnkoMCwgYnVmZmVyLCBudW1i
ZXJPZlNvdXJjZUZyYW1lcyk7CisKKyAgICAvLyBGSVhNRTogZmluZCBhIHdheSB0byBtYWtlIHRo
ZSBmb2xsb3dpbmcgY29uc3QtY29ycmVjdDoKKyAgICBidXMuc2V0Q2hhbm5lbE1lbW9yeSgwLCBj
b25zdF9jYXN0PGZsb2F0Kj4oYnVmZmVyKSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOwogICAgIAog
ICAgIG1fc291cmNlUHJvdmlkZXItPnByb3ZpZGVJbnB1dCgmYnVzLCBudW1iZXJPZlNvdXJjZUZy
YW1lcyk7CiB9CkBAIC0xNDYsNyArMTQ4LDcgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgQnVmZmVy
U291cmNlUHJvdmlkZXIgOiBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciB7CiBwdWJsaWM6Ci0g
ICAgQnVmZmVyU291cmNlUHJvdmlkZXIoZmxvYXQqIHNvdXJjZSwgc2l6ZV90IG51bWJlck9mU291
cmNlRnJhbWVzKQorICAgIEJ1ZmZlclNvdXJjZVByb3ZpZGVyKGNvbnN0IGZsb2F0KiBzb3VyY2Us
IHNpemVfdCBudW1iZXJPZlNvdXJjZUZyYW1lcykKICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2Up
CiAgICAgICAgICwgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGUobnVtYmVyT2ZTb3VyY2VGcmFtZXMp
CiAgICAgewpAQCAtMTU5LDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX3NvdXJj
ZSB8fCAhYnVzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCi0gICAgICAgIGZs
b2F0KiBidWZmZXIgPSBidXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGJ1
ZmZlciA9IGJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKIAogICAgICAgICAvLyBDbGFt
cCB0byBudW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZSBhbmQgemVyby1wYWQuCiAgICAgICAgIHNp
emVfdCBmcmFtZXNUb0NvcHkgPSBtaW4obV9zb3VyY2VGcmFtZXNBdmFpbGFibGUsIGZyYW1lc1Rv
UHJvY2Vzcyk7CkBAIC0xNzQsMTMgKzE3NiwxMyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJp
dmF0ZToKLSAgICBmbG9hdCogbV9zb3VyY2U7CisgICAgY29uc3QgZmxvYXQqIG1fc291cmNlOwog
ICAgIHNpemVfdCBtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
CiAKLXZvaWQgU2luY1Jlc2FtcGxlcjo6cHJvY2VzcyhmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKQordm9pZCBTaW5jUmVzYW1w
bGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5z
aWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCiB7CiAgICAgLy8gUmVzYW1wbGUgYW4gaW4tbWVt
b3J5IGJ1ZmZlciB1c2luZyBhbiBBdWRpb1NvdXJjZVByb3ZpZGVyLgogICAgIEJ1ZmZlclNvdXJj
ZVByb3ZpZGVyIHNvdXJjZVByb3ZpZGVyKHNvdXJjZSwgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IGJi
ZTBjNTU4YzNjY2MyMWUwN2E5YmJmMzNmNzUwMjY0MjM3MmJmZjMuLjllOTc3OGM0NjQxZmY5NTQ2
YmZjMTQwZTE3NTAxZjRiZjkxMGU1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBwdWJsaWM6CiAgICAgU2lu
Y1Jlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIGtlcm5lbFNpemUgPSAzMiwg
dW5zaWduZWQgbnVtYmVyT2ZLZXJuZWxPZmZzZXRzID0gMzIpOwogICAgIAogICAgIC8vIFByb2Nl
c3NlcyBudW1iZXJPZlNvdXJjZUZyYW1lcyBmcm9tIHNvdXJjZSB0byBwcm9kdWNlIG51bWJlck9m
U291cmNlRnJhbWVzIC8gc2NhbGVGYWN0b3IgZnJhbWVzIGluIGRlc3RpbmF0aW9uLgotICAgIHZv
aWQgcHJvY2VzcyhmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIG51
bWJlck9mU291cmNlRnJhbWVzKTsKKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CiAK
ICAgICAvLyBQcm9jZXNzIHdpdGggaW5wdXQgc291cmNlIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBz
dHJlYW1pbmcgYXBwbGljYXRpb25zLgogICAgIHZvaWQgcHJvY2VzcyhBdWRpb1NvdXJjZVByb3Zp
ZGVyKiwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIAogcHJv
dGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZUtlcm5lbCgpOwotICAgIHZvaWQgY29uc3VtZVNv
dXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CisgICAg
dm9pZCBjb25zdW1lU291cmNlKGNvbnN0IGZsb2F0KiBidWZmZXIsIHVuc2lnbmVkIG51bWJlck9m
U291cmNlRnJhbWVzKTsKICAgICAKICAgICBkb3VibGUgbV9zY2FsZUZhY3RvcjsKICAgICB1bnNp
Z25lZCBtX2tlcm5lbFNpemU7CkBAIC03MSw3ICs3MSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBT
b3VyY2UgaXMgY29waWVkIGludG8gdGhpcyBidWZmZXIgZm9yIGVhY2ggcHJvY2Vzc2luZyBwYXNz
LgogICAgIEF1ZGlvRmxvYXRBcnJheSBtX2lucHV0QnVmZmVyOwogCi0gICAgZmxvYXQqIG1fc291
cmNlOworICAgIGNvbnN0IGZsb2F0KiBtX3NvdXJjZTsKICAgICB1bnNpZ25lZCBtX3NvdXJjZUZy
YW1lc0F2YWlsYWJsZTsKICAgICAKICAgICAvLyBtX3NvdXJjZVByb3ZpZGVyIGlzIHVzZWQgdG8g
cHJvdmlkZSB0aGUgYXVkaW8gaW5wdXQgc3RyZWFtIHRvIHRoZSByZXNhbXBsZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAKaW5kZXggMmZhNDQwMDNhN2E1MTAw
ZGU5MWI3NTBmNjFmMTcxNTU0NzUyZDM4YS4uOWU2ZjFiNjM1NmU5Yjc4NWRmNDAwZTQ0MTU2NzY0
OTVlNTI3MTM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVy
b1BvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNw
cApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgWmVyb1Bv
bGU6OnByb2Nlc3MoZmxvYXQgKnNvdXJjZSwgZmxvYXQgKmRlc3RpbmF0aW9uLCB1bnNpZ25lZCBm
cmFtZXNUb1Byb2Nlc3MpCit2b2lkIFplcm9Qb2xlOjpwcm9jZXNzKGNvbnN0IGZsb2F0ICpzb3Vy
Y2UsIGZsb2F0ICpkZXN0aW5hdGlvbiwgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKQogewogICAg
IGZsb2F0IHplcm8gPSBtX3plcm87CiAgICAgZmxvYXQgcG9sZSA9IG1fcG9sZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCmluZGV4IDkzZmQwZDZmOTc1MzdhNWYyYTA3
NmJhNGY5ZjY2MjI4YTcyMzliYTMuLjRjYjFkMTc0NTYzZjE3NWIyOGNhYWM5NTVkYTU2MjY4YmRl
MWRkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaApAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgcHJvY2VzcyhmbG9h
dCAqc291cmNlLCBmbG9hdCAqZGVzdGluYXRpb24sIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2Vzcyk7
CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0ICpzb3VyY2UsIGZsb2F0ICpkZXN0aW5hdGlv
biwgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIC8vIFJlc2V0IGZpbHRlciBzdGF0
ZS4KICAgICB2b2lkIHJlc2V0KCkgeyBtX2xhc3RYID0gMDsgbV9sYXN0WSA9IDA7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2ZmbXBlZy9GRlRGcmFtZUZGTVBF
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1Q
RUcuY3BwCmluZGV4IDlmODkzMjQ0NTFkNzRmYmM4N2JiYTdkY2JiODliNGE3ODQwMTZkNzkuLmQ0
NjI0YTcwYjY2MjNiZTE1ZGJiY2U1MzE0NWRlOTk4ZWM4YmU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2ZmbXBlZy9GRlRGcmFtZUZGTVBFRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZmZtcGVnL0ZGVEZyYW1lRkZNUEVHLmNwcApA
QCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRkZURnJhbWU6Om11bHRpcGx5KGNvbnN0IEZGVEZyYW1l
JiBmcmFtZSkKICAgICBWZWN0b3JNYXRoOjp2c211bChpbWFnUDEsIDEsICZzY2FsZSwgaW1hZ1Ax
LCAxLCBoYWxmU2l6ZSk7CiB9CiAKLXZvaWQgRkZURnJhbWU6OmRvRkZUKGZsb2F0KiBkYXRhKQor
dm9pZCBGRlRGcmFtZTo6ZG9GRlQoY29uc3QgZmxvYXQqIGRhdGEpCiB7CiAgICAgLy8gQ29weSBz
aW5jZSBwcm9jZXNzaW5nIGlzIGluLXBsYWNlLgogICAgIGZsb2F0KiBwID0gbV9jb21wbGV4RGF0
YS5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9GaWxlUmVhZGVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb0ZpbGVSZWFkZXJNYWMuY3BwCmluZGV4IDk1NTAyNjM2YjkzYWQzYmNmODdkNDUwNWFk
MDdiYWE3MTBkMTVhNTIuLmQwZWNmMWEzMTMwN2RlYjkxMTQyZWJlM2M1ZWFhMTI0ZDYzYTMwMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0ZpbGVS
ZWFkZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0ZpbGVSZWFkZXJNYWMuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgUGFzc093blB0cjxBdWRpb0J1
cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhU
b01vbm8KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyAr
K2kpIHsKICAgICAgICAgICAgIGJ1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1OdW1iZXJDaGFubmVs
cyA9IDE7CiAgICAgICAgICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tRGF0YUJ5dGVTaXpl
ID0gbnVtYmVyT2ZGcmFtZXMgKiBzaXplb2YoZmxvYXQpOwotICAgICAgICAgICAgYnVmZmVyTGlz
dC0+bUJ1ZmZlcnNbaV0ubURhdGEgPSBhdWRpb0J1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAg
ICAgICAgICAgYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGEgPSBhdWRpb0J1cy0+Y2hhbm5l
bChpKS0+bXV0YWJsZURhdGEoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjI0LDcgKzIyNCw3
IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0
IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vCiAKICAgICBpZiAobWl4VG9Nb25vICYmIG51bWJl
ck9mQ2hhbm5lbHMgPT0gMikgewogICAgICAgICAvLyBNaXggc3RlcmVvIGRvd24gdG8gbW9ubwot
ICAgICAgICBmbG9hdCogZGVzdEwgPSBhdWRpb0J1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAg
ICAgICBmbG9hdCogZGVzdEwgPSBhdWRpb0J1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkZyYW1lczsgaSsrKQogICAg
ICAgICAgICAgZGVzdExbaV0gPSAwLjVmICogKGJ1ZmZlckxbaV0gKyBidWZmZXJSW2ldKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJh
bWVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFj
LmNwcAppbmRleCA2ZGZiYmVjY2IyZGVmOGQ5YmI0ODI0Y2ZhN2VhNWExM2FmOTQ1NWU0Li44Y2Vm
OTI4ZDQ3MjU3YzkxZjVlMjc5ZjllNzBmNTU0YTRlYTliMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKQEAgLTEyNyw3ICsxMjcs
NyBAQCB2b2lkIEZGVEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAg
VmVjdG9yTWF0aDo6dnNtdWwoaW1hZ1AxLCAxLCAmc2NhbGUsIGltYWdQMSwgMSwgaGFsZlNpemUp
OwogfQogCi12b2lkIEZGVEZyYW1lOjpkb0ZGVChmbG9hdCogZGF0YSkKK3ZvaWQgRkZURnJhbWU6
OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKQogewogICAgIHZEU1BfY3RveigoRFNQQ29tcGxleCop
ZGF0YSwgMiwgJm1fZnJhbWUsIDEsIG1fRkZUU2l6ZSAvIDIpOwogICAgIHZEU1BfZmZ0X3pyaXAo
bV9GRlRTZXR1cCwgJm1fZnJhbWUsIDEsIG1fbG9nMkZGVFNpemUsIEZGVF9GT1JXQVJEKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21rbC9GRlRGcmFtZU1LTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ta2wvRkZURnJhbWVNS0wuY3BwCmlu
ZGV4IDZiZjJjMWUyMDQxMzIxOGUwMDM1YWNmMjQyM2ZmNDkwODE0Yjc4ZjAuLjBmM2EyODI3ZjU5
ODk5YmNmMjI2MjQ2YWZlMmY0ZDNmN2ViMDQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21rbC9GRlRGcmFtZU1LTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWtsL0ZGVEZyYW1lTUtMLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZv
aWQgRkZURnJhbWU6Om11bHRpcGx5KGNvbnN0IEZGVEZyYW1lJiBmcmFtZSkKICAgICB9CiB9CiAK
LXZvaWQgRkZURnJhbWU6OmRvRkZUKGZsb2F0KiBkYXRhKQordm9pZCBGRlRGcmFtZTo6ZG9GRlQo
Y29uc3QgZmxvYXQqIGRhdGEpCiB7CiAgICAgLy8gQ29tcHV0ZSBGb3J3YXJkIHRyYW5zZm9ybS4K
ICAgICBNS0xfTE9ORyBzdGF0dXMgPSBEZnRpQ29tcHV0ZUZvcndhcmQobV9oYW5kbGUsIGRhdGEs
IG1fY29tcGxleERhdGEuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDFmZDJmMzg0ODI2ZTdhMzg5ZDJmNjIwNGVh
NTQyMTZhN2YyZjIxYjEuLmEwY2IxM2EyYmY3NzA5NGZjMDhhNzNjYTJmOTU3ZTIxODYwZWE2MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChpc1NhZmUpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3V0
cHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgbWVt
c2V0KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpICsgemVyb1N0YXJ0RnJhbWUsIDAsIHNp
emVvZihmbG9hdCkgKiBmcmFtZXNUb1plcm8pOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQo
b3V0cHV0QnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpICsgemVyb1N0YXJ0RnJhbWUsIDAs
IHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1plcm8pOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBtX2lzUGxheWluZyA9IGZhbHNlOwpAQCAtMTk5LDExICsxOTksMTEgQEAgdm9pZCBBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIoQXVkaW9CdXMqIGJ1cywgdW5zaWdu
ZWQgZGVzdGluYXRpb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHRoZSBkZXN0aW5h
dGlvbiBwb2ludGVycy4KLSAgICBmbG9hdCogZGVzdGluYXRpb25MID0gYnVzLT5jaGFubmVsKDAp
LT5kYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGJ1cy0+Y2hhbm5lbCgwKS0+bXV0
YWJsZURhdGEoKTsKICAgICBBU1NFUlQoZGVzdGluYXRpb25MKTsKICAgICBpZiAoIWRlc3RpbmF0
aW9uTCkKICAgICAgICAgcmV0dXJuOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSAobnVtYmVy
T2ZDaGFubmVscyA8IDIpID8gMCA6IGJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpOworICAgIGZsb2F0
KiBkZXN0aW5hdGlvblIgPSAobnVtYmVyT2ZDaGFubmVscyA8IDIpID8gMCA6IGJ1cy0+Y2hhbm5l
bCgxKS0+bXV0YWJsZURhdGEoKTsKICAgICAKICAgICBib29sIGlzU3RlcmVvID0gZGVzdGluYXRp
b25SOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAK
aW5kZXggMTIyNDNjMGM5OWJlMWNjNzc1M2VjMmE5Zjc5NTI4MzlmODY5OTYyNS4uZTFhZWM3NTg4
MTU2MjBjOWE2YmIwOGUwYjY3NWY1MTYxMWViZjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBCaXF1YWRQ
cm9jZXNzb3I6OmNoZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQogICAgIH0KIH0KIAotdm9pZCBC
aXF1YWRQcm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBCaXF1YWRQcm9jZXNzb3I6OnBy
b2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIGlmICghaXNJbml0aWFsaXplZCgpKSB7CiAgICAg
ICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBCaXF1YWRQ
cm9jZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9u
LCBzaXplX3QgZnIKICAgICAgICAgICAgIAogICAgIC8vIEZvciBlYWNoIGNoYW5uZWwgb2Ygb3Vy
IGlucHV0LCBwcm9jZXNzIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIEJpcXVhZERTUEtlcm5lbCBp
bnRvIHRoZSBvdXRwdXQgY2hhbm5lbC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9r
ZXJuZWxzLnNpemUoKTsgKytpKQotICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNl
LT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5kYXRhKCksIGZy
YW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNo
YW5uZWwoaSktPmRhdGEoKSwgZGVzdGluYXRpb24tPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCks
IGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpzZXRUeXBlKEZp
bHRlclR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVh
ZFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgK
aW5kZXggYzdmN2QzMDY4YTNjZjVkZTVjODI0MTMxOTEzYmNmNjQ1OTIzNzk4Ni4uOTFhMWNjY2Qx
NzA0OWQxNDg4ODFkMDA0NjM5Njc5MDczYmNkZDdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIAogICAg
IHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCk7CiAgICAg
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdmlydHVhbCB2b2lk
IHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIC8vIEdldCB0aGUgbWFnbml0dWRlIGFuZCBw
aGFzZSByZXNwb25zZSBvZiB0aGUgZmlsdGVyIGF0IHRoZSBnaXZlbgogICAgIC8vIHNldCBvZiBm
cmVxdWVuY2llcyAoaW4gSHopLiBUaGUgcGhhc2UgcmVzcG9uc2UgaXMgaW4gcmFkaWFucy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAKaW5kZXgg
NDIyMTUwOWNmOTljNjE3NDM1ZWU4MDg2M2RlY2YyOGViZTA3YWE0OC4uYmY4MzE0NzUzMzE1ZDBi
NWNhY2JhYzlkY2M4MTE0NTQ5MTQzODEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAKQEAgLTE2MSwxMCArMTYxLDEwIEBAIHZvaWQgSmF2
YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgIGlm
ICghY2hhbm5lbHNBcmVHb29kKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCogc291cmNl
TCA9IGlucHV0QnVzLT5jaGFubmVsKDApLT5kYXRhKCk7Ci0gICAgZmxvYXQqIHNvdXJjZVIgPSBu
dW1iZXJPZklucHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRCdXMtPmNoYW5uZWwoMSktPmRhdGEoKSA6
IDA7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgwKS0+ZGF0
YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWwoMSktPmRh
dGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IGlucHV0QnVzLT5jaGFubmVsKDApLT5k
YXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBudW1iZXJPZklucHV0Q2hhbm5lbHMg
PiAxID8gaW5wdXRCdXMtPmNoYW5uZWwoMSktPmRhdGEoKSA6IDA7CisgICAgZmxvYXQqIGRlc3Rp
bmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKKyAgICBmbG9h
dCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVzLT5jaGFubmVsKDEpLT5tdXRhYmxlRGF0YSgpOwog
CiAgICAgLy8gQ29weSBmcm9tIHRoZSBpbnB1dCB0byB0aGUgaW5wdXQgYnVmZmVyLiAgU2VlICJi
dWZmZXJzQXJlR29vZCIgY2hlY2sgYWJvdmUgZm9yIHNhZmV0eS4KICAgICBzaXplX3QgYnl0ZXNU
b0NvcHkgPSBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5k
ZXggYWUxODM1YjlhYWI4NmY0YjEyZTFiNDUyOGVlY2MzMjkwNDE4YzNhYy4uMTk4YTUwMjBiZTkx
ZDAwZGIxMGY1YTUwOTMwNzYxMjY4Njk5NmQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0xNDAsNyAr
MTQwLDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlbmRlcigpCiAgICAg
ICAgIHNpemVfdCBmcmFtZXNBdmFpbGFibGVUb0NvcHkgPSBtaW4oZnJhbWVzVG9Qcm9jZXNzLCBy
ZW5kZXJRdWFudHVtU2l6ZSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGNoYW5u
ZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5lbElu
ZGV4KSB7Ci0gICAgICAgICAgICBmbG9hdCogc291cmNlID0gbV9yZW5kZXJCdXMtPmNoYW5uZWwo
Y2hhbm5lbEluZGV4KS0+ZGF0YSgpOworICAgICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9
IG1fcmVuZGVyQnVzLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKICAgICAgICAgICAg
IGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fcmVuZGVyVGFyZ2V0LT5nZXRDaGFubmVsRGF0YShjaGFu
bmVsSW5kZXgpLT5kYXRhKCk7CiAgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24gKyBuLCBz
b3VyY2UsIHNpemVvZihmbG9hdCkgKiBmcmFtZXNBdmFpbGFibGVUb0NvcHkpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IGNj
ZDg2NTUyMjZkNTE5NDRjNmYwMTVmMTA5NWYxMzUwMTdlY2I3NDMuLmEzZjgwN2Q4MzdmNzdjNDlj
Y2IwNDE1NTBhNmE5YzkwZDg0YzVlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1Jl
YWx0aW1lQW5hbHlzZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5
c2VyOjp3cml0ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAg
ICAgCiAgICAgLy8gUGVyZm9ybSByZWFsLXRpbWUgYW5hbHlzaXMKICAgICAvLyBGSVhNRSA6IGZv
ciBub3cganVzdCB1c2UgbGVmdCBjaGFubmVsIChtdXN0IG1peCBpZiBzdGVyZW8gc291cmNlKQot
ICAgIGZsb2F0KiBzb3VyY2UgPSBidXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKKyAgICBjb25zdCBm
bG9hdCogc291cmNlID0gYnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CiAKICAgICAvLyBUaGUgc291
cmNlIGhhcyBhbHJlYWR5IGJlZW4gc2FuaXR5IGNoZWNrZWQgd2l0aCBpc0J1c0dvb2QgYWJvdmUu
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJv
Y2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3Iu
Y3BwCmluZGV4IGY3NTcxZGViYjcxMmM5NTRkMmFmOWE0OGY2NjQxYTgyMzc2NjBkNmMuLjRmODNl
MTY2OThjZTE0NjQzODA2MGY4OWNjMTVlMzc5MDNhYzg2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZv
aWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBjdXJ2ZSkKICAg
ICBtX2N1cnZlID0gY3VydmU7CiB9CiAKLXZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6cHJvY2Vz
cyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpCit2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnByb2Nlc3MoY29uc3QgQXVkaW9C
dXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogewogICAgIGlmICghaXNJbml0aWFsaXplZCgpKSB7CiAgICAgICAgIGRlc3RpbmF0aW9uLT56
ZXJvKCk7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6cHJvY2Vz
cyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfCiAgICAgaWYg
KG1fcHJvY2Vzc0xvY2sudHJ5TG9jaygpKSB7ICAgICAgICAKICAgICAgICAgLy8gRm9yIGVhY2gg
Y2hhbm5lbCBvZiBvdXIgaW5wdXQsIHByb2Nlc3MgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgV2F2
ZVNoYXBlckRTUEtlcm5lbCBpbnRvIHRoZSBvdXRwdXQgY2hhbm5lbC4KICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fa2VybmVscy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1f
a2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEoKSwgZGVzdGluYXRp
b24tPmNoYW5uZWwoaSktPmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgICAgIG1f
a2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEoKSwgZGVzdGluYXRp
b24tPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICAg
ICAgbV9wcm9jZXNzTG9jay51bmxvY2soKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCmluZGV4IDQwMTZlOGJkZWY3MWUxMjEw
ZGY0MzQ5ODk2OWMzMGJmNTlhY2NhOGUuLjQ3MzVlZmRhMjVmNzIzM2EyYTE3NDlkM2NhNTQ1MGYy
MjQ3OWRjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQ
cm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vz
c29yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRy
PEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNv
dXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIAog
ICAgIHZvaWQgc2V0Q3VydmUoRmxvYXQzMkFycmF5Kik7CiAgICAgRmxvYXQzMkFycmF5KiBjdXJ2
ZSgpIHsgcmV0dXJuIG1fY3VydmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCmluZGV4IGU2ZWY3ZDEw
YjdlM2UxY2E2Y2I4YTI2NmViMGI0NGUzOTg2MTZhYjkuLjZjODIzODVjODA4Zjc0MTVlYzA4Yjk4
ODNmNjQ0MGY1NGYyMmZmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcApAQCAtMTYwLDggKzE2MCw4IEBAIHZv
aWQgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpGSUZPOjpjb25zdW1lKEF1ZGlvQnVzKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGZyYW1lCiAgICAgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMgPSBtX2Zp
Zm9BdWRpb0J1cy5udW1iZXJPZkNoYW5uZWxzKCk7CiAKICAgICBmb3IgKHNpemVfdCBjaGFubmVs
SW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRl
eCkgewotICAgICAgICBmbG9hdCogZGVzdGluYXRpb25EYXRhID0gZGVzdGluYXRpb24tPmNoYW5u
ZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwotICAgICAgICBmbG9hdCogc291cmNlRGF0YSA9IG1f
Zmlmb0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOworICAgICAgICBmbG9h
dCogZGVzdGluYXRpb25EYXRhID0gZGVzdGluYXRpb24tPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+
bXV0YWJsZURhdGEoKTsKKyAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZURhdGEgPSBtX2ZpZm9B
dWRpb0J1cy5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKIAogICAgICAgICBib29sIGlz
Q29weUdvb2QgPSAoKG1fcmVhZEluZGV4IDwgbV9maWZvTGVuZ3RoKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgKG1fcmVhZEluZGV4ICsgcGFydDFMZW5ndGgpIDw9IG1fZmlmb0xlbmd0
aApAQCAtMjE5LDggKzIxOSw4IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpGSUZP
OjpmaWxsQnVmZmVyKHNpemVfdCBudW1iZXJPZkZyYW1lcykKICAgICAgICAgc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMgPSBtX2ZpZm9BdWRpb0J1cy5udW1iZXJPZkNoYW5uZWxzKCk7CiAgICAgICAg
IAogICAgICAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewotICAgICAgICAgICAgZmxvYXQqIGRl
c3RpbmF0aW9uID0gbV9maWZvQXVkaW9CdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7
Ci0gICAgICAgICAgICBmbG9hdCogc291cmNlID0gbV90ZW1wQnVzLmNoYW5uZWwoY2hhbm5lbElu
ZGV4KS0+ZGF0YSgpOworICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gbV9maWZvQXVk
aW9CdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgpOworICAgICAgICAgICAg
Y29uc3QgZmxvYXQqIHNvdXJjZSA9IG1fdGVtcEJ1cy5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRh
dGEoKTsKIAogICAgICAgICAgICAgYm9vbCBpc0NvcHlHb29kID0gKHBhcnQxTGVuZ3RoIDw9IG1f
cHJvdmlkZXJTaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBhcnQxTGVu
Z3RoICsgcGFydDJMZW5ndGgpIDw9IG1fcHJvdmlkZXJTaXplCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJBdWRpb0J1cy5jcHAKaW5kZXggNTBlMzgxNGNjNjliNWJhNjNlZjFmMWMzNzNj
ZjhmMTZiY2RhYzBiNy4uY2M0NDdiYTIwMWRkN2U2MGM4OWZhMDg0NWJkODdkMGVmMmFmMzQ2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXVkaW9CdXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF1ZGlvQnVzLmNwcApAQCAtMTEwLDcg
KzExMCw3IEBAIGZsb2F0KiBXZWJBdWRpb0J1czo6Y2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5l
bEluZGV4KQogICAgIGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NF
UlQoY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVscygpKTsKLSAgICByZXR1cm4gbV9wcml2
YXRlLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5jaGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7CiAjZWxzZQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1pZnJhbWUtekluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS16SW5kZXguaHRtbAppbmRleCA3MTU4NzI0NjM2
MjIxMmEzNWE4NTQwODkzNDNmYTg4MTVlMzExYWZlLi4wMjI5YjUyODRiMzQyYWFiNGU1NGRlYzI2
YmNjODU0ZDE3ZWFmNjY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLWlmcmFtZS16SW5kZXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWlmcmFtZS16SW5kZXguaHRtbApAQCAtMzAsNiArMzAsOCBAQAogICAgICAgICAg
ICAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgICAgICAgICAgICAgYm9yZGVyOiA0cHggc29saWQg
ZGFya2dyZWVuOwogICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAg
ICAgICAgICAgICAgIHotaW5kZXg6IDEwMDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVs
YXRpdmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAjYmxvY2syIHsKICAgICAgICAgICAg
ICAgICB3aWR0aDogMTAwcHg7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123147</attachid>
            <date>2012-01-19 10:23:44 -0800</date>
            <delta_ts>2012-01-19 11:09:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76573-20120119102343.patch</filename>
            <type>text/plain</type>
            <size>69921</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzEwMjkxYTM5YjMxMzQz
YzAwMGVkMDA4MjhkZmRiZDRkODQzMzNiNC4uNTRiZjUzYzVkNDliZWU4ZDRiMWJjZjQwYzJlOTVk
NGFjYzE2MTc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMi0wMS0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkF1ZGlvIEFQ
SSBjb25zdC1jb3JyZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHM7IG5vIG5ldCBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgc28g
Y292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICBUaGUgbm9uLWNvbnN0IGRhdGEo
KSBhY2Nlc3NvciB3YXMgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIHRvIGV4cG9zZSBjb25zdC1jb3Jy
ZWN0bmVzcworICAgICAgICBidWdzIGR1cmluZyBjb21waWxlIHRpbWU6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5u
ZWw6Om11dGFibGVEYXRhKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJl
IG1hZGUgY29uc3QgY29ycmVjdDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0FycmF5Ojpjb3B5VG9SYW5nZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpjcmVhdGVCdWZmZXJGcm9tUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNy
ZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZUQ29udm9sdmVyOjpwcm9jZXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9QYWRk
ZWRGRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlclN0YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0
YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW5jUmVz
YW1wbGVyOjpjb25zdW1lU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6
OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpa
ZXJvUG9sZTo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1czo6Y2hhbm5lbEJ5VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpnYWluKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9BdWRpb1Byb2Nlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnBy
b2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXF1YWxQb3dlclBhbm5lcjo6cGFuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6bnVtYmVyT2ZBemltdXRocyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjpwcm9jZXNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9s
dmVyOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9ta2wvRkZURnJhbWVNS0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRv
RkZUKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJlIG1vZGlmaWVkIHRv
IHVzZSB0aGUgcmVuYW1lZCBtdXRhYmxlRGF0YSgpIGFjY2Vzc29yOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpwcm9j
ZXNzV2l0aEdhaW5Gcm9tTW9ub1N0ZXJlbyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6
Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVs
OjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNvcHlGcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6Y29weUZyb21SYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnN1bUZyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcjo6cHJvY2Vz
cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
cXVhbFBvd2VyUGFubmVyOjpwYW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJu
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnBh
bik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6cHJvY2Vzcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVy
Yjo6cHJvY2Vzcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0ZGVEZyYW1lTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZG
VCk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlbmRlckZyb21CdWZmZXIpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1
YWRQcm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdEF1ZGlvTm9kZTo6cHJvY2Vz
cyk6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKToK
KyAgICAgICAgKiB3ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lQW5hbHlzZXI6OndyaXRlSW5wdXQpOgorICAgICAgICAqIHdlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nl
c3Nvcjo6cHJvY2Vzcyk6CisKIDIwMTItMDEtMTggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIHNldEF0dHJpYnV0ZU5TIHNob3VsZCBjb21wbHkgd2l0aCB0aGUgb2Jz
Y3VyZSBydWxlcyBvZiBET00yLCBqdXN0IGxpa2UgY3JlYXRlQXR0cmlidXRlTlMgYW5kIGNyZWF0
ZUVsZW1lbnROUyBkbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2Nzg5ODI2MGExMjc4
NzI1ZWEzZDhiNzFjZDVhZDNlNGQ0NzVhMTMzLi44ZDc2MDRhMWIxMTg0NmQ3ZWIzMDEyMjU2NDM1
ZDRjOWVjN2MyNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDEyLTAxLTE4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAg
IE1ha2UgV2ViQXVkaW8gQVBJIGNvbnN0LWNvcnJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHdlcmUgbW9k
aWZpZWQgdG8gdXNlIHRoZSByZW5hbWVkIG11dGFibGVEYXRhKCkgYWNjZXNzb3I6CisgICAgICAg
ICogc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW06OkZJRk86OmZpbGxCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbkNocm9taXVtOjpGSUZPOjpjb25zdW1lKToKKyAgICAgICAg
KiBzcmMvV2ViQXVkaW9EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVzOjpj
aGFubmVsRGF0YSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6QXVkaW9Tb3VyY2VQ
cm92aWRlckltcGw6OnByb3ZpZGVJbnB1dCk6CisKIDIwMTItMDEtMTggIElhbiBWb2xsaWNrICA8
dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDcmVhdGUgYSBiYXNl
LWNsYXNzIENDQW5pbWF0aW9uIHRvIHJlcHJlc2VudCBjb21wb3NpdG9yIGFuaW1hdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaAppbmRleCBhMTRjOTUwZGQ2
ZmM3Y2NiZThiMDRiMWU5MjYwZGEyYjEwMjFkYTU4Li43YTIyNTFiMzhiMmY0MmUwNWM4ZTQwYTEw
YmI3MzQyYzRiMmU2NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0FycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9B
cnJheS5oCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogICAgICAgICBtZW1zZXQodGhpcy0+
ZGF0YSgpICsgc3RhcnQsIDAsIHNpemVvZihUKSAqIChlbmQgLSBzdGFydCkpOwogICAgIH0KIAot
ICAgIHZvaWQgY29weVRvUmFuZ2UoVCogc291cmNlRGF0YSwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGVuZCkKKyAgICB2b2lkIGNvcHlUb1JhbmdlKGNvbnN0IFQqIHNvdXJjZURhdGEsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiAgICAgewogICAgICAgICBib29sIGlzU2FmZSA9IChz
dGFydCA8PSBlbmQpICYmIChlbmQgPD0gdGhpcy0+c2l6ZSgpKTsKICAgICAgICAgQVNTRVJUKGlz
U2FmZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKaW5kZXgg
MzA0ODliYWE3NTFlMTM0M2Q2NzI5YWY0NjhiNjkyNThjNzBhN2NhYy4uYjgxMDdiOTU3OWI5ODY2
YTVmYTFhNzY5MjQzN2U1ZjllNzEzNjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmNwcApAQCAtMTMwLDYgKzEzMCwxMSBAQCBBdWRpb0NoYW5uZWwqIEF1ZGlv
QnVzOjpjaGFubmVsQnlUeXBlKHVuc2lnbmVkIGNoYW5uZWxUeXBlKQogICAgIHJldHVybiAwOwog
fQogCitjb25zdCBBdWRpb0NoYW5uZWwqIEF1ZGlvQnVzOjpjaGFubmVsQnlUeXBlKHVuc2lnbmVk
IHR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QXVkaW9CdXMqPih0aGlzKS0+
Y2hhbm5lbEJ5VHlwZSh0eXBlKTsKK30KKwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjaGFubmVs
IGNvdW50IGFuZCBmcmFtZS1zaXplIG1hdGNoLgogYm9vbCBBdWRpb0J1czo6dG9wb2xvZ3lNYXRj
aGVzKGNvbnN0IEF1ZGlvQnVzJiBidXMpIGNvbnN0CiB7CkBAIC0xNDMsNyArMTQ4LDcgQEAgYm9v
bCBBdWRpb0J1czo6dG9wb2xvZ3lNYXRjaGVzKGNvbnN0IEF1ZGlvQnVzJiBidXMpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVh
dGVCdWZmZXJGcm9tUmFuZ2UoQXVkaW9CdXMqIHNvdXJjZUJ1ZmZlciwgdW5zaWduZWQgc3RhcnRG
cmFtZSwgdW5zaWduZWQgZW5kRnJhbWUpCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6
Y3JlYXRlQnVmZmVyRnJvbVJhbmdlKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdWZmZXIsIHVuc2ln
bmVkIHN0YXJ0RnJhbWUsIHVuc2lnbmVkIGVuZEZyYW1lKQogewogICAgIHNpemVfdCBudW1iZXJP
ZlNvdXJjZUZyYW1lcyA9IHNvdXJjZUJ1ZmZlci0+bGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscyA9IHNvdXJjZUJ1ZmZlci0+bnVtYmVyT2ZDaGFubmVscygpOwpAQCAtMzQ1
LDggKzM1MCw4IEBAIHZvaWQgQXVkaW9CdXM6OnByb2Nlc3NXaXRoR2FpbkZyb21Nb25vU3RlcmVv
KGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0KiBsCiAgICAgY29uc3QgZmxvYXQqIHNv
dXJjZUwgPSBzb3VyY2VCdXNTYWZlLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5kYXRhKCk7
CiAgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBudW1iZXJPZlNvdXJjZUNoYW5uZWxzID4gMSA/
IHNvdXJjZUJ1c1NhZmUuY2hhbm5lbEJ5VHlwZShDaGFubmVsUmlnaHQpLT5kYXRhKCkgOiAwOwog
Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5k
YXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG51bWJlck9mRGVzdGluYXRpb25DaGFu
bmVscyA+IDEgPyBjaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPmRhdGEoKSA6IDA7CisgICAg
ZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5tdXRhYmxl
RGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBudW1iZXJPZkRlc3RpbmF0aW9uQ2hh
bm5lbHMgPiAxID8gY2hhbm5lbEJ5VHlwZShDaGFubmVsUmlnaHQpLT5tdXRhYmxlRGF0YSgpIDog
MDsKIAogICAgIGNvbnN0IGZsb2F0IERlemlwcGVyUmF0ZSA9IDAuMDA1ZjsKICAgICBpbnQgZnJh
bWVzVG9Qcm9jZXNzID0gbGVuZ3RoKCk7CkBAIC00MzcsNyArNDQyLDcgQEAgdm9pZCBBdWRpb0J1
czo6Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKGNvbnN0IEF1ZGlvQnVzICZz
b3VyY2VCdXMsIGYKICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJ
bmRleCA8IG51bWJlck9mQ2hhbm5lbHMoKTsgKytjaGFubmVsSW5kZXgpIHsKICAgICAgICAgaWYg
KHNvdXJjZUJ1cy5udW1iZXJPZkNoYW5uZWxzKCkgPT0gbnVtYmVyT2ZDaGFubmVscygpKQogICAg
ICAgICAgICAgc291cmNlID0gc291cmNlQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgp
OwotICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBjaGFubmVsKGNoYW5uZWxJbmRleCktPmRh
dGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gY2hhbm5lbChjaGFubmVsSW5kZXgp
LT5tdXRhYmxlRGF0YSgpOwogICAgICAgICB2bXVsKHNvdXJjZSwgMSwgZ2FpblZhbHVlcywgMSwg
ZGVzdGluYXRpb24sIDEsIG51bWJlck9mR2FpblZhbHVlcyk7CiAgICAgfQogfQpAQCAtNDUyLDcg
KzQ1Nyw3IEBAIHZvaWQgQXVkaW9CdXM6OnN1bVdpdGhHYWluRnJvbShjb25zdCBBdWRpb0J1cyAm
c291cmNlQnVzLCBmbG9hdCogbGFzdE1peEdhaW4sIGZsCiAgICAgcHJvY2Vzc1dpdGhHYWluRnJv
bShzb3VyY2VCdXMsIGxhc3RNaXhHYWluLCB0YXJnZXRHYWluLCB0cnVlKTsKIH0KIAotUGFzc093
blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVk
aW9CdXMqIHNvdXJjZUJ1cywgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdTYW1wbGVSYXRlKQor
UGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRp
bmcoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdT
YW1wbGVSYXRlKQogewogICAgIC8vIHNvdXJjZUJ1cydzIHNhbXBsZS1yYXRlIG11c3QgYmUga25v
d24uCiAgICAgQVNTRVJUKHNvdXJjZUJ1cyAmJiBzb3VyY2VCdXMtPnNhbXBsZVJhdGUoKSk7CkBA
IC00NzYsNyArNDgxLDcgQEAgUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5
U2FtcGxlUmF0ZUNvbnZlcnRpbmcoQXVkaW9CdXMqIHNvdXJjZUJ1cywKICAgICB9CiAgICAgCiAg
ICAgLy8gRmlyc3QsIG1peCB0byBtb25vIChpZiBuZWNlc3NhcnkpIHRoZW4gc2FtcGxlLXJhdGUg
Y29udmVydC4KLSAgICBBdWRpb0J1cyogcmVzYW1wbGVyU291cmNlQnVzOworICAgIGNvbnN0IEF1
ZGlvQnVzKiByZXNhbXBsZXJTb3VyY2VCdXM7CiAgICAgT3duUHRyPEF1ZGlvQnVzPiBtaXhlZE1v
bm9CdXM7CiAgICAgaWYgKG1peFRvTW9ubykgewogICAgICAgICBtaXhlZE1vbm9CdXMgPSBBdWRp
b0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8oc291cmNlQnVzKTsKQEAgLTQ5Nyw4ICs1MDIsOCBA
QCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlTYW1wbGVSYXRlQ29udmVy
dGluZyhBdWRpb0J1cyogc291cmNlQnVzLAogCiAgICAgLy8gU2FtcGxlLXJhdGUgY29udmVydCBl
YWNoIGNoYW5uZWwuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mRGVzdGlu
YXRpb25DaGFubmVsczsgKytpKSB7Ci0gICAgICAgIGZsb2F0KiBzb3VyY2UgPSByZXNhbXBsZXJT
b3VyY2VCdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9u
ID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsKKyAgICAgICAgY29uc3QgZmxv
YXQqIHNvdXJjZSA9IHJlc2FtcGxlclNvdXJjZUJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAg
ICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbChpKS0+bXV0
YWJsZURhdGEoKTsKIAogICAgICAgICBTaW5jUmVzYW1wbGVyIHJlc2FtcGxlcihzYW1wbGVSYXRl
UmF0aW8pOwogICAgICAgICByZXNhbXBsZXIucHJvY2Vzcyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBz
b3VyY2VMZW5ndGgpOwpAQCAtNTA4LDcgKzUxMyw3IEBAIFBhc3NPd25QdHI8QXVkaW9CdXM+IEF1
ZGlvQnVzOjpjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKEF1ZGlvQnVzKiBzb3VyY2VCdXMs
CiAgICAgcmV0dXJuIGRlc3RpbmF0aW9uQnVzLnJlbGVhc2UoKTsKIH0KIAotUGFzc093blB0cjxB
dWRpb0J1cz4gQXVkaW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKEF1ZGlvQnVzKiBzb3VyY2VC
dXMpCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRlQnlNaXhpbmdUb01vbm8o
Y29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cykKIHsKICAgICBzd2l0Y2ggKHNvdXJjZUJ1cy0+bnVt
YmVyT2ZDaGFubmVscygpKSB7CiAgICAgY2FzZSAxOgpAQCAtNTE5LDkgKzUyNCw5IEBAIFBhc3NP
d25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpjcmVhdGVCeU1peGluZ1RvTW9ubyhBdWRpb0J1cyog
c291cmNlQnVzKQogICAgICAgICAgICAgdW5zaWduZWQgbiA9IHNvdXJjZUJ1cy0+bGVuZ3RoKCk7
CiAgICAgICAgICAgICBPd25QdHI8QXVkaW9CdXM+IGRlc3RpbmF0aW9uQnVzKGFkb3B0UHRyKG5l
dyBBdWRpb0J1cygxLCBuKSkpOwogCi0gICAgICAgICAgICBmbG9hdCogc291cmNlTCA9IHNvdXJj
ZUJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOwotICAgICAgICAgICAgZmxvYXQqIHNvdXJjZVIgPSBz
b3VyY2VCdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKLSAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5h
dGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgICAgICAgICBj
b25zdCBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAg
ICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBzb3VyY2VCdXMtPmNoYW5uZWwoMSktPmRh
dGEoKTsKKyAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5j
aGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICAKICAgICAgICAgICAgIC8vIERvIHRo
ZSBtb25vIG1peGRvd24uCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsg
KytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5kZXggNjM3MGM4
YjUyMzQ2MTQ3Y2E4NzBjMzFlNTNjYzdhY2Q0NTg3M2JmYy4uYjNkYTBmNDUxZDE4MTQzYTdiMDFm
NGNkZDIwOTc3MDBkOGQxNTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9CdXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0J1cy5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb0NoYW5uZWwqIGNoYW5u
ZWwodW5zaWduZWQgY2hhbm5lbCkgeyByZXR1cm4gbV9jaGFubmVsc1tjaGFubmVsXS5nZXQoKTsg
fQogICAgIGNvbnN0IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCh1bnNpZ25lZCBjaGFubmVsKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PEF1ZGlvQnVzKj4odGhpcyktPm1fY2hhbm5lbHNbY2hhbm5l
bF0uZ2V0KCk7IH0KICAgICBBdWRpb0NoYW5uZWwqIGNoYW5uZWxCeVR5cGUodW5zaWduZWQgdHlw
ZSk7CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBjaGFubmVsQnlUeXBlKHVuc2lnbmVkIHR5cGUp
IGNvbnN0OwogCiAgICAgLy8gTnVtYmVyIG9mIHNhbXBsZS1mcmFtZXMKICAgICBzaXplX3QgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KQEAgLTg3LDI0ICs4OCwyNCBAQCBwdWJs
aWM6CiAKICAgICAvLyBDcmVhdGVzIGEgbmV3IGJ1ZmZlciBmcm9tIGEgcmFuZ2UgaW4gdGhlIHNv
dXJjZSBidWZmZXIuCiAgICAgLy8gMCBtYXkgYmUgcmV0dXJuZWQgaWYgdGhlIHJhbmdlIGRvZXMg
bm90IGZpdCBpbiB0aGUgc291cmNlQnVmZmVyCi0gICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9C
dXM+IGNyZWF0ZUJ1ZmZlckZyb21SYW5nZShBdWRpb0J1cyogc291cmNlQnVmZmVyLCB1bnNpZ25l
ZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFtZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8
QXVkaW9CdXM+IGNyZWF0ZUJ1ZmZlckZyb21SYW5nZShjb25zdCBBdWRpb0J1cyogc291cmNlQnVm
ZmVyLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBlbmRGcmFtZSk7CiAKIAogICAgIC8v
IENyZWF0ZXMgYSBuZXcgQXVkaW9CdXMgYnkgc2FtcGxlLXJhdGUgY29udmVydGluZyBzb3VyY2VC
dXMgdG8gdGhlIG5ld1NhbXBsZVJhdGUuCiAgICAgLy8gc2V0U2FtcGxlUmF0ZSgpIG11c3QgaGF2
ZSBiZWVuIHByZXZpb3VzbHkgY2FsbGVkIG9uIHNvdXJjZUJ1cy4KICAgICAvLyBOb3RlOiBzYW1w
bGUtcmF0ZSBjb252ZXJzaW9uIGlzIGFscmVhZHkgaGFuZGxlZCBpbiB0aGUgZmlsZS1yZWFkaW5n
IGNvZGUgZm9yIHRoZSBtYWMgcG9ydCwgc28gd2UgZG9uJ3QgbmVlZCB0aGlzLgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCeVNhbXBsZVJhdGVDb252ZXJ0aW5nKEF1ZGlv
QnVzKiBzb3VyY2VCdXMsIGJvb2wgbWl4VG9Nb25vLCBkb3VibGUgbmV3U2FtcGxlUmF0ZSk7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ5U2FtcGxlUmF0ZUNvbnZlcnRp
bmcoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywgYm9vbCBtaXhUb01vbm8sIGRvdWJsZSBuZXdT
YW1wbGVSYXRlKTsKIAogICAgIC8vIENyZWF0ZXMgYSBuZXcgQXVkaW9CdXMgYnkgbWl4aW5nIGFs
bCB0aGUgY2hhbm5lbHMgZG93biB0byBtb25vLgogICAgIC8vIElmIHNvdXJjZUJ1cyBpcyBhbHJl
YWR5IG1vbm8sIHRoZW4gdGhlIHJldHVybmVkIEF1ZGlvQnVzIHdpbGwgc2ltcGx5IGJlIGEgY29w
eS4KLSAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnlNaXhpbmdUb01vbm8o
QXVkaW9CdXMqIHNvdXJjZUJ1cyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNy
ZWF0ZUJ5TWl4aW5nVG9Nb25vKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMpOwogCiAgICAgLy8g
U2NhbGVzIGFsbCBzYW1wbGVzIGJ5IHRoZSBzYW1lIGFtb3VudC4KICAgICB2b2lkIHNjYWxlKGZs
b2F0IHNjYWxlKTsKIAogICAgIC8vIE1hc3RlciBnYWluIGZvciB0aGlzIGJ1cyAtIHVzZWQgd2l0
aCBzdW1XaXRoR2FpbkZyb20oKSBiZWxvdwogICAgIHZvaWQgc2V0R2FpbihmbG9hdCBnYWluKSB7
IG1fYnVzR2FpbiA9IGdhaW47IH0KLSAgICBmbG9hdCBnYWluKCkgeyByZXR1cm4gbV9idXNHYWlu
OyB9CisgICAgZmxvYXQgZ2FpbigpIGNvbnN0IHsgcmV0dXJuIG1fYnVzR2FpbjsgfQogCiAgICAg
dm9pZCByZXNldCgpIHsgbV9pc0ZpcnN0VGltZSA9IHRydWU7IH0gLy8gZm9yIGRlLXppcHBlcmlu
ZwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5u
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcApp
bmRleCBlYmJmM2JiZjU1MGQyYTM3MjJjMTBhODZmZjQ1MjRlZjQzNTczNTBkLi4zYzc0OGU2MzM5
OTBlYzE3YmNkYzAzOGYwNzBhOTUyNDJmYWE5ZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFZlY3Rvck1hdGg7CiAKIHZvaWQgQXVkaW9DaGFubmVsOjpzY2FsZShmbG9hdCBzY2Fs
ZSkKIHsKLSAgICB2c211bChkYXRhKCksIDEsICZzY2FsZSwgZGF0YSgpLCAxLCBsZW5ndGgoKSk7
CisgICAgdnNtdWwoZGF0YSgpLCAxLCAmc2NhbGUsIG11dGFibGVEYXRhKCksIDEsIGxlbmd0aCgp
KTsKIH0KIAogdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tKGNvbnN0IEF1ZGlvQ2hhbm5lbCog
c291cmNlQ2hhbm5lbCkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlG
cm9tKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCkKICAgICBpZiAoIWlzU2FmZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbWVtY3B5KGRhdGEoKSwgc291cmNlQ2hhbm5lbC0+ZGF0
YSgpLCBzaXplb2YoZmxvYXQpICogbGVuZ3RoKCkpOworICAgIG1lbWNweShtdXRhYmxlRGF0YSgp
LCBzb3VyY2VDaGFubmVsLT5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBsZW5ndGgoKSk7CiB9CiAK
IHZvaWQgQXVkaW9DaGFubmVsOjpjb3B5RnJvbVJhbmdlKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291
cmNlQ2hhbm5lbCwgdW5zaWduZWQgc3RhcnRGcmFtZSwgdW5zaWduZWQgZW5kRnJhbWUpCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgQXVkaW9DaGFubmVsOjpjb3B5RnJvbVJhbmdlKGNvbnN0IEF1ZGlv
Q2hhbm5lbCogc291cmNlQ2hhbm5lbCwgdW5zaWduZWQgc3RhCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBzb3VyY2VDaGFubmVsLT5kYXRhKCk7Ci0gICAgZmxv
YXQqIGRlc3RpbmF0aW9uID0gZGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG11dGFi
bGVEYXRhKCk7CiAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBzdGFydEZyYW1lLCBz
aXplb2YoZmxvYXQpICogcmFuZ2VMZW5ndGgpOwogfQogCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQg
QXVkaW9DaGFubmVsOjpzdW1Gcm9tKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCkK
ICAgICBpZiAoIWlzU2FmZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmFkZChkYXRhKCksIDEs
IHNvdXJjZUNoYW5uZWwtPmRhdGEoKSwgMSwgZGF0YSgpLCAxLCBsZW5ndGgoKSk7CisgICAgdmFk
ZChkYXRhKCksIDEsIHNvdXJjZUNoYW5uZWwtPmRhdGEoKSwgMSwgbXV0YWJsZURhdGEoKSwgMSwg
bGVuZ3RoKCkpOwogfQogCiBmbG9hdCBBdWRpb0NoYW5uZWw6Om1heEFic1ZhbHVlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggODgw
M2U3NWNkMWUzZjdhZTIyYTUwODY5ZjYxZThkZDQ1ZGJiZDRjYy4uMjRkZTNmOWU4MjA2MmM3YzBh
ZTgzZGRjMmU1ZjA0MWVmMTE0MjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9DaGFubmVsLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogCiAgICAgLy8gRGlyZWN0IGFjY2Vz
cyB0byBQQ00gc2FtcGxlIGRhdGEKLSAgICBmbG9hdCogZGF0YSgpIHsgcmV0dXJuIG1fcmF3UG9p
bnRlciA/IG1fcmF3UG9pbnRlciA6IG1fbWVtQnVmZmVyLT5kYXRhKCk7IH0KKyAgICBmbG9hdCog
bXV0YWJsZURhdGEoKSB7IHJldHVybiBtX3Jhd1BvaW50ZXIgPyBtX3Jhd1BvaW50ZXIgOiBtX21l
bUJ1ZmZlci0+ZGF0YSgpOyB9CiAgICAgY29uc3QgZmxvYXQqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX3Jhd1BvaW50ZXIgPyBtX3Jhd1BvaW50ZXIgOiBtX21lbUJ1ZmZlci0+ZGF0YSgpOyB9CiAK
ICAgICAvLyBaZXJvZXMgb3V0IGFsbCBzYW1wbGUgdmFsdWVzIGluIGJ1ZmZlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vz
c29yLmNwcAppbmRleCBjZjRkMmQzNTE3NWE1Mzg5M2UxNWNlZjUwM2YwYmY5ZTM2YTBhYzgzLi41
ZjkxMzlmMDMwODg0Y2Q0OTJiNTNhYTAzZDgwYjNlOWZhYzQ1M2RhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Iu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3I6OnVuaW5p
dGlhbGl6ZSgpCiAgICAgbV9pbml0aWFsaXplZCA9IGZhbHNlOwogfQogCi12b2lkIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgQXVkaW9EU1BLZXJuZWxQcm9j
ZXNzb3I6OnByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0
aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIEFTU0VSVChzb3VyY2UgJiYgZGVz
dGluYXRpb24pOwogICAgIGlmICghc291cmNlIHx8ICFkZXN0aW5hdGlvbikKQEAgLTg4LDcgKzg4
LDcgQEAgdm9pZCBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2VzcyhBdWRpb0J1cyogc291
cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHMKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9rZXJuZWxzLnNpemUoKTsgKytpKQotICAg
ICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRl
c3RpbmF0aW9uLT5jaGFubmVsKGkpLT5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAg
IG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPmRhdGEoKSwgZGVzdGlu
YXRpb24tPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAK
IC8vIFJlc2V0cyBmaWx0ZXIgc3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCmluZGV4IDQwYjVhYjhkNjczODNl
MmRjODk3Y2Y3NTNmNjQ5YzFjMDAzN2IzYjAuLjdmOGY4MWQyZmQ4NmZkYjhiNDVlYTk3MmFjZjJl
Njk1ODUxODMyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgLy8gQXVkaW9Qcm9jZXNzb3IgbWV0aG9kcwogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
KCk7CiAgICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMq
IHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TnVtYmVyT2ZD
aGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHJvY2Vzc29yLmgKaW5kZXggMmQ3YjYwYTdjZTYwZWIwNjY1
ZTJkMjg4ZmJjOTQ5NjY2ZmZkY2JjZi4uNDY5ZjgzMzIyNDM2MDc4MWQ0MDIyYjAzZGU3Y2I1YTc2
OGMwNDcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Q
cm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nl
c3Nvci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5pbml0
aWFsaXplKCkgPSAwOwogCiAgICAgLy8gUHJvY2Vzc2VzIHRoZSBzb3VyY2UgdG8gZGVzdGluYXRp
b24gYnVzLiAgVGhlIG51bWJlciBvZiBjaGFubmVscyBtdXN0IG1hdGNoIGluIHNvdXJjZSBhbmQg
ZGVzdGluYXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwg
QXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRl
c3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9IDA7CiAKICAgICAvLyBSZXNldHMg
ZmlsdGVyIHN0YXRlCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCmluZGV4IGJhNWI1OGU2
NDUwOGYwMTE4ODMyZDAyYzViYzVhNTkyMmRlNjA5ZDUuLjFhOWY4MWU3YTc0M2FhNjJmZTEyNDVl
ZjQ4ZjNkNjRlZmZhMjI1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Jlc2FtcGxlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEF1ZGlvUmVzYW1w
bGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVz
dGluYXRpbwogICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgdGhlIHNvdXJjZSBkYXRhLCByZXNhbXBs
ZSBlYWNoIGNoYW5uZWwgaW50byB0aGUgZGVzdGluYXRpb24gYnVzLgogICAgIC8vIEZJWE1FOiBv
cHRpbWl6ZSBmb3IgdGhlIGNvbW1vbiBzdGVyZW8gY2FzZSB3aGVyZSBpdCdzIGZhc3RlciB0byBw
cm9jZXNzIGJvdGggbGVmdC9yaWdodCBjaGFubmVscyBpbiB0aGUgc2FtZSBpbm5lciBsb29wLgog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAg
ICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoaSktPmRh
dGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25CdXMtPmNoYW5u
ZWwoaSktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2VzcyhkZXN0
aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAppbmRleCBjNDc5NWY0
ZjgxZWJmYzhlZDliZjc2YTU5ODQxNGU3ODk5ZDgyZWRkLi5hNTUyMDU3MDVkOTUxMGJmMjBkOWRi
MzU0ODc5Mzk2NWVlMDJlZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAgLTExNSwxMCArMTE1LDEwIEBAIHZvaWQg
RHluYW1pY3NDb21wcmVzc29yOjpzZXRFbXBoYXNpc1BhcmFtZXRlcnMoZmxvYXQgZ2FpbiwgZmxv
YXQgYW5jaG9yRnJlcSwgZmxvCiAgICAgc2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnMoMywgZ2Fp
biwgYW5jaG9yRnJlcSAvIChmaWx0ZXJTdGFnZVJhdGlvICogZmlsdGVyU3RhZ2VSYXRpbyAqIGZp
bHRlclN0YWdlUmF0aW8pKTsKIH0KIAotdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnByb2Nlc3Mo
QXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCB1bnNpZ25lZCBm
cmFtZXNUb1Byb2Nlc3MpCit2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6cHJvY2Vzcyhjb25zdCBB
dWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHVuc2lnbmVkIGZy
YW1lc1RvUHJvY2VzcykKIHsKLSAgICBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5l
bCgwKS0+ZGF0YSgpOwotICAgIGZsb2F0KiBzb3VyY2VSOworICAgIGNvbnN0IGZsb2F0KiBzb3Vy
Y2VMID0gc291cmNlQnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNv
dXJjZVI7CiAKICAgICBpZiAoc291cmNlQnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgPiAxKQogICAg
ICAgICBzb3VyY2VSID0gc291cmNlQnVzLT5jaGFubmVsKDEpLT5kYXRhKCk7CkBAIC0xMjcsOCAr
MTI3LDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJj
ZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLAogCiAgICAgQVNTRVJUKGRlc3RpbmF0aW9u
QnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgPT0gMik7CiAKLSAgICBmbG9hdCogZGVzdGluYXRpb25M
ID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGlu
YXRpb25SID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKKyAgICBmbG9hdCog
ZGVzdGluYXRpb25MID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7
CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKDEpLT5t
dXRhYmxlRGF0YSgpOwogCiAgICAgZmxvYXQgZmlsdGVyU3RhZ2VHYWluID0gcGFyYW1ldGVyVmFs
dWUoUGFyYW1GaWx0ZXJTdGFnZUdhaW4pOwogICAgIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8gPSBw
YXJhbWV0ZXJWYWx1ZShQYXJhbUZpbHRlclN0YWdlUmF0aW8pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCAyMTUyOTUxMmRl
ZjE5MDQ2NmNlY2E4NWNhODFjM2Q4NzZlYjAwZmE2Li5lMDExNWVlMjczZTQzMGY5YzI4ZjU2NGJm
YzljYzQ0ZWJjNjZjNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBE
eW5hbWljc0NvbXByZXNzb3IoYm9vbCBpc1N0ZXJlbywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAg
ICB2b2lkIHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9u
QnVzLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBB
dWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHVuc2lnbmVkIGZy
YW1lc1RvUHJvY2Vzcyk7CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgZmxvYXQgcGFyYW1ldGVy
VmFsdWUodW5zaWduZWQgcGFyYW1ldGVySUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKaW5kZXggZTlm
NDk2YTViZmFlM2Y0YTFmYmM0YTVhNGQ3OGJhZThmZWQzMjAxNi4uYTdhNGMxMjEyNzUyMDJlY2Yz
YmFiMmUxNWUwNWZjYzRiNGFkYTBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCkBAIC04Miw5ICs4
Miw5IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxv
YXQgcHJlRGVsYXlUaW1lKQogICAgIH0KIH0KIAotdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUwsCit2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlTCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCogc291cmNlUiwgLyogc3RlcmVvLWxpbmtlZCAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJj
ZVIsIC8qIHN0ZXJlby1saW5rZWQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvblIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MsCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKaW5k
ZXggOGU1ZjcwOTlkODhiYjU1YWU3OGQ0NzhjZDc5NmRjZjRhMTk2ZDIxOC4uY2YzMTliMzc4YWRl
YjU5MDYyOTUzZGVhYjA5MmUzMzM5YzZmNjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKQEAgLTM4LDkg
KzM4LDkgQEAgcHVibGljOgogICAgIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIC8vIFBlcmZvcm1zIHN0ZXJlby1saW5rZWQgY29tcHJlc3Npb24uCi0g
ICAgdm9pZCBwcm9jZXNzKGZsb2F0ICpzb3VyY2VMLAorICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBm
bG9hdCAqc291cmNlTCwKICAgICAgICAgICAgICAgICAgZmxvYXQgKmRlc3RpbmF0aW9uTCwKLSAg
ICAgICAgICAgICAgICAgZmxvYXQgKnNvdXJjZVIsCisgICAgICAgICAgICAgICAgIGNvbnN0IGZs
b2F0ICpzb3VyY2VSLAogICAgICAgICAgICAgICAgICBmbG9hdCAqZGVzdGluYXRpb25SLAogICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nlc3MsCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKaW5kZXggMGRhNzYy
MjM2NDA5MTcyYTU4NDU2ZmYwYjZkZDcyZmU1OGJjNzg0OS4uYTJkMmRmZjRjMDAwYTgyYmY0NDg4
MzlkMTIwZDNkMjY5NmRmYmVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgRXF1YWxQb3dlclBh
bm5lcjo6RXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKQogICAgIG1fc21vb3RoaW5n
Q29uc3RhbnQgPSBBdWRpb1V0aWxpdGllczo6ZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVS
YXRlKFNtb290aGluZ1RpbWVDb25zdGFudCwgc2FtcGxlUmF0ZSk7CiB9CiAKLXZvaWQgRXF1YWxQ
b3dlclBhbm5lcjo6cGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgLyplbGV2YXRpb24qLywgQXVk
aW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQordm9pZCBFcXVhbFBvd2VyUGFubmVyOjpwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSAv
KmVsZXZhdGlvbiovLCBjb25zdCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRC
dXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCBz
dGVyZW8gc291cmNlcwogICAgIGJvb2wgaXNJbnB1dFNhZmUgPSBpbnB1dEJ1cyAmJiBpbnB1dEJ1
cy0+bnVtYmVyT2ZDaGFubmVscygpID09IDEgJiYgZnJhbWVzVG9Qcm9jZXNzIDw9IGlucHV0QnVz
LT5sZW5ndGgoKTsKQEAgLTYyLDEwICs2MiwxMCBAQCB2b2lkIEVxdWFsUG93ZXJQYW5uZXI6OnBh
bihkb3VibGUgYXppbXV0aCwgZG91YmxlIC8qZWxldmF0aW9uKi8sIEF1ZGlvQnVzKiBpbnB1dAog
ICAgIGlmICghaXNPdXRwdXRTYWZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBdWRpb0NoYW5u
ZWwqIGNoYW5uZWwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKTsKLSAgICBmbG9hdCogc291cmNlUCA9
IGNoYW5uZWwtPmRhdGEoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgZmxv
YXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hh
bm5lbExlZnQpLT5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1cy0+
Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KS0+ZGF0YSgpOworICAgIGNvbnN0
IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCA9IGlucHV0QnVzLT5jaGFubmVsKDApOworICAgIGNvbnN0
IGZsb2F0KiBzb3VyY2VQID0gY2hhbm5lbC0+ZGF0YSgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKKyAgICBmbG9hdCogZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlU
eXBlKEF1ZGlvQnVzOjpDaGFubmVsTGVmdCktPm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRl
c3RpbmF0aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJp
Z2h0KS0+bXV0YWJsZURhdGEoKTsKIAogICAgIGlmICghc291cmNlUCB8fCAhZGVzdGluYXRpb25M
IHx8ICFkZXN0aW5hdGlvblIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAppbmRleCA0ZjYwMDFkZjkxNDIwZWM1
NDRhZmNlZGNkZjY4OTdlODQ0ODBkNzUwLi4wMTZjZDRhYTE0YzdmZjZkZTUwYzQxOGMyOTkwMDcy
YzBhYzhjMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQ
b3dlclBhbm5lci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEVxdWFsUG93ZXJQYW5uZXIgOiBw
dWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBFcXVhbFBvd2VyUGFubmVyKGZsb2F0IHNhbXBs
ZVJhdGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIGVs
ZXZhdGlvbiwgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVmLCBzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBhemltdXRoLCBk
b3VibGUgZWxldmF0aW9uLCBjb25zdCBBdWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRw
dXRCdWYsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0
KCkgeyBtX2lzRmlyc3RSZW5kZXIgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuY3BwCmluZGV4IDkwOTM0MzM4MDFjNmIwNTZhZGJjY2Nk
OTA0OGFkNDY3MWRkMTNkNmMuLjIzMjFkZTBjZjExMDQ1OTA1ZGQxNTk4YWE4ZTZlYmE3YmVjNTk5
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBGRlRDb252b2x2ZXI6OkZGVENvbnZvbHZlcihzaXplX3QgZmZ0
U2l6ZSkKIHsKIH0KIAotdm9pZCBGRlRDb252b2x2ZXI6OnByb2Nlc3MoRkZURnJhbWUqIGZmdEtl
cm5lbCwgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykKK3ZvaWQgRkZUQ29udm9sdmVyOjpwcm9jZXNzKEZGVEZyYW1lKiBmZnRLZXJuZWwsIGNvbnN0
IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7
CiAgICAgLy8gRklYTUU6IG1ha2Ugc28gZnJhbWVzVG9Qcm9jZXNzIGlzIG5vdCByZXF1aXJlZCB0
byBmaXQgZXZlbmx5IGludG8gZmZ0U2l6ZS8yCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZUQ29udm9sdmVyLmgKaW5kZXggYzFiNTAwMjc2NWI1NTZjNmQzN2I5ZmU2NTIxNDU1
ZWE0N2YwMTQ0ZS4uMzc1YmYyYzY1MGQyZDNkNzExMjFjZjc1ZTVlYmJmYmVmMTVmYzUyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBpbnB1dCB0byBvdXRwdXQgbGF0ZW5jeSBpcyBl
cXVhbCB0byBmZnRTaXplIC8gMgogICAgIC8vCiAgICAgLy8gUHJvY2Vzc2luZyBpbi1wbGFjZSBp
cyBhbGxvd2VkLi4uCi0gICAgdm9pZCBwcm9jZXNzKEZGVEZyYW1lKiBmZnRLZXJuZWwsIGZsb2F0
KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZv
aWQgcHJvY2VzcyhGRlRGcmFtZSogZmZ0S2VybmVsLCBjb25zdCBmbG9hdCogc291cmNlUCwgZmxv
YXQqIGRlc3RQLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIAogICAgIHZvaWQgcmVzZXQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCmluZGV4IDRmMDMy
YTI2YWE4MDJmMjRjMTdmZmY0NWE2ZWYzM2E5YjM3MjJlNTQuLmExYTBhNTBkYWNlYmNiNmQ5MDM2
NDRjNjAyZDE0NDhjODAyOWIyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0ZGVEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIEZGVEZyYW1lOjpkb1BhZGRlZEZGVChmbG9hdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQor
dm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRh
U2l6ZSkKIHsKICAgICAvLyBaZXJvLXBhZCB0aGUgaW1wdWxzZSByZXNwb25zZQogICAgIEF1ZGlv
RmxvYXRBcnJheSBwYWRkZWRSZXNwb25zZShmZnRTaXplKCkpOyAvLyB6ZXJvLWluaXRpYWxpemVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAppbmRleCBiMjVkMjc5NTZk
ZGNhZTk1MjFmNGNlN2MwMjA3NjA0ZTMwMGM5NmQzLi4wNDI2MzNjZDIzMTI4Njc4YjkzYWIzODM2
ODNkY2U1OTA4NDQ2NWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9GRlRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1l
LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZSgpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFudXAoKTsKLSAgICB2b2lkIGRvRkZUKGZsb2F0KiBk
YXRhKTsKKyAgICB2b2lkIGRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKTsKICAgICB2b2lkIGRvSW52
ZXJzZUZGVChmbG9hdCogZGF0YSk7CiAgICAgdm9pZCBtdWx0aXBseShjb25zdCBGRlRGcmFtZSYg
ZnJhbWUpOyAvLyBtdWx0aXBsaWVzIG91cnNlbGYgd2l0aCBmcmFtZSA6IGVmZmVjdGl2ZWx5IG9w
ZXJhdG9yKj0oKQogCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAvLyBJbnRlcnBvbGF0
ZXMgZnJvbSBmcmFtZTEgLT4gZnJhbWUyIGFzIHggZ29lcyBmcm9tIDAuMCAtPiAxLjAKICAgICBz
dGF0aWMgUGFzc093blB0cjxGRlRGcmFtZT4gY3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoY29uc3Qg
RkZURnJhbWUmIGZyYW1lMSwgY29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIHgpOwogCi0g
ICAgdm9pZCBkb1BhZGRlZEZGVChmbG9hdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKTsgLy8gemVy
by1wYWRkaW5nIHdpdGggZGF0YVNpemUgPD0gZmZ0U2l6ZQorICAgIHZvaWQgZG9QYWRkZWRGRlQo
Y29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSk7IC8vIHplcm8tcGFkZGluZyB3aXRo
IGRhdGFTaXplIDw9IGZmdFNpemUKICAgICBkb3VibGUgZXh0cmFjdEF2ZXJhZ2VHcm91cERlbGF5
KCk7CiAgICAgdm9pZCBhZGRDb25zdGFudEdyb3VwRGVsYXkoZG91YmxlIHNhbXBsZUZyYW1lRGVs
YXkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgK
aW5kZXggY2NmZjA5N2Y4YWQ2Y2YxMWI1MmM4OTc3ZTBmOGFmMzNlMDc5ZDIyYi4uNDQ2ZTY2ZDBl
NzY0ZDdjMmFlNjg4MWVkM2ZjMGUwMWI2NTc3NWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgSFJURktlcm5lbExpc3QqIGtlcm5lbExpc3RSKCkgeyByZXR1cm4gbV9rZXJuZWxMaXN0Ui5n
ZXQoKTsgfQogCiAgICAgZG91YmxlIGVsZXZhdGlvbkFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9l
bGV2YXRpb25BbmdsZTsgfQotICAgIHVuc2lnbmVkIG51bWJlck9mQXppbXV0aHMoKSB7IHJldHVy
biBOdW1iZXJPZlRvdGFsQXppbXV0aHM7IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZkF6aW11dGhz
KCkgY29uc3QgeyByZXR1cm4gTnVtYmVyT2ZUb3RhbEF6aW11dGhzOyB9CiAgICAgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIAogICAgIC8vIFJl
dHVybnMgdGhlIGxlZnQgYW5kIHJpZ2h0IGtlcm5lbHMgZm9yIHRoZSBnaXZlbiBhemltdXRoIGlu
ZGV4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAppbmRl
eCBjNDRkZTkzMmRkMjcwYmYyYTk5ODgzOGUyNmYwYzI1MTk5MGQyYTUyLi4zOTFmOTA0MDIwMDQ0
MjAzZjNhYTBlNDA0YzAwY2JhNTJlOTBkYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgZmxvYXQgZXh0
cmFjdEF2ZXJhZ2VHcm91cERlbGF5KEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGFuYWx5
c2lzRkZUUwogewogICAgIEFTU0VSVChjaGFubmVsKTsKICAgICAgICAgCi0gICAgZmxvYXQqIGlt
cHVsc2VQID0gY2hhbm5lbC0+ZGF0YSgpOworICAgIGZsb2F0KiBpbXB1bHNlUCA9IGNoYW5uZWwt
Pm11dGFibGVEYXRhKCk7CiAgICAgCiAgICAgYm9vbCBpc1NpemVHb29kID0gY2hhbm5lbC0+bGVu
Z3RoKCkgPj0gYW5hbHlzaXNGRlRTaXplOwogICAgIEFTU0VSVChpc1NpemVHb29kKTsKQEAgLTc4
LDcgKzc4LDcgQEAgSFJURktlcm5lbDo6SFJURktlcm5lbChBdWRpb0NoYW5uZWwqIGNoYW5uZWws
IHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVSYXRlLAogICAgIC8vIERldGVybWluZSB0aGUg
bGVhZGluZyBkZWxheSAoYXZlcmFnZSBncm91cCBkZWxheSkgZm9yIHRoZSByZXNwb25zZS4KICAg
ICBtX2ZyYW1lRGVsYXkgPSBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoY2hhbm5lbCwgZmZ0U2l6
ZSAvIDIpOwogCi0gICAgZmxvYXQqIGltcHVsc2VSZXNwb25zZSA9IGNoYW5uZWwtPmRhdGEoKTsK
KyAgICBmbG9hdCogaW1wdWxzZVJlc3BvbnNlID0gY2hhbm5lbC0+bXV0YWJsZURhdGEoKTsKICAg
ICBzaXplX3QgcmVzcG9uc2VMZW5ndGggPSBjaGFubmVsLT5sZW5ndGgoKTsKIAogICAgIGlmIChi
YXNzQm9vc3QpIHsKQEAgLTExNCw3ICsxMTQsNyBAQCBQYXNzT3duUHRyPEF1ZGlvQ2hhbm5lbD4g
SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKCkKIAogICAgIC8vIEFkZCBsZWFkaW5n
IGRlbGF5IGJhY2sgaW4uCiAgICAgZmZ0RnJhbWUuYWRkQ29uc3RhbnRHcm91cERlbGF5KG1fZnJh
bWVEZWxheSk7Ci0gICAgZmZ0RnJhbWUuZG9JbnZlcnNlRkZUKGNoYW5uZWwtPmRhdGEoKSk7Cisg
ICAgZmZ0RnJhbWUuZG9JbnZlcnNlRkZUKGNoYW5uZWwtPm11dGFibGVEYXRhKCkpOwogCiAgICAg
cmV0dXJuIGNoYW5uZWwucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGUGFubmVyLmNwcAppbmRleCA5NzgzNzFjZWY3Yjk1YmM1ODc5NGQ3MWUyOGZkNWI0
YmI5YTRmMDk3Li5mMDk5NjFmYTFkZWZmNzVjMDQ0YWZhZjNlOTdjOWFjMGZhMTA4M2E3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcApAQCAtMTExLDcg
KzExMSw3IEBAIGludCBIUlRGUGFubmVyOjpjYWxjdWxhdGVEZXNpcmVkQXppbXV0aEluZGV4QW5k
QmxlbmQoZG91YmxlIGF6aW11dGgsIGRvdWJsZSYgYXppCiAgICAgcmV0dXJuIGRlc2lyZWRBemlt
dXRoSW5kZXg7CiB9CiAKLXZvaWQgSFJURlBhbm5lcjo6cGFuKGRvdWJsZSBkZXNpcmVkQXppbXV0
aCwgZG91YmxlIGVsZXZhdGlvbiwgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0
QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBIUlRGUGFubmVyOjpwYW4oZG91Ymxl
IGRlc2lyZWRBemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBjb25zdCBBdWRpb0J1cyogaW5wdXRC
dXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAg
dW5zaWduZWQgbnVtSW5wdXRDaGFubmVscyA9IGlucHV0QnVzID8gaW5wdXRCdXMtPm51bWJlck9m
Q2hhbm5lbHMoKSA6IDA7CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIHZvaWQgSFJURlBhbm5lcjo6
cGFuKGRvdWJsZSBkZXNpcmVkQXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgQXVkaW9CdXMqIGlu
cHV0QnVzCiAKICAgICAvLyBOb3JtYWxseSwgd2UnbGwganVzdCBiZSBkZWFsaW5nIHdpdGggbW9u
byBzb3VyY2VzLgogICAgIC8vIElmIHdlIGhhdmUgYSBzdGVyZW8gaW5wdXQsIGltcGxlbWVudCBz
dGVyZW8gcGFubmluZyB3aXRoIGxlZnQgc291cmNlIHByb2Nlc3NlZCBieSBsZWZ0IEhSVEYsIGFu
ZCByaWdodCBzb3VyY2UgYnkgcmlnaHQgSFJURi4KLSAgICBBdWRpb0NoYW5uZWwqIGlucHV0Q2hh
bm5lbEwgPSBpbnB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQpOwot
ICAgIEF1ZGlvQ2hhbm5lbCogaW5wdXRDaGFubmVsUiA9IG51bUlucHV0Q2hhbm5lbHMgPiAxID8g
aW5wdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCkgOiAwOworICAg
IGNvbnN0IEF1ZGlvQ2hhbm5lbCogaW5wdXRDaGFubmVsTCA9IGlucHV0QnVzLT5jaGFubmVsQnlU
eXBlKEF1ZGlvQnVzOjpDaGFubmVsTGVmdCk7CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBpbnB1
dENoYW5uZWxSID0gbnVtSW5wdXRDaGFubmVscyA+IDEgPyBpbnB1dEJ1cy0+Y2hhbm5lbEJ5VHlw
ZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KSA6IDA7CiAKICAgICAvLyBHZXQgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbiBwb2ludGVycy4KLSAgICBmbG9hdCogc291cmNlTCA9IGlucHV0Q2hhbm5lbEwt
PmRhdGEoKTsKLSAgICBmbG9hdCogc291cmNlUiA9IG51bUlucHV0Q2hhbm5lbHMgPiAxID8gaW5w
dXRDaGFubmVsUi0+ZGF0YSgpIDogc291cmNlTDsKLSAgICBmbG9hdCogZGVzdGluYXRpb25MID0g
b3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsTGVmdCktPmRhdGEoKTsK
LSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlv
QnVzOjpDaGFubmVsUmlnaHQpLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBp
bnB1dENoYW5uZWxMLT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBudW1JbnB1
dENoYW5uZWxzID4gMSA/IGlucHV0Q2hhbm5lbFItPmRhdGEoKSA6IHNvdXJjZUw7CisgICAgZmxv
YXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hh
bm5lbExlZnQpLT5tdXRhYmxlRGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRw
dXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPm11dGFibGVEYXRh
KCk7CiAKICAgICBkb3VibGUgYXppbXV0aEJsZW5kOwogICAgIGludCBkZXNpcmVkQXppbXV0aElu
ZGV4ID0gY2FsY3VsYXRlRGVzaXJlZEF6aW11dGhJbmRleEFuZEJsZW5kKGF6aW11dGgsIGF6aW11
dGhCbGVuZCk7CkBAIC0yMDcsOCArMjA3LDggQEAgdm9pZCBIUlRGUGFubmVyOjpwYW4oZG91Ymxl
IGRlc2lyZWRBemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBBdWRpb0J1cyogaW5wdXRCdXMKICAg
ICAgICAgICAgIAogICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gcG9pbnRlcnMgZm9yIHRoZSBjdXJyZW50IHNlZ21lbnQuCiAgICAgICAgIHVuc2lnbmVkIG9m
ZnNldCA9IHNlZ21lbnQgKiBmcmFtZXNQZXJTZWdtZW50OwotICAgICAgICBmbG9hdCogc2VnbWVu
dFNvdXJjZUwgPSBzb3VyY2VMICsgb2Zmc2V0OwotICAgICAgICBmbG9hdCogc2VnbWVudFNvdXJj
ZVIgPSBzb3VyY2VSICsgb2Zmc2V0OworICAgICAgICBjb25zdCBmbG9hdCogc2VnbWVudFNvdXJj
ZUwgPSBzb3VyY2VMICsgb2Zmc2V0OworICAgICAgICBjb25zdCBmbG9hdCogc2VnbWVudFNvdXJj
ZVIgPSBzb3VyY2VSICsgb2Zmc2V0OwogICAgICAgICBmbG9hdCogc2VnbWVudERlc3RpbmF0aW9u
TCA9IGRlc3RpbmF0aW9uTCArIG9mZnNldDsKICAgICAgICAgZmxvYXQqIHNlZ21lbnREZXN0aW5h
dGlvblIgPSBkZXN0aW5hdGlvblIgKyBvZmZzZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuaAppbmRleCBlNzcxYmEyOGIzZTRhYWRlZDZmODAyMTU2NDYzMjI3
YTZmZmUxMjgxLi5hZDZmNzlhMDg0NTU2ODhhN2IzZDQyYTA2OTQwMDZiNzdjZGEzMzEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCkBAIC0zNyw3ICszNyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IUlRGUGFubmVyKCk7CiAKICAgICAvLyBQYW5uZXIK
LSAgICB2aXJ0dWFsIHZvaWQgcGFuKGRvdWJsZSBhemltdXRoLCBkb3VibGUgZWxldmF0aW9uLCBB
dWRpb0J1cyogaW5wdXRCdXMsIEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwYW4oZG91YmxlIGF6aW11dGgsIGRvdWJsZSBlbGV2
YXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91dHB1dEJ1cywgc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CiAKICAgICBz
aXplX3QgZmZ0U2l6ZSgpIHsgcmV0dXJuIGZmdFNpemVGb3JTYW1wbGVSYXRlKG1fc2FtcGxlUmF0
ZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hh
bm5lbFJlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwCmluZGV4IGRiNTFlOTBlZGVhNzM5OGFiMjQxNjUzNDc1MTg2OGMw
ZTU3ZmVkOWMuLmY2YzA3ZTdjMTc4MGZlNzQzMGNhYzc4NmI2NTk3YzU4NDcwNzgxMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIENvcHkgdGhl
IGNoYW5uZWwgZGF0YSBmcm9tIHdoYXQgd2UgcmVjZWl2ZWQgZnJvbSBtX211bHRpQ2hhbm5lbFBy
b3ZpZGVyLgogICAgICAgICBBU1NFUlQobV9jdXJyZW50Q2hhbm5lbCA8PSBtX251bWJlck9mQ2hh
bm5lbHMpOwogICAgICAgICBpZiAobV9jdXJyZW50Q2hhbm5lbCA8IG1fbnVtYmVyT2ZDaGFubmVs
cykgewotICAgICAgICAgICAgbWVtY3B5KGJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpLCBtX211bHRp
Q2hhbm5lbEJ1cy0+Y2hhbm5lbChtX2N1cnJlbnRDaGFubmVsKS0+ZGF0YSgpLCBzaXplb2YoZmxv
YXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgICAgIG1lbWNweShidXMtPmNoYW5uZWwo
MCktPm11dGFibGVEYXRhKCksIG1fbXVsdGlDaGFubmVsQnVzLT5jaGFubmVsKG1fY3VycmVudENo
YW5uZWwpLT5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwogICAgICAg
ICAgICAgKyttX2N1cnJlbnRDaGFubmVsOwogICAgICAgICB9CiAgICAgfQpAQCAtMTEzLDcgKzEx
Myw3IEBAIHZvaWQgTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJv
dmlkZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVzCiAgICAgICAgIC8vIEhvd2V2ZXIsIGlmIGl0
IGNhbGxzIHByb3ZpZGVJbnB1dCgpIGZvciB0aGUgZmlyc3QgY2hhbm5lbCwgdGhlbiBpdCB3aWxs
IGNhbGwgaXQgZm9yIHRoZSByZW1haW5pbmcKICAgICAgICAgLy8gY2hhbm5lbHMsIHNpbmNlIHRo
ZXkgYWxsIGJ1ZmZlciBpbiB0aGUgc2FtZSB3YXkgYW5kIGFyZSBwcm9jZXNzaW5nIHRoZSBzYW1l
IG51bWJlciBvZiBmcmFtZXMuCiAgICAgICAgIG1fa2VybmVsc1tjaGFubmVsSW5kZXhdLT5wcm9j
ZXNzKCZjaGFubmVsUHJvdmlkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24tPmNoYW5uZWwo
Y2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1Bhbm5lci5oCmluZGV4IDRiNzI4MzI3ZDI5YWU4YjNjM2Q4MzlmNWQ5ZjBl
MWFmNzZkYjRkNjYuLmQ4YjhkZDBmMWFkNGY4ZTYyOTBjZDA2ZWRiOTYwZDNhNzk1YzA1MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oCkBAIC01Myw3ICs1Myw3IEBAIHB1
YmxpYzoKIAogICAgIFBhbm5pbmdNb2RlbCBwYW5uaW5nTW9kZWwoKSBjb25zdCB7IHJldHVybiBt
X3Bhbm5pbmdNb2RlbDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhbihkb3VibGUgYXppbXV0aCwg
ZG91YmxlIGVsZXZhdGlvbiwgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVz
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhbihkb3Vi
bGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBB
dWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVzZXQoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmIuY3BwCmluZGV4IDM0MTYyNmZkOGNhMThiNzczZGE4Y2FkNTI4NzJkMGI3MzNhMGUyZTgu
LjEyMmUyMWI2ODk1ZTBiNDc1MjRkZGEzZjk3ZjdiMWJhOGZhOGJkYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmV2
ZXJiOjppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZmZXIsIHNpemVfdCBy
ZW5kZXJTbGljZVNpemUsCiAgICAgICAgIG1fdGVtcEJ1ZmZlciA9IGFkb3B0UHRyKG5ldyBBdWRp
b0J1cygyLCBNYXhGcmFtZVNpemUpKTsKIH0KIAotdm9pZCBSZXZlcmI6OnByb2Nlc3MoQXVkaW9C
dXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQordm9pZCBSZXZlcmI6OnByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywg
QXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAg
IC8vIERvIGEgZmFpcmx5IGNvbXByZWhlbnNpdmUgc2FuaXR5IGNoZWNrLgogICAgIC8vIElmIHRo
ZXNlIGNvbmRpdGlvbnMgYXJlIHNhdGlzZmllZCwgYWxsIG9mIHRoZSBzb3VyY2UgYW5kIGRlc3Rp
bmF0aW9uIHBvaW50ZXJzIHdpbGwgYmUgdmFsaWQgZm9yIHRoZSB2YXJpb3VzIG1hdHJpeGluZyBj
YXNlcy4KQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFJldmVyYjo6cHJvY2VzcyhBdWRpb0J1cyog
c291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBmcmFtZQogICAgIH0K
IAogICAgIEF1ZGlvQ2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsTCA9IGRlc3RpbmF0aW9uQnVz
LT5jaGFubmVsKDApOwotICAgIEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbEwgPSBzb3VyY2VC
dXMtPmNoYW5uZWwoMCk7CisgICAgY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsTCA9
IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKTsKIAogICAgIC8vIEhhbmRsZSBpbnB1dCAtPiBvdXRwdXQg
bWF0cml4aW5nLi4uCiAgICAgc2l6ZV90IG51bUlucHV0Q2hhbm5lbHMgPSBzb3VyY2VCdXMtPm51
bWJlck9mQ2hhbm5lbHMoKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFJldmVyYjo6cHJvY2Vz
cyhBdWRpb0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBm
cmFtZQogCiAgICAgaWYgKG51bUlucHV0Q2hhbm5lbHMgPT0gMiAmJiBudW1SZXZlcmJDaGFubmVs
cyA9PSAyICYmIG51bU91dHB1dENoYW5uZWxzID09IDIpIHsKICAgICAgICAgLy8gMiAtPiAyIC0+
IDIKLSAgICAgICAgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsUiA9IHNvdXJjZUJ1cy0+Y2hh
bm5lbCgxKTsKKyAgICAgICAgY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsUiA9IHNv
dXJjZUJ1cy0+Y2hhbm5lbCgxKTsKICAgICAgICAgQXVkaW9DaGFubmVsKiBkZXN0aW5hdGlvbkNo
YW5uZWxSID0gZGVzdGluYXRpb25CdXMtPmNoYW5uZWwoMSk7CiAgICAgICAgIG1fY29udm9sdmVy
c1swXS0+cHJvY2Vzcyhzb3VyY2VDaGFubmVsTCwgZGVzdGluYXRpb25DaGFubmVsTCwgZnJhbWVz
VG9Qcm9jZXNzKTsKICAgICAgICAgbV9jb252b2x2ZXJzWzFdLT5wcm9jZXNzKHNvdXJjZUNoYW5u
ZWxSLCBkZXN0aW5hdGlvbkNoYW5uZWxSLCBmcmFtZXNUb1Byb2Nlc3MpOwpAQCAtMTc3LDEzICsx
NzcsMTMgQEAgdm9pZCBSZXZlcmI6OnByb2Nlc3MoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWUKICAgICAgICAgQVNTRVJUKGlzQ29weVNh
ZmUpOwogICAgICAgICBpZiAoIWlzQ29weVNhZmUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1lbWNweShkZXN0aW5hdGlvbkNoYW5uZWxSLT5kYXRhKCksIGRlc3RpbmF0aW9uQ2hhbm5l
bEwtPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1l
bWNweShkZXN0aW5hdGlvbkNoYW5uZWxSLT5tdXRhYmxlRGF0YSgpLCBkZXN0aW5hdGlvbkNoYW5u
ZWxMLT5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIH0gZWxz
ZSBpZiAobnVtSW5wdXRDaGFubmVscyA9PSAxICYmIG51bVJldmVyYkNoYW5uZWxzID09IDEgJiYg
bnVtT3V0cHV0Q2hhbm5lbHMgPT0gMSkgewogICAgICAgICAvLyAxIC0+IDEgLT4gMQogICAgICAg
ICBtX2NvbnZvbHZlcnNbMF0tPnByb2Nlc3Moc291cmNlQ2hhbm5lbEwsIGRlc3RpbmF0aW9uQ2hh
bm5lbEwsIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgfSBlbHNlIGlmIChudW1JbnB1dENoYW5uZWxz
ID09IDIgJiYgbnVtUmV2ZXJiQ2hhbm5lbHMgPT0gNCAmJiBudW1PdXRwdXRDaGFubmVscyA9PSAy
KSB7CiAgICAgICAgIC8vIDIgLT4gNCAtPiAyICgiVHJ1ZSIgc3RlcmVvKQotICAgICAgICBBdWRp
b0NoYW5uZWwqIHNvdXJjZUNoYW5uZWxSID0gc291cmNlQnVzLT5jaGFubmVsKDEpOworICAgICAg
ICBjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWxSID0gc291cmNlQnVzLT5jaGFubmVs
KDEpOwogICAgICAgICBBdWRpb0NoYW5uZWwqIGRlc3RpbmF0aW9uQ2hhbm5lbFIgPSBkZXN0aW5h
dGlvbkJ1cy0+Y2hhbm5lbCgxKTsKIAogICAgICAgICBBdWRpb0NoYW5uZWwqIHRlbXBDaGFubmVs
TCA9IG1fdGVtcEJ1ZmZlci0+Y2hhbm5lbCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiLmgKaW5kZXggZjE2MmUwYjcwOWU5YmY2ODUwYTkwMTMxOWMyY2I5ZDRiZDRlYTI5Mi4u
Nzc5ZTdiYmE0OTM0NGM4MmU0NTdjNzIzZTZkMGE2MTg4ODFkZGVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIC8v
IHJlbmRlclNsaWNlU2l6ZSBpcyBhIHJlbmRlcmluZyBoaW50LCBzbyB0aGUgRkZUcyBjYW4gYmUg
b3B0aW1pemVkIHRvIG5vdCBhbGwgb2NjdXIgYXQgdGhlIHNhbWUgdGltZSAodmVyeSBiYWQgd2hl
biByZW5kZXJpbmcgb24gYSByZWFsLXRpbWUgdGhyZWFkKS4KICAgICBSZXZlcmIoQXVkaW9CdXMq
IGltcHVsc2VSZXNwb25zZUJ1ZmZlciwgc2l6ZV90IHJlbmRlclNsaWNlU2l6ZSwgc2l6ZV90IG1h
eEZGVFNpemUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIHVzZUJhY2tncm91bmRUaHJl
YWRzLCBib29sIG5vcm1hbGl6ZSk7CiAKLSAgICB2b2lkIHByb2Nlc3MoQXVkaW9CdXMqIHNvdXJj
ZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRl
c3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB2b2lkIHJlc2V0KCk7
CiAKICAgICB1bnNpZ25lZCBpbXB1bHNlUmVzcG9uc2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2ltcHVsc2VSZXNwb25zZUxlbmd0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXggYmJiNTUwODdmMGQxMGIxNTBiOTM3OTZm
NGFiZjU4YWQ4MmM4MmVmMy4uYzYxMTQxNGNiYzE2ZGMxNmQ3ZDFlY2EzNTFjNTdiNTk0NWVjMGYw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVy
KEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpCiAgICAgLy8g
T3RoZXJ3aXNlLCBhc3N1bWUgd2UncmUgYmVpbmcgcnVuIGZyb20gYSBjb21tYW5kLWxpbmUgdG9v
bC4KICAgICBib29sIGhhc1JlYWx0aW1lQ29uc3RyYWludCA9IHVzZUJhY2tncm91bmRUaHJlYWRz
OwogCi0gICAgZmxvYXQqIHJlc3BvbnNlID0gaW1wdWxzZVJlc3BvbnNlLT5kYXRhKCk7CisgICAg
Y29uc3QgZmxvYXQqIHJlc3BvbnNlID0gaW1wdWxzZVJlc3BvbnNlLT5kYXRhKCk7CiAgICAgc2l6
ZV90IHRvdGFsUmVzcG9uc2VMZW5ndGggPSBpbXB1bHNlUmVzcG9uc2UtPmxlbmd0aCgpOwogCiAg
ICAgLy8gQmVjYXVzZSB3ZSdyZSBub3QgdXNpbmcgZGlyZWN0LWNvbnZvbHV0aW9uIGluIHRoZSBs
ZWFkaW5nIHBvcnRpb24sIHRoZSByZXZlcmIgaGFzIGFuIG92ZXJhbGwgbGF0ZW5jeSBvZiBoYWxm
IHRoZSBmaXJzdC1zdGFnZSBGRlQgc2l6ZQpAQCAtMTc1LDE1ICsxNzUsMTUgQEAgdm9pZCBSZXZl
cmJDb252b2x2ZXI6OmJhY2tncm91bmRUaHJlYWRFbnRyeSgpCiAgICAgfQogfQogCi12b2lkIFJl
dmVyYkNvbnZvbHZlcjo6cHJvY2VzcyhBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWwsIEF1ZGlv
Q2hhbm5lbCogZGVzdGluYXRpb25DaGFubmVsLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQordm9p
ZCBSZXZlcmJDb252b2x2ZXI6OnByb2Nlc3MoY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFu
bmVsLCBBdWRpb0NoYW5uZWwqIGRlc3RpbmF0aW9uQ2hhbm5lbCwgc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykKIHsKICAgICBib29sIGlzU2FmZSA9IHNvdXJjZUNoYW5uZWwgJiYgZGVzdGluYXRpb25D
aGFubmVsICYmIHNvdXJjZUNoYW5uZWwtPmxlbmd0aCgpID49IGZyYW1lc1RvUHJvY2VzcyAmJiBk
ZXN0aW5hdGlvbkNoYW5uZWwtPmxlbmd0aCgpID49IGZyYW1lc1RvUHJvY2VzczsKICAgICBBU1NF
UlQoaXNTYWZlKTsKICAgICBpZiAoIWlzU2FmZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
LSAgICBmbG9hdCogc291cmNlID0gc291cmNlQ2hhbm5lbC0+ZGF0YSgpOwotICAgIGZsb2F0KiBk
ZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQ2hhbm5lbC0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2UgPSBzb3VyY2VDaGFubmVsLT5kYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9u
ID0gZGVzdGluYXRpb25DaGFubmVsLT5tdXRhYmxlRGF0YSgpOwogICAgIGJvb2wgaXNEYXRhU2Fm
ZSA9IHNvdXJjZSAmJiBkZXN0aW5hdGlvbjsKICAgICBBU1NFUlQoaXNEYXRhU2FmZSk7CiAgICAg
aWYgKCFpc0RhdGFTYWZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuaAppbmRleCAwMTNiNjg0OTcxZjg5MDlkM2M1ZmZmZGViY2Q1ZjRiOTU4Zjhj
MzEyLi4zNzBiODcyMDY0ODI5ZTFjY2UyOWI2ZWQyNTcxMjZjOTBmNTY4YmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaApAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAgICAgUmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxz
ZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLCBzaXplX3QgbWF4RkZUU2l6ZSwgc2l6
ZV90IGNvbnZvbHZlclJlbmRlclBoYXNlLCBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzKTsKICAg
ICB+UmV2ZXJiQ29udm9sdmVyKCk7CiAKLSAgICB2b2lkIHByb2Nlc3MoQXVkaW9DaGFubmVsKiBz
b3VyY2VDaGFubmVsLCBBdWRpb0NoYW5uZWwqIGRlc3RpbmF0aW9uQ2hhbm5lbCwgc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291
cmNlQ2hhbm5lbCwgQXVkaW9DaGFubmVsKiBkZXN0aW5hdGlvbkNoYW5uZWwsIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIHNpemVfdCBpbXB1bHNlUmVz
cG9uc2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2ltcHVsc2VSZXNwb25zZUxlbmd0aDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuY3BwCmluZGV4IGYyMDdkMTlkZWIwYzQ4YmJmZWY2YjhhZDViYWI4NTI4OWU4NzI1MTAu
LjUzYmI2NTAwODMxMDY0NzE5MWUwMGE5ZGI5NTlhMDNkYTlmZmVhMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
VmVjdG9yTWF0aDsKIAotUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdl
KGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZXNwb25zZUxlbmd0aCwgc2l6ZV90IHJl
dmVyYlRvdGFsTGF0ZW5jeSwgc2l6ZV90IHN0YWdlT2Zmc2V0LCBzaXplX3Qgc3RhZ2VMZW5ndGgs
CitSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UoY29uc3QgZmxvYXQq
IGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlc3BvbnNlTGVuZ3RoLCBzaXplX3QgcmV2ZXJiVG90
YWxMYXRlbmN5LCBzaXplX3Qgc3RhZ2VPZmZzZXQsIHNpemVfdCBzdGFnZUxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZmZ0U2l6ZSwgc2l6
ZV90IHJlbmRlclBoYXNlLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLCBSZXZlcmJBY2N1bXVsYXRp
b25CdWZmZXIqIGFjY3VtdWxhdGlvbkJ1ZmZlcikKICAgICA6IG1fZmZ0S2VybmVsKGZmdFNpemUp
CiAgICAgLCBtX2FjY3VtdWxhdGlvbkJ1ZmZlcihhY2N1bXVsYXRpb25CdWZmZXIpCkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OnByb2Nlc3NJbkJhY2tncm91bmQo
UmV2ZXJiQ29udm9sdmVyKiBjb252b2x2ZXIsIHNpemVfCiAgICAgcHJvY2Vzcyhzb3VyY2UsIGZy
YW1lc1RvUHJvY2Vzcyk7CiB9CiAKLXZvaWQgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OnByb2Nlc3Mo
ZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgUmV2ZXJiQ29udm9s
dmVyU3RhZ2U6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykKIHsKICAgICBBU1NFUlQoc291cmNlKTsKICAgICBpZiAoIXNvdXJjZSkKQEAgLTk2LDcg
Kzk2LDggQEAgdm9pZCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6cHJvY2VzcyhmbG9hdCogc291cmNl
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgIAogICAgIC8vIERlYWwgd2l0aCBwcmUtZGVs
YXkgc3RyZWFtIDogbm90ZSBzcGVjaWFsIGhhbmRsaW5nIG9mIHplcm8gZGVsYXkuCiAKLSAgICBm
bG9hdCogcHJlRGVsYXllZFNvdXJjZTsKKyAgICBjb25zdCBmbG9hdCogcHJlRGVsYXllZFNvdXJj
ZTsKKyAgICBmbG9hdCogcHJlRGVsYXllZERlc3RpbmF0aW9uOwogICAgIGZsb2F0KiB0ZW1wb3Jh
cnlCdWZmZXI7CiAgICAgYm9vbCBpc1RlbXBvcmFyeUJ1ZmZlclNhZmUgPSBmYWxzZTsKICAgICBp
ZiAobV9wcmVEZWxheUxlbmd0aCA+IDApIHsKQEAgLTEwOCwxMCArMTA5LDEyIEBAIHZvaWQgUmV2
ZXJiQ29udm9sdmVyU3RhZ2U6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKIAogICAgICAgICBpc1RlbXBvcmFyeUJ1ZmZlclNhZmUgPSBmcmFtZXNUb1Byb2Nl
c3MgPD0gbV90ZW1wb3JhcnlCdWZmZXIuc2l6ZSgpOwogCi0gICAgICAgIHByZURlbGF5ZWRTb3Vy
Y2UgPSBtX3ByZURlbGF5QnVmZmVyLmRhdGEoKSArIG1fcHJlUmVhZFdyaXRlSW5kZXg7CisgICAg
ICAgIHByZURlbGF5ZWREZXN0aW5hdGlvbiA9IG1fcHJlRGVsYXlCdWZmZXIuZGF0YSgpICsgbV9w
cmVSZWFkV3JpdGVJbmRleDsKKyAgICAgICAgcHJlRGVsYXllZFNvdXJjZSA9IHByZURlbGF5ZWRE
ZXN0aW5hdGlvbjsKICAgICAgICAgdGVtcG9yYXJ5QnVmZmVyID0gbV90ZW1wb3JhcnlCdWZmZXIu
ZGF0YSgpOyAgICAgICAgCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gWmVybyBkZWxheQorICAg
ICAgICBwcmVEZWxheWVkRGVzdGluYXRpb24gPSAwOwogICAgICAgICBwcmVEZWxheWVkU291cmNl
ID0gc291cmNlOwogICAgICAgICB0ZW1wb3JhcnlCdWZmZXIgPSBtX3ByZURlbGF5QnVmZmVyLmRh
dGEoKTsKICAgICAgICAgCkBAIC0xMzgsNyArMTQxLDcgQEAgdm9pZCBSZXZlcmJDb252b2x2ZXJT
dGFnZTo6cHJvY2VzcyhmbG9hdCogc291cmNlLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogCiAg
ICAgLy8gRmluYWxseSBjb3B5IGlucHV0IHRvIHByZS1kZWxheS4KICAgICBpZiAobV9wcmVEZWxh
eUxlbmd0aCA+IDApIHsKLSAgICAgICAgbWVtY3B5KHByZURlbGF5ZWRTb3VyY2UsIHNvdXJjZSwg
c2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1lbWNweShwcmVEZWxh
eWVkRGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7
CiAgICAgICAgIG1fcHJlUmVhZFdyaXRlSW5kZXggKz0gZnJhbWVzVG9Qcm9jZXNzOwogCiAgICAg
ICAgIEFTU0VSVChtX3ByZVJlYWRXcml0ZUluZGV4IDw9IG1fcHJlRGVsYXlMZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3Rh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmgKaW5kZXggZmMwNWEwZTA4ZmEzM2IwMjY4ZWNkZDM1NDc4YWFmYTk5OTNhZWUzNC4uOTgxMWJj
NjAzMjE2NzY0NjAwYzljYjE3MjUxN2RlZjE1OGEzNmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCkBAIC00NSwxMSAr
NDUsMTEgQEAgY2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgewogcHVibGljOgogICAgIC8vIHJl
bmRlclBoYXNlIGlzIHVzZWZ1bCB0byBrbm93IHNvIHRoYXQgd2UgY2FuIG1hbmlwdWxhdGUgdGhl
IHByZSB2ZXJzdXMgcG9zdCBkZWxheSBzbyB0aGF0IHN0YWdlcyB3aWxsIHBlcmZvcm0KICAgICAv
LyB0aGVpciBoZWF2eSB3b3JrIChGRlQgcHJvY2Vzc2luZykgb24gZGlmZmVyZW50IHNsaWNlcyB0
byBiYWxhbmNlIHRoZSBsb2FkIGluIGEgcmVhbC10aW1lIHRocmVhZC4KLSAgICBSZXZlcmJDb252
b2x2ZXJTdGFnZShmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVzcG9uc2VMZW5ndGgs
IHNpemVfdCByZXZlcmJUb3RhbExhdGVuY3ksIHNpemVfdCBzdGFnZU9mZnNldCwgc2l6ZV90IHN0
YWdlTGVuZ3RoLAorICAgIFJldmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1bHNl
UmVzcG9uc2UsIHNpemVfdCByZXNwb25zZUxlbmd0aCwgc2l6ZV90IHJldmVyYlRvdGFsTGF0ZW5j
eSwgc2l6ZV90IHN0YWdlT2Zmc2V0LCBzaXplX3Qgc3RhZ2VMZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGZmdFNpemUsIHNpemVfdCByZW5kZXJQaGFzZSwgc2l6ZV90IHJl
bmRlclNsaWNlU2l6ZSwgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyKiBhY2N1bXVsYXRpb25CdWZm
ZXIpOwogCiAgICAgLy8gV0FSTklORzogZnJhbWVzVG9Qcm9jZXNzIG11c3QgYmUgc3VjaCB0aGF0
IGl0IGV2ZW5seSBkaXZpZGVzIHRoZSBkZWxheSBidWZmZXIgc2l6ZSAoc3RhZ2Vfb2Zmc2V0KS4K
LSAgICB2b2lkIHByb2Nlc3MoZmxvYXQqIHNvdXJjZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7
CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOwogCiAgICAgdm9pZCBwcm9jZXNzSW5CYWNrZ3JvdW5kKFJldmVyYkNvbnZvbHZlciog
Y29udm9sdmVyLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwCmluZGV4IGYyNzBmNmZh
YTRjNzRmYWY1MTliMzI3YTM3MmNlYzg5YTUxMGNkZTcuLjFiZTlhZjg4NGU0MjVlNGQwZTM4YjM4
MGM2YWNhNDAwMmY1YTc0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYklucHV0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmV2ZXJiSW5wdXRC
dWZmZXI6OlJldmVyYklucHV0QnVmZmVyKHNpemVfdCBsZW5ndGgpCiB7CiB9CiAKLXZvaWQgUmV2
ZXJiSW5wdXRCdWZmZXI6OndyaXRlKGZsb2F0KiBzb3VyY2VQLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpCit2b2lkIFJldmVyYklucHV0QnVmZmVyOjp3cml0ZShjb25zdCBmbG9hdCogc291cmNlUCwg
c2l6ZV90IG51bWJlck9mRnJhbWVzKQogewogICAgIHNpemVfdCBidWZmZXJMZW5ndGggPSBtX2J1
ZmZlci5zaXplKCk7CiAgICAgYm9vbCBpc0NvcHlTYWZlID0gbV93cml0ZUluZGV4ICsgbnVtYmVy
T2ZGcmFtZXMgPD0gYnVmZmVyTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKaW5kZXggMTVhMjgxODI0ZDM2YmRlNjhkNzlhNWUx
MGIzNTc5MjUxNjUxODk2OS4uNTAzNjU3NWI5ODYxYmQ4Y2Q0ZTBhMWExMTVmNTAyNmFlNTc0ODli
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1
ZmZlci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcmVhbHRpbWUgYXVk
aW8gdGhyZWFkIGtlZXBzIHdyaXRpbmcgc2FtcGxlcyBoZXJlLgogICAgIC8vIFRoZSBhc3N1bXB0
aW9uIGlzIHRoYXQgdGhlIGJ1ZmZlcidzIGxlbmd0aCBpcyBldmVubHkgZGl2aXNpYmxlIGJ5IG51
bWJlck9mRnJhbWVzIChmb3IgbmVhcmx5IGFsbCBjYXNlcyB0aGlzIHdpbGwgYmUgZmluZSkuCiAg
ICAgLy8gRklYTUU6IHJlbW92ZSBudW1iZXJPZkZyYW1lcyByZXN0cmljdGlvbi4uLgotICAgIHZv
aWQgd3JpdGUoZmxvYXQqIHNvdXJjZVAsIHNpemVfdCBudW1iZXJPZkZyYW1lcyk7CisgICAgdm9p
ZCB3cml0ZShjb25zdCBmbG9hdCogc291cmNlUCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKTsKIAog
ICAgIC8vIEJhY2tncm91bmQgdGhyZWFkcyBjYW4gY2FsbCB0aGlzIHRvIGNoZWNrIGlmIHRoZXJl
J3MgYW55dGhpbmcgdG8gcmVhZC4uLgogICAgIHNpemVfdCB3cml0ZUluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV93cml0ZUluZGV4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1NpbmNSZXNhbXBsZXIuY3BwCmluZGV4IDBlNGI4NDk4NTAxZTRiMzk2ZjA0MmIwNGFkNGNmZmQ1
Y2MyZDNkNjIuLjRhZGViMjdhOWU4YTJlODIxYzQ1YThjM2IwYzk3ZTdiOTNmM2YzYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBTaW5jUmVzYW1wbGVyOjppbml0aWFsaXplS2VybmVsKCkKICAg
ICB9CiB9CiAKLXZvaWQgU2luY1Jlc2FtcGxlcjo6Y29uc3VtZVNvdXJjZShmbG9hdCogYnVmZmVy
LCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKK3ZvaWQgU2luY1Jlc2FtcGxlcjo6Y29u
c3VtZVNvdXJjZShjb25zdCBmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZy
YW1lcykKIHsKICAgICBBU1NFUlQobV9zb3VyY2VQcm92aWRlcik7CiAgICAgaWYgKCFtX3NvdXJj
ZVByb3ZpZGVyKQpAQCAtMTM1LDcgKzEzNSw5IEBAIHZvaWQgU2luY1Jlc2FtcGxlcjo6Y29uc3Vt
ZVNvdXJjZShmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKICAg
ICAKICAgICAvLyBXcmFwIHRoZSBwcm92aWRlZCBidWZmZXIgYnkgYW4gQXVkaW9CdXMgZm9yIHVz
ZSBieSB0aGUgc291cmNlIHByb3ZpZGVyLgogICAgIEF1ZGlvQnVzIGJ1cygxLCBudW1iZXJPZlNv
dXJjZUZyYW1lcywgZmFsc2UpOwotICAgIGJ1cy5zZXRDaGFubmVsTWVtb3J5KDAsIGJ1ZmZlciwg
bnVtYmVyT2ZTb3VyY2VGcmFtZXMpOworCisgICAgLy8gRklYTUU6IGZpbmQgYSB3YXkgdG8gbWFr
ZSB0aGUgZm9sbG93aW5nIGNvbnN0LWNvcnJlY3Q6CisgICAgYnVzLnNldENoYW5uZWxNZW1vcnko
MCwgY29uc3RfY2FzdDxmbG9hdCo+KGJ1ZmZlciksIG51bWJlck9mU291cmNlRnJhbWVzKTsKICAg
ICAKICAgICBtX3NvdXJjZVByb3ZpZGVyLT5wcm92aWRlSW5wdXQoJmJ1cywgbnVtYmVyT2ZTb3Vy
Y2VGcmFtZXMpOwogfQpAQCAtMTQ2LDcgKzE0OCw3IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIEJ1
ZmZlclNvdXJjZVByb3ZpZGVyIDogcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIgewogcHVibGlj
OgotICAgIEJ1ZmZlclNvdXJjZVByb3ZpZGVyKGZsb2F0KiBzb3VyY2UsIHNpemVfdCBudW1iZXJP
ZlNvdXJjZUZyYW1lcykKKyAgICBCdWZmZXJTb3VyY2VQcm92aWRlcihjb25zdCBmbG9hdCogc291
cmNlLCBzaXplX3QgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpCiAgICAgICAgIDogbV9zb3VyY2Uoc291
cmNlKQogICAgICAgICAsIG1fc291cmNlRnJhbWVzQXZhaWxhYmxlKG51bWJlck9mU291cmNlRnJh
bWVzKQogICAgIHsKQEAgLTE1OSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9z
b3VyY2UgfHwgIWJ1cykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAg
ICBmbG9hdCogYnVmZmVyID0gYnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgICAgIGZsb2F0
KiBidWZmZXIgPSBidXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7CiAKICAgICAgICAgLy8g
Q2xhbXAgdG8gbnVtYmVyIG9mIGZyYW1lcyBhdmFpbGFibGUgYW5kIHplcm8tcGFkLgogICAgICAg
ICBzaXplX3QgZnJhbWVzVG9Db3B5ID0gbWluKG1fc291cmNlRnJhbWVzQXZhaWxhYmxlLCBmcmFt
ZXNUb1Byb2Nlc3MpOwpAQCAtMTc0LDEzICsxNzYsMTMgQEAgcHVibGljOgogICAgIH0KICAgICAK
IHByaXZhdGU6Ci0gICAgZmxvYXQqIG1fc291cmNlOworICAgIGNvbnN0IGZsb2F0KiBtX3NvdXJj
ZTsKICAgICBzaXplX3QgbV9zb3VyY2VGcmFtZXNBdmFpbGFibGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZQogCi12b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlNvdXJjZUZyYW1lcykKK3ZvaWQgU2luY1Jl
c2FtcGxlcjo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHVuc2lnbmVkIG51bWJlck9mU291cmNlRnJhbWVzKQogewogICAgIC8vIFJlc2FtcGxlIGFuIGlu
LW1lbW9yeSBidWZmZXIgdXNpbmcgYW4gQXVkaW9Tb3VyY2VQcm92aWRlci4KICAgICBCdWZmZXJT
b3VyY2VQcm92aWRlciBzb3VyY2VQcm92aWRlcihzb3VyY2UsIG51bWJlck9mU291cmNlRnJhbWVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAppbmRl
eCBiYmUwYzU1OGMzY2NjMjFlMDdhOWJiZjMzZjc1MDI2NDIzNzJiZmYzLi45ZTk3NzhjNDY0MWZm
OTU0NmJmYzE0MGUxNzUwMWY0YmY5MTBlNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBAIC00NCwxNCArNDQsMTQgQEAgcHVibGljOgogICAg
IFNpbmNSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBrZXJuZWxTaXplID0g
MzIsIHVuc2lnbmVkIG51bWJlck9mS2VybmVsT2Zmc2V0cyA9IDMyKTsKICAgICAKICAgICAvLyBQ
cm9jZXNzZXMgbnVtYmVyT2ZTb3VyY2VGcmFtZXMgZnJvbSBzb3VyY2UgdG8gcHJvZHVjZSBudW1i
ZXJPZlNvdXJjZUZyYW1lcyAvIHNjYWxlRmFjdG9yIGZyYW1lcyBpbiBkZXN0aW5hdGlvbi4KLSAg
ICB2b2lkIHByb2Nlc3MoZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBudW1iZXJPZlNvdXJjZUZyYW1lcyk7CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0KiBz
b3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMp
OwogCiAgICAgLy8gUHJvY2VzcyB3aXRoIGlucHV0IHNvdXJjZSBjYWxsYmFjayBmdW5jdGlvbiBm
b3Igc3RyZWFtaW5nIGFwcGxpY2F0aW9ucy4KICAgICB2b2lkIHByb2Nlc3MoQXVkaW9Tb3VyY2VQ
cm92aWRlciosIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAK
IHByb3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemVLZXJuZWwoKTsKLSAgICB2b2lkIGNvbnN1
bWVTb3VyY2UoZmxvYXQqIGJ1ZmZlciwgdW5zaWduZWQgbnVtYmVyT2ZTb3VyY2VGcmFtZXMpOwor
ICAgIHZvaWQgY29uc3VtZVNvdXJjZShjb25zdCBmbG9hdCogYnVmZmVyLCB1bnNpZ25lZCBudW1i
ZXJPZlNvdXJjZUZyYW1lcyk7CiAgICAgCiAgICAgZG91YmxlIG1fc2NhbGVGYWN0b3I7CiAgICAg
dW5zaWduZWQgbV9rZXJuZWxTaXplOwpAQCAtNzEsNyArNzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gU291cmNlIGlzIGNvcGllZCBpbnRvIHRoaXMgYnVmZmVyIGZvciBlYWNoIHByb2Nlc3Npbmcg
cGFzcy4KICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9pbnB1dEJ1ZmZlcjsKIAotICAgIGZsb2F0KiBt
X3NvdXJjZTsKKyAgICBjb25zdCBmbG9hdCogbV9zb3VyY2U7CiAgICAgdW5zaWduZWQgbV9zb3Vy
Y2VGcmFtZXNBdmFpbGFibGU7CiAgICAgCiAgICAgLy8gbV9zb3VyY2VQcm92aWRlciBpcyB1c2Vk
IHRvIHByb3ZpZGUgdGhlIGF1ZGlvIGlucHV0IHN0cmVhbSB0byB0aGUgcmVzYW1wbGVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuY3BwCmluZGV4IDJmYTQ0MDAzYTdh
NTEwMGRlOTFiNzUwZjYxZjE3MTU1NDc1MmQzOGEuLjllNmYxYjYzNTZlOWI3ODVkZjQwMGU0NDE1
Njc2NDk1ZTUyNzEzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1plcm9Qb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9s
ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFpl
cm9Qb2xlOjpwcm9jZXNzKGZsb2F0ICpzb3VyY2UsIGZsb2F0ICpkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgZnJhbWVzVG9Qcm9jZXNzKQordm9pZCBaZXJvUG9sZTo6cHJvY2Vzcyhjb25zdCBmbG9hdCAq
c291cmNlLCBmbG9hdCAqZGVzdGluYXRpb24sIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2VzcykKIHsK
ICAgICBmbG9hdCB6ZXJvID0gbV96ZXJvOwogICAgIGZsb2F0IHBvbGUgPSBtX3BvbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaAppbmRleCA5M2ZkMGQ2Zjk3NTM3YTVm
MmEwNzZiYTRmOWY2NjIyOGE3MjM5YmEzLi40Y2IxZDE3NDU2M2YxNzViMjhjYWFjOTU1ZGE1NjI2
OGJkZTFkZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJv
UG9sZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHByb2Nlc3Mo
ZmxvYXQgKnNvdXJjZSwgZmxvYXQgKmRlc3RpbmF0aW9uLCB1bnNpZ25lZCBmcmFtZXNUb1Byb2Nl
c3MpOworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCAqc291cmNlLCBmbG9hdCAqZGVzdGlu
YXRpb24sIHVuc2lnbmVkIGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICAvLyBSZXNldCBmaWx0ZXIg
c3RhdGUuCiAgICAgdm9pZCByZXNldCgpIHsgbV9sYXN0WCA9IDA7IG1fbGFzdFkgPSAwOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVG
Rk1QRUcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZmZtcGVnL0ZGVEZyYW1l
RkZNUEVHLmNwcAppbmRleCA5Zjg5MzI0NDUxZDc0ZmJjODdiYmE3ZGNiYjg5YjRhNzg0MDE2ZDc5
Li5kNDYyNGE3MGI2NjIzYmUxNWRiYmNlNTMxNDVkZTk5OGVjOGJlNTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZm1wZWcvRkZURnJhbWVGRk1QRUcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2ZmbXBlZy9GRlRGcmFtZUZGTVBFRy5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZGVEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRG
cmFtZSYgZnJhbWUpCiAgICAgVmVjdG9yTWF0aDo6dnNtdWwoaW1hZ1AxLCAxLCAmc2NhbGUsIGlt
YWdQMSwgMSwgaGFsZlNpemUpOwogfQogCi12b2lkIEZGVEZyYW1lOjpkb0ZGVChmbG9hdCogZGF0
YSkKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKQogewogICAgIC8vIENv
cHkgc2luY2UgcHJvY2Vzc2luZyBpcyBpbi1wbGFjZS4KICAgICBmbG9hdCogcCA9IG1fY29tcGxl
eERhdGEuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRmlsZVJlYWRlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9GaWxlUmVhZGVyTWFjLmNwcAppbmRleCA5NTUwMjYzNmI5M2FkM2JjZjg3ZDQ1
MDVhZDA3YmFhNzEwZDE1YTUyLi5kMGVjZjFhMzEzMDdkZWI5MTE0MmViZTNjNWVhYTEyNGQ2M2Ez
MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9G
aWxlUmVhZGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9GaWxlUmVhZGVyTWFjLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFBhc3NPd25QdHI8QXVk
aW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wg
bWl4VG9Nb25vCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVs
czsgKytpKSB7CiAgICAgICAgICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tTnVtYmVyQ2hh
bm5lbHMgPSAxOwogICAgICAgICAgICAgYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGFCeXRl
U2l6ZSA9IG51bWJlck9mRnJhbWVzICogc2l6ZW9mKGZsb2F0KTsKLSAgICAgICAgICAgIGJ1ZmZl
ckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhID0gYXVkaW9CdXMtPmNoYW5uZWwoaSktPmRhdGEoKTsK
KyAgICAgICAgICAgIGJ1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhID0gYXVkaW9CdXMtPmNo
YW5uZWwoaSktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCBQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhm
bG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubwogCiAgICAgaWYgKG1peFRvTW9ubyAmJiBu
dW1iZXJPZkNoYW5uZWxzID09IDIpIHsKICAgICAgICAgLy8gTWl4IHN0ZXJlbyBkb3duIHRvIG1v
bm8KLSAgICAgICAgZmxvYXQqIGRlc3RMID0gYXVkaW9CdXMtPmNoYW5uZWwoMCktPmRhdGEoKTsK
KyAgICAgICAgZmxvYXQqIGRlc3RMID0gYXVkaW9CdXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRh
KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZGcmFtZXM7IGkrKykK
ICAgICAgICAgICAgIGRlc3RMW2ldID0gMC41ZiAqIChidWZmZXJMW2ldICsgYnVmZmVyUltpXSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZG
VEZyYW1lTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFt
ZU1hYy5jcHAKaW5kZXggNmRmYmJlY2NiMmRlZjhkOWJiNDgyNGNmYTdlYTVhMTNhZjk0NTVlNC4u
OGNlZjkyOGQ0NzI1N2M5MWY1ZTI3OWY5ZTcwZjU1NGE0ZWE5YjJlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwCkBAIC0xMjcsNyAr
MTI3LDcgQEAgdm9pZCBGRlRGcmFtZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKQog
ICAgIFZlY3Rvck1hdGg6OnZzbXVsKGltYWdQMSwgMSwgJnNjYWxlLCBpbWFnUDEsIDEsIGhhbGZT
aXplKTsKIH0KIAotdm9pZCBGRlRGcmFtZTo6ZG9GRlQoZmxvYXQqIGRhdGEpCit2b2lkIEZGVEZy
YW1lOjpkb0ZGVChjb25zdCBmbG9hdCogZGF0YSkKIHsKICAgICB2RFNQX2N0b3ooKERTUENvbXBs
ZXgqKWRhdGEsIDIsICZtX2ZyYW1lLCAxLCBtX0ZGVFNpemUgLyAyKTsKICAgICB2RFNQX2ZmdF96
cmlwKG1fRkZUU2V0dXAsICZtX2ZyYW1lLCAxLCBtX2xvZzJGRlRTaXplLCBGRlRfRk9SV0FSRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ta2wvRkZURnJhbWVN
S0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWtsL0ZGVEZyYW1lTUtMLmNw
cAppbmRleCA2YmYyYzFlMjA0MTMyMThlMDAzNWFjZjI0MjNmZjQ5MDgxNGI3OGYwLi4wZjNhMjgy
N2Y1OTg5OWJjZjIyNjI0NmFmZTJmNGQzZjdlYjA0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9ta2wvRkZURnJhbWVNS0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21rbC9GRlRGcmFtZU1LTC5jcHAKQEAgLTE3MCw3ICsxNzAsNyBA
QCB2b2lkIEZGVEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgfQog
fQogCi12b2lkIEZGVEZyYW1lOjpkb0ZGVChmbG9hdCogZGF0YSkKK3ZvaWQgRkZURnJhbWU6OmRv
RkZUKGNvbnN0IGZsb2F0KiBkYXRhKQogewogICAgIC8vIENvbXB1dGUgRm9yd2FyZCB0cmFuc2Zv
cm0uCiAgICAgTUtMX0xPTkcgc3RhdHVzID0gRGZ0aUNvbXB1dGVGb3J3YXJkKG1faGFuZGxlLCBk
YXRhLCBtX2NvbXBsZXhEYXRhLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCAxZmQyZjM4NDgyNmU3YTM4OWQyZjYy
MDRlYTU0MjE2YTdmMmYyMWIxLi5hMGNiMTNhMmJmNzcwOTRmYzA4YTczY2EyZjk1N2UyMTg2MGVh
NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoaXNTYWZlKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG91dHB1dEJ1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpCi0gICAgICAgICAgICAgICAgICAg
IG1lbXNldChvdXRwdXRCdXMtPmNoYW5uZWwoaSktPmRhdGEoKSArIHplcm9TdGFydEZyYW1lLCAw
LCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9aZXJvKTsKKyAgICAgICAgICAgICAgICAgICAgbWVt
c2V0KG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSArIHplcm9TdGFydEZyYW1l
LCAwLCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9aZXJvKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKQEAgLTE5OSwxMSArMTk5LDExIEBAIHZvaWQg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZW5kZXJGcm9tQnVmZmVyKEF1ZGlvQnVzKiBidXMsIHVu
c2lnbmVkIGRlc3RpbmF0aW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEdldCB0aGUgZGVz
dGluYXRpb24gcG9pbnRlcnMuCi0gICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IGJ1cy0+Y2hhbm5l
bCgwKS0+ZGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBidXMtPmNoYW5uZWwoMCkt
Pm11dGFibGVEYXRhKCk7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uTCk7CiAgICAgaWYgKCFkZXN0
aW5hdGlvbkwpCiAgICAgICAgIHJldHVybjsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gKG51
bWJlck9mQ2hhbm5lbHMgPCAyKSA/IDAgOiBidXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKKyAgICBm
bG9hdCogZGVzdGluYXRpb25SID0gKG51bWJlck9mQ2hhbm5lbHMgPCAyKSA/IDAgOiBidXMtPmNo
YW5uZWwoMSktPm11dGFibGVEYXRhKCk7CiAgICAgCiAgICAgYm9vbCBpc1N0ZXJlbyA9IGRlc3Rp
bmF0aW9uUjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVh
ZFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3Iu
Y3BwCmluZGV4IDEyMjQzYzBjOTliZTFjYzc3NTNlYzJhOWY3OTUyODM5Zjg2OTk2MjUuLmUxYWVj
NzU4ODE1NjIwYzlhNmJiMDhlMGI2NzVmNTE2MTFlYmY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQmlx
dWFkUHJvY2Vzc29yOjpjaGVja0ZvckRpcnR5Q29lZmZpY2llbnRzKCkKICAgICB9CiB9CiAKLXZv
aWQgQmlxdWFkUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3ZvaWQgQmlxdWFkUHJvY2Vzc29y
Ojpwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkgewog
ICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlx
dWFkUHJvY2Vzc29yOjpwcm9jZXNzKEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGZyCiAgICAgICAgICAgICAKICAgICAvLyBGb3IgZWFjaCBjaGFubmVsIG9m
IG91ciBpbnB1dCwgcHJvY2VzcyB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBCaXF1YWREU1BLZXJu
ZWwgaW50byB0aGUgb3V0cHV0IGNoYW5uZWwuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fa2VybmVscy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNzKHNv
dXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+Y2hhbm5lbChpKS0+ZGF0YSgp
LCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNl
LT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0
YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogfQogCiB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6c2V0VHlw
ZShGaWx0ZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nv
ci5oCmluZGV4IGM3ZjdkMzA2OGEzY2Y1ZGU1YzgyNDEzMTkxM2JjZjY0NTkyMzc5ODYuLjkxYTFj
Y2NkMTcwNDlkMTQ4ODgxZDAwNDYzOTY3OTA3M2JjZGQ3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpOwog
ICAgICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRp
b0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICAvLyBHZXQgdGhlIG1hZ25pdHVkZSBh
bmQgcGhhc2UgcmVzcG9uc2Ugb2YgdGhlIGZpbHRlciBhdCB0aGUgZ2l2ZW4KICAgICAvLyBzZXQg
b2YgZnJlcXVlbmNpZXMgKGluIEh6KS4gVGhlIHBoYXNlIHJlc3BvbnNlIGlzIGluIHJhZGlhbnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCmlu
ZGV4IDQyMjE1MDljZjk5YzYxNzQzNWVlODA4NjNkZWNmMjhlYmUwN2FhNDguLmJmODMxNDc1MzMx
NWQwYjVjYWNiYWM5ZGNjODExNDU0OTE0MzgxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwCkBAIC0xNjEsMTAgKzE2MSwxMCBAQCB2b2lk
IEphdmFTY3JpcHRBdWRpb05vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAg
ICBpZiAoIWNoYW5uZWxzQXJlR29vZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQqIHNv
dXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOwotICAgIGZsb2F0KiBzb3VyY2VS
ID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsKDEpLT5kYXRh
KCkgOiAwOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWwoMCkt
PmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVzLT5jaGFubmVsKDEp
LT5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgw
KS0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VSID0gbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsKDEpLT5kYXRhKCkgOiAwOworICAgIGZsb2F0KiBk
ZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7CisgICAg
ZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5lbCgxKS0+bXV0YWJsZURhdGEo
KTsKIAogICAgIC8vIENvcHkgZnJvbSB0aGUgaW5wdXQgdG8gdGhlIGlucHV0IGJ1ZmZlci4gIFNl
ZSAiYnVmZmVyc0FyZUdvb2QiIGNoZWNrIGFib3ZlIGZvciBzYWZldHkuCiAgICAgc2l6ZV90IGJ5
dGVzVG9Db3B5ID0gc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc1RvUHJvY2VzczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CmluZGV4IGFlMTgzNWI5YWFiODZmNGIxMmUxYjQ1MjhlZWNjMzI5MDQxOGMzYWMuLjE5OGE1MDIw
YmU5MWQwMGRiMTBmNWE1MDkzMDc2MTI2ODY5OTZkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMTQw
LDcgKzE0MCw3IEBAIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXIoKQog
ICAgICAgICBzaXplX3QgZnJhbWVzQXZhaWxhYmxlVG9Db3B5ID0gbWluKGZyYW1lc1RvUHJvY2Vz
cywgcmVuZGVyUXVhbnR1bVNpemUpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBj
aGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5u
ZWxJbmRleCkgewotICAgICAgICAgICAgZmxvYXQqIHNvdXJjZSA9IG1fcmVuZGVyQnVzLT5jaGFu
bmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0KiBzb3Vy
Y2UgPSBtX3JlbmRlckJ1cy0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7CiAgICAgICAg
ICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBtX3JlbmRlclRhcmdldC0+Z2V0Q2hhbm5lbERhdGEo
Y2hhbm5lbEluZGV4KS0+ZGF0YSgpOwogICAgICAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uICsg
biwgc291cmNlLCBzaXplb2YoZmxvYXQpICogZnJhbWVzQXZhaWxhYmxlVG9Db3B5KTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRl
eCBjY2Q4NjU1MjI2ZDUxOTQ0YzZmMDE1ZjEwOTVmMTM1MDE3ZWNiNzQzLi5hM2Y4MDdkODM3Zjc3
YzQ5Y2NiMDQxNTUwYTZhOWM5MGQ4NGM1ZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVhbHRpbWVB
bmFseXNlcjo6d3JpdGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogICAgIAogICAgIC8vIFBlcmZvcm0gcmVhbC10aW1lIGFuYWx5c2lzCiAgICAgLy8gRklYTUUg
OiBmb3Igbm93IGp1c3QgdXNlIGxlZnQgY2hhbm5lbCAobXVzdCBtaXggaWYgc3RlcmVvIHNvdXJj
ZSkKLSAgICBmbG9hdCogc291cmNlID0gYnVzLT5jaGFubmVsKDApLT5kYXRhKCk7CisgICAgY29u
c3QgZmxvYXQqIHNvdXJjZSA9IGJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOwogCiAgICAgLy8gVGhl
IHNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIHNhbml0eSBjaGVja2VkIHdpdGggaXNCdXNHb29kIGFi
b3ZlLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBl
clByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vz
c29yLmNwcAppbmRleCBmNzU3MWRlYmI3MTJjOTU0ZDJhZjlhNDhmNjY0MWE4MjM3NjYwZDZjLi40
ZjgzZTE2Njk4Y2UxNDY0MzgwNjBmODljYzE1ZTM3OTAzYWM4NmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNTYsNyArNTYsNyBA
QCB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUp
CiAgICAgbV9jdXJ2ZSA9IGN1cnZlOwogfQogCi12b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnBy
b2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQordm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpwcm9jZXNzKGNvbnN0IEF1
ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJv
Y2VzcykKIHsKICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkgewogICAgICAgICBkZXN0aW5hdGlv
bi0+emVybygpOwpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnBy
b2Nlc3MoQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplXwogICAg
IGlmIChtX3Byb2Nlc3NMb2NrLnRyeUxvY2soKSkgeyAgICAgICAgCiAgICAgICAgIC8vIEZvciBl
YWNoIGNoYW5uZWwgb2Ygb3VyIGlucHV0LCBwcm9jZXNzIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5n
IFdhdmVTaGFwZXJEU1BLZXJuZWwgaW50byB0aGUgb3V0cHV0IGNoYW5uZWwuCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tlcm5lbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGkpLT5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgICAg
ICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3Rp
bmF0aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAg
ICAgICAgIG1fcHJvY2Vzc0xvY2sudW5sb2NrKCk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaAppbmRleCA0MDE2ZThiZGVmNzFl
MTIxMGRmNDM0OTg5NjljMzBiZjU5YWNjYThlLi40NzM1ZWZkYTI1ZjcyMzNhMmExNzQ5ZDNjYTU0
NTBmMjI0NzlkY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hh
cGVyUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclBy
b2Nlc3Nvci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093
blB0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cHJvY2VzcyhBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKGNvbnN0IEF1ZGlvQnVz
KiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7
CiAKICAgICB2b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwogICAgIEZsb2F0MzJBcnJheSog
Y3VydmUoKSB7IHJldHVybiBtX2N1cnZlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXVkaW9EZXN0aW5hdGlvbkNocm9taXVtLmNwcAppbmRleCBlNmVm
N2QxMGI3ZTNlMWNhNmNiOGEyNjZlYjBiNDRlMzk4NjE2YWI5Li42YzgyMzg1YzgwOGY3NDE1ZWMw
OGI5ODgzZjY0NDBmNTRmMjJmZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9BdWRpb0Rlc3RpbmF0aW9uQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0F1ZGlvRGVzdGluYXRpb25DaHJvbWl1bS5jcHAKQEAgLTE2MCw4ICsxNjAsOCBA
QCB2b2lkIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6RklGTzo6Y29uc3VtZShBdWRpb0J1cyog
ZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZQogICAgIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzID0g
bV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOwogCiAgICAgZm9yIChzaXplX3QgY2hh
bm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVs
SW5kZXgpIHsKLSAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3RpbmF0aW9uLT5j
aGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKLSAgICAgICAgZmxvYXQqIHNvdXJjZURhdGEg
PSBtX2ZpZm9BdWRpb0J1cy5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKKyAgICAgICAg
ZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSA9IGRlc3RpbmF0aW9uLT5jaGFubmVsKGNoYW5uZWxJbmRl
eCktPm11dGFibGVEYXRhKCk7CisgICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VEYXRhID0gbV9m
aWZvQXVkaW9CdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7CiAKICAgICAgICAgYm9v
bCBpc0NvcHlHb29kID0gKChtX3JlYWRJbmRleCA8IG1fZmlmb0xlbmd0aCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICYmIChtX3JlYWRJbmRleCArIHBhcnQxTGVuZ3RoKSA8PSBtX2ZpZm9M
ZW5ndGgKQEAgLTIxOSw4ICsyMTksOCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25DaHJvbWl1bTo6
RklGTzo6ZmlsbEJ1ZmZlcihzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCiAgICAgICAgIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzID0gbV9maWZvQXVkaW9CdXMubnVtYmVyT2ZDaGFubmVscygpOwogICAg
ICAgICAKICAgICAgICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4
IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpIHsKLSAgICAgICAgICAgIGZsb2F0
KiBkZXN0aW5hdGlvbiA9IG1fZmlmb0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0
YSgpOwotICAgICAgICAgICAgZmxvYXQqIHNvdXJjZSA9IG1fdGVtcEJ1cy5jaGFubmVsKGNoYW5u
ZWxJbmRleCktPmRhdGEoKTsKKyAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IG1fZmlm
b0F1ZGlvQnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+bXV0YWJsZURhdGEoKTsKKyAgICAgICAg
ICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBtX3RlbXBCdXMuY2hhbm5lbChjaGFubmVsSW5kZXgp
LT5kYXRhKCk7CiAKICAgICAgICAgICAgIGJvb2wgaXNDb3B5R29vZCA9IChwYXJ0MUxlbmd0aCA8
PSBtX3Byb3ZpZGVyU2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChwYXJ0
MUxlbmd0aCArIHBhcnQyTGVuZ3RoKSA8PSBtX3Byb3ZpZGVyU2l6ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXVkaW9CdXMuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQXVkaW9CdXMuY3BwCmluZGV4IDUwZTM4MTRjYzY5YjViYTYzZWYxZjFj
MzczY2Y4ZjE2YmNkYWMwYjcuLmNjNDQ3YmEyMDFkZDdlNjBjODlmYTA4NDViZDg3ZDBlZjJhZjM0
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkF1ZGlvQnVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBdWRpb0J1cy5jcHAKQEAgLTEx
MCw3ICsxMTAsNyBAQCBmbG9hdCogV2ViQXVkaW9CdXM6OmNoYW5uZWxEYXRhKHVuc2lnbmVkIGNo
YW5uZWxJbmRleCkKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
QVNTRVJUKGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHMoKSk7Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRhKCk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+Y2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgpOwogI2Vsc2UKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDg5
MWMzMWYzZmI3MjRlYzMzYmQ4NDU3Zjg2Zjc2YjFiYmYyYjJkODYuLmQyZDU1MjU1Nzg3NTM3MjQ2
N2QyYWY0ZGYwMzMyZGY3ZmIyOTk2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtNzI2LDcgKzcyNiw3
IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpBdWRpb1NvdXJjZVByb3ZpZGVySW1w
bDo6cHJvdmlkZUlucHV0KEF1ZGlvQnVzKiBiCiAgICAgc2l6ZV90IG4gPSBidXMtPm51bWJlck9m
Q2hhbm5lbHMoKTsKICAgICBXZWJWZWN0b3I8ZmxvYXQqPiB3ZWJBdWRpb0RhdGEobik7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpCi0gICAgICAgIHdlYkF1ZGlvRGF0YVtpXSA9
IGJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAgICAgICB3ZWJBdWRpb0RhdGFbaV0gPSBidXMt
PmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CiAKICAgICBtX3dlYkF1ZGlvU291cmNlUHJvdmlk
ZXItPnByb3ZpZGVJbnB1dCh3ZWJBdWRpb0RhdGEsIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWlmcmFtZS16SW5kZXgu
aHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLXpJbmRleC5o
dG1sCmluZGV4IDcxNTg3MjQ2MzYyMjEyYTM1YTg1NDA4OTM0M2ZhODgxNWUzMTFhZmUuLjAyMjli
NTI4NGIzNDJhYWI0ZTU0ZGVjMjZiY2M4NTRkMTdlYWY2NjggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLXpJbmRleC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZyYW1lLXpJbmRleC5odG1sCkBAIC0zMCw2
ICszMCw4IEBACiAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKICAgICAgICAgICAgICAg
ICBib3JkZXI6IDRweCBzb2xpZCBkYXJrZ3JlZW47CiAgICAgICAgICAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW47CisgICAgICAgICAgICAgICAgei1pbmRleDogMTAwOworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICNi
bG9jazIgewogICAgICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsK
</data>
<flag name="review"
          id="124129"
          type_id="1"
          status="+"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="124140"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>