<?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>73198</bug_id>
          
          <creation_ts>2011-11-28 01:59:33 -0800</creation_ts>
          <short_desc>[Chromium] Move &quot;final&quot; batch of headers into public/platform</short_desc>
          <delta_ts>2011-11-28 11:13:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509663</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 01:59:33 -0800</bug_when>
    <thetext>[Chromium] Move &quot;final&quot; batch of headers into public/platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509666</commentid>
    <comment_count>1</comment_count>
      <attachid>116714</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 02:02:33 -0800</bug_when>
    <thetext>Created attachment 116714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509667</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 02:02:59 -0800</bug_when>
    <thetext>The next step after this patch is to remove uses of the forwarding headers and delete them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509672</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 02:05:49 -0800</bug_when>
    <thetext>Attachment 116714 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Last 3072 characters of output:
should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLLoadTiming.h:76:  The parameter name &quot;start&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLLoadTiming.h:79:  The parameter name &quot;end&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLLoadTiming.h:82:  The parameter name &quot;start&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLLoadTiming.h:85:  The parameter name &quot;end&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLLoadTiming.h:88:  The parameter name &quot;end&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLLoadTiming.h:91:  The parameter name &quot;start&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLLoadTiming.h:94:  The parameter name &quot;end&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebFontCache.h:54:  One space before end of line comments  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebFontCache.h:57:  One space before end of line comments  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebImageDecoder.h:58:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebImageDecoder.h:83:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLResponse.h:164:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebHTTPBody.h:79:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebHTTPBody.h:90:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebThreadSafeData.h:45:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebBlobData.h:71:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebURLError.h:45:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebURLError.h:49:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebURLError.h:50:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 36 in 62 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509674</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 02:06:07 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509679</commentid>
    <comment_count>5</comment_count>
      <attachid>116717</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 02:17:28 -0800</bug_when>
    <thetext>Created attachment 116717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509681</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 02:20:33 -0800</bug_when>
    <thetext>Attachment 116717 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/WebKit/chromium/public/platform/WebTextDirection.h:38:  One space before end of line comments  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebURLLoaderClient.h:44:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebURLLoaderClient.h:48:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebURLLoaderClient.h:56:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebGlyphCache.h:46:  One space before end of line comments  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebGlyphCache.h:49:  One space before end of line comments  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebURLRequest.h:53:  One space before end of line comments  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebURLRequest.h:114:  The parameter name &quot;allowCookies&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLRequest.h:119:  The parameter name &quot;allowStoredCredentials&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLRequest.h:169:  The parameter name &quot;id&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/platform/WebURLRequest.h:172:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/platform/WebTextCaseSensitivity.h:38:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 12 in 62 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509840</commentid>
    <comment_count>7</comment_count>
      <attachid>116717</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-28 08:09:30 -0800</bug_when>
    <thetext>Comment on attachment 116717
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:17
&gt; +        3) Geometry-reltaed headers.

nit: reltaed -&gt; related

&gt; Source/WebKit/chromium/ChangeLog:61
&gt; +        * public/platform/WebFontCache.h: Copied from Source/WebKit/chromium/public/WebFontCache.h.

even though the font and glyph caches are platform concepts, these interfaces only
exist to provide the embedder with a way to access those WebCore systems.  it seems
like public/platform/ should only contain interfaces needed to support WebCore, so
these interfaces should probably not be moved to public/platform/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509885</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 09:28:24 -0800</bug_when>
    <thetext>&gt; so these interfaces should probably not be moved to public/platform/.

Okiedokes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509886</commentid>
    <comment_count>9</comment_count>
      <attachid>116770</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 09:33:59 -0800</bug_when>
    <thetext>Created attachment 116770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509901</commentid>
    <comment_count>10</comment_count>
      <attachid>116770</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-28 09:53:07 -0800</bug_when>
    <thetext>Comment on attachment 116770
Patch

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

sorry, i should have reviewed this more carefully the first time around :-/

&gt; Source/WebKit/chromium/ChangeLog:54
&gt; +        * public/platform/WebCookie.h: Copied from Source/WebKit/chromium/public/WebCookie.h.

WebCookie should be moved assuming WebCookieJar is moving.  they go together.

&gt; Source/WebKit/chromium/ChangeLog:58
&gt; +        * public/platform/WebFont.h: Copied from Source/WebKit/chromium/public/WebFont.h.

WebFont just looks like it exists to allow the embedder to access WebCore&apos;s font information and font drawing capabilities.
probably isn&apos;t required by WebCore.

&gt; Source/WebKit/chromium/ChangeLog:63
&gt; +        * public/platform/WebImageDecoder.h: Copied from Source/WebKit/chromium/public/WebImageDecoder.h.

ugh, sorry ... WebImageDecoder is also similarly just about exposing WebCore&apos;s image decoders to the
embedder of webkit.  so, this also shouldn&apos;t go into public/platform/, right?

&gt; Source/WebKit/chromium/ChangeLog:65
&gt; +        * public/platform/WebRegularExpression.h: Copied from Source/WebKit/chromium/public/WebRegularExpression.h.

ditto for WebRegularExpression

&gt; Source/WebKit/chromium/ChangeLog:76
&gt; +        * public/platform/WebVideoFrame.h: Copied from Source/WebKit/chromium/public/WebVideoFrame.h.

it makes sense to move WebVideoFrame assuming WebMediaPlayer is moving too.  i suspect that is a good idea
since the media player is a lot like the network stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509902</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-28 09:53:58 -0800</bug_when>
    <thetext>it may be the case that things like WebFont, WebRegularExpression and WebImageDecoder are neither &quot;platform&quot; nor &quot;client&quot; but rather they are optional &quot;utilities&quot; provided to the embedder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509908</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 10:01:47 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebKit/chromium/ChangeLog:54
&gt; &gt; +        * public/platform/WebCookie.h: Copied from Source/WebKit/chromium/public/WebCookie.h.
&gt; 
&gt; WebCookie should be moved assuming WebCookieJar is moving.  they go together.

WebCookieJar has already moved.

&gt; it may be the case that things like WebFont, WebRegularExpression and WebImageDecoder are neither &quot;platform&quot; nor &quot;client&quot; but rather they are optional &quot;utilities&quot; provided to the embedder.

Ok, that&apos;s a slightly different criteria than I used before.  I&apos;ll go through these again with that in mind.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509944</commentid>
    <comment_count>13</comment_count>
      <attachid>116781</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 10:43:13 -0800</bug_when>
    <thetext>Created attachment 116781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509946</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 10:45:09 -0800</bug_when>
    <thetext>&gt; it makes sense to move WebVideoFrame assuming WebMediaPlayer is moving too.  i suspect that is a good idea
&gt; since the media player is a lot like the network stack.

I decided to leave the media player issue for a future patch.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509980</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 11:13:29 -0800</bug_when>
    <thetext>Committed r101267: &lt;http://trac.webkit.org/changeset/101267&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116714</attachid>
            <date>2011-11-28 02:02:33 -0800</date>
            <delta_ts>2011-11-28 02:17:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73198-20111128020231.patch</filename>
            <type>text/plain</type>
            <size>91306</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDEyMzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0
IEBACisyMDExLTExLTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBNb3ZlICJmaW5hbCIgYmF0Y2ggb2YgaGVhZGVycyBpbnRvIHB1YmxpYy9w
bGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIG1vdmVzIGFub3RoZXIgZ3JvdXAgb2YgaGVhZGVycyBpbnRvIHRoZSBwbGF0Zm9y
bSBkaXJlY3RvcnkuCisgICAgICAgIEkgZm91bmQgdGhlc2UgaGVhZGVycyBieSByZWFkaW5nIHRo
cm91Z2ggdGhlIGxpc3Qgb2YgaGVhZGVycyBhbmQKKyAgICAgICAgY29vcmVsYXRpbmcgdGhlbSB3
aXRoIFdlYkNvcmUgY29uY2VwdHMuICBUaGlzIHBhdGNoIHNob3VsZCBiZSB0aGUgbGFzdAorICAg
ICAgICBidWxrIG1vdmUgb2YgaGVhZGVycy4KKworICAgICAgICBUaGVyZSBhcmUgdGhyZWUgZ3Jv
dXBzIG9mIGhlYWRlcnMgdGhhdCBtYWtlIHVwIHRoZSBidWxrIG9mIHRoaXMgcGF0Y2g6CisKKyAg
ICAgICAgMSkgRm9udC1yZWxhdGVkIGhlYWRlcnMuCisgICAgICAgIDIpIFVSTExvYWRlci1yZWxh
dGVkIGhlYWRlcnMuCisgICAgICAgIDMpIEdlb21ldHJ5LXJlbHRhZWQgaGVhZGVycy4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaDogUmVwbGFjZWQuCisgICAgICAgICog
cHVibGljL1dlYkJsb2JEYXRhLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJDb29r
aWUuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYkRhdGFTb3VyY2UuaDoKKyAgICAg
ICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViRmxvYXRQb2ludC5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmxvYXRRdWFk
Lmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJGbG9hdFJlY3QuaDogUmVwbGFjZWQu
CisgICAgICAgICogcHVibGljL1dlYkZvbnQuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGlj
L1dlYkZvbnRDYWNoZS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRm9udERlc2Ny
aXB0aW9uLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgor
ICAgICAgICAqIHB1YmxpYy9XZWJHbHlwaENhY2hlLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1
YmxpYy9XZWJIVFRQQm9keS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViSFRUUEhl
YWRlclZpc2l0b3IuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYkhUVFBMb2FkSW5m
by5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmg6IFJlcGxh
Y2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJNZW51SXRlbUluZm8uaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTmV0d29ya1N0YXRlTm90
aWZpZXIuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYk5vdGlmaWNhdGlvbi5oOgor
ICAgICAgICAqIHB1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oOiBSZXBsYWNlZC4KKyAgICAg
ICAgKiBwdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oOiBSZXBsYWNlZC4KKyAgICAgICAg
KiBwdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMv
V2ViVGV4dFJ1bi5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVGhyZWFkU2FmZURh
dGEuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlVSTEVycm9yLmg6IFJlcGxhY2Vk
LgorICAgICAgICAqIHB1YmxpYy9XZWJVUkxMb2FkVGltaW5nLmg6IFJlcGxhY2VkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVi
bGljL1dlYlVSTFJlcXVlc3QuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlVSTFJl
c3BvbnNlLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJWaWRlb0ZyYW1lLmg6IFJl
cGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYldpZGdldC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXRDbGllbnQuaDoKKyAg
ICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFycmF5QnVmZmVyVmlldy5oLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oLgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9XZWJDb29raWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29va2llLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9p
bnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQ
b2ludC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmguCisgICAg
ICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaC4KKyAgICAgICAgKiBwdWJsaWMv
cGxhdGZvcm0vV2ViRm9udC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGb250LmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZvbnRDYWNoZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUu
aC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViRm9udERlc2NyaXB0aW9uLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnREZXNjcmlwdGlvbi5o
LgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJHbHlwaENhY2hlLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdseXBoQ2FjaGUuaC4KKyAgICAgICAg
KiBwdWJsaWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHkuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViSFRUUEhlYWRlclZpc2l0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViSFRUUExvYWRJbmZvLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9X
ZWJJbWFnZURlY29kZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSW1hZ2VEZWNvZGVyLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk5ldHdv
cmtTdGF0ZU5vdGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3Jt
L1dlYlJlZ3VsYXJFeHByZXNzaW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmguCisgICAgICAgICogcHVibGljL3BsYXRm
b3JtL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oLgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJUZXh0RGlyZWN0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlRleHREaXJlY3Rpb24uaC4KKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViVGV4dFJ1bi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0UnVuLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZFNh
ZmVEYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRo
cmVhZFNhZmVEYXRhLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlVSTEVycm9yLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTEVycm9yLmgu
CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXIuaDoKKyAgICAgICAgKiBwdWJsaWMv
cGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oLgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9XZWJVUkxSZXF1ZXN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlVSTFJlcXVlc3QuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
VVJMUmVzcG9uc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVVJMUmVzcG9uc2UuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViVmlkZW9GcmFt
ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0Zy
YW1lLmguCisKIDIwMTEtMTEtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBkZWxldGUgV2ViRGV2VG9v
bHNBZ2VudDo6ZnJvbnRlbmRMb2FkZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkFycmF5QnVmZmVyVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkFycmF5QnVmZmVyVmlldy5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw2NCArMiwzMiBAQAogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CiAgKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAg
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQXJy
YXlCdWZmZXJWaWV3X2gKLSNkZWZpbmUgV2ViQXJyYXlCdWZmZXJWaWV3X2gKLQotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIu
aCIKLQotbmFtZXNwYWNlIFdURiB7IGNsYXNzIEFycmF5QnVmZmVyVmlldzsgfQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotLy8gUHJvdmlkZXMgYWNjZXNzIHRvIGFuIEFycmF5QnVmZmVyVmlldy4K
LWNsYXNzIFdlYkFycmF5QnVmZmVyVmlldyB7Ci1wdWJsaWM6Ci0gICAgfldlYkFycmF5QnVmZmVy
VmlldygpIHsgcmVzZXQoKTsgfQotICAgIFdlYkFycmF5QnVmZmVyVmlldygpIHsgfQotICAgIFdl
YkFycmF5QnVmZmVyVmlldyhjb25zdCBXZWJBcnJheUJ1ZmZlclZpZXcmIHYpIHsgYXNzaWduKHYp
OyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQqIGJhc2VBZGRyZXNzKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXNzaWduKGNvbnN0IFdlYkFycmF5QnVmZmVyVmlldyYpOwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCByZXNldCgpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQXJyYXlC
dWZmZXJWaWV3KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXVEY6OkFycmF5QnVmZmVyVmlldz4mKTsK
LSAgICBXZWJBcnJheUJ1ZmZlclZpZXcmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V1RGOjpBcnJheUJ1ZmZlclZpZXc+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdU
Rjo6QXJyYXlCdWZmZXJWaWV3PigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgV2Vi
UHJpdmF0ZVB0cjxXVEY6OkFycmF5QnVmZmVyVmlldz4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFU
Rk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkFycmF5QnVmZmVyVmlldy5oIgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRhLmgJKHJldmlz
aW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTI4LDY3ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV2ViQmxvYkRhdGFfaAotI2RlZmluZSBXZWJCbG9iRGF0YV9oCi0KLSNpbmNsdWRl
ICJXZWJUaHJlYWRTYWZlRGF0YS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEJsb2JEYXRhOyB9Ci1uYW1lc3BhY2UgV1RGIHsg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NPd25QdHI7IH0KKyNpZm5kZWYgV0VCS0lU
X01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkJsb2JE
YXRhLmgiCiAjZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkJsb2JEYXRh
UHJpdmF0ZTsKLQotY2xhc3MgV2ViQmxvYkRhdGEgewotcHVibGljOgotICAgIHN0cnVjdCBJdGVt
IHsKLSAgICAgICAgZW51bSB7IFR5cGVEYXRhLCBUeXBlRmlsZSwgVHlwZUJsb2IgfSB0eXBlOwot
ICAgICAgICBXZWJUaHJlYWRTYWZlRGF0YSBkYXRhOwotICAgICAgICBXZWJTdHJpbmcgZmlsZVBh
dGg7Ci0gICAgICAgIFdlYlVSTCBibG9iVVJMOwotICAgICAgICBsb25nIGxvbmcgb2Zmc2V0Owot
ICAgICAgICBsb25nIGxvbmcgbGVuZ3RoOyAvLyAtMSBtZWFucyBnbyB0byB0aGUgZW5kIG9mIHRo
ZSBmaWxlL2Jsb2IuCi0gICAgICAgIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7IC8v
IDAuMCBtZWFucyB0aGF0IHRoZSB0aW1lIGlzIG5vdCBzZXQuCi0gICAgfTsKLQotICAgIH5XZWJC
bG9iRGF0YSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViQmxvYkRhdGEoKSA6IG1fcHJpdmF0ZSgw
KSB7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX3ByaXZhdGU7IH0KLQotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcy4KLSAg
ICBXRUJLSVRfRVhQT1JUIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdDsKLQotICAgIC8vIFJldHJp
ZXZlcyB0aGUgdmFsdWVzIG9mIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBpbmRleC4gIFJldHVybnMg
ZmFsc2UgaWYKLSAgICAvLyBpbmRleCBpcyBvdXQgb2YgYm91bmRzLgotICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBpdGVtQXQoc2l6ZV90IGluZGV4LCBJdGVtJiByZXN1bHQpIGNvbnN0OwotCi0gICAg
V0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgY29udGVudFR5cGUoKSBjb25zdDsKLQotICAgIFdFQktJ
VF9FWFBPUlQgV2ViU3RyaW5nIGNvbnRlbnREaXNwb3NpdGlvbigpIGNvbnN0OwotCi0jaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQmxvYkRhdGEoY29uc3QgV1RGOjpQYXNzT3duUHRy
PFdlYkNvcmU6OkJsb2JEYXRhPiYpOwotICAgIFdlYkJsb2JEYXRhJiBvcGVyYXRvcj0oY29uc3Qg
V1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiYpOwotICAgIG9wZXJhdG9yIFdURjo6
UGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4oKTsKLSNlbmRpZgotCi1wcml2YXRlOgotI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHZvaWQgYXNzaWduKGNvbnN0IFdURjo6UGFzc093
blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4mKTsKLSNlbmRpZgotICAgIFdlYkJsb2JEYXRhUHJpdmF0
ZSogbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBX
ZWJCbG9iRGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb29r
aWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb29r
aWUuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29va2llLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDUwICsyOCw2IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViQ29va2llX2gKLSNkZWZpbmUgV2ViQ29va2llX2gKLQotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViU3RyaW5nOwotCi0vLyBBIGNv
b2tpZS4KLS8vCi1zdHJ1Y3QgV2ViQ29va2llIHsKLSAgICBXZWJDb29raWUoKQotICAgICAgICA6
IGV4cGlyZXMoMCkKLSAgICAgICAgLCBodHRwT25seShmYWxzZSkKLSAgICAgICAgLCBzZWN1cmUo
ZmFsc2UpCi0gICAgICAgICwgc2Vzc2lvbihmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2Vi
Q29va2llKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSwgY29u
c3QgV2ViU3RyaW5nJiBkb21haW4sCi0gICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcGF0
aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNlc3Np
b24pCi0gICAgICAgIDogbmFtZShuYW1lKQotICAgICAgICAsIHZhbHVlKHZhbHVlKQotICAgICAg
ICAsIGRvbWFpbihkb21haW4pCi0gICAgICAgICwgcGF0aChwYXRoKQotICAgICAgICAsIGV4cGly
ZXMoZXhwaXJlcykKLSAgICAgICAgLCBodHRwT25seShodHRwT25seSkKLSAgICAgICAgLCBzZWN1
cmUoc2VjdXJlKQotICAgICAgICAsIHNlc3Npb24oc2Vzc2lvbikKLSAgICB7Ci0gICAgfQotCi0g
ICAgV2ViU3RyaW5nIG5hbWU7Ci0gICAgV2ViU3RyaW5nIHZhbHVlOwotICAgIFdlYlN0cmluZyBk
b21haW47Ci0gICAgV2ViU3RyaW5nIHBhdGg7Ci0gICAgZG91YmxlIGV4cGlyZXM7Ci0gICAgYm9v
bCBodHRwT25seTsKLSAgICBib29sIHNlY3VyZTsKLSAgICBib29sIHNlc3Npb247Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RP
X1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29va2llLmgiCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFTb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291cmNlLmgJKHJldmlz
aW9uIDEwMTIzMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFTb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogI2RlZmluZSBXZWJEYXRhU291
cmNlX2gKIAogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCi0jaW5jbHVkZSAiV2ViVGV4
dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOSArMjYsOSBAQAogI2lmbmRlZiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcl9oCiAjZGVmaW5l
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyX2gKIAotI2luY2x1ZGUgIldlYkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIldlYkxheWVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaAkocmV2aXNpb24gMTAxMjIzKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQb2ludC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yOCw2NCArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZs
b2F0UG9pbnRfaAotI2RlZmluZSBXZWJGbG9hdFBvaW50X2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRmxv
YXRQb2ludCB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdCB5OwotCi0gICAgV2ViRmxvYXRQb2lu
dCgpCi0gICAgICAgIDogeCgwLjBmKQotICAgICAgICAsIHkoMC4wZikKLSAgICB7Ci0gICAgfQot
Ci0gICAgV2ViRmxvYXRQb2ludChmbG9hdCB4LCBmbG9hdCB5KQotICAgICAgICA6IHgoeCkKLSAg
ICAgICAgLCB5KHkpCi0gICAgewotICAgIH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgot
ICAgIFdlYkZsb2F0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcCkKLSAgICAgICAg
OiB4KHAueCgpKQotICAgICAgICAsIHkocC55KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYkZs
b2F0UG9pbnQmIG9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwKQotICAgIHsK
LSAgICAgICAgeCA9IHAueCgpOwotICAgICAgICB5ID0gcC55KCk7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBXZWJDb3JlOjpGbG9hdFBvaW50KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHgsIHkpOwotICAgIH0K
LSNlbmRpZgotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGbG9hdFBvaW50
JiBhLCBjb25zdCBXZWJGbG9hdFBvaW50JiBiKQotewotICAgIHJldHVybiBhLnggPT0gYi54ICYm
IGEueSA9PSBiLnk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViRmxvYXRQ
b2ludCYgYSwgY29uc3QgV2ViRmxvYXRQb2ludCYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9I
RUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFF1YWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFF1
YWQuaAkocmV2aXNpb24gMTAxMjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmxvYXRRdWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDU1ICsyOCw2IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRmxvYXRRdWFkX2gKLSNkZWZpbmUgV2ViRmxvYXRR
dWFkX2gKLQotI2luY2x1ZGUgIldlYkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCi0KLSNpbmNsdWRlIDxh
bGdvcml0aG0+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
LSNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
c3RydWN0IFdlYkZsb2F0UXVhZCB7Ci0gICAgV2ViRmxvYXRQb2ludCBwWzRdOwotCi0gICAgV2Vi
RmxvYXRRdWFkKCkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViRmxvYXRRdWFkKGNvbnN0IFdlYkZs
b2F0UG9pbnQmIHAwLCBjb25zdCBXZWJGbG9hdFBvaW50JiBwMSwgY29uc3QgV2ViRmxvYXRQb2lu
dCYgcDIsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIHAzKQotICAgIHsKLSAgICAgICAgcFswXSA9IHAw
OwotICAgICAgICBwWzFdID0gcDE7Ci0gICAgICAgIHBbMl0gPSBwMjsKLSAgICAgICAgcFszXSA9
IHAzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgV2ViUmVjdCBlbmNsb3NpbmdSZWN0KCkg
Y29uc3Q7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJGbG9hdFF1YWQmIG9w
ZXJhdG9yPShjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmIHEpCi0gICAgewotICAgICAgICBwWzBd
ID0gcS5wMSgpOwotICAgICAgICBwWzFdID0gcS5wMigpOwotICAgICAgICBwWzJdID0gcS5wMygp
OwotICAgICAgICBwWzNdID0gcS5wNCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
ICAgIFdlYkZsb2F0UXVhZChjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmIHEpCi0gICAgewotICAg
ICAgICAqdGhpcyA9IHE7Ci0gICAgfQotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZsb2F0UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UmVjdC5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtMjgsNzYgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGbG9h
dFJlY3RfaAotI2RlZmluZSBXZWJGbG9hdFJlY3RfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZsb2F0UmVj
dCB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdCB5OwotICAgIGZsb2F0IHdpZHRoOwotICAgIGZs
b2F0IGhlaWdodDsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHdpZHRoIDw9
IDAgfHwgaGVpZ2h0IDw9IDA7IH0KLQotICAgIFdlYkZsb2F0UmVjdCgpCi0gICAgICAgIDogeCgw
LjBmKQotICAgICAgICAsIHkoMC4wZikKLSAgICAgICAgLCB3aWR0aCgwLjBmKQotICAgICAgICAs
IGhlaWdodCgwLjBmKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJGbG9hdFJlY3QoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLSAgICAgICAgOiB4KHgpCi0gICAg
ICAgICwgeSh5KQotICAgICAgICAsIHdpZHRoKHdpZHRoKQotICAgICAgICAsIGhlaWdodChoZWln
aHQpCi0gICAgewotICAgIH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkZs
b2F0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHIpCi0gICAgICAgIDogeChyLngoKSkK
LSAgICAgICAgLCB5KHIueSgpKQotICAgICAgICAsIHdpZHRoKHIud2lkdGgoKSkKLSAgICAgICAg
LCBoZWlnaHQoci5oZWlnaHQoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViRmxvYXRSZWN0JiBv
cGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByKQotICAgIHsKLSAgICAgICAgeCA9
IHIueCgpOwotICAgICAgICB5ID0gci55KCk7Ci0gICAgICAgIHdpZHRoID0gci53aWR0aCgpOwot
ICAgICAgICBoZWlnaHQgPSByLmhlaWdodCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAg
fQotCi0gICAgb3BlcmF0b3IgV2ViQ29yZTo6RmxvYXRSZWN0KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAg
fQotI2VuZGlmCi19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYkZsb2F0UmVj
dCYgYSwgY29uc3QgV2ViRmxvYXRSZWN0JiBiKQotewotICAgIHJldHVybiBhLnggPT0gYi54ICYm
IGEueSA9PSBiLnkgJiYgYS53aWR0aCA9PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09IGIuaGVpZ2h0
OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYkZsb2F0UmVjdCYgYSwgY29u
c3QgV2ViRmxvYXRSZWN0JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExB
VEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFJlY3QuaCIKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnQuaAkocmV2aXNpb24gMTAxMjI0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yOCw3MyArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZvbnRf
aAotI2RlZmluZSBXZWJGb250X2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbG9yLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29t
bW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRm9udERlc2NyaXB0aW9u
Owotc3RydWN0IFdlYkZsb2F0UG9pbnQ7Ci1zdHJ1Y3QgV2ViRmxvYXRSZWN0Owotc3RydWN0IFdl
YlBvaW50Owotc3RydWN0IFdlYlJlY3Q7Ci1zdHJ1Y3QgV2ViVGV4dFJ1bjsKLQotY2xhc3MgV2Vi
Rm9udCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViRm9udCgpIHsgfQotCi0gICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgV2ViRm9udCogY3JlYXRlKGNvbnN0IFdlYkZvbnREZXNjcmlwdGlvbiYp
OwotCi0gICAgdmlydHVhbCBXZWJGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uKCkgY29u
c3QgPSAwOwotCi0gICAgdmlydHVhbCBpbnQgYXNjZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgaW50IGRlc2NlbnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgaW50IGxpbmVTcGFjaW5nKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgZmxvYXQgeEhlaWdodCgpIGNvbnN0ID0gMDsKLQotICAgIC8vIERyYXdzIHRoZSB0ZXh0
IHJ1biB0byB0aGUgZ2l2ZW4gY2FudmFzLiBUaGUgdGV4dCBpcyBwb3NpdGlvbmVkIGF0IHRoZQot
ICAgIC8vIGdpdmVuIGxlZnQtaGFuZCBwb2ludCBhdCB0aGUgYmFzZWxpbmUuCi0gICAgLy8KLSAg
ICAvLyBUaGUgdGV4dCB3aWxsIGJlIGNsaXBwZWQgdG8gdGhlIGdpdmVuIGNsaXAgcmVjdC4gfGNh
bnZhc0lzT3BhcXVlfCBpcwotICAgIC8vIHVzZWQgdG8gY29udHJvbCB3aGV0aGVyIHN1YnBpeGVs
IGFudGlhbGlhc2luZyBpcyBwb3NzaWJsZS4gSWYgdGhlcmUgaXMgYQotICAgIC8vIHBvc3NpYmls
aXR5IHRoZSBhcmVhIGRyYXduIGNvdWxkIGJlIHNlbWktdHJhbnNwYXJlbnQsIHN1YnBpeGVsCi0g
ICAgLy8gYW50aWFsaWFzaW5nIHdpbGwgYmUgZGlzYWJsZWQuCi0gICAgLy8KLSAgICAvLyB8ZnJv
bXwgYW5kIHx0b3wgYWxsb3cgdGhlIGNhbGxlciB0byBzcGVjaWZ5IGEgc3VicmFuZ2Ugb2YgdGhl
IGdpdmVuIHRleHQKLSAgICAvLyBydW4gdG8gZHJhdy4gSWYgfHRvfCBpcyAtMSwgdGhlIGVudGly
ZSBydW4gd2lsbCBiZSBkcmF3bi4KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHQoV2ViQ2FudmFz
KiwgY29uc3QgV2ViVGV4dFJ1biYsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIGxlZnRCYXNlbGluZSwg
V2ViQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIGNsaXAs
IGJvb2wgY2FudmFzSXNPcGFxdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9t
ID0gMCwgaW50IHRvID0gLTEpIGNvbnN0ID0gMDsKLQotICAgIC8vIE1lYXN1cmVzIHRoZSB3aWR0
aCBpbiBwaXhlbHMgb2YgdGhlIGdpdmVuIHRleHQgcnVuLgotICAgIHZpcnR1YWwgaW50IGNhbGN1
bGF0ZVdpZHRoKGNvbnN0IFdlYlRleHRSdW4mKSBjb25zdCA9IDA7Ci0KLSAgICAvLyBSZXR1cm5z
IHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGhvcml6b250
YWwgcGl4ZWwKLSAgICAvLyBwb3NpdGlvbiBhcyBtZWFzdXJlZCBmcm9tIGZyb20gdGhlIGxlZnQg
b2YgdGhlIHJ1bi4KLSAgICB2aXJ0dWFsIGludCBvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBXZWJU
ZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24pIGNvbnN0ID0gMDsKLQotICAgIC8vIFJldHVybnMgdGhl
IHJlY3RhbmdsZSByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGlvbiByZWN0IGZvciB0aGUgc3VicmFu
Z2UKLSAgICAvLyB8ZnJvbXwgLT4gfHRvfCBvZiB0aGUgZ2l2ZW4gdGV4dCBydW4uIFlvdSBjYW4g
dXNlIC0xIGZvciB8dG98IHRvIHNwZWNpZnkKLSAgICAvLyB0aGUgZW50aXJlIHJ1biAodGhpcyB3
aWxsIGRvIHNvbWV0aGluZyBzaW1pbGFyIHRvIGNhbGxpbmcgd2lkdGgoKSkuCi0gICAgLy8KLSAg
ICAvLyBUaGUgcmVjdCB3aWxsIGJlIHBvc2l0aW9uZWQgYXMgaWYgdGhlIHRleHQgd2FzIGRyYXdu
IGF0IHRoZSBnaXZlbgotICAgIC8vIHxsZWZ0QmFzZWxpbmV8IHBvc2l0aW9uLiB8aGVpZ2h0fCBp
bmRpY2F0ZXMgdGhlIGhlaWdodCBvZiB0aGUgc2VsZWN0aW9uCi0gICAgLy8gcmVjdCB5b3Ugd2Fu
dCwgdHlwaWNhbGx5IHRoaXMgd2lsbCBqdXN0IGJlIHRoZSBoZWlnaHQoKSBvZiB0aGlzIGZvbnQu
Ci0gICAgLy8KLSAgICAvLyBUbyBnZXQgdGhlIHBpeGVsIG9mZnNldCBvZiBzb21lIGNoYXJhY3Rl
ciAodGhlIG9wcG9zaXRlIG9mCi0gICAgLy8gb2Zmc2V0Rm9yUG9zaXRpb24oKSksIHBhc3MgaW4g
YSB8bGVmdEJhc2VsaW5lfCA9ICgwLCAwKSwgfGZyb218ID0gMCwgYW5kCi0gICAgLy8gfHRvfCA9
IHRoZSBjaGFyYWN0ZXIgeW91IHdhbnQuIFRoZSByaWdodCBlZGdlIG9mIHRoZSByZXN1bHRpbmcg
c2VsZWN0aW9uCi0gICAgLy8gcmVjdCB3aWxsIHRlbGwgeW91IHRoZSByaWdodCBzaWRlIG9mIHRo
ZSBjaGFyYWN0ZXIuCi0gICAgdmlydHVhbCBXZWJGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdEZvclRl
eHQoY29uc3QgV2ViVGV4dFJ1biYsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIGxlZnRCYXNlbGluZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0
LCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdCA9IDA7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JN
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRm9udC5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUuaAkocmV2aXNpb24gMTAxMjIzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udENhY2hlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTI4LDMyICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
Rm9udENhY2hlX2gKLSNkZWZpbmUgV2ViRm9udENhY2hlX2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQW4gaW50ZXJmYWNlIHRv
IHF1ZXJ5IGFuZCBjb25maWd1cmUgV2ViS2l0J3MgZm9udCBjYWNoZS4KLWNsYXNzIFdlYkZvbnRD
YWNoZSB7Ci1wdWJsaWM6Ci0gICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRo
ZSBmb250IGRhdGEgY2FjaGUuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgc2l6ZV90IGZvbnRE
YXRhQ291bnQoKTsKLQotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBpbmFjdGl2ZSBpdGVt
cyBpbiB0aGUgZm9udCBkYXRhIGNhY2hlLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHNpemVf
dCBpbmFjdGl2ZUZvbnREYXRhQ291bnQoKTsKLQotICAgIC8vIENsZWFycyB0aGUgY2FjaGUuCi0g
ICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhcigpOwotCi0gICAgLy8gUHVyZ2VzIGlu
YWN0aXZlIGZvbnQgZGF0YS4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHBydW5lKCk7
Ci0KLXByaXZhdGU6Ci0gICAgV2ViRm9udENhY2hlKCk7ICAvLyBOb3QgaW50ZW5kZWQgdG8gYmUg
aW5zdGFuY2VkLgotfTsKLQotfSAgLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJ
VF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGb250
Q2FjaGUuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Rm9udERlc2NyaXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRm9udERlc2NyaXB0aW9uLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnREZXNjcmlwdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yOCw3OSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZvbnRE
ZXNjcmlwdGlvbl9oCi0jZGVmaW5lIFdlYkZvbnREZXNjcmlwdGlvbl9oCi0KLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNw
YWNlIFdlYkNvcmUgeyBjbGFzcyBGb250RGVzY3JpcHRpb247IH0KLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbiB7Ci0gICAgZW51bSBHZW5l
cmljRmFtaWx5IHsKLSAgICAgICAgR2VuZXJpY0ZhbWlseU5vbmUsCi0gICAgICAgIEdlbmVyaWNG
YW1pbHlTdGFuZGFyZCwKLSAgICAgICAgR2VuZXJpY0ZhbWlseVNlcmlmLAotICAgICAgICBHZW5l
cmljRmFtaWx5U2Fuc1NlcmlmLAotICAgICAgICBHZW5lcmljRmFtaWx5TW9ub3NwYWNlLAotICAg
ICAgICBHZW5lcmljRmFtaWx5Q3Vyc2l2ZSwKLSAgICAgICAgR2VuZXJpY0ZhbWlseUZhbnRhc3kK
LSAgICB9OwotCi0gICAgZW51bSBTbW9vdGhpbmcgewotICAgICAgICBTbW9vdGhpbmdBdXRvLAot
ICAgICAgICBTbW9vdGhpbmdOb25lLAotICAgICAgICBTbW9vdGhpbmdHcmF5c2NhbGUsCi0gICAg
ICAgIFNtb290aGluZ1N1YnBpeGVsCi0gICAgfTsKLQotICAgIGVudW0gV2VpZ2h0IHsgCi0gICAg
ICAgIFdlaWdodDEwMCwKLSAgICAgICAgV2VpZ2h0MjAwLAotICAgICAgICBXZWlnaHQzMDAsCi0g
ICAgICAgIFdlaWdodDQwMCwKLSAgICAgICAgV2VpZ2h0NTAwLAotICAgICAgICBXZWlnaHQ2MDAs
Ci0gICAgICAgIFdlaWdodDcwMCwKLSAgICAgICAgV2VpZ2h0ODAwLAotICAgICAgICBXZWlnaHQ5
MDAsCi0gICAgICAgIFdlaWdodE5vcm1hbCA9IFdlaWdodDQwMCwKLSAgICAgICAgV2VpZ2h0Qm9s
ZCA9IFdlaWdodDcwMAotICAgIH07Ci0KLSAgICBXZWJGb250RGVzY3JpcHRpb24oKQotICAgICAg
ICA6IGdlbmVyaWNGYW1pbHkoR2VuZXJpY0ZhbWlseU5vbmUpCi0gICAgICAgICwgc2l6ZSgwKQot
ICAgICAgICAsIGl0YWxpYyhmYWxzZSkKLSAgICAgICAgLCBzbWFsbENhcHMoZmFsc2UpCi0gICAg
ICAgICwgd2VpZ2h0KFdlaWdodE5vcm1hbCkKLSAgICAgICAgLCBzbW9vdGhpbmcoU21vb3RoaW5n
QXV0bykKLSAgICAgICAgLCBsZXR0ZXJTcGFjaW5nKDApCi0gICAgICAgICwgd29yZFNwYWNpbmco
MCkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViU3RyaW5nIGZhbWlseTsKLSAgICBHZW5lcmljRmFt
aWx5IGdlbmVyaWNGYW1pbHk7Ci0gICAgZmxvYXQgc2l6ZTsKLSAgICBib29sIGl0YWxpYzsKLSAg
ICBib29sIHNtYWxsQ2FwczsKLSAgICBXZWlnaHQgd2VpZ2h0OwotICAgIFNtb290aGluZyBzbW9v
dGhpbmc7Ci0KLSAgICBzaG9ydCBsZXR0ZXJTcGFjaW5nOwotICAgIHNob3J0IHdvcmRTcGFjaW5n
OwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViRm9udERlc2NyaXB0aW9uKGNv
bnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbiYsIHNob3J0IGZvbnRMZXR0ZXJTcGFjaW5nLCBz
aG9ydCBmb250V29yZFNwYWNpbmcpOwotCi0gICAgb3BlcmF0b3IgV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisj
aWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJGb250RGVzY3JpcHRpb24uaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiAxMDEyMzApCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5
LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdl
UXVvdGFUeXBlLmgiCi0jaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgotI2luY2x1ZGUgIldl
YlVSTEVycm9yLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRleHREaXJl
Y3Rpb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxFcnJvci5oIgogCiAjaWYgV0VCS0lU
X1VTSU5HX1Y4CiAjaW5jbHVkZSA8djguaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdseXBoQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJHbHlwaENhY2hlLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdseXBoQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgs
MjQgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJHbHlwaENhY2hl
X2gKLSNkZWZpbmUgV2ViR2x5cGhDYWNoZV9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEFuIGludGVyZmFjZSB0byBxdWVyeSBX
ZWJLaXQncyBnbHlwaCBjYWNoZSAod2hpY2ggbWFwcyB1bmljb2RlIGNoYXJhY3RlcnMgdG8KLS8v
IGdseXBocyBpbiBwYXJ0aWN1bGFyIGZvbnRzKS4KLWNsYXNzIFdlYkdseXBoQ2FjaGUgewotcHVi
bGljOgotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgZ2x5cGggY2Fj
aGUuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgc2l6ZV90IHBhZ2VDb3VudCgpOwotCi1wcml2
YXRlOgotICAgIFdlYkdseXBoQ2FjaGUoKTsgIC8vIE5vdCBpbnRlbmRlZCB0byBiZSBpbnN0YW5j
ZWQuCi19OwotCi19ICAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JB
VEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdseXBoQ2FjaGUu
aCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJv
ZHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQ
Qm9keS5oCShyZXZpc2lvbiAxMDEyMjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJIVFRQQm9keS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw4MiArMjgsNiBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkhUVFBCb2R5X2gKLSNkZWZpbmUgV2ViSFRUUEJvZHlf
aAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRGF0YS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
Yk5vbkNvcHlhYmxlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViVVJMLmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLW5hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgRm9ybURhdGE7IH0KLW5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1jbGFzcyBXZWJIVFRQQm9keVByaXZhdGU7Ci0KLWNsYXNzIFdlYkhUVFBCb2R5
IHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgRWxlbWVudCB7Ci0gICAgICAgIGVudW0gVHlwZSB7IFR5
cGVEYXRhLCBUeXBlRmlsZSwgVHlwZUJsb2IgfSB0eXBlOwotICAgICAgICBXZWJEYXRhIGRhdGE7
Ci0gICAgICAgIFdlYlN0cmluZyBmaWxlUGF0aDsKLSAgICAgICAgbG9uZyBsb25nIGZpbGVTdGFy
dDsKLSAgICAgICAgbG9uZyBsb25nIGZpbGVMZW5ndGg7IC8vIC0xIG1lYW5zIHRvIHRoZSBlbmQg
b2YgdGhlIGZpbGUuCi0gICAgICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwotICAgICAgICBX
ZWJVUkwgYmxvYlVSTDsKLSAgICB9OwotCi0gICAgfldlYkhUVFBCb2R5KCkgeyByZXNldCgpOyB9
Ci0KLSAgICBXZWJIVFRQQm9keSgpIDogbV9wcml2YXRlKDApIHsgfQotICAgIFdlYkhUVFBCb2R5
KGNvbnN0IFdlYkhUVFBCb2R5JiBiKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihiKTsgfQotICAg
IFdlYkhUVFBCb2R5JiBvcGVyYXRvcj0oY29uc3QgV2ViSFRUUEJvZHkmIGIpCi0gICAgewotICAg
ICAgICBhc3NpZ24oYik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNl
dCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSFRUUEJvZHkmKTsK
LQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQotCi0gICAg
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbXByaXNpbmcgdGhlIGh0dHAgYm9k
eS4KLSAgICBXRUJLSVRfRVhQT1JUIHNpemVfdCBlbGVtZW50Q291bnQoKSBjb25zdDsKLQotICAg
IC8vIFNldHMgdGhlIHZhbHVlcyBvZiB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXguICBS
ZXR1cm5zIGZhbHNlIGlmCi0gICAgLy8gaW5kZXggaXMgb3V0IG9mIGJvdW5kcy4KLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgZWxlbWVudEF0KHNpemVfdCBpbmRleCwgRWxlbWVudCYpIGNvbnN0Owot
Ci0gICAgLy8gQXBwZW5kIHRvIHRoZSBsaXN0IG9mIGVsZW1lbnRzLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFdlYkRhdGEmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXBwZW5kRmlsZShjb25zdCBXZWJTdHJpbmcmKTsKLSAgICAvLyBQYXNzaW5nIC0xIHRvIGZp
bGVMZW5ndGggbWVhbnMgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFdlYlN0cmluZyYsIGxvbmcgbG9uZyBmaWxlU3Rh
cnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSk7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgV2ViVVJMJik7Ci0KLSAgICAvLyBJ
ZGVudGlmaWVzIGEgcGFydGljdWxhciBmb3JtIHN1Ym1pc3Npb24gaW5zdGFuY2UuICBBIHZhbHVl
IG9mIDAgaXMKLSAgICAvLyB1c2VkIHRvIGluZGljYXRlIGFuIHVuc3BlY2lmaWVkIGlkZW50aWZp
ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCBsb25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJZGVudGlmaWVyKGxvbmcgbG9uZyk7Ci0KLSNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJIVFRQQm9keShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6Rm9ybURhdGE+Jik7Ci0gICAgV2ViSFRUUEJvZHkmIG9wZXJhdG9yPShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1EYXRhPigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6
Ci0gICAgdm9pZCBhc3NpZ24oV2ViSFRUUEJvZHlQcml2YXRlKik7Ci0gICAgdm9pZCBlbnN1cmVN
dXRhYmxlKCk7Ci0gICAgV2ViSFRUUEJvZHlQcml2YXRlKiBtX3ByaXZhdGU7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BM
QVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSFRUUEJvZHkuaCIKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQSGVhZGVyVmlz
aXRvci5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwyMSArMjgsNiBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkhUVFBIZWFkZXJWaXNpdG9yX2gKLSNk
ZWZpbmUgV2ViSFRUUEhlYWRlclZpc2l0b3JfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViU3RyaW5nOwotCi1jbGFzcyBXZWJIVFRQSGVhZGVyVmlzaXRvciB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiB2YWx1ZSkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfldlYkhUVFBIZWFkZXJW
aXNpdG9yKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJL
SVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSFRU
UEhlYWRlclZpc2l0b3IuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSFRUUExvYWRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yOCw2MSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkhUVFBM
b2FkSW5mb19oCi0jZGVmaW5lIFdlYkhUVFBMb2FkSW5mb19oCi0KLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwotfQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLWNsYXNzIFdlYlN0cmluZzsKLQotY2xhc3MgV2ViSFRUUExvYWRJbmZvIHsK
LXB1YmxpYzoKLSAgICBXZWJIVFRQTG9hZEluZm8oKSB7IGluaXRpYWxpemUoKTsgfQotICAgIH5X
ZWJIVFRQTG9hZEluZm8oKSB7IHJlc2V0KCk7IH0KLSAgICBXZWJIVFRQTG9hZEluZm8oY29uc3Qg
V2ViSFRUUExvYWRJbmZvJiByKSB7IGFzc2lnbihyKTsgfQotICAgIFdlYkhUVFBMb2FkSW5mbyYg
b3BlcmF0b3IgPShjb25zdCBXZWJIVFRQTG9hZEluZm8mIHIpCi0gICAgeyAKLSAgICAgICAgYXNz
aWduKHIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkhUVFBMb2FkSW5mbyYgcik7Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIGludCBodHRwU3RhdHVzQ29kZSgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShpbnQpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCBXZWJTdHJpbmcgaHR0cFN0YXR1c1RleHQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0SFRUUFN0YXR1c1RleHQoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRFbmNvZGVkRGF0YUxlbmd0aChsb25nIGxvbmcpOwotCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFkZFJlcXVlc3RIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYWRkUmVzcG9uc2VIZWFk
ZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKLQotICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHJlcXVlc3RIZWFkZXJzVGV4dCgpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0SGVhZGVyc1RleHQoY29uc3QgV2ViU3RyaW5n
Jik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyByZXNwb25zZUhlYWRlcnNUZXh0KCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlc3BvbnNlSGVhZGVyc1RleHQoY29u
c3QgV2ViU3RyaW5nJik7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJIVFRQ
TG9hZEluZm8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZEluZm8+KTsKLSAg
ICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkSW5mbz4oKSBj
b25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkSW5mbz4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
KyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkhUVFBMb2FkSW5mby5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZURlY29kZXIuaAkocmV2aXNpb24gMTAxMjI0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTI4LDYzICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
V2ViSW1hZ2VEZWNvZGVyX2gKLSNkZWZpbmUgV2ViSW1hZ2VEZWNvZGVyX2gKLQotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
eyBjbGFzcyBJbWFnZURlY29kZXI7IH0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXR5cGVkZWYg
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyIFdlYkltYWdlRGVjb2RlclByaXZhdGU7Ci1jbGFzcyBXZWJE
YXRhOwotCi1jbGFzcyBXZWJJbWFnZURlY29kZXIgOiBwdWJsaWMgV2ViTm9uQ29weWFibGUgewot
cHVibGljOgotICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIFR5cGVCTVAsCi0gICAgICAgIFR5cGVJ
Q08KLSAgICB9OwotCi0gICAgfldlYkltYWdlRGVjb2RlcigpIHsgcmVzZXQoKTsgfQotCi0gICAg
ZXhwbGljaXQgV2ViSW1hZ2VEZWNvZGVyKFR5cGUgdHlwZSkgeyBpbml0KHR5cGUpOyB9Ci0KLSAg
ICAvLyBTZXRzIGRhdGEgY29udGVudHMgZm9yIHVuZGVybHlpbmcgZGVjb2Rlci4gQWxsIHRoZSBB
UEkgbWV0aG9kcwotICAgIC8vIHJlcXVpcmUgdGhhdCBzZXREYXRhKCkgaXMgY2FsbGVkIHByaW9y
IHRvIHRoZWlyIHVzZS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGF0YShjb25zdCBXZWJE
YXRhJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0KLSAgICAvLyBEZWxldGVzIG93bmVk
IGRlY29kZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0KLSAgICAvLyBSZXR1
cm5zIHRydWUgaWYgaW1hZ2UgZGVjb2RpbmcgZmFpbGVkLgotICAgIFdFQktJVF9FWFBPUlQgYm9v
bCBpc0ZhaWxlZCgpIGNvbnN0OwotICAgIAotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzaXplIGlu
Zm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGRlY29kZXIuCi0gICAgV0VCS0lUX0VYUE9S
VCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0aGUgc2l6
ZSBvZiB0aGUgaW1hZ2UuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHNpemUoKSBjb25zdDsK
LQotICAgIC8vIEdpdmVzIGZyYW1lIGNvdW50IGZvciB0aGUgaW1hZ2UuIEZvciBtdWx0aXBsZSBm
cmFtZXMsIGRlY29kZXIgc2NhbnMgdGhlIGltYWdlIGRhdGEgZm9yIHRoZSBjb3VudC4KLSAgICBX
RUJLSVRfRVhQT1JUIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBSZXR1cm5z
IGlmIHRoZSBmcmFtZSBhdCBnaXZlbiBpbmRleCBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCi0gICAg
V0VCS0lUX0VYUE9SVCBib29sIGlzRnJhbWVDb21wbGV0ZUF0SW5kZXgoaW50IGluZGV4KSBjb25z
dDsKLQotICAgIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgV2ViSW1hZ2UgZnJvbSBidWZmZXIgYXQg
dGhlIGluZGV4LgotICAgIFdFQktJVF9FWFBPUlQgV2ViSW1hZ2UgZ2V0RnJhbWVBdEluZGV4KGlu
dCBpbmRleCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgLy8gQ3JlYXRlcyB0eXBlLXNwZWNpZmlj
IGRlY29kZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXQoVHlwZSB0eXBlKTsKLQotICAg
IFdlYkltYWdlRGVjb2RlclByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZURlY29kZXIuaCIKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCShyZXZpc2lvbiAx
MDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaWZuZGVmIFdlYk1lZGlhUGxheWVy
X2gKICNkZWZpbmUgV2ViTWVkaWFQbGF5ZXJfaAogCi0jaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlZlY3Rvci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZpZGVvRnJhbWUuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
bnVJdGVtSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYk1lbnVJdGVtSW5mby5oCShyZXZpc2lvbiAxMDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSAr
MzEsOSBAQAogI2lmbmRlZiBXZWJNZW51SXRlbUluZm9faAogI2RlZmluZSBXZWJNZW51SXRlbUlu
Zm9faAogCi0jaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0
b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgJKHJldmlzaW9u
IDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5ldHdvcmtTdGF0
ZU5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDIxICsyOCw2IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViTmV0d29ya1N0YXRlTm90aWZpZXJfaAotI2RlZmluZSBX
ZWJOZXR3b3JrU3RhdGVOb3RpZmllcl9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24u
aCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYk5ldHdvcmtTdGF0ZU5vdGlmaWVy
IHsKLXB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE9uTGluZShib29s
KTsKLQotcHJpdmF0ZToKLSAgICBXZWJOZXR3b3JrU3RhdGVOb3RpZmllcigpOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19Q
TEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vdGlmaWNhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vdGlm
aWNhdGlvbi5oCShyZXZpc2lvbiAxMDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJOb3RpZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAog
I2lmbmRlZiBXZWJOb3RpZmljYXRpb25faAogI2RlZmluZSBXZWJOb3RpZmljYXRpb25faAogCi0j
aW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaCIKIAogI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBOb3RpZmljYXRpb247
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNz
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVn
dWxhckV4cHJlc3Npb24uaAkocmV2aXNpb24gMTAxMjI0KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMjkg
KzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJSZWd1bGFyRXhwcmVz
c2lvbl9oCi0jZGVmaW5lIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gKLQotI2luY2x1ZGUgIldlYlRl
eHRDYXNlU2Vuc2l0aXZpdHkuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUmVndWxhckV4cHJlc3Npb25Qcml2YXRlOwotY2xhc3MgV2ViU3RyaW5nOwot
Ci1jbGFzcyBXZWJSZWd1bGFyRXhwcmVzc2lvbiA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7Ci1w
dWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJSZWd1bGFyRXhwcmVzc2lvbihjb25zdCBXZWJT
dHJpbmcmIHBhdHRlcm4sIFdlYlRleHRDYXNlU2Vuc2l0aXZpdHkpOwotICAgIFdFQktJVF9FWFBP
UlQgfldlYlJlZ3VsYXJFeHByZXNzaW9uKCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBtYXRj
aChjb25zdCBXZWJTdHJpbmcmLCBpbnQgc3RhcnRGcm9tID0gMCwgaW50KiBtYXRjaExlbmd0aCA9
IDApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFdlYlJlZ3VsYXJFeHByZXNzaW9uUHJpdmF0ZSog
bV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lU
X01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlZ3Vs
YXJFeHByZXNzaW9uLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgJKHJldmlzaW9uIDEwMTIy
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDYXNlU2Vuc2l0aXZp
dHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTcgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5X2gKLSNkZWZpbmUgV2ViVGV4dENhc2VT
ZW5zaXRpdml0eV9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGVzZSBjb25zdGFudHMg
c3BlY2lmeSB0aGUgcHJlZmVycmVkIGNhc2Ugc2Vuc2l0aXZpdHkuCi1lbnVtIFdlYlRleHRDYXNl
U2Vuc2l0aXZpdHkgewotICAgIFdlYlRleHRDYXNlU2Vuc2l0aXZlLCAgIC8vIFN0cmluZyBtYXRj
aGluZyBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICBXZWJUZXh0Q2FzZUluc2Vuc2l0aXZlLCAvLyBT
dHJpbmcgbWF0Y2hpbmcgaXMgY2FzZS1pbnNlbnNpdGl2ZS4KLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHREaXJlY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgJ
KHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRl
eHREaXJlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTggKzI4LDYgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJUZXh0RGlyZWN0aW9uX2gKLSNkZWZpbmUgV2ViVGV4dERp
cmVjdGlvbl9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBSZXByZXNlbnRzIHRleHQgZGly
ZWN0aW9ucyAob3Igd3JpdGluZyBkaXJlY3Rpb25zKSBvZiBhIERPTSBub2RlLgotZW51bSBXZWJU
ZXh0RGlyZWN0aW9uIHsKLSAgICBXZWJUZXh0RGlyZWN0aW9uRGVmYXVsdCwgIC8vIE5hdHVyYWwg
d3JpdGluZyBkaXJlY3Rpb24gKCJpbmhlcml0IikKLSAgICBXZWJUZXh0RGlyZWN0aW9uTGVmdFRv
UmlnaHQsCi0gICAgV2ViVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0LAotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9S
TQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaCIKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dFJ1bi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRSdW4uaAkocmV2aXNpb24gMTAx
MjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dFJ1bi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0yOCw0MSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYlRleHRSdW5faAotI2RlZmluZSBXZWJUZXh0UnVuX2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgotCi0jaWZkZWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIFRleHRSdW47IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotc3RydWN0IFdlYlRleHRSdW4gewotICAgIFdlYlRleHRSdW4oY29uc3QgV2ViU3RyaW5nJiB0
LCBib29sIGlzUlRMLCBib29sIGhhc0RpcmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAgICAgIDogdGV4
dCh0KQotICAgICAgICAsIHJ0bChpc1JUTCkKLSAgICAgICAgLCBkaXJlY3Rpb25hbE92ZXJyaWRl
KGhhc0RpcmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAgewotICAgIH0KLSAgICBXZWJUZXh0UnVuKCkK
LSAgICAgICAgOiBydGwoZmFsc2UpCi0gICAgICAgICwgZGlyZWN0aW9uYWxPdmVycmlkZShmYWxz
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViU3RyaW5nIHRleHQ7Ci0gICAgYm9vbCBydGw7Ci0g
ICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlOwotCi0jaWZkZWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgLy8gVGhlIHJlc3VsdGluZyBXZWJDb3JlOjpUZXh0UnVuIHdpbGwgcmVmZXIgdG8g
dGhlIHRleHQgaW4gdGhpcwotICAgIC8vIHN0cnVjdCwgc28gInRoaXMiIG11c3Qgb3V0bGl2ZSB0
aGUgV2ViQ29yZSB0ZXh0IHJ1bi4KLSAgICBvcGVyYXRvciBXZWJDb3JlOjpUZXh0UnVuKCkgY29u
c3Q7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJ
VF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0
UnVuLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRo
cmVhZFNhZmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGhyZWFkU2FmZURhdGEuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgs
NTAgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJUaHJlYWRTYWZl
RGF0YV9oCi0jZGVmaW5lIFdlYlRocmVhZFNhZmVEYXRhX2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKLQotI2lm
ICFXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jZW5kaWYKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSYXdEYXRhOyB9Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci0vLyBBIGNvbnRhaW5lciBmb3IgcmF3IGJ5dGVzLiAgSXQgaXMgaW5leHBlbnNpdmUgdG8gY29w
eSBhIFdlYlRocmVhZFNhZmVEYXRhIG9iamVjdC4KLS8vIEl0IGlzIHNhZmUgdG8gcGFzcyBhIFdl
YlRocmVhZFNhZmVEYXRhIGFjcm9zcyB0aHJlYWRzISEhCi1jbGFzcyBXZWJUaHJlYWRTYWZlRGF0
YSB7Ci1wdWJsaWM6Ci0gICAgV2ViVGhyZWFkU2FmZURhdGEoKSB7IH0KLSAgICB+V2ViVGhyZWFk
U2FmZURhdGEoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24o
Y29uc3QgV2ViVGhyZWFkU2FmZURhdGEmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQo
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBXRUJLSVRf
RVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAg
IFdlYlRocmVhZFNhZmVEYXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSYXdEYXRh
PiYpOwotICAgIFdlYlRocmVhZFNhZmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlJhd0RhdGE+Jik7Ci0jZWxzZQotICAgIG9wZXJhdG9yIHN0ZDo6c3RyaW5n
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHNpemVfdCBsZW4gPSBzaXplKCk7Ci0gICAgICAgIHJl
dHVybiBsZW4gPyBzdGQ6OnN0cmluZyhkYXRhKCksIGxlbikgOiBzdGQ6OnN0cmluZygpOwotICAg
IH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UmF3RGF0
YT4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VC
S0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRo
cmVhZFNhZmVEYXRhLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlVSTEVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVVJMRXJyb3IuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVVJMRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNDYgKzI4LDYg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJVUkxFcnJvcl9oCi0jZGVmaW5l
IFdlYlVSTEVycm9yX2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgotCi0jaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVNRU5UQVRJ
T04pCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291cmNlRXJyb3I7IH0KLSNlbmRpZgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlVSTEVycm9yIHsKLSAgICAvLyBBIG5h
bWVzcGFjZSBmb3IgInJlYXNvbiIgdG8gc3VwcG9ydCB2YXJpb3VzIGxheWVycyBnZW5lcmF0aW5n
Ci0gICAgLy8gcmVzb3VyY2UgZXJyb3JzLiAgV2ViS2l0IGRvZXMgbm90IGNhcmUgYWJvdXQgdGhl
IHZhbHVlIG9mIHRoaXMKLSAgICAvLyBzdHJpbmcgYXMgaXQgd2lsbCBqdXN0IGJlIHBhc3NlZCB2
aWEgY2FsbGJhY2tzIHRvIHRoZSBjb25zdW1lci4KLSAgICBXZWJTdHJpbmcgZG9tYWluOwotCi0g
ICAgLy8gQSBudW1lcmljIGVycm9yIGNvZGUgZGV0YWlsaW5nIHRoZSByZWFzb24gZm9yIHRoaXMg
ZXJyb3IuICBBIHZhbHVlCi0gICAgLy8gb2YgMCBtZWFucyBubyBlcnJvci4gIFdlYktpdCBkb2Vz
IG5vdCBpbnRlcnByZXQgdGhlIG1lYW5pbmcgb2Ygb3RoZXIKLSAgICAvLyB2YWx1ZXMgYW5kIG5v
cm1hbGx5IGp1c3QgZm9yd2FyZHMgdGhpcyBlcnJvciBpbmZvcm1hdGlvbiBiYWNrIHRvIHRoZQot
ICAgIC8vIGVtYmVkZGVyIChzZWUgZm9yIGV4YW1wbGUgV2ViRnJhbWVDbGllbnQpLgotICAgIGlu
dCByZWFzb247Ci0KLSAgICAvLyBBIGZsYWcgc2hvd2luZyB3aGV0aGVyIHRoaXMgZXJyb3Igc2hv
dWxkIGJlIHRyZWF0ZWQgYXMgYSBjYW5jZWxsYXRpb24sCi0gICAgLy8gZS5nLiB3ZSBkbyBub3Qg
c2hvdyBjb25zb2xlIGVycm9ycyBmb3IgY2FuY2VsbGF0aW9ucy4KLSAgICBib29sIGlzQ2FuY2Vs
bGF0aW9uOwotCi0gICAgLy8gVGhlIHVybCB0aGF0IGZhaWxlZCB0byBsb2FkLgotICAgIFdlYlVS
TCB1bnJlYWNoYWJsZVVSTDsKLQotICAgIFdlYlVSTEVycm9yKCkgOiByZWFzb24oMCksIGlzQ2Fu
Y2VsbGF0aW9uKGZhbHNlKSB7IH0KLQotI2lmIGRlZmluZWQoV0VCS0lUX0lNUExFTUVOVEFUSU9O
KQotICAgIFdlYlVSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICBX
ZWJVUkxFcnJvciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAg
ICBvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNf
VE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxFcnJvci5oIgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkVGltaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWlu
Zy5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxMb2FkVGltaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDgxICsyOCw2IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMTG9hZFRpbWluZ19oCi0jZGVmaW5lIFdlYlVS
TExvYWRUaW1pbmdfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNz
IFJlc291cmNlTG9hZFRpbWluZzsgfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYlN0
cmluZzsKLQotY2xhc3MgV2ViVVJMTG9hZFRpbWluZyB7Ci1wdWJsaWM6Ci0gICAgfldlYlVSTExv
YWRUaW1pbmcoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlVSTExvYWRUaW1pbmcoKSB7IH0KLSAg
ICBXZWJVUkxMb2FkVGltaW5nKGNvbnN0IFdlYlVSTExvYWRUaW1pbmcmIGQpIHsgYXNzaWduKGQp
OyB9Ci0gICAgV2ViVVJMTG9hZFRpbWluZyYgb3BlcmF0b3I9KGNvbnN0IFdlYlVSTExvYWRUaW1p
bmcmIGQpCi0gICAgewotICAgICAgICBhc3NpZ24oZCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29u
c3QgV2ViVVJMTG9hZFRpbWluZyYpOwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgZG91YmxlIHJlcXVl
c3RUaW1lKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RUaW1lKGRv
dWJsZSB0aW1lKTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHByb3h5U3RhcnQoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJveHlTdGFydChpbnQgc3RhcnQpOwotCi0gICAg
V0VCS0lUX0VYUE9SVCBpbnQgcHJveHlFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0UHJveHlFbmQoaW50IGVuZCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBkbnNTdGFy
dCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRETlNTdGFydChpbnQgc3RhcnQp
OwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgZG5zRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldEROU0VuZChpbnQgZW5kKTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IGNv
bm5lY3RTdGFydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb25uZWN0U3Rh
cnQoaW50IHN0YXJ0KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IGNvbm5lY3RFbmQoKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdEVuZChpbnQgZW5kKTsKLQotICAg
IFdFQktJVF9FWFBPUlQgaW50IHNlbmRTdGFydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRTZW5kU3RhcnQoaW50IHN0YXJ0KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHNl
bmRFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2VuZEVuZChpbnQgZW5k
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHJlY2VpdmVIZWFkZXJzRW5kKCkgY29uc3Q7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlY2VpdmVIZWFkZXJzRW5kKGludCBlbmQpOwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBpbnQgc3NsU3RhcnQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0U1NMU3RhcnQoaW50IHN0YXJ0KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHNz
bEVuZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTU0xFbmQoaW50IGVuZCk7
Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJVUkxMb2FkVGltaW5nKGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc+Jik7Ci0gICAgV2Vi
VVJMTG9hZFRpbWluZyYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRUaW1pbmc+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlJlc291cmNlTG9hZFRpbWluZz4oKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAg
IFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPiBtX3ByaXZhdGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFE
RVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMTG9hZFRpbWluZy5oIgog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJV
UkxMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDUxICsy
OCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMTG9hZGVyQ2xpZW50
X2gKLSNkZWZpbmUgV2ViVVJMTG9hZGVyQ2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYlVSTExvYWRlcjsKLWNsYXNzIFdlYlVSTFJlcXVlc3Q7Ci1jbGFzcyBXZWJVUkxS
ZXNwb25zZTsKLXN0cnVjdCBXZWJVUkxFcnJvcjsKLQotY2xhc3MgV2ViVVJMTG9hZGVyQ2xpZW50
IHsKLXB1YmxpYzoKLSAgICAvLyBDYWxsZWQgd2hlbiBmb2xsb3dpbmcgYSByZWRpcmVjdC4gIHxu
ZXdSZXF1ZXN0fCBjb250YWlucyB0aGUgcmVxdWVzdAotICAgIC8vIGdlbmVyYXRlZCBieSB0aGUg
cmVkaXJlY3QuICBUaGUgY2xpZW50IG1heSBtb2RpZnkgfG5ld1JlcXVlc3R8LgotICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoCi0gICAgICAgIFdlYlVSTExvYWRlciosIFdlYlVSTFJl
cXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KSB7IH0KLQotICAgIC8vIENhbGxlZCB0byByZXBvcnQgdXBsb2FkIHByb2dyZXNzLiAgVGhlIGJ5
dGVzIHJlcG9ydGVkIGNvcnJlc3BvbmQgdG8KLSAgICAvLyB0aGUgSFRUUCBtZXNzYWdlIGJvZHku
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKAotICAgICAgICBXZWJVUkxMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIHJlc3BvbnNlIGhlYWRlcnMgYXJl
IHJlY2VpdmVkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMTG9h
ZGVyKiwgY29uc3QgV2ViVVJMUmVzcG9uc2UmKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEg
Y2h1bmsgb2YgcmVzcG9uc2UgZGF0YSBpcyBkb3dubG9hZGVkLiAgVGhpcyBpcyBvbmx5IGNhbGxl
ZAotICAgIC8vIGlmIFdlYlVSTFJlcXVlc3QncyBkb3dubG9hZFRvRmlsZSBmbGFnIHdhcyBzZXQg
dG8gdHJ1ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKFdlYlVSTExvYWRlcios
IGludCBkYXRhTGVuZ3RoKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEgY2h1bmsgb2YgcmVz
cG9uc2UgZGF0YSBpcyByZWNlaXZlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
V2ViVVJMTG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkgeyB9Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBhIGNodW5rIG9mIHJlbmRl
cmVyLWdlbmVyYXRlZCBtZXRhZGF0YSBpcyByZWNlaXZlZCBmcm9tIHRoZSBjYWNoZS4KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFdlYlVSTExvYWRlciosIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIHRo
ZSBsb2FkIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViVVJMTG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpIHsgfQotCi0gICAgLy8g
Q2FsbGVkIHdoZW4gdGhlIGxvYWQgY29tcGxldGVzIHdpdGggYW4gZXJyb3IuCi0gICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoV2ViVVJMTG9hZGVyKiwgY29uc3QgV2ViVVJMRXJyb3ImKSB7IH0KLQot
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYlVSTExvYWRlckNsaWVudCgpIHsgfQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19U
T19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTExvYWRlckNsaWVudC5oIgogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVz
dC5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDE3MiArMjgsNiBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlVSTFJlcXVlc3RfaAotI2RlZmluZSBXZWJVUkxSZXF1
ZXN0X2gKLQotI2luY2x1ZGUgIldlYkhUVFBCb2R5LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCi0KLSNpZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFdlYkNTdHJpbmc7Ci1jbGFzcyBXZWJIVFRQQm9keTsKLWNsYXNz
IFdlYkhUVFBIZWFkZXJWaXNpdG9yOwotY2xhc3MgV2ViU3RyaW5nOwotY2xhc3MgV2ViVVJMOwot
Y2xhc3MgV2ViVVJMUmVxdWVzdFByaXZhdGU7Ci0KLWNsYXNzIFdlYlVSTFJlcXVlc3QgewotcHVi
bGljOgotICAgIGVudW0gQ2FjaGVQb2xpY3kgewotICAgICAgICBVc2VQcm90b2NvbENhY2hlUG9s
aWN5LCAgLy8gbm9ybWFsIGxvYWQKLSAgICAgICAgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEsIC8v
IHJlbG9hZAotICAgICAgICBSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCwgLy8gYmFjay9mb3J3YXJk
IG9yIGVuY29kaW5nIGNoYW5nZSAtIGFsbG93IHN0YWxlIGRhdGEKLSAgICAgICAgUmV0dXJuQ2Fj
aGVEYXRhRG9udExvYWQsIC8vIHJlc3VsdHMgb2YgYSBwb3N0IC0gYWxsb3cgc3RhbGUgZGF0YSBh
bmQgb25seSB1c2UgY2FjaGUKLSAgICB9OwotCi0gICAgZW51bSBUYXJnZXRUeXBlIHsKLSAgICAg
ICAgVGFyZ2V0SXNNYWluRnJhbWUgPSAwLAotICAgICAgICBUYXJnZXRJc1N1YmZyYW1lID0gMSwK
LSAgICAgICAgVGFyZ2V0SXNTdWJyZXNvdXJjZSA9IDIsCi0gICAgICAgIFRhcmdldElzU3R5bGVT
aGVldCA9IDMsCi0gICAgICAgIFRhcmdldElzU2NyaXB0ID0gNCwKLSAgICAgICAgVGFyZ2V0SXNG
b250UmVzb3VyY2UgPSA1LAotICAgICAgICBUYXJnZXRJc0ltYWdlID0gNiwKLSAgICAgICAgVGFy
Z2V0SXNPYmplY3QgPSA3LAotICAgICAgICBUYXJnZXRJc01lZGlhID0gOCwKLSAgICAgICAgVGFy
Z2V0SXNXb3JrZXIgPSA5LAotICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwLAotICAg
ICAgICBUYXJnZXRJc1ByZWZldGNoID0gMTEsCi0gICAgICAgIFRhcmdldElzUHJlcmVuZGVyID0g
MTIsCi0gICAgICAgIFRhcmdldElzRmF2aWNvbiA9IDEzLAotICAgICAgICBUYXJnZXRJc1hIUiA9
IDE0LAotICAgICAgICBUYXJnZXRJc1RleHRUcmFjayA9IDE1LAotICAgICAgICBUYXJnZXRJc1Vu
c3BlY2lmaWVkID0gMTYsCi0gICAgfTsKLQotICAgIGNsYXNzIEV4dHJhRGF0YSB7Ci0gICAgcHVi
bGljOgotICAgICAgICB2aXJ0dWFsIH5FeHRyYURhdGEoKSB7IH0KLSAgICB9OwotCi0gICAgfldl
YlVSTFJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlVSTFJlcXVlc3QoKSA6IG1fcHJp
dmF0ZSgwKSB7IH0KLSAgICBXZWJVUkxSZXF1ZXN0KGNvbnN0IFdlYlVSTFJlcXVlc3QmIHIpIDog
bV9wcml2YXRlKDApIHsgYXNzaWduKHIpOyB9Ci0gICAgV2ViVVJMUmVxdWVzdCYgb3BlcmF0b3I9
KGNvbnN0IFdlYlVSTFJlcXVlc3QmIHIpCi0gICAgewotICAgICAgICBhc3NpZ24ocik7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBXZWJVUkxSZXF1ZXN0KGNv
bnN0IFdlYlVSTCYgdXJsKSA6IG1fcHJpdmF0ZSgwKQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6
ZSgpOwotICAgICAgICBzZXRVUkwodXJsKTsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViVVJMUmVxdWVzdCYpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJV
UkwgdXJsKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFVSTChjb25zdCBXZWJV
UkwmKTsKLQotICAgIC8vIFVzZWQgdG8gaW1wbGVtZW50IHRoaXJkLXBhcnR5IGNvb2tpZSBibG9j
a2luZy4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlVSTCBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25z
dCBXZWJVUkwmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhbGxvd0Nvb2tpZXMoKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wgYWxsb3dDb29r
aWVzKTsKLQotICAgIC8vIENvbnRyb2xzIHdoZXRoZXIgdXNlciBuYW1lLCBwYXNzd29yZCwgYW5k
IGNvb2tpZXMgbWF5IGJlIHNlbnQgd2l0aCB0aGUKLSAgICAvLyByZXF1ZXN0LiAoSWYgZmFsc2Us
IHRoaXMgb3ZlcnJpZGVzIGFsbG93Q29va2llcy4pCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGFs
bG93U3RvcmVkQ3JlZGVudGlhbHMoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
QWxsb3dTdG9yZWRDcmVkZW50aWFscyhib29sIGFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRDYWNoZVBvbGljeShDYWNoZVBvbGljeSk7Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlN0cmluZyBodHRwTWV0aG9kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldEhUVFBNZXRob2QoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlN0cmluZyBodHRwSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIGFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYgdmFsdWUpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBjbGVhckhUVFBIZWFkZXJGaWVs
ZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCB2aXNpdEhU
VFBIZWFkZXJGaWVsZHMoV2ViSFRUUEhlYWRlclZpc2l0b3IqKSBjb25zdDsKLQotICAgIFdFQktJ
VF9FWFBPUlQgV2ViSFRUUEJvZHkgaHR0cEJvZHkoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0SFRUUEJvZHkoY29uc3QgV2ViSFRUUEJvZHkmKTsKLQotICAgIC8vIENvbnRyb2xz
IHdoZXRoZXIgdXBsb2FkIHByb2dyZXNzIGV2ZW50cyBhcmUgZ2VuZXJhdGVkIHdoZW4gYSByZXF1
ZXN0Ci0gICAgLy8gaGFzIGEgYm9keS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgcmVwb3J0VXBs
b2FkUHJvZ3Jlc3MoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwb3J0VXBs
b2FkUHJvZ3Jlc3MoYm9vbCk7Ci0KLSAgICAvLyBDb250cm9scyB3aGV0aGVyIGxvYWQgdGltaW5n
IGluZm8gaXMgY29sbGVjdGVkIGZvciB0aGUgcmVxdWVzdC4KLSAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgcmVwb3J0TG9hZFRpbWluZygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRS
ZXBvcnRMb2FkVGltaW5nKGJvb2wpOwotCi0gICAgLy8gQ29udHJvbHMgd2hldGhlciBhY3R1YWwg
aGVhZGVycyBzZW50IGFuZCByZWNlaXZlZCBmb3IgcmVxdWVzdCBhcmUKLSAgICAvLyBjb2xsZWN0
ZWQgYW5kIHJlcG9ydGVkLgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCByZXBvcnRSYXdIZWFkZXJz
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcG9ydFJhd0hlYWRlcnMoYm9v
bCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUYXJnZXRUeXBlKFRhcmdldFR5cGUpOwotCi0gICAg
Ly8gVHJ1ZSBpZiB0aGUgcmVxdWVzdCB3YXMgdXNlciBpbml0aWF0ZWQuCi0gICAgV0VCS0lUX0VY
UE9SVCBib29sIGhhc1VzZXJHZXN0dXJlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEhhc1VzZXJHZXN0dXJlKGJvb2wpOwotCi0gICAgLy8gQSBjb25zdW1lciBjb250cm9sbGVk
IHZhbHVlIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlCi0gICAgLy8gcmVxdWVz
dG9yLgotICAgIFdFQktJVF9FWFBPUlQgaW50IHJlcXVlc3RvcklEKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RvcklEKGludCk7Ci0KLSAgICAvLyBBIGNvbnN1bWVy
IGNvbnRyb2xsZWQgdmFsdWUgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUKLSAg
ICAvLyBwcm9jZXNzIG9mIHRoZSByZXF1ZXN0b3IuCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgcmVx
dWVzdG9yUHJvY2Vzc0lEKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcXVl
c3RvclByb2Nlc3NJRChpbnQpOwotCi0gICAgLy8gQWxsb3dzIHRoZSByZXF1ZXN0IHRvIGJlIG1h
dGNoZWQgdXAgd2l0aCBpdHMgYXBwIGNhY2hlIGhvc3QuCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQg
YXBwQ2FjaGVIb3N0SUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QXBwQ2Fj
aGVIb3N0SUQoaW50IGlkKTsKLQotICAgIC8vIElmIHRydWUsIHRoZSByZXNwb25zZSBib2R5IHdp
bGwgYmUgZG93bmxvYWRlZCB0byBhIGZpbGUgbWFuYWdlZCBieSB0aGUKLSAgICAvLyBXZWJVUkxM
b2FkZXIuICBTZWUgV2ViVVJMUmVzcG9uc2U6OmRvd25sb2FkZWRGaWxlUGF0aC4KLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgZG93bmxvYWRUb0ZpbGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RG93bmxvYWRUb0ZpbGUoYm9vbCk7Ci0KLSAgICAvLyBFeHRyYSBkYXRhIGFzc29j
aWF0ZWQgd2l0aCB0aGUgdW5kZXJseWluZyByZXNvdXJjZSByZXF1ZXN0LiBSZXNvdXJjZQotICAg
IC8vIHJlcXVlc3RzIGNhbiBiZSBjb3BpZWQuIElmIG5vbi1udWxsLCBlYWNoIGNvcHkgb2YgYSBy
ZXNvdXJjZSByZXF1ZXN0cwotICAgIC8vIGhvbGRzIGEgcG9pbnRlciB0byB0aGUgZXh0cmEgZGF0
YSwgYW5kIHRoZSBleHRyYSBkYXRhIHBvaW50ZXIgd2lsbCBiZQotICAgIC8vIGRlbGV0ZWQgd2hl
biB0aGUgbGFzdCByZXNvdXJjZSByZXF1ZXN0IGlzIGRlc3Ryb3llZC4gU2V0dGluZyB0aGUgZXh0
cmEKLSAgICAvLyBkYXRhIHBvaW50ZXIgd2lsbCBjYXVzZSB0aGUgdW5kZXJseWluZyByZXNvdXJj
ZSByZXF1ZXN0IHRvIGJlCi0gICAgLy8gZGlzc29jaWF0ZWQgZnJvbSBhbnkgZXhpc3Rpbmcgbm9u
LW51bGwgZXh0cmEgZGF0YSBwb2ludGVyLgotICAgIFdFQktJVF9FWFBPUlQgRXh0cmFEYXRhKiBl
eHRyYURhdGEoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RXh0cmFEYXRhKEV4
dHJhRGF0YSopOwotCi0jaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVNRU5UQVRJT04pCi0gICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiB0b011dGFibGVSZXNvdXJjZVJlcXVlc3QoKTsKLSAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHRvUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7
Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIHZvaWQgYXNzaWduKFdlYlVSTFJlcXVlc3RQcml2
YXRlKik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViVVJMUmVxdWVzdFByaXZhdGUqIG1fcHJpdmF0ZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hF
QURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgiCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVz
cG9uc2UuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVVJMUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTU5ICsyOCw2IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMUmVzcG9uc2VfaAotI2RlZmluZSBXZWJV
UkxSZXNwb25zZV9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJQcml2YXRlT3duUHRyLmgiCi0KLSNpZiBkZWZpbmVkKFdFQktJVF9JTVBM
RU1FTlRBVElPTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsg
fQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJDU3RyaW5nOwotY2xh
c3MgV2ViSFRUUEhlYWRlclZpc2l0b3I7Ci1jbGFzcyBXZWJIVFRQTG9hZEluZm87Ci1jbGFzcyBX
ZWJTdHJpbmc7Ci1jbGFzcyBXZWJVUkw7Ci1jbGFzcyBXZWJVUkxMb2FkVGltaW5nOwotY2xhc3Mg
V2ViVVJMUmVzcG9uc2VQcml2YXRlOwotCi1jbGFzcyBXZWJVUkxSZXNwb25zZSB7Ci1wdWJsaWM6
Ci0gICAgfldlYlVSTFJlc3BvbnNlKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJVUkxSZXNwb25z
ZSgpIDogbV9wcml2YXRlKDApIHsgfQotICAgIFdlYlVSTFJlc3BvbnNlKGNvbnN0IFdlYlVSTFJl
c3BvbnNlJiByKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihyKTsgfQotICAgIFdlYlVSTFJlc3Bv
bnNlJiBvcGVyYXRvcj0oY29uc3QgV2ViVVJMUmVzcG9uc2UmIHIpCi0gICAgewotICAgICAgICBh
c3NpZ24ocik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBX
ZWJVUkxSZXNwb25zZShjb25zdCBXZWJVUkwmIHVybCkgOiBtX3ByaXZhdGUoMCkKLSAgICB7Ci0g
ICAgICAgIGluaXRpYWxpemUoKTsKLSAgICAgICAgc2V0VVJMKHVybCk7Ci0gICAgfQotCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlVSTFJlc3Bv
bnNlJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0VVJMKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBjb25u
ZWN0aW9uSUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbklE
KHVuc2lnbmVkKTsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjb25uZWN0aW9uUmV1c2VkKCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb25SZXVzZWQoYm9vbCk7
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlVSTExvYWRUaW1pbmcgbG9hZFRpbWluZygpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRMb2FkVGltaW5nKGNvbnN0IFdlYlVSTExvYWRUaW1pbmcm
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViSFRUUExvYWRJbmZvIGh0dHBMb2FkSW5mbygpOwot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIVFRQTG9hZEluZm8oY29uc3QgV2ViSFRUUExvYWRJ
bmZvJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGRvdWJsZSByZXNwb25zZVRpbWUoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVzcG9uc2VUaW1lKGRvdWJsZSk7Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRNSU1FVHlwZShjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdFQktJVF9FWFBP
UlQgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0OwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgobG9uZyBsb25nKTsKLQotICAgIFdF
QktJVF9FWFBPUlQgV2ViU3RyaW5nIHRleHRFbmNvZGluZ05hbWUoKSBjb25zdDsKLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBXZWJTdHJpbmcmKTsKLQot
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHN1Z2dlc3RlZEZpbGVOYW1lKCkgY29uc3Q7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFN1Z2dlc3RlZEZpbGVOYW1lKGNvbnN0IFdlYlN0cmlu
ZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgaHR0cFN0YXR1c0NvZGUoKSBjb25zdDsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsKLQotICAgIFdFQktJ
VF9FWFBPUlQgV2ViU3RyaW5nIGh0dHBTdGF0dXNUZXh0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldEhUVFBTdGF0dXNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgaHR0cEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJIVFRQSGVh
ZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
dmlzaXRIVFRQSGVhZGVyRmllbGRzKFdlYkhUVFBIZWFkZXJWaXNpdG9yKikgY29uc3Q7Ci0KLSAg
ICBXRUJLSVRfRVhQT1JUIGRvdWJsZSBsYXN0TW9kaWZpZWREYXRlKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldExhc3RNb2RpZmllZERhdGUoZG91YmxlKTsKLQotICAgIFdFQktJ
VF9FWFBPUlQgbG9uZyBsb25nIGFwcENhY2hlSUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0QXBwQ2FjaGVJRChsb25nIGxvbmcpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJV
UkwgYXBwQ2FjaGVNYW5pZmVzdFVSTCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRBcHBDYWNoZU1hbmlmZXN0VVJMKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgLy8gQSBjb25zdW1l
ciBjb250cm9sbGVkIHZhbHVlIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcmVjb3JkIG9wYXF1ZQot
ICAgIC8vIHNlY3VyaXR5IGluZm8gcmVsYXRlZCB0byB0aGlzIHJlcXVlc3QuCi0gICAgV0VCS0lU
X0VYUE9SVCBXZWJDU3RyaW5nIHNlY3VyaXR5SW5mbygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRTZWN1cml0eUluZm8oY29uc3QgV2ViQ1N0cmluZyYpOwotCi0jaWYgZGVmaW5l
ZChXRUJLSVRfSU1QTEVNRU5UQVRJT04pCi0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
dG9NdXRhYmxlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHRvUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAvLyBG
bGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IHdhcyBzZXJ2ZWQgZnJvbSB0aGUgZGlzayBjYWNoZSBl
bnRyeS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgd2FzQ2FjaGVkKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFdhc0NhY2hlZChib29sKTsKLQotICAgIC8vIEZsYWcgd2hldGhl
ciB0aGlzIHJlcXVlc3Qgd2FzIGxvYWRlZCB2aWEgdGhlIFNQRFkgcHJvdG9jb2wgb3Igbm90Lgot
ICAgIC8vIFNQRFkgaXMgYW4gZXhwZXJpbWVudGFsIHdlYiBwcm90b2NvbCwgc2VlIGh0dHA6Ly9k
ZXYuY2hyb21pdW0ub3JnL3NwZHkKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgd2FzRmV0Y2hlZFZp
YVNQRFkoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0V2FzRmV0Y2hlZFZpYVNQ
RFkoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IHdhcyBsb2FkZWQg
YWZ0ZXIgdGhlIFRMUy9OZXh0LVByb3RvY29sLU5lZ290aWF0aW9uIHdhcyB1c2VkLgotICAgIC8v
IFRoaXMgaXMgcmVsYXRlZCB0byBTUERZLgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCB3YXNOcG5O
ZWdvdGlhdGVkKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFdhc05wbk5lZ290
aWF0ZWQoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IHdhcyBtYWRl
IHdoZW4gIkFsdGVybmF0ZS1Qcm90b2NvbDogeHh4IgotICAgIC8vIGlzIHByZXNlbnQgaW4gc2Vy
dmVyJ3MgcmVzcG9uc2UuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIHdhc0FsdGVybmF0ZVByb3Rv
Y29sQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFdhc0FsdGVy
bmF0ZVByb3RvY29sQXZhaWxhYmxlKGJvb2wpOwotCi0gICAgLy8gRmxhZyB3aGV0aGVyIHRoaXMg
cmVxdWVzdCB3YXMgbG9hZGVkIHZpYSBhbiBleHBsaWNpdCBwcm94eSAoSFRUUCwgU09DS1MsIGV0
YykuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIHdhc0ZldGNoZWRWaWFQcm94eSgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRXYXNGZXRjaGVkVmlhUHJveHkoYm9vbCk7Ci0KLSAg
ICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGlzIHBhcnQgb2YgYSBtdWx0aXBhcnQgcmVz
cG9uc2UuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGlzTXVsdGlwYXJ0UGF5bG9hZCgpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc011bHRpcGFydFBheWxvYWQoYm9vbCk7Ci0K
LSAgICAvLyBUaGlzIGluZGljYXRlcyB0aGUgbG9jYXRpb24gb2YgYSBkb3dubG9hZGVkIHJlc3Bv
bnNlIGlmIHRoZQotICAgIC8vIFdlYlVSTFJlcXVlc3QgaGFkIHRoZSBkb3dubG9hZFRvRmlsZSBm
bGFnIHNldCB0byB0cnVlLiAgVGhpcyBmaWxlIHBhdGgKLSAgICAvLyByZW1haW5zIHZhbGlkIGZv
ciB0aGUgbGlmZXRpbWUgb2YgdGhlIFdlYlVSTExvYWRlciB1c2VkIHRvIGNyZWF0ZSBpdC4KLSAg
ICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkb3dubG9hZEZpbGVQYXRoKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldERvd25sb2FkRmlsZVBhdGgoY29uc3QgV2ViU3RyaW5nJik7
Ci0KLSAgICAvLyBSZW1vdGUgSVAgYWRkcmVzcyBvZiB0aGUgc29ja2V0IHdoaWNoIGZldGNoZWQg
dGhpcyByZXNvdXJjZS4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyByZW1vdGVJUEFkZHJl
c3MoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVtb3RlSVBBZGRyZXNzKGNv
bnN0IFdlYlN0cmluZyYpOwotCi0gICAgLy8gUmVtb3RlIHBvcnQgbnVtYmVyIG9mIHRoZSBzb2Nr
ZXQgd2hpY2ggZmV0Y2hlZCB0aGlzIHJlc291cmNlLgotICAgIFdFQktJVF9FWFBPUlQgdW5zaWdu
ZWQgc2hvcnQgcmVtb3RlUG9ydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRS
ZW1vdGVQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQotcHJvdGVjdGVkOgotICAgIHZvaWQgYXNzaWdu
KFdlYlVSTFJlc3BvbnNlUHJpdmF0ZSopOwotCi1wcml2YXRlOgotICAgIFdlYlVSTFJlc3BvbnNl
UHJpdmF0ZSogbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5k
ZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlVSTFJlc3BvbnNlLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZGVvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgs
NDEgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJWaWRlb0ZyYW1l
X2gKLSNkZWZpbmUgV2ViVmlkZW9GcmFtZV9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBB
IHByb3h5IHZpZGVvIGZyYW1lIGludGVyZmFjZSB0byBjb21tdW5pY2F0ZSBmcmFtZSBkYXRhIGJl
dHdlZW4gY2hyb21pdW0KLS8vIGFuZCBXZWJLaXQuCi1jbGFzcyBXZWJWaWRlb0ZyYW1lIHsKLXB1
YmxpYzoKLSAgICBlbnVtIEZvcm1hdCB7Ci0gICAgICAgIEZvcm1hdEludmFsaWQsCi0gICAgICAg
IEZvcm1hdFJHQjU1NSwKLSAgICAgICAgRm9ybWF0UkdCNTY1LAotICAgICAgICBGb3JtYXRSR0Iy
NCwKLSAgICAgICAgRm9ybWF0UkdCMzIsCi0gICAgICAgIEZvcm1hdFJHQkEsCi0gICAgICAgIEZv
cm1hdFlWMTIsCi0gICAgICAgIEZvcm1hdFlWMTYsCi0gICAgICAgIEZvcm1hdE5WMTIsCi0gICAg
ICAgIEZvcm1hdEVtcHR5LAotICAgICAgICBGb3JtYXRBU0NJSSwKLSAgICAgICAgRm9ybWF0STQy
MCwKLSAgICAgICAgRm9ybWF0TmF0aXZlVGV4dHVyZSwKLSAgICB9OwotCi0gICAgdmlydHVhbCB+
V2ViVmlkZW9GcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsg
cmV0dXJuIEZvcm1hdEludmFsaWQ7IH0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3QgeyByZXR1cm4g
MDsgfQotICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgeyByZXR1
cm4gMDsgfQotICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29u
c3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VC
S0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZp
ZGVvRnJhbWUuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlld0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICsz
OSw5IEBACiAjaW5jbHVkZSAiV2ViUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIldl
YlBvcHVwVHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHRBZmZpbml0eS5oIgotI2luY2x1ZGUgIldl
YlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJXZWJXaWRnZXRDbGllbnQuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0RGlyZWN0
aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXQuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICsz
MywxMSBAQAogCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRpb25VbmRlcmxpbmUuaCIKICNpbmNsdWRl
ICJXZWJUZXh0SW5wdXRUeXBlLmgiCi0jaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJTaXplLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGV4dERpcmVjdGlvbi5oIgogCiAjZGVm
aW5lIFdFQktJVF9IQVNfTkVXX0ZVTExTQ1JFRU5fQVBJIDEKIApJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgJKHJldmlzaW9uIDEwMTIz
MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViU2NyZWVuSW5mby5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlJlY3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0RGlyZWN0aW9uLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMTAx
MjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcnJheUJ1ZmZlclZp
ZXcuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJBcnJheUJ1ZmZlclZpZXcuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJW
aWV3LmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkFycmF5QnVmZmVyVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsy
OSw4IEBACiAjaWZuZGVmIFdlYkFycmF5QnVmZmVyVmlld19oCiAjZGVmaW5lIFdlYkFycmF5QnVm
ZmVyVmlld19oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHJpdmF0ZVB0ci5oIgogCiBuYW1lc3BhY2UgV1RGIHsgY2xhc3MgQXJyYXlCdWZmZXJW
aWV3OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkJsb2JEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViQmxvYkRhdGEuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmgJKHdvcmtpbmcgY29weSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViQmxvYkRhdGEuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViQmxvYkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSAr
MzEsOSBAQAogI2lmbmRlZiBXZWJCbG9iRGF0YV9oCiAjZGVmaW5lIFdlYkJsb2JEYXRhX2gKIAor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlRocmVhZFNhZmVEYXRhLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJM
LmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KIG5h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQmxvYkRhdGE7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNvb2tpZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNvb2tpZS5oCShyZXZpc2lvbiAx
MDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZS5oOjEw
MTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNvb2tp
ZS5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJDb29raWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJDb29raWUuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDEzICszMSwxMSBAQAogI2lmbmRlZiBXZWJDb29raWVfaAogI2RlZmluZSBXZWJD
b29raWVfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJTdHJpbmc7Ci0KIC8v
IEEgY29va2llLgogLy8KIHN0cnVjdCBXZWJDb29raWUgewpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaAkocmV2
aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9h
dFBvaW50Lmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViRmxvYXRQb2ludC5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oCShyZXZp
c2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJGbG9hdFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYg
V2ViRmxvYXRQb2ludF9oCiAjZGVmaW5lIFdlYkZsb2F0UG9pbnRfaAogCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaAko
cmV2aXNpb24gMTAxMjI0KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
bG9hdFF1YWQuaDoxMDEyMjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJGbG9hdFF1YWQuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgJKHJldmlz
aW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkZsb2F0UXVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaWZuZGVmIFdl
YkZsb2F0UXVhZF9oCiAjZGVmaW5lIFdlYkZsb2F0UXVhZF9oCiAKKyNpbmNsdWRlICJXZWJDb21t
b24uaCIKICNpbmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgorI2luY2x1ZGUgIldlYlJl
Y3QuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbWF0aD4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0
UmVjdC5oCShyZXZpc2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZsb2F0UmVjdC5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFJlY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFJlY3Qu
aAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViRmxvYXRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNp
Zm5kZWYgV2ViRmxvYXRSZWN0X2gKICNkZWZpbmUgV2ViRmxvYXRSZWN0X2gKIAotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udC5oCShyZXZpc2lv
biAxMDEyMjQpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnQuaDox
MDEyMjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250
LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJGb250LmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOSArMzEsOSBAQAogI2lmbmRlZiBXZWJGb250X2gKICNkZWZpbmUgV2ViRm9udF9oCiAKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb2xv
ci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNhbnZh
cy5oIgorI2luY2x1ZGUgIldlYkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJGb250Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250Q2FjaGUuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJv
bSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUuaDoxMDEyMjMpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250Q2FjaGUuaAko
d29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViRm9udENhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViRm9udENhY2hlLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnRDYWNoZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFdlYkZvbnRDYWNoZV9oCiAjZGVmaW5l
IFdlYkZvbnRDYWNoZV9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnREZXNjcmlwdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnRE
ZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZvbnREZXNjcmlwdGlvbi5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnREZXNjcmlwdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250
RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJGb250RGVzY3JpcHRpb24uaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udERlc2NyaXB0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgV2ViRm9udERlc2NyaXB0
aW9uX2gKICNkZWZpbmUgV2ViRm9udERlc2NyaXB0aW9uX2gKIAotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgogCiAjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR2x5cGhDYWNo
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkdseXBoQ2FjaGUuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJHbHlwaENhY2hlLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR2x5cGhDYWNoZS5oCSh3b3JraW5nIGNvcHkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHbHlwaENhY2hl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViR2x5cGhDYWNoZS5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHbHlwaENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKICNpZm5kZWYgV2ViR2x5cGhDYWNoZV9oCiAjZGVmaW5lIFdlYkdseXBoQ2Fj
aGVfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQQm9keS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBCb2R5LmgJKHJldmlzaW9uIDEw
MTIyNCkJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHkuaDox
MDEyMjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQ
Qm9keS5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJIVFRQQm9keS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBCb2R5LmgJKHJldmlzaW9uIDEwMTIyMykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBCb2R5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAogI2lmbmRlZiBXZWJIVFRQQm9keV9oCiAj
ZGVmaW5lIFdlYkhUVFBCb2R5X2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRhdGEuaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgorI2luY2x1ZGUgIldlYkRh
dGEuaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlVSTC5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1l
c3BhY2UgV2ViQ29yZSB7IGNsYXNzIEZvcm1EYXRhOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBIZWFkZXJW
aXNpdG9yLmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCSh3b3JraW5nIGNv
cHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQ
TG9hZEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJIVFRQTG9hZEluZm8uaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQTG9hZEluZm8uaDoxMDEyMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQTG9hZEluZm8uaAkod29y
a2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViSFRUUExvYWRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViSFRUUExvYWRJbmZvLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBMb2FkSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaWZuZGVmIFdlYkhUVFBMb2FkSW5mb19o
CiAjZGVmaW5lIFdlYkhUVFBMb2FkSW5mb19oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYkltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkltYWdlRGVjb2Rlci5oCShyZXZp
c2lvbiAxMDEyMjQpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkltYWdl
RGVjb2Rlci5oOjEwMTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYkltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZURlY29kZXIu
aAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViSW1hZ2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAK
ICNpZm5kZWYgV2ViSW1hZ2VEZWNvZGVyX2gKICNkZWZpbmUgV2ViSW1hZ2VEZWNvZGVyX2gKIAot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYklt
YWdlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlh
YmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW1hZ2VEZWNvZGVyOyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk5ldHdvcmtTdGF0
ZU5vdGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViTmV0d29ya1N0YXRlTm90aWZpZXIuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJv
bSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5o
OjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTmV0d29y
a1N0YXRlTm90aWZpZXIuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTmV0d29ya1N0YXRlTm90aWZpZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJOZXR3b3JrU3RhdGVOb3RpZmllcl9o
CiAjZGVmaW5lIFdlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyX2gKIAotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVn
dWxhckV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAxMDEyMjQpCShm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmg6
MTAxMjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVn
dWxhckV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVndWxhckV4cHJlc3Npb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJSZWd1bGFyRXhwcmVz
c2lvbi5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5
ICszMSw5IEBACiAjaWZuZGVmIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gKICNkZWZpbmUgV2ViUmVn
dWxhckV4cHJlc3Npb25faAogCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2Vi
Tm9uQ29weWFibGUuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTm9uQ29w
eWFibGUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUZXh0Q2FzZVNl
bnNpdGl2aXR5LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaAkod29y
a2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViVGV4dERpcmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaAkocmV2aXNpb24gMTAxMjIzKQkoZnJv
bSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmg6MTAxMjIz
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dERpcmVj
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJUZXh0UnVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dFJ1bi5oCShyZXZpc2lvbiAxMDEyMjMpCShmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRSdW4uaDoxMDEyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUZXh0UnVuLmgJKHdvcmtp
bmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YlRleHRSdW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJUZXh0UnVuLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHRSdW4uaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJUZXh0UnVuX2gKICNkZWZpbmUgV2ViVGV4dFJ1bl9o
CiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKIAogI2lmZGVmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogbmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyBUZXh0UnVuOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZFNhZmVEYXRhLmgJKHJldmlzaW9uIDEwMTIy
MykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEu
aDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJU
aHJlYWRTYWZlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZFNhZmVEYXRhLmgJ
KHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYlRocmVhZFNhZmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAK
ICNpZm5kZWYgV2ViVGhyZWFkU2FmZURhdGFfaAogI2RlZmluZSBXZWJUaHJlYWRTYWZlRGF0YV9o
CiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJp
dmF0ZVB0ci5oIgogCiAjaWYgIVdFQktJVF9JTVBMRU1FTlRBVElPTgogI2luY2x1ZGUgPHN0cmlu
Zz4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTEVy
cm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViVVJMRXJyb3IuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxFcnJvci5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTEVycm9yLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTEVycm9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJM
RXJyb3IuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViVVJMRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBA
QAogI2lmbmRlZiBXZWJVUkxFcnJvcl9oCiAjZGVmaW5lIFdlYlVSTEVycm9yX2gKIAotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogCiAjaWYgZGVmaW5l
ZChXRUJLSVRfSU1QTEVNRU5UQVRJT04pCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291
cmNlRXJyb3I7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYlVSTExvYWRUaW1pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkVGltaW5nLmgJKHJldmlzaW9uIDEwMTIyMykJKGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oOjEwMTIy
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRU
aW1pbmcuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViVVJMTG9hZFRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcuaAkocmV2aXNpb24g
MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJM
TG9hZFRpbWluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaWZuZGVmIFdl
YlVSTExvYWRUaW1pbmdfaAogI2RlZmluZSBXZWJVUkxMb2FkVGltaW5nX2gKIAotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIu
aCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5nOyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVS
TExvYWRlci5oCShyZXZpc2lvbiAxMDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gRklYTUU6IE1vdmUgdGhlc2UgY2xhc3Nl
cyBpbnRvIHBsYXRmb3JtLgogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYlVSTExvYWRlckNsaWVu
dDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQuaAkocmV2
aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxM
b2FkZXJDbGllbnQuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlcXVl
c3QuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVUkxSZXF1ZXN0Lmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVxdWVz
dC5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAK
ICNpZm5kZWYgV2ViVVJMUmVxdWVzdF9oCiAjZGVmaW5lIFdlYlVSTFJlcXVlc3RfaAogCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViSFRUUEJvZHkuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJDb21tb24uaCIKIAogI2lmIGRlZmluZWQoV0VCS0lUX0lNUExFTUVOVEFUSU9O
KQogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7IH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJM
UmVzcG9uc2UuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
VVJMUmVzcG9uc2UuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsOCBAQAogI2lmbmRlZiBXZWJVUkxSZXNwb25zZV9oCiAjZGVmaW5lIFdlYlVSTFJlc3Bv
bnNlX2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlByaXZhdGVPd25QdHIuaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlT3duUHRyLmgiCiAKICNpZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElP
TikKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsgfQpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVmlkZW9GcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlZp
ZGVvRnJhbWUuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViVmlkZW9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116717</attachid>
            <date>2011-11-28 02:17:28 -0800</date>
            <delta_ts>2011-11-28 09:33:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73198-20111128021726.patch</filename>
            <type>text/plain</type>
            <size>96893</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDEyMzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0
IEBACisyMDExLTExLTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBNb3ZlICJmaW5hbCIgYmF0Y2ggb2YgaGVhZGVycyBpbnRvIHB1YmxpYy9w
bGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIG1vdmVzIGFub3RoZXIgZ3JvdXAgb2YgaGVhZGVycyBpbnRvIHRoZSBwbGF0Zm9y
bSBkaXJlY3RvcnkuCisgICAgICAgIEkgZm91bmQgdGhlc2UgaGVhZGVycyBieSByZWFkaW5nIHRo
cm91Z2ggdGhlIGxpc3Qgb2YgaGVhZGVycyBhbmQKKyAgICAgICAgY29vcmVsYXRpbmcgdGhlbSB3
aXRoIFdlYkNvcmUgY29uY2VwdHMuICBUaGlzIHBhdGNoIHNob3VsZCBiZSB0aGUgbGFzdAorICAg
ICAgICBidWxrIG1vdmUgb2YgaGVhZGVycy4KKworICAgICAgICBUaGVyZSBhcmUgdGhyZWUgZ3Jv
dXBzIG9mIGhlYWRlcnMgdGhhdCBtYWtlIHVwIHRoZSBidWxrIG9mIHRoaXMgcGF0Y2g6CisKKyAg
ICAgICAgMSkgRm9udC1yZWxhdGVkIGhlYWRlcnMuCisgICAgICAgIDIpIFVSTExvYWRlci1yZWxh
dGVkIGhlYWRlcnMuCisgICAgICAgIDMpIEdlb21ldHJ5LXJlbHRhZWQgaGVhZGVycy4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaDogUmVwbGFjZWQuCisgICAgICAgICog
cHVibGljL1dlYkJsb2JEYXRhLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJDb29r
aWUuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYkRhdGFTb3VyY2UuaDoKKyAgICAg
ICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViRmxvYXRQb2ludC5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmxvYXRRdWFk
Lmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJGbG9hdFJlY3QuaDogUmVwbGFjZWQu
CisgICAgICAgICogcHVibGljL1dlYkZvbnQuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGlj
L1dlYkZvbnRDYWNoZS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRm9udERlc2Ny
aXB0aW9uLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVudC5oOgor
ICAgICAgICAqIHB1YmxpYy9XZWJHbHlwaENhY2hlLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1
YmxpYy9XZWJIVFRQQm9keS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViSFRUUEhl
YWRlclZpc2l0b3IuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYkhUVFBMb2FkSW5m
by5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmg6IFJlcGxh
Y2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJNZW51SXRlbUluZm8uaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTmV0d29ya1N0YXRlTm90
aWZpZXIuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYk5vdGlmaWNhdGlvbi5oOgor
ICAgICAgICAqIHB1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oOiBSZXBsYWNlZC4KKyAgICAg
ICAgKiBwdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oOiBSZXBsYWNlZC4KKyAgICAgICAg
KiBwdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMv
V2ViVGV4dFJ1bi5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVGhyZWFkU2FmZURh
dGEuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlVSTEVycm9yLmg6IFJlcGxhY2Vk
LgorICAgICAgICAqIHB1YmxpYy9XZWJVUkxMb2FkVGltaW5nLmg6IFJlcGxhY2VkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVi
bGljL1dlYlVSTFJlcXVlc3QuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlVSTFJl
c3BvbnNlLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJWaWRlb0ZyYW1lLmg6IFJl
cGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYldpZGdldC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXRDbGllbnQuaDoKKyAg
ICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFycmF5QnVmZmVyVmlldy5oLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oLgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9XZWJDb29raWUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29va2llLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9p
bnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQ
b2ludC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmguCisgICAg
ICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaC4KKyAgICAgICAgKiBwdWJsaWMv
cGxhdGZvcm0vV2ViRm9udC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGb250LmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZvbnRDYWNoZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUu
aC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViRm9udERlc2NyaXB0aW9uLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnREZXNjcmlwdGlvbi5o
LgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJHbHlwaENhY2hlLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdseXBoQ2FjaGUuaC4KKyAgICAgICAg
KiBwdWJsaWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHkuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViSFRUUEhlYWRlclZpc2l0b3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViSFRUUExvYWRJbmZvLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9X
ZWJJbWFnZURlY29kZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSW1hZ2VEZWNvZGVyLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk5ldHdv
cmtTdGF0ZU5vdGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3Jt
L1dlYlJlZ3VsYXJFeHByZXNzaW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmguCisgICAgICAgICogcHVibGljL3BsYXRm
b3JtL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oLgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJUZXh0RGlyZWN0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlRleHREaXJlY3Rpb24uaC4KKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViVGV4dFJ1bi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0UnVuLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZFNh
ZmVEYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRo
cmVhZFNhZmVEYXRhLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlVSTEVycm9yLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTEVycm9yLmgu
CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXIuaDoKKyAgICAgICAgKiBwdWJsaWMv
cGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oLgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9XZWJVUkxSZXF1ZXN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlVSTFJlcXVlc3QuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2Vi
VVJMUmVzcG9uc2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVVJMUmVzcG9uc2UuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViVmlkZW9GcmFt
ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0Zy
YW1lLmguCisKIDIwMTEtMTEtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBkZWxldGUgV2ViRGV2VG9v
bHNBZ2VudDo6ZnJvbnRlbmRMb2FkZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkFycmF5QnVmZmVyVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkFycmF5QnVmZmVyVmlldy5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw2NCArMiwzMiBAQAogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CiAgKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAg
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQXJy
YXlCdWZmZXJWaWV3X2gKLSNkZWZpbmUgV2ViQXJyYXlCdWZmZXJWaWV3X2gKLQotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIu
aCIKLQotbmFtZXNwYWNlIFdURiB7IGNsYXNzIEFycmF5QnVmZmVyVmlldzsgfQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotLy8gUHJvdmlkZXMgYWNjZXNzIHRvIGFuIEFycmF5QnVmZmVyVmlldy4K
LWNsYXNzIFdlYkFycmF5QnVmZmVyVmlldyB7Ci1wdWJsaWM6Ci0gICAgfldlYkFycmF5QnVmZmVy
VmlldygpIHsgcmVzZXQoKTsgfQotICAgIFdlYkFycmF5QnVmZmVyVmlldygpIHsgfQotICAgIFdl
YkFycmF5QnVmZmVyVmlldyhjb25zdCBXZWJBcnJheUJ1ZmZlclZpZXcmIHYpIHsgYXNzaWduKHYp
OyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQqIGJhc2VBZGRyZXNzKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBieXRlT2Zmc2V0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXNzaWduKGNvbnN0IFdlYkFycmF5QnVmZmVyVmlldyYpOwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCByZXNldCgpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQXJyYXlC
dWZmZXJWaWV3KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXVEY6OkFycmF5QnVmZmVyVmlldz4mKTsK
LSAgICBXZWJBcnJheUJ1ZmZlclZpZXcmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V1RGOjpBcnJheUJ1ZmZlclZpZXc+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdU
Rjo6QXJyYXlCdWZmZXJWaWV3PigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgV2Vi
UHJpdmF0ZVB0cjxXVEY6OkFycmF5QnVmZmVyVmlldz4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFU
Rk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkFycmF5QnVmZmVyVmlldy5oIgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRhLmgJKHJldmlz
aW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTI4LDY3ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV2ViQmxvYkRhdGFfaAotI2RlZmluZSBXZWJCbG9iRGF0YV9oCi0KLSNpbmNsdWRl
ICJXZWJUaHJlYWRTYWZlRGF0YS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEJsb2JEYXRhOyB9Ci1uYW1lc3BhY2UgV1RGIHsg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NPd25QdHI7IH0KKyNpZm5kZWYgV0VCS0lU
X01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkJsb2JE
YXRhLmgiCiAjZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkJsb2JEYXRh
UHJpdmF0ZTsKLQotY2xhc3MgV2ViQmxvYkRhdGEgewotcHVibGljOgotICAgIHN0cnVjdCBJdGVt
IHsKLSAgICAgICAgZW51bSB7IFR5cGVEYXRhLCBUeXBlRmlsZSwgVHlwZUJsb2IgfSB0eXBlOwot
ICAgICAgICBXZWJUaHJlYWRTYWZlRGF0YSBkYXRhOwotICAgICAgICBXZWJTdHJpbmcgZmlsZVBh
dGg7Ci0gICAgICAgIFdlYlVSTCBibG9iVVJMOwotICAgICAgICBsb25nIGxvbmcgb2Zmc2V0Owot
ICAgICAgICBsb25nIGxvbmcgbGVuZ3RoOyAvLyAtMSBtZWFucyBnbyB0byB0aGUgZW5kIG9mIHRo
ZSBmaWxlL2Jsb2IuCi0gICAgICAgIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7IC8v
IDAuMCBtZWFucyB0aGF0IHRoZSB0aW1lIGlzIG5vdCBzZXQuCi0gICAgfTsKLQotICAgIH5XZWJC
bG9iRGF0YSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViQmxvYkRhdGEoKSA6IG1fcHJpdmF0ZSgw
KSB7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX3ByaXZhdGU7IH0KLQotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcy4KLSAg
ICBXRUJLSVRfRVhQT1JUIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdDsKLQotICAgIC8vIFJldHJp
ZXZlcyB0aGUgdmFsdWVzIG9mIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBpbmRleC4gIFJldHVybnMg
ZmFsc2UgaWYKLSAgICAvLyBpbmRleCBpcyBvdXQgb2YgYm91bmRzLgotICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBpdGVtQXQoc2l6ZV90IGluZGV4LCBJdGVtJiByZXN1bHQpIGNvbnN0OwotCi0gICAg
V0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgY29udGVudFR5cGUoKSBjb25zdDsKLQotICAgIFdFQktJ
VF9FWFBPUlQgV2ViU3RyaW5nIGNvbnRlbnREaXNwb3NpdGlvbigpIGNvbnN0OwotCi0jaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQmxvYkRhdGEoY29uc3QgV1RGOjpQYXNzT3duUHRy
PFdlYkNvcmU6OkJsb2JEYXRhPiYpOwotICAgIFdlYkJsb2JEYXRhJiBvcGVyYXRvcj0oY29uc3Qg
V1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiYpOwotICAgIG9wZXJhdG9yIFdURjo6
UGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4oKTsKLSNlbmRpZgotCi1wcml2YXRlOgotI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHZvaWQgYXNzaWduKGNvbnN0IFdURjo6UGFzc093
blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4mKTsKLSNlbmRpZgotICAgIFdlYkJsb2JEYXRhUHJpdmF0
ZSogbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBX
ZWJCbG9iRGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb29r
aWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb29r
aWUuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29va2llLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDUwICsyOCw2IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViQ29va2llX2gKLSNkZWZpbmUgV2ViQ29va2llX2gKLQotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViU3RyaW5nOwotCi0vLyBBIGNv
b2tpZS4KLS8vCi1zdHJ1Y3QgV2ViQ29va2llIHsKLSAgICBXZWJDb29raWUoKQotICAgICAgICA6
IGV4cGlyZXMoMCkKLSAgICAgICAgLCBodHRwT25seShmYWxzZSkKLSAgICAgICAgLCBzZWN1cmUo
ZmFsc2UpCi0gICAgICAgICwgc2Vzc2lvbihmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2Vi
Q29va2llKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSwgY29u
c3QgV2ViU3RyaW5nJiBkb21haW4sCi0gICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcGF0
aCwgZG91YmxlIGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksIGJvb2wgc2VjdXJlLCBib29sIHNlc3Np
b24pCi0gICAgICAgIDogbmFtZShuYW1lKQotICAgICAgICAsIHZhbHVlKHZhbHVlKQotICAgICAg
ICAsIGRvbWFpbihkb21haW4pCi0gICAgICAgICwgcGF0aChwYXRoKQotICAgICAgICAsIGV4cGly
ZXMoZXhwaXJlcykKLSAgICAgICAgLCBodHRwT25seShodHRwT25seSkKLSAgICAgICAgLCBzZWN1
cmUoc2VjdXJlKQotICAgICAgICAsIHNlc3Npb24oc2Vzc2lvbikKLSAgICB7Ci0gICAgfQotCi0g
ICAgV2ViU3RyaW5nIG5hbWU7Ci0gICAgV2ViU3RyaW5nIHZhbHVlOwotICAgIFdlYlN0cmluZyBk
b21haW47Ci0gICAgV2ViU3RyaW5nIHBhdGg7Ci0gICAgZG91YmxlIGV4cGlyZXM7Ci0gICAgYm9v
bCBodHRwT25seTsKLSAgICBib29sIHNlY3VyZTsKLSAgICBib29sIHNlc3Npb247Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RP
X1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29va2llLmgiCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFTb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291cmNlLmgJKHJldmlz
aW9uIDEwMTIzMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFTb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogI2RlZmluZSBXZWJEYXRhU291
cmNlX2gKIAogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCi0jaW5jbHVkZSAiV2ViVGV4
dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOSArMjYsOSBAQAogI2lmbmRlZiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcl9oCiAjZGVmaW5l
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyX2gKIAotI2luY2x1ZGUgIldlYkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIldlYkxheWVyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaAkocmV2aXNpb24gMTAxMjIzKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQb2ludC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yOCw2NCArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZs
b2F0UG9pbnRfaAotI2RlZmluZSBXZWJGbG9hdFBvaW50X2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRmxv
YXRQb2ludCB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdCB5OwotCi0gICAgV2ViRmxvYXRQb2lu
dCgpCi0gICAgICAgIDogeCgwLjBmKQotICAgICAgICAsIHkoMC4wZikKLSAgICB7Ci0gICAgfQot
Ci0gICAgV2ViRmxvYXRQb2ludChmbG9hdCB4LCBmbG9hdCB5KQotICAgICAgICA6IHgoeCkKLSAg
ICAgICAgLCB5KHkpCi0gICAgewotICAgIH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgot
ICAgIFdlYkZsb2F0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcCkKLSAgICAgICAg
OiB4KHAueCgpKQotICAgICAgICAsIHkocC55KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYkZs
b2F0UG9pbnQmIG9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwKQotICAgIHsK
LSAgICAgICAgeCA9IHAueCgpOwotICAgICAgICB5ID0gcC55KCk7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBXZWJDb3JlOjpGbG9hdFBvaW50KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHgsIHkpOwotICAgIH0K
LSNlbmRpZgotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGbG9hdFBvaW50
JiBhLCBjb25zdCBXZWJGbG9hdFBvaW50JiBiKQotewotICAgIHJldHVybiBhLnggPT0gYi54ICYm
IGEueSA9PSBiLnk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViRmxvYXRQ
b2ludCYgYSwgY29uc3QgV2ViRmxvYXRQb2ludCYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9I
RUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFF1YWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFF1
YWQuaAkocmV2aXNpb24gMTAxMjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmxvYXRRdWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDU1ICsyOCw2IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRmxvYXRRdWFkX2gKLSNkZWZpbmUgV2ViRmxvYXRR
dWFkX2gKLQotI2luY2x1ZGUgIldlYkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCi0KLSNpbmNsdWRlIDxh
bGdvcml0aG0+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
LSNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
c3RydWN0IFdlYkZsb2F0UXVhZCB7Ci0gICAgV2ViRmxvYXRQb2ludCBwWzRdOwotCi0gICAgV2Vi
RmxvYXRRdWFkKCkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViRmxvYXRRdWFkKGNvbnN0IFdlYkZs
b2F0UG9pbnQmIHAwLCBjb25zdCBXZWJGbG9hdFBvaW50JiBwMSwgY29uc3QgV2ViRmxvYXRQb2lu
dCYgcDIsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIHAzKQotICAgIHsKLSAgICAgICAgcFswXSA9IHAw
OwotICAgICAgICBwWzFdID0gcDE7Ci0gICAgICAgIHBbMl0gPSBwMjsKLSAgICAgICAgcFszXSA9
IHAzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgV2ViUmVjdCBlbmNsb3NpbmdSZWN0KCkg
Y29uc3Q7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJGbG9hdFF1YWQmIG9w
ZXJhdG9yPShjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmIHEpCi0gICAgewotICAgICAgICBwWzBd
ID0gcS5wMSgpOwotICAgICAgICBwWzFdID0gcS5wMigpOwotICAgICAgICBwWzJdID0gcS5wMygp
OwotICAgICAgICBwWzNdID0gcS5wNCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
ICAgIFdlYkZsb2F0UXVhZChjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmIHEpCi0gICAgewotICAg
ICAgICAqdGhpcyA9IHE7Ci0gICAgfQotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZsb2F0UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UmVjdC5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtMjgsNzYgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGbG9h
dFJlY3RfaAotI2RlZmluZSBXZWJGbG9hdFJlY3RfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZsb2F0UmVj
dCB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdCB5OwotICAgIGZsb2F0IHdpZHRoOwotICAgIGZs
b2F0IGhlaWdodDsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHdpZHRoIDw9
IDAgfHwgaGVpZ2h0IDw9IDA7IH0KLQotICAgIFdlYkZsb2F0UmVjdCgpCi0gICAgICAgIDogeCgw
LjBmKQotICAgICAgICAsIHkoMC4wZikKLSAgICAgICAgLCB3aWR0aCgwLjBmKQotICAgICAgICAs
IGhlaWdodCgwLjBmKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJGbG9hdFJlY3QoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLSAgICAgICAgOiB4KHgpCi0gICAg
ICAgICwgeSh5KQotICAgICAgICAsIHdpZHRoKHdpZHRoKQotICAgICAgICAsIGhlaWdodChoZWln
aHQpCi0gICAgewotICAgIH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkZs
b2F0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHIpCi0gICAgICAgIDogeChyLngoKSkK
LSAgICAgICAgLCB5KHIueSgpKQotICAgICAgICAsIHdpZHRoKHIud2lkdGgoKSkKLSAgICAgICAg
LCBoZWlnaHQoci5oZWlnaHQoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViRmxvYXRSZWN0JiBv
cGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByKQotICAgIHsKLSAgICAgICAgeCA9
IHIueCgpOwotICAgICAgICB5ID0gci55KCk7Ci0gICAgICAgIHdpZHRoID0gci53aWR0aCgpOwot
ICAgICAgICBoZWlnaHQgPSByLmhlaWdodCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAg
fQotCi0gICAgb3BlcmF0b3IgV2ViQ29yZTo6RmxvYXRSZWN0KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAg
fQotI2VuZGlmCi19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYkZsb2F0UmVj
dCYgYSwgY29uc3QgV2ViRmxvYXRSZWN0JiBiKQotewotICAgIHJldHVybiBhLnggPT0gYi54ICYm
IGEueSA9PSBiLnkgJiYgYS53aWR0aCA9PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09IGIuaGVpZ2h0
OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYkZsb2F0UmVjdCYgYSwgY29u
c3QgV2ViRmxvYXRSZWN0JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExB
VEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFJlY3QuaCIKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnQuaAkocmV2aXNpb24gMTAxMjI0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yOCw3MyArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZvbnRf
aAotI2RlZmluZSBXZWJGb250X2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbG9yLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29t
bW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRm9udERlc2NyaXB0aW9u
Owotc3RydWN0IFdlYkZsb2F0UG9pbnQ7Ci1zdHJ1Y3QgV2ViRmxvYXRSZWN0Owotc3RydWN0IFdl
YlBvaW50Owotc3RydWN0IFdlYlJlY3Q7Ci1zdHJ1Y3QgV2ViVGV4dFJ1bjsKLQotY2xhc3MgV2Vi
Rm9udCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViRm9udCgpIHsgfQotCi0gICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgV2ViRm9udCogY3JlYXRlKGNvbnN0IFdlYkZvbnREZXNjcmlwdGlvbiYp
OwotCi0gICAgdmlydHVhbCBXZWJGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uKCkgY29u
c3QgPSAwOwotCi0gICAgdmlydHVhbCBpbnQgYXNjZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgaW50IGRlc2NlbnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgaW50IGxpbmVTcGFjaW5nKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgZmxvYXQgeEhlaWdodCgpIGNvbnN0ID0gMDsKLQotICAgIC8vIERyYXdzIHRoZSB0ZXh0
IHJ1biB0byB0aGUgZ2l2ZW4gY2FudmFzLiBUaGUgdGV4dCBpcyBwb3NpdGlvbmVkIGF0IHRoZQot
ICAgIC8vIGdpdmVuIGxlZnQtaGFuZCBwb2ludCBhdCB0aGUgYmFzZWxpbmUuCi0gICAgLy8KLSAg
ICAvLyBUaGUgdGV4dCB3aWxsIGJlIGNsaXBwZWQgdG8gdGhlIGdpdmVuIGNsaXAgcmVjdC4gfGNh
bnZhc0lzT3BhcXVlfCBpcwotICAgIC8vIHVzZWQgdG8gY29udHJvbCB3aGV0aGVyIHN1YnBpeGVs
IGFudGlhbGlhc2luZyBpcyBwb3NzaWJsZS4gSWYgdGhlcmUgaXMgYQotICAgIC8vIHBvc3NpYmls
aXR5IHRoZSBhcmVhIGRyYXduIGNvdWxkIGJlIHNlbWktdHJhbnNwYXJlbnQsIHN1YnBpeGVsCi0g
ICAgLy8gYW50aWFsaWFzaW5nIHdpbGwgYmUgZGlzYWJsZWQuCi0gICAgLy8KLSAgICAvLyB8ZnJv
bXwgYW5kIHx0b3wgYWxsb3cgdGhlIGNhbGxlciB0byBzcGVjaWZ5IGEgc3VicmFuZ2Ugb2YgdGhl
IGdpdmVuIHRleHQKLSAgICAvLyBydW4gdG8gZHJhdy4gSWYgfHRvfCBpcyAtMSwgdGhlIGVudGly
ZSBydW4gd2lsbCBiZSBkcmF3bi4KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHQoV2ViQ2FudmFz
KiwgY29uc3QgV2ViVGV4dFJ1biYsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIGxlZnRCYXNlbGluZSwg
V2ViQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIGNsaXAs
IGJvb2wgY2FudmFzSXNPcGFxdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9t
ID0gMCwgaW50IHRvID0gLTEpIGNvbnN0ID0gMDsKLQotICAgIC8vIE1lYXN1cmVzIHRoZSB3aWR0
aCBpbiBwaXhlbHMgb2YgdGhlIGdpdmVuIHRleHQgcnVuLgotICAgIHZpcnR1YWwgaW50IGNhbGN1
bGF0ZVdpZHRoKGNvbnN0IFdlYlRleHRSdW4mKSBjb25zdCA9IDA7Ci0KLSAgICAvLyBSZXR1cm5z
IHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGhvcml6b250
YWwgcGl4ZWwKLSAgICAvLyBwb3NpdGlvbiBhcyBtZWFzdXJlZCBmcm9tIGZyb20gdGhlIGxlZnQg
b2YgdGhlIHJ1bi4KLSAgICB2aXJ0dWFsIGludCBvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBXZWJU
ZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24pIGNvbnN0ID0gMDsKLQotICAgIC8vIFJldHVybnMgdGhl
IHJlY3RhbmdsZSByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGlvbiByZWN0IGZvciB0aGUgc3VicmFu
Z2UKLSAgICAvLyB8ZnJvbXwgLT4gfHRvfCBvZiB0aGUgZ2l2ZW4gdGV4dCBydW4uIFlvdSBjYW4g
dXNlIC0xIGZvciB8dG98IHRvIHNwZWNpZnkKLSAgICAvLyB0aGUgZW50aXJlIHJ1biAodGhpcyB3
aWxsIGRvIHNvbWV0aGluZyBzaW1pbGFyIHRvIGNhbGxpbmcgd2lkdGgoKSkuCi0gICAgLy8KLSAg
ICAvLyBUaGUgcmVjdCB3aWxsIGJlIHBvc2l0aW9uZWQgYXMgaWYgdGhlIHRleHQgd2FzIGRyYXdu
IGF0IHRoZSBnaXZlbgotICAgIC8vIHxsZWZ0QmFzZWxpbmV8IHBvc2l0aW9uLiB8aGVpZ2h0fCBp
bmRpY2F0ZXMgdGhlIGhlaWdodCBvZiB0aGUgc2VsZWN0aW9uCi0gICAgLy8gcmVjdCB5b3Ugd2Fu
dCwgdHlwaWNhbGx5IHRoaXMgd2lsbCBqdXN0IGJlIHRoZSBoZWlnaHQoKSBvZiB0aGlzIGZvbnQu
Ci0gICAgLy8KLSAgICAvLyBUbyBnZXQgdGhlIHBpeGVsIG9mZnNldCBvZiBzb21lIGNoYXJhY3Rl
ciAodGhlIG9wcG9zaXRlIG9mCi0gICAgLy8gb2Zmc2V0Rm9yUG9zaXRpb24oKSksIHBhc3MgaW4g
YSB8bGVmdEJhc2VsaW5lfCA9ICgwLCAwKSwgfGZyb218ID0gMCwgYW5kCi0gICAgLy8gfHRvfCA9
IHRoZSBjaGFyYWN0ZXIgeW91IHdhbnQuIFRoZSByaWdodCBlZGdlIG9mIHRoZSByZXN1bHRpbmcg
c2VsZWN0aW9uCi0gICAgLy8gcmVjdCB3aWxsIHRlbGwgeW91IHRoZSByaWdodCBzaWRlIG9mIHRo
ZSBjaGFyYWN0ZXIuCi0gICAgdmlydHVhbCBXZWJGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdEZvclRl
eHQoY29uc3QgV2ViVGV4dFJ1biYsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIGxlZnRCYXNlbGluZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0
LCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdCA9IDA7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JN
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRm9udC5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250Q2FjaGUuaAkocmV2aXNpb24gMTAxMjIzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udENhY2hlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTI4LDMyICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
Rm9udENhY2hlX2gKLSNkZWZpbmUgV2ViRm9udENhY2hlX2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQW4gaW50ZXJmYWNlIHRv
IHF1ZXJ5IGFuZCBjb25maWd1cmUgV2ViS2l0J3MgZm9udCBjYWNoZS4KLWNsYXNzIFdlYkZvbnRD
YWNoZSB7Ci1wdWJsaWM6Ci0gICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRo
ZSBmb250IGRhdGEgY2FjaGUuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgc2l6ZV90IGZvbnRE
YXRhQ291bnQoKTsKLQotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBpbmFjdGl2ZSBpdGVt
cyBpbiB0aGUgZm9udCBkYXRhIGNhY2hlLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIHNpemVf
dCBpbmFjdGl2ZUZvbnREYXRhQ291bnQoKTsKLQotICAgIC8vIENsZWFycyB0aGUgY2FjaGUuCi0g
ICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhcigpOwotCi0gICAgLy8gUHVyZ2VzIGlu
YWN0aXZlIGZvbnQgZGF0YS4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHBydW5lKCk7
Ci0KLXByaXZhdGU6Ci0gICAgV2ViRm9udENhY2hlKCk7ICAvLyBOb3QgaW50ZW5kZWQgdG8gYmUg
aW5zdGFuY2VkLgotfTsKLQotfSAgLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJ
VF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGb250
Q2FjaGUuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Rm9udERlc2NyaXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRm9udERlc2NyaXB0aW9uLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnREZXNjcmlwdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yOCw3OSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZvbnRE
ZXNjcmlwdGlvbl9oCi0jZGVmaW5lIFdlYkZvbnREZXNjcmlwdGlvbl9oCi0KLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNw
YWNlIFdlYkNvcmUgeyBjbGFzcyBGb250RGVzY3JpcHRpb247IH0KLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbiB7Ci0gICAgZW51bSBHZW5l
cmljRmFtaWx5IHsKLSAgICAgICAgR2VuZXJpY0ZhbWlseU5vbmUsCi0gICAgICAgIEdlbmVyaWNG
YW1pbHlTdGFuZGFyZCwKLSAgICAgICAgR2VuZXJpY0ZhbWlseVNlcmlmLAotICAgICAgICBHZW5l
cmljRmFtaWx5U2Fuc1NlcmlmLAotICAgICAgICBHZW5lcmljRmFtaWx5TW9ub3NwYWNlLAotICAg
ICAgICBHZW5lcmljRmFtaWx5Q3Vyc2l2ZSwKLSAgICAgICAgR2VuZXJpY0ZhbWlseUZhbnRhc3kK
LSAgICB9OwotCi0gICAgZW51bSBTbW9vdGhpbmcgewotICAgICAgICBTbW9vdGhpbmdBdXRvLAot
ICAgICAgICBTbW9vdGhpbmdOb25lLAotICAgICAgICBTbW9vdGhpbmdHcmF5c2NhbGUsCi0gICAg
ICAgIFNtb290aGluZ1N1YnBpeGVsCi0gICAgfTsKLQotICAgIGVudW0gV2VpZ2h0IHsgCi0gICAg
ICAgIFdlaWdodDEwMCwKLSAgICAgICAgV2VpZ2h0MjAwLAotICAgICAgICBXZWlnaHQzMDAsCi0g
ICAgICAgIFdlaWdodDQwMCwKLSAgICAgICAgV2VpZ2h0NTAwLAotICAgICAgICBXZWlnaHQ2MDAs
Ci0gICAgICAgIFdlaWdodDcwMCwKLSAgICAgICAgV2VpZ2h0ODAwLAotICAgICAgICBXZWlnaHQ5
MDAsCi0gICAgICAgIFdlaWdodE5vcm1hbCA9IFdlaWdodDQwMCwKLSAgICAgICAgV2VpZ2h0Qm9s
ZCA9IFdlaWdodDcwMAotICAgIH07Ci0KLSAgICBXZWJGb250RGVzY3JpcHRpb24oKQotICAgICAg
ICA6IGdlbmVyaWNGYW1pbHkoR2VuZXJpY0ZhbWlseU5vbmUpCi0gICAgICAgICwgc2l6ZSgwKQot
ICAgICAgICAsIGl0YWxpYyhmYWxzZSkKLSAgICAgICAgLCBzbWFsbENhcHMoZmFsc2UpCi0gICAg
ICAgICwgd2VpZ2h0KFdlaWdodE5vcm1hbCkKLSAgICAgICAgLCBzbW9vdGhpbmcoU21vb3RoaW5n
QXV0bykKLSAgICAgICAgLCBsZXR0ZXJTcGFjaW5nKDApCi0gICAgICAgICwgd29yZFNwYWNpbmco
MCkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViU3RyaW5nIGZhbWlseTsKLSAgICBHZW5lcmljRmFt
aWx5IGdlbmVyaWNGYW1pbHk7Ci0gICAgZmxvYXQgc2l6ZTsKLSAgICBib29sIGl0YWxpYzsKLSAg
ICBib29sIHNtYWxsQ2FwczsKLSAgICBXZWlnaHQgd2VpZ2h0OwotICAgIFNtb290aGluZyBzbW9v
dGhpbmc7Ci0KLSAgICBzaG9ydCBsZXR0ZXJTcGFjaW5nOwotICAgIHNob3J0IHdvcmRTcGFjaW5n
OwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViRm9udERlc2NyaXB0aW9uKGNv
bnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbiYsIHNob3J0IGZvbnRMZXR0ZXJTcGFjaW5nLCBz
aG9ydCBmb250V29yZFNwYWNpbmcpOwotCi0gICAgb3BlcmF0b3IgV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisj
aWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJGb250RGVzY3JpcHRpb24uaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiAxMDEyMzApCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5
LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdl
UXVvdGFUeXBlLmgiCi0jaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgotI2luY2x1ZGUgIldl
YlVSTEVycm9yLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRleHREaXJl
Y3Rpb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxFcnJvci5oIgogCiAjaWYgV0VCS0lU
X1VTSU5HX1Y4CiAjaW5jbHVkZSA8djguaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdseXBoQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJHbHlwaENhY2hlLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdseXBoQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgs
MjQgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJHbHlwaENhY2hl
X2gKLSNkZWZpbmUgV2ViR2x5cGhDYWNoZV9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEFuIGludGVyZmFjZSB0byBxdWVyeSBX
ZWJLaXQncyBnbHlwaCBjYWNoZSAod2hpY2ggbWFwcyB1bmljb2RlIGNoYXJhY3RlcnMgdG8KLS8v
IGdseXBocyBpbiBwYXJ0aWN1bGFyIGZvbnRzKS4KLWNsYXNzIFdlYkdseXBoQ2FjaGUgewotcHVi
bGljOgotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgZ2x5cGggY2Fj
aGUuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgc2l6ZV90IHBhZ2VDb3VudCgpOwotCi1wcml2
YXRlOgotICAgIFdlYkdseXBoQ2FjaGUoKTsgIC8vIE5vdCBpbnRlbmRlZCB0byBiZSBpbnN0YW5j
ZWQuCi19OwotCi19ICAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JB
VEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdseXBoQ2FjaGUu
aCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJv
ZHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQ
Qm9keS5oCShyZXZpc2lvbiAxMDEyMjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJIVFRQQm9keS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw4MiArMjgsNiBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkhUVFBCb2R5X2gKLSNkZWZpbmUgV2ViSFRUUEJvZHlf
aAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRGF0YS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
Yk5vbkNvcHlhYmxlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViVVJMLmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLW5hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgRm9ybURhdGE7IH0KLW5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1jbGFzcyBXZWJIVFRQQm9keVByaXZhdGU7Ci0KLWNsYXNzIFdlYkhUVFBCb2R5
IHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgRWxlbWVudCB7Ci0gICAgICAgIGVudW0gVHlwZSB7IFR5
cGVEYXRhLCBUeXBlRmlsZSwgVHlwZUJsb2IgfSB0eXBlOwotICAgICAgICBXZWJEYXRhIGRhdGE7
Ci0gICAgICAgIFdlYlN0cmluZyBmaWxlUGF0aDsKLSAgICAgICAgbG9uZyBsb25nIGZpbGVTdGFy
dDsKLSAgICAgICAgbG9uZyBsb25nIGZpbGVMZW5ndGg7IC8vIC0xIG1lYW5zIHRvIHRoZSBlbmQg
b2YgdGhlIGZpbGUuCi0gICAgICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwotICAgICAgICBX
ZWJVUkwgYmxvYlVSTDsKLSAgICB9OwotCi0gICAgfldlYkhUVFBCb2R5KCkgeyByZXNldCgpOyB9
Ci0KLSAgICBXZWJIVFRQQm9keSgpIDogbV9wcml2YXRlKDApIHsgfQotICAgIFdlYkhUVFBCb2R5
KGNvbnN0IFdlYkhUVFBCb2R5JiBiKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihiKTsgfQotICAg
IFdlYkhUVFBCb2R5JiBvcGVyYXRvcj0oY29uc3QgV2ViSFRUUEJvZHkmIGIpCi0gICAgewotICAg
ICAgICBhc3NpZ24oYik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNl
dCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSFRUUEJvZHkmKTsK
LQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQotCi0gICAg
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbXByaXNpbmcgdGhlIGh0dHAgYm9k
eS4KLSAgICBXRUJLSVRfRVhQT1JUIHNpemVfdCBlbGVtZW50Q291bnQoKSBjb25zdDsKLQotICAg
IC8vIFNldHMgdGhlIHZhbHVlcyBvZiB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXguICBS
ZXR1cm5zIGZhbHNlIGlmCi0gICAgLy8gaW5kZXggaXMgb3V0IG9mIGJvdW5kcy4KLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgZWxlbWVudEF0KHNpemVfdCBpbmRleCwgRWxlbWVudCYpIGNvbnN0Owot
Ci0gICAgLy8gQXBwZW5kIHRvIHRoZSBsaXN0IG9mIGVsZW1lbnRzLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFdlYkRhdGEmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXBwZW5kRmlsZShjb25zdCBXZWJTdHJpbmcmKTsKLSAgICAvLyBQYXNzaW5nIC0xIHRvIGZp
bGVMZW5ndGggbWVhbnMgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFdlYlN0cmluZyYsIGxvbmcgbG9uZyBmaWxlU3Rh
cnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSk7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgV2ViVVJMJik7Ci0KLSAgICAvLyBJ
ZGVudGlmaWVzIGEgcGFydGljdWxhciBmb3JtIHN1Ym1pc3Npb24gaW5zdGFuY2UuICBBIHZhbHVl
IG9mIDAgaXMKLSAgICAvLyB1c2VkIHRvIGluZGljYXRlIGFuIHVuc3BlY2lmaWVkIGlkZW50aWZp
ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCBsb25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJZGVudGlmaWVyKGxvbmcgbG9uZyk7Ci0KLSNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJIVFRQQm9keShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6Rm9ybURhdGE+Jik7Ci0gICAgV2ViSFRUUEJvZHkmIG9wZXJhdG9yPShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1EYXRhPigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6
Ci0gICAgdm9pZCBhc3NpZ24oV2ViSFRUUEJvZHlQcml2YXRlKik7Ci0gICAgdm9pZCBlbnN1cmVN
dXRhYmxlKCk7Ci0gICAgV2ViSFRUUEJvZHlQcml2YXRlKiBtX3ByaXZhdGU7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BM
QVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSFRUUEJvZHkuaCIKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQSGVhZGVyVmlz
aXRvci5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwyMSArMjgsNiBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkhUVFBIZWFkZXJWaXNpdG9yX2gKLSNk
ZWZpbmUgV2ViSFRUUEhlYWRlclZpc2l0b3JfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViU3RyaW5nOwotCi1jbGFzcyBXZWJIVFRQSGVhZGVyVmlzaXRvciB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB2b2lkIHZpc2l0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiB2YWx1ZSkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfldlYkhUVFBIZWFkZXJW
aXNpdG9yKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJL
SVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSFRU
UEhlYWRlclZpc2l0b3IuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSFRUUExvYWRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yOCw2MSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkhUVFBM
b2FkSW5mb19oCi0jZGVmaW5lIFdlYkhUVFBMb2FkSW5mb19oCi0KLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwotfQotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLWNsYXNzIFdlYlN0cmluZzsKLQotY2xhc3MgV2ViSFRUUExvYWRJbmZvIHsK
LXB1YmxpYzoKLSAgICBXZWJIVFRQTG9hZEluZm8oKSB7IGluaXRpYWxpemUoKTsgfQotICAgIH5X
ZWJIVFRQTG9hZEluZm8oKSB7IHJlc2V0KCk7IH0KLSAgICBXZWJIVFRQTG9hZEluZm8oY29uc3Qg
V2ViSFRUUExvYWRJbmZvJiByKSB7IGFzc2lnbihyKTsgfQotICAgIFdlYkhUVFBMb2FkSW5mbyYg
b3BlcmF0b3IgPShjb25zdCBXZWJIVFRQTG9hZEluZm8mIHIpCi0gICAgeyAKLSAgICAgICAgYXNz
aWduKHIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkhUVFBMb2FkSW5mbyYgcik7Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIGludCBodHRwU3RhdHVzQ29kZSgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShpbnQpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCBXZWJTdHJpbmcgaHR0cFN0YXR1c1RleHQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0SFRUUFN0YXR1c1RleHQoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRFbmNvZGVkRGF0YUxlbmd0aChsb25nIGxvbmcpOwotCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFkZFJlcXVlc3RIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYWRkUmVzcG9uc2VIZWFk
ZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKLQotICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHJlcXVlc3RIZWFkZXJzVGV4dCgpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0SGVhZGVyc1RleHQoY29uc3QgV2ViU3RyaW5n
Jik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyByZXNwb25zZUhlYWRlcnNUZXh0KCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlc3BvbnNlSGVhZGVyc1RleHQoY29u
c3QgV2ViU3RyaW5nJik7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJIVFRQ
TG9hZEluZm8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZEluZm8+KTsKLSAg
ICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkSW5mbz4oKSBj
b25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkSW5mbz4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0K
KyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkhUVFBMb2FkSW5mby5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZURlY29kZXIuaAkocmV2aXNpb24gMTAxMjI0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTI4LDYzICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
V2ViSW1hZ2VEZWNvZGVyX2gKLSNkZWZpbmUgV2ViSW1hZ2VEZWNvZGVyX2gKLQotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
eyBjbGFzcyBJbWFnZURlY29kZXI7IH0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXR5cGVkZWYg
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyIFdlYkltYWdlRGVjb2RlclByaXZhdGU7Ci1jbGFzcyBXZWJE
YXRhOwotCi1jbGFzcyBXZWJJbWFnZURlY29kZXIgOiBwdWJsaWMgV2ViTm9uQ29weWFibGUgewot
cHVibGljOgotICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIFR5cGVCTVAsCi0gICAgICAgIFR5cGVJ
Q08KLSAgICB9OwotCi0gICAgfldlYkltYWdlRGVjb2RlcigpIHsgcmVzZXQoKTsgfQotCi0gICAg
ZXhwbGljaXQgV2ViSW1hZ2VEZWNvZGVyKFR5cGUgdHlwZSkgeyBpbml0KHR5cGUpOyB9Ci0KLSAg
ICAvLyBTZXRzIGRhdGEgY29udGVudHMgZm9yIHVuZGVybHlpbmcgZGVjb2Rlci4gQWxsIHRoZSBB
UEkgbWV0aG9kcwotICAgIC8vIHJlcXVpcmUgdGhhdCBzZXREYXRhKCkgaXMgY2FsbGVkIHByaW9y
IHRvIHRoZWlyIHVzZS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGF0YShjb25zdCBXZWJE
YXRhJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0KLSAgICAvLyBEZWxldGVzIG93bmVk
IGRlY29kZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0KLSAgICAvLyBSZXR1
cm5zIHRydWUgaWYgaW1hZ2UgZGVjb2RpbmcgZmFpbGVkLgotICAgIFdFQktJVF9FWFBPUlQgYm9v
bCBpc0ZhaWxlZCgpIGNvbnN0OwotICAgIAotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzaXplIGlu
Zm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGRlY29kZXIuCi0gICAgV0VCS0lUX0VYUE9S
VCBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0aGUgc2l6
ZSBvZiB0aGUgaW1hZ2UuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHNpemUoKSBjb25zdDsK
LQotICAgIC8vIEdpdmVzIGZyYW1lIGNvdW50IGZvciB0aGUgaW1hZ2UuIEZvciBtdWx0aXBsZSBm
cmFtZXMsIGRlY29kZXIgc2NhbnMgdGhlIGltYWdlIGRhdGEgZm9yIHRoZSBjb3VudC4KLSAgICBX
RUJLSVRfRVhQT1JUIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBSZXR1cm5z
IGlmIHRoZSBmcmFtZSBhdCBnaXZlbiBpbmRleCBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCi0gICAg
V0VCS0lUX0VYUE9SVCBib29sIGlzRnJhbWVDb21wbGV0ZUF0SW5kZXgoaW50IGluZGV4KSBjb25z
dDsKLQotICAgIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgV2ViSW1hZ2UgZnJvbSBidWZmZXIgYXQg
dGhlIGluZGV4LgotICAgIFdFQktJVF9FWFBPUlQgV2ViSW1hZ2UgZ2V0RnJhbWVBdEluZGV4KGlu
dCBpbmRleCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgLy8gQ3JlYXRlcyB0eXBlLXNwZWNpZmlj
IGRlY29kZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXQoVHlwZSB0eXBlKTsKLQotICAg
IFdlYkltYWdlRGVjb2RlclByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZURlY29kZXIuaCIKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCShyZXZpc2lvbiAx
MDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaWZuZGVmIFdlYk1lZGlhUGxheWVy
X2gKICNkZWZpbmUgV2ViTWVkaWFQbGF5ZXJfaAogCi0jaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlZlY3Rvci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZpZGVvRnJhbWUuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
bnVJdGVtSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYk1lbnVJdGVtSW5mby5oCShyZXZpc2lvbiAxMDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSAr
MzEsOSBAQAogI2lmbmRlZiBXZWJNZW51SXRlbUluZm9faAogI2RlZmluZSBXZWJNZW51SXRlbUlu
Zm9faAogCi0jaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0
b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgJKHJldmlzaW9u
IDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5ldHdvcmtTdGF0
ZU5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDIxICsyOCw2IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViTmV0d29ya1N0YXRlTm90aWZpZXJfaAotI2RlZmluZSBX
ZWJOZXR3b3JrU3RhdGVOb3RpZmllcl9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24u
aCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYk5ldHdvcmtTdGF0ZU5vdGlmaWVy
IHsKLXB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE9uTGluZShib29s
KTsKLQotcHJpdmF0ZToKLSAgICBXZWJOZXR3b3JrU3RhdGVOb3RpZmllcigpOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19Q
TEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vdGlmaWNhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vdGlm
aWNhdGlvbi5oCShyZXZpc2lvbiAxMDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJOb3RpZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAog
I2lmbmRlZiBXZWJOb3RpZmljYXRpb25faAogI2RlZmluZSBXZWJOb3RpZmljYXRpb25faAogCi0j
aW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaCIKIAogI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBOb3RpZmljYXRpb247
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNz
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVn
dWxhckV4cHJlc3Npb24uaAkocmV2aXNpb24gMTAxMjI0KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMjkg
KzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJSZWd1bGFyRXhwcmVz
c2lvbl9oCi0jZGVmaW5lIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gKLQotI2luY2x1ZGUgIldlYlRl
eHRDYXNlU2Vuc2l0aXZpdHkuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUmVndWxhckV4cHJlc3Npb25Qcml2YXRlOwotY2xhc3MgV2ViU3RyaW5nOwot
Ci1jbGFzcyBXZWJSZWd1bGFyRXhwcmVzc2lvbiA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7Ci1w
dWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJSZWd1bGFyRXhwcmVzc2lvbihjb25zdCBXZWJT
dHJpbmcmIHBhdHRlcm4sIFdlYlRleHRDYXNlU2Vuc2l0aXZpdHkpOwotICAgIFdFQktJVF9FWFBP
UlQgfldlYlJlZ3VsYXJFeHByZXNzaW9uKCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBtYXRj
aChjb25zdCBXZWJTdHJpbmcmLCBpbnQgc3RhcnRGcm9tID0gMCwgaW50KiBtYXRjaExlbmd0aCA9
IDApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFdlYlJlZ3VsYXJFeHByZXNzaW9uUHJpdmF0ZSog
bV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lU
X01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlZ3Vs
YXJFeHByZXNzaW9uLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgJKHJldmlzaW9uIDEwMTIy
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDYXNlU2Vuc2l0aXZp
dHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTcgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5X2gKLSNkZWZpbmUgV2ViVGV4dENhc2VT
ZW5zaXRpdml0eV9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGVzZSBjb25zdGFudHMg
c3BlY2lmeSB0aGUgcHJlZmVycmVkIGNhc2Ugc2Vuc2l0aXZpdHkuCi1lbnVtIFdlYlRleHRDYXNl
U2Vuc2l0aXZpdHkgewotICAgIFdlYlRleHRDYXNlU2Vuc2l0aXZlLCAgIC8vIFN0cmluZyBtYXRj
aGluZyBpcyBjYXNlLXNlbnNpdGl2ZS4KLSAgICBXZWJUZXh0Q2FzZUluc2Vuc2l0aXZlLCAvLyBT
dHJpbmcgbWF0Y2hpbmcgaXMgY2FzZS1pbnNlbnNpdGl2ZS4KLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHREaXJlY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgJ
KHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRl
eHREaXJlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTggKzI4LDYgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJUZXh0RGlyZWN0aW9uX2gKLSNkZWZpbmUgV2ViVGV4dERp
cmVjdGlvbl9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBSZXByZXNlbnRzIHRleHQgZGly
ZWN0aW9ucyAob3Igd3JpdGluZyBkaXJlY3Rpb25zKSBvZiBhIERPTSBub2RlLgotZW51bSBXZWJU
ZXh0RGlyZWN0aW9uIHsKLSAgICBXZWJUZXh0RGlyZWN0aW9uRGVmYXVsdCwgIC8vIE5hdHVyYWwg
d3JpdGluZyBkaXJlY3Rpb24gKCJpbmhlcml0IikKLSAgICBXZWJUZXh0RGlyZWN0aW9uTGVmdFRv
UmlnaHQsCi0gICAgV2ViVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0LAotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9S
TQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaCIKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dFJ1bi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRSdW4uaAkocmV2aXNpb24gMTAx
MjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dFJ1bi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0yOCw0MSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYlRleHRSdW5faAotI2RlZmluZSBXZWJUZXh0UnVuX2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlN0cmluZy5oIgotCi0jaWZkZWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIFRleHRSdW47IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotc3RydWN0IFdlYlRleHRSdW4gewotICAgIFdlYlRleHRSdW4oY29uc3QgV2ViU3RyaW5nJiB0
LCBib29sIGlzUlRMLCBib29sIGhhc0RpcmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAgICAgIDogdGV4
dCh0KQotICAgICAgICAsIHJ0bChpc1JUTCkKLSAgICAgICAgLCBkaXJlY3Rpb25hbE92ZXJyaWRl
KGhhc0RpcmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAgewotICAgIH0KLSAgICBXZWJUZXh0UnVuKCkK
LSAgICAgICAgOiBydGwoZmFsc2UpCi0gICAgICAgICwgZGlyZWN0aW9uYWxPdmVycmlkZShmYWxz
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViU3RyaW5nIHRleHQ7Ci0gICAgYm9vbCBydGw7Ci0g
ICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlOwotCi0jaWZkZWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgLy8gVGhlIHJlc3VsdGluZyBXZWJDb3JlOjpUZXh0UnVuIHdpbGwgcmVmZXIgdG8g
dGhlIHRleHQgaW4gdGhpcwotICAgIC8vIHN0cnVjdCwgc28gInRoaXMiIG11c3Qgb3V0bGl2ZSB0
aGUgV2ViQ29yZSB0ZXh0IHJ1bi4KLSAgICBvcGVyYXRvciBXZWJDb3JlOjpUZXh0UnVuKCkgY29u
c3Q7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJ
VF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0
UnVuLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRo
cmVhZFNhZmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGhyZWFkU2FmZURhdGEuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgs
NTAgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJUaHJlYWRTYWZl
RGF0YV9oCi0jZGVmaW5lIFdlYlRocmVhZFNhZmVEYXRhX2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKLQotI2lm
ICFXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jZW5kaWYKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSYXdEYXRhOyB9Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci0vLyBBIGNvbnRhaW5lciBmb3IgcmF3IGJ5dGVzLiAgSXQgaXMgaW5leHBlbnNpdmUgdG8gY29w
eSBhIFdlYlRocmVhZFNhZmVEYXRhIG9iamVjdC4KLS8vIEl0IGlzIHNhZmUgdG8gcGFzcyBhIFdl
YlRocmVhZFNhZmVEYXRhIGFjcm9zcyB0aHJlYWRzISEhCi1jbGFzcyBXZWJUaHJlYWRTYWZlRGF0
YSB7Ci1wdWJsaWM6Ci0gICAgV2ViVGhyZWFkU2FmZURhdGEoKSB7IH0KLSAgICB+V2ViVGhyZWFk
U2FmZURhdGEoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24o
Y29uc3QgV2ViVGhyZWFkU2FmZURhdGEmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQo
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBXRUJLSVRf
RVhQT1JUIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAg
IFdlYlRocmVhZFNhZmVEYXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSYXdEYXRh
PiYpOwotICAgIFdlYlRocmVhZFNhZmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlJhd0RhdGE+Jik7Ci0jZWxzZQotICAgIG9wZXJhdG9yIHN0ZDo6c3RyaW5n
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHNpemVfdCBsZW4gPSBzaXplKCk7Ci0gICAgICAgIHJl
dHVybiBsZW4gPyBzdGQ6OnN0cmluZyhkYXRhKCksIGxlbikgOiBzdGQ6OnN0cmluZygpOwotICAg
IH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UmF3RGF0
YT4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VC
S0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRo
cmVhZFNhZmVEYXRhLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlVSTEVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVVJMRXJyb3IuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVVJMRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNDYgKzI4LDYg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJVUkxFcnJvcl9oCi0jZGVmaW5l
IFdlYlVSTEVycm9yX2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgotCi0jaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVNRU5UQVRJ
T04pCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291cmNlRXJyb3I7IH0KLSNlbmRpZgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlVSTEVycm9yIHsKLSAgICAvLyBBIG5h
bWVzcGFjZSBmb3IgInJlYXNvbiIgdG8gc3VwcG9ydCB2YXJpb3VzIGxheWVycyBnZW5lcmF0aW5n
Ci0gICAgLy8gcmVzb3VyY2UgZXJyb3JzLiAgV2ViS2l0IGRvZXMgbm90IGNhcmUgYWJvdXQgdGhl
IHZhbHVlIG9mIHRoaXMKLSAgICAvLyBzdHJpbmcgYXMgaXQgd2lsbCBqdXN0IGJlIHBhc3NlZCB2
aWEgY2FsbGJhY2tzIHRvIHRoZSBjb25zdW1lci4KLSAgICBXZWJTdHJpbmcgZG9tYWluOwotCi0g
ICAgLy8gQSBudW1lcmljIGVycm9yIGNvZGUgZGV0YWlsaW5nIHRoZSByZWFzb24gZm9yIHRoaXMg
ZXJyb3IuICBBIHZhbHVlCi0gICAgLy8gb2YgMCBtZWFucyBubyBlcnJvci4gIFdlYktpdCBkb2Vz
IG5vdCBpbnRlcnByZXQgdGhlIG1lYW5pbmcgb2Ygb3RoZXIKLSAgICAvLyB2YWx1ZXMgYW5kIG5v
cm1hbGx5IGp1c3QgZm9yd2FyZHMgdGhpcyBlcnJvciBpbmZvcm1hdGlvbiBiYWNrIHRvIHRoZQot
ICAgIC8vIGVtYmVkZGVyIChzZWUgZm9yIGV4YW1wbGUgV2ViRnJhbWVDbGllbnQpLgotICAgIGlu
dCByZWFzb247Ci0KLSAgICAvLyBBIGZsYWcgc2hvd2luZyB3aGV0aGVyIHRoaXMgZXJyb3Igc2hv
dWxkIGJlIHRyZWF0ZWQgYXMgYSBjYW5jZWxsYXRpb24sCi0gICAgLy8gZS5nLiB3ZSBkbyBub3Qg
c2hvdyBjb25zb2xlIGVycm9ycyBmb3IgY2FuY2VsbGF0aW9ucy4KLSAgICBib29sIGlzQ2FuY2Vs
bGF0aW9uOwotCi0gICAgLy8gVGhlIHVybCB0aGF0IGZhaWxlZCB0byBsb2FkLgotICAgIFdlYlVS
TCB1bnJlYWNoYWJsZVVSTDsKLQotICAgIFdlYlVSTEVycm9yKCkgOiByZWFzb24oMCksIGlzQ2Fu
Y2VsbGF0aW9uKGZhbHNlKSB7IH0KLQotI2lmIGRlZmluZWQoV0VCS0lUX0lNUExFTUVOVEFUSU9O
KQotICAgIFdlYlVSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICBX
ZWJVUkxFcnJvciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAg
ICBvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNf
VE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxFcnJvci5oIgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkVGltaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWlu
Zy5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxMb2FkVGltaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDgxICsyOCw2IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMTG9hZFRpbWluZ19oCi0jZGVmaW5lIFdlYlVS
TExvYWRUaW1pbmdfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNz
IFJlc291cmNlTG9hZFRpbWluZzsgfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYlN0
cmluZzsKLQotY2xhc3MgV2ViVVJMTG9hZFRpbWluZyB7Ci1wdWJsaWM6Ci0gICAgfldlYlVSTExv
YWRUaW1pbmcoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlVSTExvYWRUaW1pbmcoKSB7IH0KLSAg
ICBXZWJVUkxMb2FkVGltaW5nKGNvbnN0IFdlYlVSTExvYWRUaW1pbmcmIGQpIHsgYXNzaWduKGQp
OyB9Ci0gICAgV2ViVVJMTG9hZFRpbWluZyYgb3BlcmF0b3I9KGNvbnN0IFdlYlVSTExvYWRUaW1p
bmcmIGQpCi0gICAgewotICAgICAgICBhc3NpZ24oZCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29u
c3QgV2ViVVJMTG9hZFRpbWluZyYpOwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgZG91YmxlIHJlcXVl
c3RUaW1lKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RUaW1lKGRv
dWJsZSB0aW1lKTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHByb3h5U3RhcnQoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJveHlTdGFydChpbnQgc3RhcnQpOwotCi0gICAg
V0VCS0lUX0VYUE9SVCBpbnQgcHJveHlFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0UHJveHlFbmQoaW50IGVuZCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBkbnNTdGFy
dCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRETlNTdGFydChpbnQgc3RhcnQp
OwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgZG5zRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldEROU0VuZChpbnQgZW5kKTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IGNv
bm5lY3RTdGFydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb25uZWN0U3Rh
cnQoaW50IHN0YXJ0KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IGNvbm5lY3RFbmQoKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdEVuZChpbnQgZW5kKTsKLQotICAg
IFdFQktJVF9FWFBPUlQgaW50IHNlbmRTdGFydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRTZW5kU3RhcnQoaW50IHN0YXJ0KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHNl
bmRFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2VuZEVuZChpbnQgZW5k
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHJlY2VpdmVIZWFkZXJzRW5kKCkgY29uc3Q7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlY2VpdmVIZWFkZXJzRW5kKGludCBlbmQpOwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBpbnQgc3NsU3RhcnQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0U1NMU3RhcnQoaW50IHN0YXJ0KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHNz
bEVuZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTU0xFbmQoaW50IGVuZCk7
Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJVUkxMb2FkVGltaW5nKGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc+Jik7Ci0gICAgV2Vi
VVJMTG9hZFRpbWluZyYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRUaW1pbmc+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlJlc291cmNlTG9hZFRpbWluZz4oKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAg
IFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPiBtX3ByaXZhdGU7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFE
RVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMTG9hZFRpbWluZy5oIgog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJV
UkxMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDUxICsy
OCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMTG9hZGVyQ2xpZW50
X2gKLSNkZWZpbmUgV2ViVVJMTG9hZGVyQ2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYlVSTExvYWRlcjsKLWNsYXNzIFdlYlVSTFJlcXVlc3Q7Ci1jbGFzcyBXZWJVUkxS
ZXNwb25zZTsKLXN0cnVjdCBXZWJVUkxFcnJvcjsKLQotY2xhc3MgV2ViVVJMTG9hZGVyQ2xpZW50
IHsKLXB1YmxpYzoKLSAgICAvLyBDYWxsZWQgd2hlbiBmb2xsb3dpbmcgYSByZWRpcmVjdC4gIHxu
ZXdSZXF1ZXN0fCBjb250YWlucyB0aGUgcmVxdWVzdAotICAgIC8vIGdlbmVyYXRlZCBieSB0aGUg
cmVkaXJlY3QuICBUaGUgY2xpZW50IG1heSBtb2RpZnkgfG5ld1JlcXVlc3R8LgotICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoCi0gICAgICAgIFdlYlVSTExvYWRlciosIFdlYlVSTFJl
cXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KSB7IH0KLQotICAgIC8vIENhbGxlZCB0byByZXBvcnQgdXBsb2FkIHByb2dyZXNzLiAgVGhlIGJ5
dGVzIHJlcG9ydGVkIGNvcnJlc3BvbmQgdG8KLSAgICAvLyB0aGUgSFRUUCBtZXNzYWdlIGJvZHku
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKAotICAgICAgICBXZWJVUkxMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIHJlc3BvbnNlIGhlYWRlcnMgYXJl
IHJlY2VpdmVkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMTG9h
ZGVyKiwgY29uc3QgV2ViVVJMUmVzcG9uc2UmKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEg
Y2h1bmsgb2YgcmVzcG9uc2UgZGF0YSBpcyBkb3dubG9hZGVkLiAgVGhpcyBpcyBvbmx5IGNhbGxl
ZAotICAgIC8vIGlmIFdlYlVSTFJlcXVlc3QncyBkb3dubG9hZFRvRmlsZSBmbGFnIHdhcyBzZXQg
dG8gdHJ1ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKFdlYlVSTExvYWRlcios
IGludCBkYXRhTGVuZ3RoKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEgY2h1bmsgb2YgcmVz
cG9uc2UgZGF0YSBpcyByZWNlaXZlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
V2ViVVJMTG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkgeyB9Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBhIGNodW5rIG9mIHJlbmRl
cmVyLWdlbmVyYXRlZCBtZXRhZGF0YSBpcyByZWNlaXZlZCBmcm9tIHRoZSBjYWNoZS4KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFdlYlVSTExvYWRlciosIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIHRo
ZSBsb2FkIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViVVJMTG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpIHsgfQotCi0gICAgLy8g
Q2FsbGVkIHdoZW4gdGhlIGxvYWQgY29tcGxldGVzIHdpdGggYW4gZXJyb3IuCi0gICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoV2ViVVJMTG9hZGVyKiwgY29uc3QgV2ViVVJMRXJyb3ImKSB7IH0KLQot
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYlVSTExvYWRlckNsaWVudCgpIHsgfQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19U
T19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTExvYWRlckNsaWVudC5oIgogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVz
dC5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDE3MiArMjgsNiBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlVSTFJlcXVlc3RfaAotI2RlZmluZSBXZWJVUkxSZXF1
ZXN0X2gKLQotI2luY2x1ZGUgIldlYkhUVFBCb2R5LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCi0KLSNpZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFdlYkNTdHJpbmc7Ci1jbGFzcyBXZWJIVFRQQm9keTsKLWNsYXNz
IFdlYkhUVFBIZWFkZXJWaXNpdG9yOwotY2xhc3MgV2ViU3RyaW5nOwotY2xhc3MgV2ViVVJMOwot
Y2xhc3MgV2ViVVJMUmVxdWVzdFByaXZhdGU7Ci0KLWNsYXNzIFdlYlVSTFJlcXVlc3QgewotcHVi
bGljOgotICAgIGVudW0gQ2FjaGVQb2xpY3kgewotICAgICAgICBVc2VQcm90b2NvbENhY2hlUG9s
aWN5LCAgLy8gbm9ybWFsIGxvYWQKLSAgICAgICAgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEsIC8v
IHJlbG9hZAotICAgICAgICBSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCwgLy8gYmFjay9mb3J3YXJk
IG9yIGVuY29kaW5nIGNoYW5nZSAtIGFsbG93IHN0YWxlIGRhdGEKLSAgICAgICAgUmV0dXJuQ2Fj
aGVEYXRhRG9udExvYWQsIC8vIHJlc3VsdHMgb2YgYSBwb3N0IC0gYWxsb3cgc3RhbGUgZGF0YSBh
bmQgb25seSB1c2UgY2FjaGUKLSAgICB9OwotCi0gICAgZW51bSBUYXJnZXRUeXBlIHsKLSAgICAg
ICAgVGFyZ2V0SXNNYWluRnJhbWUgPSAwLAotICAgICAgICBUYXJnZXRJc1N1YmZyYW1lID0gMSwK
LSAgICAgICAgVGFyZ2V0SXNTdWJyZXNvdXJjZSA9IDIsCi0gICAgICAgIFRhcmdldElzU3R5bGVT
aGVldCA9IDMsCi0gICAgICAgIFRhcmdldElzU2NyaXB0ID0gNCwKLSAgICAgICAgVGFyZ2V0SXNG
b250UmVzb3VyY2UgPSA1LAotICAgICAgICBUYXJnZXRJc0ltYWdlID0gNiwKLSAgICAgICAgVGFy
Z2V0SXNPYmplY3QgPSA3LAotICAgICAgICBUYXJnZXRJc01lZGlhID0gOCwKLSAgICAgICAgVGFy
Z2V0SXNXb3JrZXIgPSA5LAotICAgICAgICBUYXJnZXRJc1NoYXJlZFdvcmtlciA9IDEwLAotICAg
ICAgICBUYXJnZXRJc1ByZWZldGNoID0gMTEsCi0gICAgICAgIFRhcmdldElzUHJlcmVuZGVyID0g
MTIsCi0gICAgICAgIFRhcmdldElzRmF2aWNvbiA9IDEzLAotICAgICAgICBUYXJnZXRJc1hIUiA9
IDE0LAotICAgICAgICBUYXJnZXRJc1RleHRUcmFjayA9IDE1LAotICAgICAgICBUYXJnZXRJc1Vu
c3BlY2lmaWVkID0gMTYsCi0gICAgfTsKLQotICAgIGNsYXNzIEV4dHJhRGF0YSB7Ci0gICAgcHVi
bGljOgotICAgICAgICB2aXJ0dWFsIH5FeHRyYURhdGEoKSB7IH0KLSAgICB9OwotCi0gICAgfldl
YlVSTFJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlVSTFJlcXVlc3QoKSA6IG1fcHJp
dmF0ZSgwKSB7IH0KLSAgICBXZWJVUkxSZXF1ZXN0KGNvbnN0IFdlYlVSTFJlcXVlc3QmIHIpIDog
bV9wcml2YXRlKDApIHsgYXNzaWduKHIpOyB9Ci0gICAgV2ViVVJMUmVxdWVzdCYgb3BlcmF0b3I9
KGNvbnN0IFdlYlVSTFJlcXVlc3QmIHIpCi0gICAgewotICAgICAgICBhc3NpZ24ocik7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBXZWJVUkxSZXF1ZXN0KGNv
bnN0IFdlYlVSTCYgdXJsKSA6IG1fcHJpdmF0ZSgwKQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6
ZSgpOwotICAgICAgICBzZXRVUkwodXJsKTsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViVVJMUmVxdWVzdCYpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJV
UkwgdXJsKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFVSTChjb25zdCBXZWJV
UkwmKTsKLQotICAgIC8vIFVzZWQgdG8gaW1wbGVtZW50IHRoaXJkLXBhcnR5IGNvb2tpZSBibG9j
a2luZy4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlVSTCBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25z
dCBXZWJVUkwmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhbGxvd0Nvb2tpZXMoKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wgYWxsb3dDb29r
aWVzKTsKLQotICAgIC8vIENvbnRyb2xzIHdoZXRoZXIgdXNlciBuYW1lLCBwYXNzd29yZCwgYW5k
IGNvb2tpZXMgbWF5IGJlIHNlbnQgd2l0aCB0aGUKLSAgICAvLyByZXF1ZXN0LiAoSWYgZmFsc2Us
IHRoaXMgb3ZlcnJpZGVzIGFsbG93Q29va2llcy4pCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGFs
bG93U3RvcmVkQ3JlZGVudGlhbHMoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
QWxsb3dTdG9yZWRDcmVkZW50aWFscyhib29sIGFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRDYWNoZVBvbGljeShDYWNoZVBvbGljeSk7Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlN0cmluZyBodHRwTWV0aG9kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldEhUVFBNZXRob2QoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlN0cmluZyBodHRwSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIGFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYgdmFsdWUpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBjbGVhckhUVFBIZWFkZXJGaWVs
ZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCB2aXNpdEhU
VFBIZWFkZXJGaWVsZHMoV2ViSFRUUEhlYWRlclZpc2l0b3IqKSBjb25zdDsKLQotICAgIFdFQktJ
VF9FWFBPUlQgV2ViSFRUUEJvZHkgaHR0cEJvZHkoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0SFRUUEJvZHkoY29uc3QgV2ViSFRUUEJvZHkmKTsKLQotICAgIC8vIENvbnRyb2xz
IHdoZXRoZXIgdXBsb2FkIHByb2dyZXNzIGV2ZW50cyBhcmUgZ2VuZXJhdGVkIHdoZW4gYSByZXF1
ZXN0Ci0gICAgLy8gaGFzIGEgYm9keS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgcmVwb3J0VXBs
b2FkUHJvZ3Jlc3MoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwb3J0VXBs
b2FkUHJvZ3Jlc3MoYm9vbCk7Ci0KLSAgICAvLyBDb250cm9scyB3aGV0aGVyIGxvYWQgdGltaW5n
IGluZm8gaXMgY29sbGVjdGVkIGZvciB0aGUgcmVxdWVzdC4KLSAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgcmVwb3J0TG9hZFRpbWluZygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRS
ZXBvcnRMb2FkVGltaW5nKGJvb2wpOwotCi0gICAgLy8gQ29udHJvbHMgd2hldGhlciBhY3R1YWwg
aGVhZGVycyBzZW50IGFuZCByZWNlaXZlZCBmb3IgcmVxdWVzdCBhcmUKLSAgICAvLyBjb2xsZWN0
ZWQgYW5kIHJlcG9ydGVkLgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCByZXBvcnRSYXdIZWFkZXJz
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcG9ydFJhd0hlYWRlcnMoYm9v
bCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFRhcmdldFR5cGUgdGFyZ2V0VHlwZSgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUYXJnZXRUeXBlKFRhcmdldFR5cGUpOwotCi0gICAg
Ly8gVHJ1ZSBpZiB0aGUgcmVxdWVzdCB3YXMgdXNlciBpbml0aWF0ZWQuCi0gICAgV0VCS0lUX0VY
UE9SVCBib29sIGhhc1VzZXJHZXN0dXJlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEhhc1VzZXJHZXN0dXJlKGJvb2wpOwotCi0gICAgLy8gQSBjb25zdW1lciBjb250cm9sbGVk
IHZhbHVlIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlCi0gICAgLy8gcmVxdWVz
dG9yLgotICAgIFdFQktJVF9FWFBPUlQgaW50IHJlcXVlc3RvcklEKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RvcklEKGludCk7Ci0KLSAgICAvLyBBIGNvbnN1bWVy
IGNvbnRyb2xsZWQgdmFsdWUgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUKLSAg
ICAvLyBwcm9jZXNzIG9mIHRoZSByZXF1ZXN0b3IuCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgcmVx
dWVzdG9yUHJvY2Vzc0lEKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcXVl
c3RvclByb2Nlc3NJRChpbnQpOwotCi0gICAgLy8gQWxsb3dzIHRoZSByZXF1ZXN0IHRvIGJlIG1h
dGNoZWQgdXAgd2l0aCBpdHMgYXBwIGNhY2hlIGhvc3QuCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQg
YXBwQ2FjaGVIb3N0SUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QXBwQ2Fj
aGVIb3N0SUQoaW50IGlkKTsKLQotICAgIC8vIElmIHRydWUsIHRoZSByZXNwb25zZSBib2R5IHdp
bGwgYmUgZG93bmxvYWRlZCB0byBhIGZpbGUgbWFuYWdlZCBieSB0aGUKLSAgICAvLyBXZWJVUkxM
b2FkZXIuICBTZWUgV2ViVVJMUmVzcG9uc2U6OmRvd25sb2FkZWRGaWxlUGF0aC4KLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgZG93bmxvYWRUb0ZpbGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RG93bmxvYWRUb0ZpbGUoYm9vbCk7Ci0KLSAgICAvLyBFeHRyYSBkYXRhIGFzc29j
aWF0ZWQgd2l0aCB0aGUgdW5kZXJseWluZyByZXNvdXJjZSByZXF1ZXN0LiBSZXNvdXJjZQotICAg
IC8vIHJlcXVlc3RzIGNhbiBiZSBjb3BpZWQuIElmIG5vbi1udWxsLCBlYWNoIGNvcHkgb2YgYSBy
ZXNvdXJjZSByZXF1ZXN0cwotICAgIC8vIGhvbGRzIGEgcG9pbnRlciB0byB0aGUgZXh0cmEgZGF0
YSwgYW5kIHRoZSBleHRyYSBkYXRhIHBvaW50ZXIgd2lsbCBiZQotICAgIC8vIGRlbGV0ZWQgd2hl
biB0aGUgbGFzdCByZXNvdXJjZSByZXF1ZXN0IGlzIGRlc3Ryb3llZC4gU2V0dGluZyB0aGUgZXh0
cmEKLSAgICAvLyBkYXRhIHBvaW50ZXIgd2lsbCBjYXVzZSB0aGUgdW5kZXJseWluZyByZXNvdXJj
ZSByZXF1ZXN0IHRvIGJlCi0gICAgLy8gZGlzc29jaWF0ZWQgZnJvbSBhbnkgZXhpc3Rpbmcgbm9u
LW51bGwgZXh0cmEgZGF0YSBwb2ludGVyLgotICAgIFdFQktJVF9FWFBPUlQgRXh0cmFEYXRhKiBl
eHRyYURhdGEoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RXh0cmFEYXRhKEV4
dHJhRGF0YSopOwotCi0jaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVNRU5UQVRJT04pCi0gICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiB0b011dGFibGVSZXNvdXJjZVJlcXVlc3QoKTsKLSAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHRvUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7
Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIHZvaWQgYXNzaWduKFdlYlVSTFJlcXVlc3RQcml2
YXRlKik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViVVJMUmVxdWVzdFByaXZhdGUqIG1fcHJpdmF0ZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hF
QURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgiCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVz
cG9uc2UuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVVJMUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTU5ICsyOCw2IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMUmVzcG9uc2VfaAotI2RlZmluZSBXZWJV
UkxSZXNwb25zZV9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJQcml2YXRlT3duUHRyLmgiCi0KLSNpZiBkZWZpbmVkKFdFQktJVF9JTVBM
RU1FTlRBVElPTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsg
fQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJDU3RyaW5nOwotY2xh
c3MgV2ViSFRUUEhlYWRlclZpc2l0b3I7Ci1jbGFzcyBXZWJIVFRQTG9hZEluZm87Ci1jbGFzcyBX
ZWJTdHJpbmc7Ci1jbGFzcyBXZWJVUkw7Ci1jbGFzcyBXZWJVUkxMb2FkVGltaW5nOwotY2xhc3Mg
V2ViVVJMUmVzcG9uc2VQcml2YXRlOwotCi1jbGFzcyBXZWJVUkxSZXNwb25zZSB7Ci1wdWJsaWM6
Ci0gICAgfldlYlVSTFJlc3BvbnNlKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJVUkxSZXNwb25z
ZSgpIDogbV9wcml2YXRlKDApIHsgfQotICAgIFdlYlVSTFJlc3BvbnNlKGNvbnN0IFdlYlVSTFJl
c3BvbnNlJiByKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihyKTsgfQotICAgIFdlYlVSTFJlc3Bv
bnNlJiBvcGVyYXRvcj0oY29uc3QgV2ViVVJMUmVzcG9uc2UmIHIpCi0gICAgewotICAgICAgICBh
c3NpZ24ocik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBX
ZWJVUkxSZXNwb25zZShjb25zdCBXZWJVUkwmIHVybCkgOiBtX3ByaXZhdGUoMCkKLSAgICB7Ci0g
ICAgICAgIGluaXRpYWxpemUoKTsKLSAgICAgICAgc2V0VVJMKHVybCk7Ci0gICAgfQotCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlVSTFJlc3Bv
bnNlJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0VVJMKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBjb25u
ZWN0aW9uSUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbklE
KHVuc2lnbmVkKTsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjb25uZWN0aW9uUmV1c2VkKCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb25SZXVzZWQoYm9vbCk7
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlVSTExvYWRUaW1pbmcgbG9hZFRpbWluZygpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRMb2FkVGltaW5nKGNvbnN0IFdlYlVSTExvYWRUaW1pbmcm
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViSFRUUExvYWRJbmZvIGh0dHBMb2FkSW5mbygpOwot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIVFRQTG9hZEluZm8oY29uc3QgV2ViSFRUUExvYWRJ
bmZvJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGRvdWJsZSByZXNwb25zZVRpbWUoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVzcG9uc2VUaW1lKGRvdWJsZSk7Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRNSU1FVHlwZShjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdFQktJVF9FWFBP
UlQgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0OwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgobG9uZyBsb25nKTsKLQotICAgIFdF
QktJVF9FWFBPUlQgV2ViU3RyaW5nIHRleHRFbmNvZGluZ05hbWUoKSBjb25zdDsKLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBXZWJTdHJpbmcmKTsKLQot
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHN1Z2dlc3RlZEZpbGVOYW1lKCkgY29uc3Q7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFN1Z2dlc3RlZEZpbGVOYW1lKGNvbnN0IFdlYlN0cmlu
ZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgaHR0cFN0YXR1c0NvZGUoKSBjb25zdDsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsKLQotICAgIFdFQktJ
VF9FWFBPUlQgV2ViU3RyaW5nIGh0dHBTdGF0dXNUZXh0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldEhUVFBTdGF0dXNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgaHR0cEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJIVFRQSGVh
ZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
dmlzaXRIVFRQSGVhZGVyRmllbGRzKFdlYkhUVFBIZWFkZXJWaXNpdG9yKikgY29uc3Q7Ci0KLSAg
ICBXRUJLSVRfRVhQT1JUIGRvdWJsZSBsYXN0TW9kaWZpZWREYXRlKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldExhc3RNb2RpZmllZERhdGUoZG91YmxlKTsKLQotICAgIFdFQktJ
VF9FWFBPUlQgbG9uZyBsb25nIGFwcENhY2hlSUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0QXBwQ2FjaGVJRChsb25nIGxvbmcpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJV
UkwgYXBwQ2FjaGVNYW5pZmVzdFVSTCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRBcHBDYWNoZU1hbmlmZXN0VVJMKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgLy8gQSBjb25zdW1l
ciBjb250cm9sbGVkIHZhbHVlIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcmVjb3JkIG9wYXF1ZQot
ICAgIC8vIHNlY3VyaXR5IGluZm8gcmVsYXRlZCB0byB0aGlzIHJlcXVlc3QuCi0gICAgV0VCS0lU
X0VYUE9SVCBXZWJDU3RyaW5nIHNlY3VyaXR5SW5mbygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRTZWN1cml0eUluZm8oY29uc3QgV2ViQ1N0cmluZyYpOwotCi0jaWYgZGVmaW5l
ZChXRUJLSVRfSU1QTEVNRU5UQVRJT04pCi0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
dG9NdXRhYmxlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHRvUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAvLyBG
bGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IHdhcyBzZXJ2ZWQgZnJvbSB0aGUgZGlzayBjYWNoZSBl
bnRyeS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgd2FzQ2FjaGVkKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFdhc0NhY2hlZChib29sKTsKLQotICAgIC8vIEZsYWcgd2hldGhl
ciB0aGlzIHJlcXVlc3Qgd2FzIGxvYWRlZCB2aWEgdGhlIFNQRFkgcHJvdG9jb2wgb3Igbm90Lgot
ICAgIC8vIFNQRFkgaXMgYW4gZXhwZXJpbWVudGFsIHdlYiBwcm90b2NvbCwgc2VlIGh0dHA6Ly9k
ZXYuY2hyb21pdW0ub3JnL3NwZHkKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgd2FzRmV0Y2hlZFZp
YVNQRFkoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0V2FzRmV0Y2hlZFZpYVNQ
RFkoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IHdhcyBsb2FkZWQg
YWZ0ZXIgdGhlIFRMUy9OZXh0LVByb3RvY29sLU5lZ290aWF0aW9uIHdhcyB1c2VkLgotICAgIC8v
IFRoaXMgaXMgcmVsYXRlZCB0byBTUERZLgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCB3YXNOcG5O
ZWdvdGlhdGVkKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFdhc05wbk5lZ290
aWF0ZWQoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IHdhcyBtYWRl
IHdoZW4gIkFsdGVybmF0ZS1Qcm90b2NvbDogeHh4IgotICAgIC8vIGlzIHByZXNlbnQgaW4gc2Vy
dmVyJ3MgcmVzcG9uc2UuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIHdhc0FsdGVybmF0ZVByb3Rv
Y29sQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFdhc0FsdGVy
bmF0ZVByb3RvY29sQXZhaWxhYmxlKGJvb2wpOwotCi0gICAgLy8gRmxhZyB3aGV0aGVyIHRoaXMg
cmVxdWVzdCB3YXMgbG9hZGVkIHZpYSBhbiBleHBsaWNpdCBwcm94eSAoSFRUUCwgU09DS1MsIGV0
YykuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIHdhc0ZldGNoZWRWaWFQcm94eSgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRXYXNGZXRjaGVkVmlhUHJveHkoYm9vbCk7Ci0KLSAg
ICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGlzIHBhcnQgb2YgYSBtdWx0aXBhcnQgcmVz
cG9uc2UuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGlzTXVsdGlwYXJ0UGF5bG9hZCgpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc011bHRpcGFydFBheWxvYWQoYm9vbCk7Ci0K
LSAgICAvLyBUaGlzIGluZGljYXRlcyB0aGUgbG9jYXRpb24gb2YgYSBkb3dubG9hZGVkIHJlc3Bv
bnNlIGlmIHRoZQotICAgIC8vIFdlYlVSTFJlcXVlc3QgaGFkIHRoZSBkb3dubG9hZFRvRmlsZSBm
bGFnIHNldCB0byB0cnVlLiAgVGhpcyBmaWxlIHBhdGgKLSAgICAvLyByZW1haW5zIHZhbGlkIGZv
ciB0aGUgbGlmZXRpbWUgb2YgdGhlIFdlYlVSTExvYWRlciB1c2VkIHRvIGNyZWF0ZSBpdC4KLSAg
ICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkb3dubG9hZEZpbGVQYXRoKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldERvd25sb2FkRmlsZVBhdGgoY29uc3QgV2ViU3RyaW5nJik7
Ci0KLSAgICAvLyBSZW1vdGUgSVAgYWRkcmVzcyBvZiB0aGUgc29ja2V0IHdoaWNoIGZldGNoZWQg
dGhpcyByZXNvdXJjZS4KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyByZW1vdGVJUEFkZHJl
c3MoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVtb3RlSVBBZGRyZXNzKGNv
bnN0IFdlYlN0cmluZyYpOwotCi0gICAgLy8gUmVtb3RlIHBvcnQgbnVtYmVyIG9mIHRoZSBzb2Nr
ZXQgd2hpY2ggZmV0Y2hlZCB0aGlzIHJlc291cmNlLgotICAgIFdFQktJVF9FWFBPUlQgdW5zaWdu
ZWQgc2hvcnQgcmVtb3RlUG9ydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRS
ZW1vdGVQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQotcHJvdGVjdGVkOgotICAgIHZvaWQgYXNzaWdu
KFdlYlVSTFJlc3BvbnNlUHJpdmF0ZSopOwotCi1wcml2YXRlOgotICAgIFdlYlVSTFJlc3BvbnNl
UHJpdmF0ZSogbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5k
ZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlVSTFJlc3BvbnNlLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZGVvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgs
NDEgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJWaWRlb0ZyYW1l
X2gKLSNkZWZpbmUgV2ViVmlkZW9GcmFtZV9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBB
IHByb3h5IHZpZGVvIGZyYW1lIGludGVyZmFjZSB0byBjb21tdW5pY2F0ZSBmcmFtZSBkYXRhIGJl
dHdlZW4gY2hyb21pdW0KLS8vIGFuZCBXZWJLaXQuCi1jbGFzcyBXZWJWaWRlb0ZyYW1lIHsKLXB1
YmxpYzoKLSAgICBlbnVtIEZvcm1hdCB7Ci0gICAgICAgIEZvcm1hdEludmFsaWQsCi0gICAgICAg
IEZvcm1hdFJHQjU1NSwKLSAgICAgICAgRm9ybWF0UkdCNTY1LAotICAgICAgICBGb3JtYXRSR0Iy
NCwKLSAgICAgICAgRm9ybWF0UkdCMzIsCi0gICAgICAgIEZvcm1hdFJHQkEsCi0gICAgICAgIEZv
cm1hdFlWMTIsCi0gICAgICAgIEZvcm1hdFlWMTYsCi0gICAgICAgIEZvcm1hdE5WMTIsCi0gICAg
ICAgIEZvcm1hdEVtcHR5LAotICAgICAgICBGb3JtYXRBU0NJSSwKLSAgICAgICAgRm9ybWF0STQy
MCwKLSAgICAgICAgRm9ybWF0TmF0aXZlVGV4dHVyZSwKLSAgICB9OwotCi0gICAgdmlydHVhbCB+
V2ViVmlkZW9GcmFtZSgpIHsgfQotICAgIHZpcnR1YWwgRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsg
cmV0dXJuIEZvcm1hdEludmFsaWQ7IH0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3QgeyByZXR1cm4g
MDsgfQotICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgeyByZXR1
cm4gMDsgfQotICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29u
c3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VC
S0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZp
ZGVvRnJhbWUuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlld0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICsz
OSw5IEBACiAjaW5jbHVkZSAiV2ViUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIldl
YlBvcHVwVHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHRBZmZpbml0eS5oIgotI2luY2x1ZGUgIldl
YlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJXZWJXaWRnZXRDbGllbnQuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0RGlyZWN0
aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXQuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICsz
MywxMSBAQAogCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRpb25VbmRlcmxpbmUuaCIKICNpbmNsdWRl
ICJXZWJUZXh0SW5wdXRUeXBlLmgiCi0jaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJTaXplLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGV4dERpcmVjdGlvbi5oIgogCiAjZGVm
aW5lIFdFQktJVF9IQVNfTkVXX0ZVTExTQ1JFRU5fQVBJIDEKIApJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgJKHJldmlzaW9uIDEwMTIz
MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViU2NyZWVuSW5mby5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlJlY3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0RGlyZWN0aW9uLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMTAx
MjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcnJheUJ1ZmZlclZp
ZXcuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJBcnJheUJ1ZmZlclZpZXcuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJW
aWV3LmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkFycmF5QnVmZmVyVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsy
OSw4IEBACiAjaWZuZGVmIFdlYkFycmF5QnVmZmVyVmlld19oCiAjZGVmaW5lIFdlYkFycmF5QnVm
ZmVyVmlld19oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHJpdmF0ZVB0ci5oIgogCiBuYW1lc3BhY2UgV1RGIHsgY2xhc3MgQXJyYXlCdWZmZXJW
aWV3OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkJsb2JEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViQmxvYkRhdGEuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmgJKHdvcmtpbmcgY29weSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViQmxvYkRhdGEuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViQmxvYkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSAr
MzEsOSBAQAogI2lmbmRlZiBXZWJCbG9iRGF0YV9oCiAjZGVmaW5lIFdlYkJsb2JEYXRhX2gKIAor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlRocmVhZFNhZmVEYXRhLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJM
LmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KIG5h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQmxvYkRhdGE7IH0KQEAgLTY4LDcgKzY4LDcgQEAgcHVi
bGljOgogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcy4KICAgICBXRUJLSVRfRVhQ
T1JUIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdDsKIAotICAgIC8vIFJldHJpZXZlcyB0aGUgdmFs
dWVzIG9mIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBpbmRleC4gIFJldHVybnMgZmFsc2UgaWYKKyAg
ICAvLyBSZXRyaWV2ZXMgdGhlIHZhbHVlcyBvZiB0aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gaW5kZXgu
IFJldHVybnMgZmFsc2UgaWYKICAgICAvLyBpbmRleCBpcyBvdXQgb2YgYm91bmRzLgogICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBpdGVtQXQoc2l6ZV90IGluZGV4LCBJdGVtJiByZXN1bHQpIGNvbnN0
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb29r
aWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJDb29raWUuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJDb29raWUuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJDb29raWUuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llLmgJKHJl
dmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkNvb2tpZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTEgQEAKICNpZm5kZWYg
V2ViQ29va2llX2gKICNkZWZpbmUgV2ViQ29va2llX2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotY2xhc3MgV2ViU3RyaW5nOwotCiAvLyBBIGNvb2tpZS4KIC8vCiBzdHJ1Y3QgV2ViQ29va2ll
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0
UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJGbG9hdFBvaW50LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQb2ludC5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaAkod29ya2luZyBjb3B5
KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRQ
b2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYkZsb2F0UG9pbnQuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFdlYkZsb2F0UG9pbnRfaAogI2RlZmluZSBXZWJGbG9h
dFBvaW50X2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
RmxvYXRRdWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgJKHJldmlzaW9uIDEwMTIyNCkJKGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmg6MTAxMjI0KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgJKHdvcmtpbmcgY29w
eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0
UXVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYkZsb2F0UXVhZC5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOSArMzEsOSBAQAogI2lmbmRlZiBXZWJGbG9hdFF1YWRfaAogI2RlZmluZSBXZWJGbG9hdFF1
YWRfaAogCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlJlY3QuaCIKKyNpbmNsdWRlICJXZWJSZWN0LmgiCiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8Y21hdGg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJGbG9hdFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFJlY3QuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaDoxMDEyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFJlY3QuaAkod29y
a2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViRmxvYXRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFdlYkZsb2F0UmVjdF9oCiAjZGVmaW5lIFdl
YkZsb2F0UmVjdF9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJXZWJDb21tb24uaCIKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViRm9udC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkZvbnQuaAkocmV2aXNpb24gMTAxMjI0KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGb250Lmg6MTAxMjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udC5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udC5oCShyZXZpc2lv
biAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJG
b250LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2ViRm9udF9o
CiAjZGVmaW5lIFdlYkZvbnRfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ2FudmFzLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViQ29sb3IuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKKyNpbmNsdWRlICJXZWJDYW52YXMuaCIKKyNpbmNsdWRlICJXZWJDb2xvci5oIgorI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udENhY2hlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udENhY2hl
LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRm9udENhY2hlLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViRm9udENhY2hlLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnRDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnRDYWNoZS5oCShy
ZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJGb250Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRl
ZiBXZWJGb250Q2FjaGVfaAogI2RlZmluZSBXZWJGb250Q2FjaGVfaAogCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyB2b2lkIHBydW5lKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViRm9udENhY2hlKCk7ICAvLyBO
b3QgaW50ZW5kZWQgdG8gYmUgaW5zdGFuY2VkLgorICAgIFdlYkZvbnRDYWNoZSgpOyAvLyBOb3Qg
aW50ZW5kZWQgdG8gYmUgaW5zdGFuY2VkLgogfTsKIAotfSAgLy8gbmFtZXNwYWNlIFdlYktpdAor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udERlc2NyaXB0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udERlc2NyaXB0aW9u
LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRm9udERlc2NyaXB0aW9uLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViRm9udERlc2NyaXB0aW9uLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnREZXNjcmlwdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkZvbnREZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250RGVzY3JpcHRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJGb250RGVzY3JpcHRpb25faAogI2Rl
ZmluZSBXZWJGb250RGVzY3JpcHRpb25faAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5n
LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
IG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRm9udERlc2NyaXB0aW9uOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHbHlwaENhY2hlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR2x5cGhD
YWNoZS5oCShyZXZpc2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkdseXBoQ2FjaGUuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJHbHlwaENhY2hlLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdseXBoQ2FjaGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHbHlwaENh
Y2hlLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkdseXBoQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogI2lmbmRlZiBXZWJHbHlwaENhY2hlX2gKICNkZWZpbmUgV2ViR2x5cGhDYWNoZV9oCiAKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkhUVFBCb2R5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaAkocmV2aXNpb24gMTAxMjI0KQkoZnJv
bSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQQm9keS5oOjEwMTIyNCkKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBCb2R5LmgJKHdv
cmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkhUVFBCb2R5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaWZuZGVmIFdlYkhUVFBCb2R5X2gKICNkZWZpbmUgV2Vi
SFRUUEJvZHlfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRGF0YS5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYk5vbkNvcHlhYmxlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2lu
Y2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViVVJMLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KIG5hbWVzcGFjZSBXZWJD
b3JlIHsgY2xhc3MgRm9ybURhdGE7IH0KQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIC8v
IFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb21wcmlzaW5nIHRoZSBodHRwIGJvZHku
CiAgICAgV0VCS0lUX0VYUE9SVCBzaXplX3QgZWxlbWVudENvdW50KCkgY29uc3Q7CiAKLSAgICAv
LyBTZXRzIHRoZSB2YWx1ZXMgb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4LiAgUmV0
dXJucyBmYWxzZSBpZgorICAgIC8vIFNldHMgdGhlIHZhbHVlcyBvZiB0aGUgZWxlbWVudCBhdCB0
aGUgZ2l2ZW4gaW5kZXguIFJldHVybnMgZmFsc2UgaWYKICAgICAvLyBpbmRleCBpcyBvdXQgb2Yg
Ym91bmRzLgogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlbGVtZW50QXQoc2l6ZV90IGluZGV4LCBF
bGVtZW50JikgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3QgV2ViU3RyaW5nJiwgbG9uZyBsb25nIGZp
bGVTdGFydCwgbG9uZyBsb25nIGZpbGVMZW5ndGgsIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKTsK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kQmxvYihjb25zdCBXZWJVUkwmKTsKIAotICAg
IC8vIElkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIGZvcm0gc3VibWlzc2lvbiBpbnN0YW5jZS4gIEEg
dmFsdWUgb2YgMCBpcworICAgIC8vIElkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIGZvcm0gc3VibWlz
c2lvbiBpbnN0YW5jZS4gQSB2YWx1ZSBvZiAwIGlzCiAgICAgLy8gdXNlZCB0byBpbmRpY2F0ZSBh
biB1bnNwZWNpZmllZCBpZGVudGlmaWVyLgogICAgIFdFQktJVF9FWFBPUlQgbG9uZyBsb25nIGlk
ZW50aWZpZXIoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRlbnRpZmllcihs
b25nIGxvbmcpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViSFRUUEhlYWRlclZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCShyZXZpc2lvbiAxMDEy
MjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBIZWFkZXJWaXNp
dG9yLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViSFRUUEhlYWRlclZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUExvYWRJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUExvYWRJbmZv
LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSFRUUExvYWRJbmZvLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViSFRUUExvYWRJbmZvLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBMb2FkSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBM
b2FkSW5mby5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJIVFRQTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCAr
MzEsOCBAQAogI2lmbmRlZiBXZWJIVFRQTG9hZEluZm9faAogI2RlZmluZSBXZWJIVFRQTG9hZElu
Zm9faAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldl
YlByaXZhdGVQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJlc291cmNlTG9h
ZEluZm87CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJ
bWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJJbWFnZURlY29kZXIuaAkocmV2aXNpb24gMTAxMjI0KQkoZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZURlY29kZXIuaDoxMDEyMjQpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZURlY29kZXIuaAko
d29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDEwMTIyMykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkltYWdlRGVjb2Rlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaWZuZGVmIFdlYkltYWdlRGVjb2Rl
cl9oCiAjZGVmaW5lIFdlYkltYWdlRGVjb2Rlcl9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
b21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAi
V2ViSW1hZ2UuaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIEltYWdlRGVjb2RlcjsgfQogCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFNldHMgZGF0YSBjb250ZW50cyBmb3IgdW5kZXJseWluZyBkZWNvZGVyLiBBbGwg
dGhlIEFQSSBtZXRob2RzCiAgICAgLy8gcmVxdWlyZSB0aGF0IHNldERhdGEoKSBpcyBjYWxsZWQg
cHJpb3IgdG8gdGhlaXIgdXNlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0
IFdlYkRhdGEmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RGF0YShjb25zdCBXZWJEYXRhJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogCiAg
ICAgLy8gRGVsZXRlcyBvd25lZCBkZWNvZGVyLgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNl
dCgpOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQ3JlYXRl
cyB0eXBlLXNwZWNpZmljIGRlY29kZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXQoVHlw
ZSB0eXBlKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdChUeXBlKTsKIAogICAgIFdlYklt
YWdlRGVjb2RlclByaXZhdGUqIG1fcHJpdmF0ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk5ldHdvcmtT
dGF0ZU5vdGlmaWVyLmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViTmV0d29ya1N0YXRlTm90aWZpZXIuaDoxMDEyMjMpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5o
CSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgJKHJl
dmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNpZm5kZWYgV2ViTmV0d29ya1N0YXRlTm90aWZpZXJfaAogI2RlZmluZSBXZWJOZXR3b3Jr
U3RhdGVOb3RpZmllcl9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVn
dWxhckV4cHJlc3Npb24uaAkocmV2aXNpb24gMTAxMjI0KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oOjEwMTIyNCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHdv
cmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVndWxhckV4cHJlc3Npb24uaAkocmV2aXNpb24gMTAx
MjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVndWxh
ckV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2lmbmRlZiBX
ZWJSZWd1bGFyRXhwcmVzc2lvbl9oCiAjZGVmaW5lIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gKIAor
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCiAjaW5j
bHVkZSAiV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNv
bW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYk5vbkNvcHlhYmxlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oCShyZXZpc2lv
biAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDYXNl
U2Vuc2l0aXZpdHkuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJU
ZXh0RGlyZWN0aW9uLmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaAkod29ya2luZyBjb3B5
KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dFJ1
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYlRleHRSdW4uaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJUZXh0UnVuLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dFJ1bi5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUZXh0UnVuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dFJ1bi5o
CShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJUZXh0UnVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5k
ZWYgV2ViVGV4dFJ1bl9oCiAjZGVmaW5lIFdlYlRleHRSdW5faAogCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAKICNpZmRlZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgVGV4dFJ1bjsgfQpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGhyZWFkU2FmZURh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJUaHJlYWRTYWZlRGF0YS5oCShyZXZpc2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVhZFNhZmVEYXRhLmg6MTAxMjIzKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGhyZWFkU2FmZURhdGEuaAkod29y
a2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViVGhyZWFkU2FmZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5oCShyZXZpc2lvbiAxMDEyMjMpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaWZuZGVmIFdlYlRocmVhZFNh
ZmVEYXRhX2gKICNkZWZpbmUgV2ViVGhyZWFkU2FmZURhdGFfaAogCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgorI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKIAogI2lmICFX
RUJLSVRfSU1QTEVNRU5UQVRJT04KICNpbmNsdWRlIDxzdHJpbmc+CkBAIC00Miw3ICs0Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmF3RGF0YTsgfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotLy8gQSBjb250YWluZXIgZm9yIHJhdyBieXRlcy4gIEl0IGlzIGluZXhwZW5zaXZlIHRv
IGNvcHkgYSBXZWJUaHJlYWRTYWZlRGF0YSBvYmplY3QuCisvLyBBIGNvbnRhaW5lciBmb3IgcmF3
IGJ5dGVzLiBJdCBpcyBpbmV4cGVuc2l2ZSB0byBjb3B5IGEgV2ViVGhyZWFkU2FmZURhdGEgb2Jq
ZWN0LgogLy8gSXQgaXMgc2FmZSB0byBwYXNzIGEgV2ViVGhyZWFkU2FmZURhdGEgYWNyb3NzIHRo
cmVhZHMhISEKIGNsYXNzIFdlYlRocmVhZFNhZmVEYXRhIHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTEVycm9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMRXJyb3Iu
aAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxFcnJvci5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYlVSTEVycm9yLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTEVycm9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMRXJyb3IuaAkocmV2aXNp
b24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
VVJMRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogI2lmbmRlZiBXZWJV
UkxFcnJvcl9oCiAjZGVmaW5lIFdlYlVSTEVycm9yX2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgorI2luY2x1ZGUgIldlYlN0
cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogCiAjaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVN
RU5UQVRJT04pCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291cmNlRXJyb3I7IH0KQEAg
LTQyLDEyICs0MiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlVSTEVycm9y
IHsKICAgICAvLyBBIG5hbWVzcGFjZSBmb3IgInJlYXNvbiIgdG8gc3VwcG9ydCB2YXJpb3VzIGxh
eWVycyBnZW5lcmF0aW5nCi0gICAgLy8gcmVzb3VyY2UgZXJyb3JzLiAgV2ViS2l0IGRvZXMgbm90
IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9mIHRoaXMKKyAgICAvLyByZXNvdXJjZSBlcnJvcnMuIFdl
YktpdCBkb2VzIG5vdCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZiB0aGlzCiAgICAgLy8gc3RyaW5n
IGFzIGl0IHdpbGwganVzdCBiZSBwYXNzZWQgdmlhIGNhbGxiYWNrcyB0byB0aGUgY29uc3VtZXIu
CiAgICAgV2ViU3RyaW5nIGRvbWFpbjsKIAotICAgIC8vIEEgbnVtZXJpYyBlcnJvciBjb2RlIGRl
dGFpbGluZyB0aGUgcmVhc29uIGZvciB0aGlzIGVycm9yLiAgQSB2YWx1ZQotICAgIC8vIG9mIDAg
bWVhbnMgbm8gZXJyb3IuICBXZWJLaXQgZG9lcyBub3QgaW50ZXJwcmV0IHRoZSBtZWFuaW5nIG9m
IG90aGVyCisgICAgLy8gQSBudW1lcmljIGVycm9yIGNvZGUgZGV0YWlsaW5nIHRoZSByZWFzb24g
Zm9yIHRoaXMgZXJyb3IuIEEgdmFsdWUKKyAgICAvLyBvZiAwIG1lYW5zIG5vIGVycm9yLiBXZWJL
aXQgZG9lcyBub3QgaW50ZXJwcmV0IHRoZSBtZWFuaW5nIG9mIG90aGVyCiAgICAgLy8gdmFsdWVz
IGFuZCBub3JtYWxseSBqdXN0IGZvcndhcmRzIHRoaXMgZXJyb3IgaW5mb3JtYXRpb24gYmFjayB0
byB0aGUKICAgICAvLyBlbWJlZGRlciAoc2VlIGZvciBleGFtcGxlIFdlYkZyYW1lQ2xpZW50KS4K
ICAgICBpbnQgcmVhc29uOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViVVJMTG9hZFRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcuaAkocmV2aXNpb24gMTAxMjIz
KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkVGltaW5nLmg6
MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJM
TG9hZFRpbWluZy5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkVGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZFRpbWluZy5oCShyZXZp
c2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJVUkxMb2FkVGltaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpZm5k
ZWYgV2ViVVJMTG9hZFRpbWluZ19oCiAjZGVmaW5lIFdlYlVSTExvYWRUaW1pbmdfaAogCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0
ZVB0ci5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmc7IH0KIApA
QCAtNTgsNDAgKzU4LDQwIEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQogCiAgICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgcmVx
dWVzdFRpbWUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFRpbWUo
ZG91YmxlIHRpbWUpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0VGltZShkb3Vi
bGUpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgcHJveHlTdGFydCgpIGNvbnN0OwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRQcm94eVN0YXJ0KGludCBzdGFydCk7CisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFByb3h5U3RhcnQoaW50KTsKIAogICAgIFdFQktJVF9FWFBPUlQgaW50IHBy
b3h5RW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByb3h5RW5kKGludCBl
bmQpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQcm94eUVuZChpbnQpOwogCiAgICAgV0VC
S0lUX0VYUE9SVCBpbnQgZG5zU3RhcnQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0RE5TU3RhcnQoaW50IHN0YXJ0KTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RE5TU3Rh
cnQoaW50KTsKIAogICAgIFdFQktJVF9FWFBPUlQgaW50IGRuc0VuZCgpIGNvbnN0OwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRETlNFbmQoaW50IGVuZCk7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldEROU0VuZChpbnQpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgY29ubmVjdFN0YXJ0
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENvbm5lY3RTdGFydChpbnQgc3Rh
cnQpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb25uZWN0U3RhcnQoaW50KTsKIAogICAg
IFdFQktJVF9FWFBPUlQgaW50IGNvbm5lY3RFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0Q29ubmVjdEVuZChpbnQgZW5kKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
Q29ubmVjdEVuZChpbnQpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgc2VuZFN0YXJ0KCkgY29u
c3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNlbmRTdGFydChpbnQgc3RhcnQpOworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTZW5kU3RhcnQoaW50KTsKIAogICAgIFdFQktJVF9FWFBP
UlQgaW50IHNlbmRFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2VuZEVu
ZChpbnQgZW5kKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2VuZEVuZChpbnQpOwogCiAg
ICAgV0VCS0lUX0VYUE9SVCBpbnQgcmVjZWl2ZUhlYWRlcnNFbmQoKSBjb25zdDsKLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0UmVjZWl2ZUhlYWRlcnNFbmQoaW50IGVuZCk7CisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFJlY2VpdmVIZWFkZXJzRW5kKGludCk7CiAKICAgICBXRUJLSVRfRVhQ
T1JUIGludCBzc2xTdGFydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTU0xT
dGFydChpbnQgc3RhcnQpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTU0xTdGFydChpbnQp
OwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgc3NsRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFNTTEVuZChpbnQgZW5kKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
U1NMRW5kKGludCk7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJVUkxMb2Fk
VGltaW5nKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc+
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJVUkxMb2FkZXIuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLS8vIEZJWE1FOiBNb3ZlIHRo
ZXNlIGNsYXNzZXMgaW50byBwbGF0Zm9ybS4KIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJVUkxM
b2FkZXJDbGllbnQ7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVVJMTG9hZGVyQ2xpZW50Lmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlcXVlc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YlVSTFJlcXVlc3QuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4
ICszMSw4IEBACiAjaWZuZGVmIFdlYlVSTFJlcXVlc3RfaAogI2RlZmluZSBXZWJVUkxSZXF1ZXN0
X2gKIAorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkhUVFBCb2R5LmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKICNpZiBkZWZpbmVkKFdFQktJVF9JTVBM
RU1FTlRBVElPTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OyB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxSZXNw
b25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYlVSTFJlc3BvbnNlLmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oCSh3b3JraW5nIGNv
cHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxS
ZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDggKzMxLDggQEAKICNpZm5kZWYgV2ViVVJMUmVzcG9uc2VfaAogI2RlZmluZSBX
ZWJVUkxSZXNwb25zZV9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlT3duUHRyLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgogCiAjaWYgZGVmaW5lZChXRUJLSVRfSU1Q
TEVNRU5UQVRJT04pCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
IH0KQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dElzTXVsdGlwYXJ0UGF5bG9hZChib29sKTsKIAogICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoZSBs
b2NhdGlvbiBvZiBhIGRvd25sb2FkZWQgcmVzcG9uc2UgaWYgdGhlCi0gICAgLy8gV2ViVVJMUmVx
dWVzdCBoYWQgdGhlIGRvd25sb2FkVG9GaWxlIGZsYWcgc2V0IHRvIHRydWUuICBUaGlzIGZpbGUg
cGF0aAorICAgIC8vIFdlYlVSTFJlcXVlc3QgaGFkIHRoZSBkb3dubG9hZFRvRmlsZSBmbGFnIHNl
dCB0byB0cnVlLiBUaGlzIGZpbGUgcGF0aAogICAgIC8vIHJlbWFpbnMgdmFsaWQgZm9yIHRoZSBs
aWZldGltZSBvZiB0aGUgV2ViVVJMTG9hZGVyIHVzZWQgdG8gY3JlYXRlIGl0LgogICAgIFdFQktJ
VF9FWFBPUlQgV2ViU3RyaW5nIGRvd25sb2FkRmlsZVBhdGgoKSBjb25zdDsKICAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0RG93bmxvYWRGaWxlUGF0aChjb25zdCBXZWJTdHJpbmcmKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlZpZGVvRnJhbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJW
aWRlb0ZyYW1lLmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlZpZGVvRnJhbWUuaAkod29ya2luZyBjb3B5KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116770</attachid>
            <date>2011-11-28 09:33:59 -0800</date>
            <delta_ts>2011-11-28 10:43:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73198-20111128093357.patch</filename>
            <type>text/plain</type>
            <size>96745</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDEyMzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgw
IEBACisyMDExLTExLTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBNb3ZlICJmaW5hbCIgYmF0Y2ggb2YgaGVhZGVycyBpbnRvIHB1YmxpYy9w
bGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIG1vdmVzIGFub3RoZXIgZ3JvdXAgb2YgaGVhZGVycyBpbnRvIHRoZSBwbGF0Zm9y
bSBkaXJlY3RvcnkuCisgICAgICAgIEkgZm91bmQgdGhlc2UgaGVhZGVycyBieSByZWFkaW5nIHRo
cm91Z2ggdGhlIGxpc3Qgb2YgaGVhZGVycyBhbmQKKyAgICAgICAgY29vcmVsYXRpbmcgdGhlbSB3
aXRoIFdlYkNvcmUgY29uY2VwdHMuICBUaGlzIHBhdGNoIHNob3VsZCBiZSB0aGUgbGFzdAorICAg
ICAgICBidWxrIG1vdmUgb2YgaGVhZGVycy4KKworICAgICAgICBUaGVyZSBhcmUgdGhyZWUgZ3Jv
dXBzIG9mIGhlYWRlcnMgdGhhdCBtYWtlIHVwIHRoZSBidWxrIG9mIHRoaXMgcGF0Y2g6CisKKyAg
ICAgICAgMSkgRm9udC1yZWxhdGVkIGhlYWRlcnMuCisgICAgICAgIDIpIFVSTExvYWRlci1yZWxh
dGVkIGhlYWRlcnMuCisgICAgICAgIDMpIEdlb21ldHJ5LXJlbGF0ZWQgaGVhZGVycy4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaDogUmVwbGFjZWQuCisgICAgICAgICog
cHVibGljL1dlYkJsb2JEYXRhLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJDb29r
aWUuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYkRhdGFTb3VyY2UuaDoKKyAgICAg
ICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViRmxvYXRQb2ludC5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmxvYXRRdWFk
Lmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJGbG9hdFJlY3QuaDogUmVwbGFjZWQu
CisgICAgICAgICogcHVibGljL1dlYkZvbnQuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGlj
L1dlYkZvbnREZXNjcmlwdGlvbi5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRnJh
bWVDbGllbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSFRUUEJvZHkuaDogUmVwbGFjZWQuCisg
ICAgICAgICogcHVibGljL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmg6IFJlcGxhY2VkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJIVFRQTG9hZEluZm8uaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGlj
L1dlYkltYWdlRGVjb2Rlci5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmg6CisgICAgICAgICog
cHVibGljL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1
YmxpYy9XZWJOb3RpZmljYXRpb24uaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViUmVndWxhckV4cHJl
c3Npb24uaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlRleHRDYXNlU2Vuc2l0aXZp
dHkuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlRleHREaXJlY3Rpb24uaDogUmVw
bGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlRleHRSdW4uaDogUmVwbGFjZWQuCisgICAgICAg
ICogcHVibGljL1dlYlRocmVhZFNhZmVEYXRhLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1Ymxp
Yy9XZWJVUkxFcnJvci5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMTG9hZFRp
bWluZy5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMTG9hZGVyQ2xpZW50Lmg6
IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJVUkxSZXF1ZXN0Lmg6IFJlcGxhY2VkLgor
ICAgICAgICAqIHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBw
dWJsaWMvV2ViVmlkZW9GcmFtZS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVmll
d0NsaWVudC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXQuaDoKKyAgICAgICAgKiBwdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkFycmF5
QnVmZmVyVmlldy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBcnJheUJ1ZmZlclZpZXcuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQmxvYkRh
dGEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmxvYkRh
dGEuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZS5oLgorICAgICAgICAqIHB1
YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViRmxvYXRRdWFkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZsb2F0UXVhZC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFJl
Y3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRS
ZWN0LmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZvbnQuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udC5oLgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJGb250RGVzY3JpcHRpb24uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udERlc2NyaXB0aW9uLmguCisgICAgICAgICogcHVibGlj
L3BsYXRmb3JtL1dlYkhUVFBCb2R5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkhUVFBCb2R5LmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkhU
VFBIZWFkZXJWaXNpdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
YkhUVFBMb2FkSW5mby5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJIVFRQTG9hZEluZm8uaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViSW1hZ2VE
ZWNvZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklt
YWdlRGVjb2Rlci5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJOZXR3b3JrU3RhdGVO
b3RpZmllci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJO
ZXR3b3JrU3RhdGVOb3RpZmllci5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJSZWd1
bGFyRXhwcmVzc2lvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJU
ZXh0Q2FzZVNlbnNpdGl2aXR5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViVGV4dERpcmVjdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
YlRleHRSdW4uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
VGV4dFJ1bi5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUaHJlYWRTYWZl
RGF0YS5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJVUkxFcnJvci5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxFcnJvci5oLgorICAgICAg
ICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkVGltaW5nLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRUaW1pbmcuaC4KKyAgICAgICAgKiBw
dWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyLmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3Jt
L1dlYlVSTExvYWRlckNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0v
V2ViVVJMUmVxdWVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVUkxSZXF1ZXN0LmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlc3Bv
bnNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJl
c3BvbnNlLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlZpZGVvRnJhbWUuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oLgor
CiAyMDExLTExLTI1ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtDaHJvbWl1bV0gV2ViIEluc3BlY3RvcjogZGVsZXRlIFdlYkRldlRvb2xzQWdlbnQ6
OmZyb250ZW5kTG9hZGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJB
cnJheUJ1ZmZlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJBcnJheUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXJyYXlCdWZmZXJWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIsNjQgKzIsMzIgQEAKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgogICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkFycmF5QnVmZmVy
Vmlld19oCi0jZGVmaW5lIFdlYkFycmF5QnVmZmVyVmlld19oCi0KLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0KLW5h
bWVzcGFjZSBXVEYgeyBjbGFzcyBBcnJheUJ1ZmZlclZpZXc7IH0KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLS8vIFByb3ZpZGVzIGFjY2VzcyB0byBhbiBBcnJheUJ1ZmZlclZpZXcuCi1jbGFzcyBX
ZWJBcnJheUJ1ZmZlclZpZXcgewotcHVibGljOgotICAgIH5XZWJBcnJheUJ1ZmZlclZpZXcoKSB7
IHJlc2V0KCk7IH0KLSAgICBXZWJBcnJheUJ1ZmZlclZpZXcoKSB7IH0KLSAgICBXZWJBcnJheUJ1
ZmZlclZpZXcoY29uc3QgV2ViQXJyYXlCdWZmZXJWaWV3JiB2KSB7IGFzc2lnbih2KTsgfQotCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkKiBiYXNlQWRkcmVzcygpIGNvbnN0OwotICAgIFdFQktJVF9F
WFBPUlQgdW5zaWduZWQgYnl0ZU9mZnNldCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2ln
bihjb25zdCBXZWJBcnJheUJ1ZmZlclZpZXcmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVz
ZXQoKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkFycmF5QnVmZmVyVmll
dyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V1RGOjpBcnJheUJ1ZmZlclZpZXc+Jik7Ci0gICAgV2Vi
QXJyYXlCdWZmZXJWaWV3JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdURjo6QXJy
YXlCdWZmZXJWaWV3PiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXVEY6OkFycmF5
QnVmZmVyVmlldz4oKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQ
dHI8V1RGOjpBcnJheUJ1ZmZlclZpZXc+IG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaCIKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmxvYkRhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oCShyZXZpc2lvbiAxMDEy
MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0yOCw2NyArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYkJsb2JEYXRhX2gKLSNkZWZpbmUgV2ViQmxvYkRhdGFfaAotCi0jaW5jbHVkZSAiV2ViVGhy
ZWFkU2FmZURhdGEuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJVUkwuaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNw
YWNlIFdlYkNvcmUgeyBjbGFzcyBCbG9iRGF0YTsgfQotbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzT3duUHRyOyB9CisjaWZuZGVmIFdFQktJVF9NSUdSQVRF
X0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJCbG9iRGF0YS5oIgog
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJCbG9iRGF0YVByaXZhdGU7
Ci0KLWNsYXNzIFdlYkJsb2JEYXRhIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAg
ICAgIGVudW0geyBUeXBlRGF0YSwgVHlwZUZpbGUsIFR5cGVCbG9iIH0gdHlwZTsKLSAgICAgICAg
V2ViVGhyZWFkU2FmZURhdGEgZGF0YTsKLSAgICAgICAgV2ViU3RyaW5nIGZpbGVQYXRoOwotICAg
ICAgICBXZWJVUkwgYmxvYlVSTDsKLSAgICAgICAgbG9uZyBsb25nIG9mZnNldDsKLSAgICAgICAg
bG9uZyBsb25nIGxlbmd0aDsgLy8gLTEgbWVhbnMgZ28gdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS9i
bG9iLgotICAgICAgICBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOyAvLyAwLjAgbWVh
bnMgdGhhdCB0aGUgdGltZSBpcyBub3Qgc2V0LgotICAgIH07Ci0KLSAgICB+V2ViQmxvYkRhdGEo
KSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYkJsb2JEYXRhKCkgOiBtX3ByaXZhdGUoMCkgeyB9Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCByZXNldCgpOwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2
YXRlOyB9Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMuCi0gICAgV0VCS0lU
X0VYUE9SVCBzaXplX3QgaXRlbUNvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBSZXRyaWV2ZXMgdGhl
IHZhbHVlcyBvZiB0aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gaW5kZXguICBSZXR1cm5zIGZhbHNlIGlm
Ci0gICAgLy8gaW5kZXggaXMgb3V0IG9mIGJvdW5kcy4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
aXRlbUF0KHNpemVfdCBpbmRleCwgSXRlbSYgcmVzdWx0KSBjb25zdDsKLQotICAgIFdFQktJVF9F
WFBPUlQgV2ViU3RyaW5nIGNvbnRlbnRUeXBlKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JU
IFdlYlN0cmluZyBjb250ZW50RGlzcG9zaXRpb24oKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgotICAgIFdlYkJsb2JEYXRhKGNvbnN0IFdURjo6UGFzc093blB0cjxXZWJDb3Jl
OjpCbG9iRGF0YT4mKTsKLSAgICBXZWJCbG9iRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFz
c093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NPd25Q
dHI8V2ViQ29yZTo6QmxvYkRhdGE+KCk7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICB2b2lkIGFzc2lnbihjb25zdCBXVEY6OlBhc3NPd25QdHI8V2Vi
Q29yZTo6QmxvYkRhdGE+Jik7Ci0jZW5kaWYKLSAgICBXZWJCbG9iRGF0YVByaXZhdGUqIG1fcHJp
dmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViQmxvYkRh
dGFfaApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgJKHJl
dmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvb2tp
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw1MCArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFdlYkNvb2tpZV9oCi0jZGVmaW5lIFdlYkNvb2tpZV9oCi0KLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlN0cmluZzsKLQotLy8gQSBjb29raWUuCi0v
Lwotc3RydWN0IFdlYkNvb2tpZSB7Ci0gICAgV2ViQ29va2llKCkKLSAgICAgICAgOiBleHBpcmVz
KDApCi0gICAgICAgICwgaHR0cE9ubHkoZmFsc2UpCi0gICAgICAgICwgc2VjdXJlKGZhbHNlKQot
ICAgICAgICAsIHNlc3Npb24oZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIFdlYkNvb2tpZShj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUsIGNvbnN0IFdlYlN0
cmluZyYgZG9tYWluLAotICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJs
ZSBleHBpcmVzLCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwgYm9vbCBzZXNzaW9uKQotICAg
ICAgICA6IG5hbWUobmFtZSkKLSAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKLSAgICAgICAgLCBkb21h
aW4oZG9tYWluKQotICAgICAgICAsIHBhdGgocGF0aCkKLSAgICAgICAgLCBleHBpcmVzKGV4cGly
ZXMpCi0gICAgICAgICwgaHR0cE9ubHkoaHR0cE9ubHkpCi0gICAgICAgICwgc2VjdXJlKHNlY3Vy
ZSkKLSAgICAgICAgLCBzZXNzaW9uKHNlc3Npb24pCi0gICAgewotICAgIH0KLQotICAgIFdlYlN0
cmluZyBuYW1lOwotICAgIFdlYlN0cmluZyB2YWx1ZTsKLSAgICBXZWJTdHJpbmcgZG9tYWluOwot
ICAgIFdlYlN0cmluZyBwYXRoOwotICAgIGRvdWJsZSBleHBpcmVzOwotICAgIGJvb2wgaHR0cE9u
bHk7Ci0gICAgYm9vbCBzZWN1cmU7Ci0gICAgYm9vbCBzZXNzaW9uOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9S
TQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvb2tpZS5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291cmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGF0YVNvdXJjZS5oCShyZXZpc2lvbiAxMDEy
MzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhU291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKICNkZWZpbmUgV2ViRGF0YVNvdXJjZV9oCiAK
ICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uVHlwZS5oIgotI2luY2x1ZGUgIldlYlRleHREaXJlY3Rp
b24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJUZXh0RGlyZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmgJKHJldmlzaW9uIDEwMTIzMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2
LDkgQEAKICNpZm5kZWYgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJfaAogI2RlZmluZSBXZWJFeHRl
cm5hbFRleHR1cmVMYXllcl9oCiAKLSNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJXZWJMYXllci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkZsb2F0UmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZsb2F0UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGbG9hdFBvaW50LmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgs
NjQgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGbG9hdFBvaW50
X2gKLSNkZWZpbmUgV2ViRmxvYXRQb2ludF9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZsb2F0UG9pbnQg
ewotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQgeTsKLQotICAgIFdlYkZsb2F0UG9pbnQoKQotICAg
ICAgICA6IHgoMC4wZikKLSAgICAgICAgLCB5KDAuMGYpCi0gICAgewotICAgIH0KLQotICAgIFdl
YkZsb2F0UG9pbnQoZmxvYXQgeCwgZmxvYXQgeSkKLSAgICAgICAgOiB4KHgpCi0gICAgICAgICwg
eSh5KQotICAgIHsKLSAgICB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJG
bG9hdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHApCi0gICAgICAgIDogeChwLngo
KSkKLSAgICAgICAgLCB5KHAueSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJGbG9hdFBvaW50
JiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcCkKLSAgICB7Ci0gICAgICAg
IHggPSBwLngoKTsKLSAgICAgICAgeSA9IHAueSgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0g
ICAgfQotCi0gICAgb3BlcmF0b3IgV2ViQ29yZTo6RmxvYXRQb2ludCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRQb2ludCh4LCB5KTsKLSAgICB9Ci0jZW5kaWYK
LX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViRmxvYXRQb2ludCYgYSwgY29u
c3QgV2ViRmxvYXRQb2ludCYgYikKLXsKLSAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0g
Yi55OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYkZsb2F0UG9pbnQmIGEs
IGNvbnN0IFdlYkZsb2F0UG9pbnQmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19U
T19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmgJKHJl
dmlzaW9uIDEwMTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0
UXVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1NSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIFdlYkZsb2F0UXVhZF9oCi0jZGVmaW5lIFdlYkZsb2F0UXVhZF9oCi0K
LSNpbmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9u
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGht
PgotI2luY2x1ZGUgPGNtYXRoPgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBX
ZWJGbG9hdFF1YWQgewotICAgIFdlYkZsb2F0UG9pbnQgcFs0XTsKLQotICAgIFdlYkZsb2F0UXVh
ZCgpCi0gICAgewotICAgIH0KLQotICAgIFdlYkZsb2F0UXVhZChjb25zdCBXZWJGbG9hdFBvaW50
JiBwMCwgY29uc3QgV2ViRmxvYXRQb2ludCYgcDEsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIHAyLCBj
b25zdCBXZWJGbG9hdFBvaW50JiBwMykKLSAgICB7Ci0gICAgICAgIHBbMF0gPSBwMDsKLSAgICAg
ICAgcFsxXSA9IHAxOwotICAgICAgICBwWzJdID0gcDI7Ci0gICAgICAgIHBbM10gPSBwMzsKLSAg
ICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlJlY3QgZW5jbG9zaW5nUmVjdCgpIGNvbnN0Owot
Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViRmxvYXRRdWFkJiBvcGVyYXRvcj0o
Y29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBxKQotICAgIHsKLSAgICAgICAgcFswXSA9IHEucDEo
KTsKLSAgICAgICAgcFsxXSA9IHEucDIoKTsKLSAgICAgICAgcFsyXSA9IHEucDMoKTsKLSAgICAg
ICAgcFszXSA9IHEucDQoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBXZWJG
bG9hdFF1YWQoY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBxKQotICAgIHsKLSAgICAgICAgKnRo
aXMgPSBxOwotICAgIH0KLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNp
Zm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkZsb2F0UXVhZC5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGbG9hdFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDc2
ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRmxvYXRSZWN0X2gK
LSNkZWZpbmUgV2ViRmxvYXRSZWN0X2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5o
IgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0j
ZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJGbG9hdFJlY3QgewotICAg
IGZsb2F0IHg7Ci0gICAgZmxvYXQgeTsKLSAgICBmbG9hdCB3aWR0aDsKLSAgICBmbG9hdCBoZWln
aHQ7Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiB3aWR0aCA8PSAwIHx8IGhl
aWdodCA8PSAwOyB9Ci0KLSAgICBXZWJGbG9hdFJlY3QoKQotICAgICAgICA6IHgoMC4wZikKLSAg
ICAgICAgLCB5KDAuMGYpCi0gICAgICAgICwgd2lkdGgoMC4wZikKLSAgICAgICAgLCBoZWlnaHQo
MC4wZikKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViRmxvYXRSZWN0KGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi0gICAgICAgIDogeCh4KQotICAgICAgICAsIHko
eSkKLSAgICAgICAgLCB3aWR0aCh3aWR0aCkKLSAgICAgICAgLCBoZWlnaHQoaGVpZ2h0KQotICAg
IHsKLSAgICB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJGbG9hdFJlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByKQotICAgICAgICA6IHgoci54KCkpCi0gICAgICAg
ICwgeShyLnkoKSkKLSAgICAgICAgLCB3aWR0aChyLndpZHRoKCkpCi0gICAgICAgICwgaGVpZ2h0
KHIuaGVpZ2h0KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYkZsb2F0UmVjdCYgb3BlcmF0b3I9
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcikKLSAgICB7Ci0gICAgICAgIHggPSByLngoKTsK
LSAgICAgICAgeSA9IHIueSgpOwotICAgICAgICB3aWR0aCA9IHIud2lkdGgoKTsKLSAgICAgICAg
aGVpZ2h0ID0gci5oZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IG9wZXJhdG9yIFdlYkNvcmU6OkZsb2F0UmVjdCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gV2ViQ29yZTo6RmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLSNlbmRp
ZgotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGbG9hdFJlY3QmIGEsIGNv
bnN0IFdlYkZsb2F0UmVjdCYgYikKLXsKLSAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0g
Yi55ICYmIGEud2lkdGggPT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJGbG9hdFJlY3QmIGEsIGNvbnN0IFdlYkZs
b2F0UmVjdCYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250LmgJKHJldmlzaW9uIDEwMTIyNCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNzMg
KzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGb250X2gKLSNkZWZp
bmUgV2ViRm9udF9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJDb2xvci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbjsKLXN0cnVj
dCBXZWJGbG9hdFBvaW50Owotc3RydWN0IFdlYkZsb2F0UmVjdDsKLXN0cnVjdCBXZWJQb2ludDsK
LXN0cnVjdCBXZWJSZWN0Owotc3RydWN0IFdlYlRleHRSdW47Ci0KLWNsYXNzIFdlYkZvbnQgewot
cHVibGljOgotICAgIHZpcnR1YWwgfldlYkZvbnQoKSB7IH0KLQotICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIFdlYkZvbnQqIGNyZWF0ZShjb25zdCBXZWJGb250RGVzY3JpcHRpb24mKTsKLQotICAg
IHZpcnR1YWwgV2ViRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbigpIGNvbnN0ID0gMDsK
LQotICAgIHZpcnR1YWwgaW50IGFzY2VudCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGludCBk
ZXNjZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGludCBsaW5lU3BhY2luZygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGZs
b2F0IHhIZWlnaHQoKSBjb25zdCA9IDA7Ci0KLSAgICAvLyBEcmF3cyB0aGUgdGV4dCBydW4gdG8g
dGhlIGdpdmVuIGNhbnZhcy4gVGhlIHRleHQgaXMgcG9zaXRpb25lZCBhdCB0aGUKLSAgICAvLyBn
aXZlbiBsZWZ0LWhhbmQgcG9pbnQgYXQgdGhlIGJhc2VsaW5lLgotICAgIC8vCi0gICAgLy8gVGhl
IHRleHQgd2lsbCBiZSBjbGlwcGVkIHRvIHRoZSBnaXZlbiBjbGlwIHJlY3QuIHxjYW52YXNJc09w
YXF1ZXwgaXMKLSAgICAvLyB1c2VkIHRvIGNvbnRyb2wgd2hldGhlciBzdWJwaXhlbCBhbnRpYWxp
YXNpbmcgaXMgcG9zc2libGUuIElmIHRoZXJlIGlzIGEKLSAgICAvLyBwb3NzaWJpbGl0eSB0aGUg
YXJlYSBkcmF3biBjb3VsZCBiZSBzZW1pLXRyYW5zcGFyZW50LCBzdWJwaXhlbAotICAgIC8vIGFu
dGlhbGlhc2luZyB3aWxsIGJlIGRpc2FibGVkLgotICAgIC8vCi0gICAgLy8gfGZyb218IGFuZCB8
dG98IGFsbG93IHRoZSBjYWxsZXIgdG8gc3BlY2lmeSBhIHN1YnJhbmdlIG9mIHRoZSBnaXZlbiB0
ZXh0Ci0gICAgLy8gcnVuIHRvIGRyYXcuIElmIHx0b3wgaXMgLTEsIHRoZSBlbnRpcmUgcnVuIHdp
bGwgYmUgZHJhd24uCi0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0KFdlYkNhbnZhcyosIGNvbnN0
IFdlYlRleHRSdW4mLCBjb25zdCBXZWJGbG9hdFBvaW50JiBsZWZ0QmFzZWxpbmUsIFdlYkNvbG9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBjbGlwLCBib29sIGNh
bnZhc0lzT3BhcXVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSA9IDAsIGlu
dCB0byA9IC0xKSBjb25zdCA9IDA7Ci0KLSAgICAvLyBNZWFzdXJlcyB0aGUgd2lkdGggaW4gcGl4
ZWxzIG9mIHRoZSBnaXZlbiB0ZXh0IHJ1bi4KLSAgICB2aXJ0dWFsIGludCBjYWxjdWxhdGVXaWR0
aChjb25zdCBXZWJUZXh0UnVuJikgY29uc3QgPSAwOwotCi0gICAgLy8gUmV0dXJucyB0aGUgY2hh
cmFjdGVyIG9mZnNldCBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBob3Jpem9udGFsIHBpeGVs
Ci0gICAgLy8gcG9zaXRpb24gYXMgbWVhc3VyZWQgZnJvbSBmcm9tIHRoZSBsZWZ0IG9mIHRoZSBy
dW4uCi0gICAgdmlydHVhbCBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oY29uc3QgV2ViVGV4dFJ1biYs
IGZsb2F0IHBvc2l0aW9uKSBjb25zdCA9IDA7Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSByZWN0YW5n
bGUgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3Rpb24gcmVjdCBmb3IgdGhlIHN1YnJhbmdlCi0gICAg
Ly8gfGZyb218IC0+IHx0b3wgb2YgdGhlIGdpdmVuIHRleHQgcnVuLiBZb3UgY2FuIHVzZSAtMSBm
b3IgfHRvfCB0byBzcGVjaWZ5Ci0gICAgLy8gdGhlIGVudGlyZSBydW4gKHRoaXMgd2lsbCBkbyBz
b21ldGhpbmcgc2ltaWxhciB0byBjYWxsaW5nIHdpZHRoKCkpLgotICAgIC8vCi0gICAgLy8gVGhl
IHJlY3Qgd2lsbCBiZSBwb3NpdGlvbmVkIGFzIGlmIHRoZSB0ZXh0IHdhcyBkcmF3biBhdCB0aGUg
Z2l2ZW4KLSAgICAvLyB8bGVmdEJhc2VsaW5lfCBwb3NpdGlvbi4gfGhlaWdodHwgaW5kaWNhdGVz
IHRoZSBoZWlnaHQgb2YgdGhlIHNlbGVjdGlvbgotICAgIC8vIHJlY3QgeW91IHdhbnQsIHR5cGlj
YWxseSB0aGlzIHdpbGwganVzdCBiZSB0aGUgaGVpZ2h0KCkgb2YgdGhpcyBmb250LgotICAgIC8v
Ci0gICAgLy8gVG8gZ2V0IHRoZSBwaXhlbCBvZmZzZXQgb2Ygc29tZSBjaGFyYWN0ZXIgKHRoZSBv
cHBvc2l0ZSBvZgotICAgIC8vIG9mZnNldEZvclBvc2l0aW9uKCkpLCBwYXNzIGluIGEgfGxlZnRC
YXNlbGluZXwgPSAoMCwgMCksIHxmcm9tfCA9IDAsIGFuZAotICAgIC8vIHx0b3wgPSB0aGUgY2hh
cmFjdGVyIHlvdSB3YW50LiBUaGUgcmlnaHQgZWRnZSBvZiB0aGUgcmVzdWx0aW5nIHNlbGVjdGlv
bgotICAgIC8vIHJlY3Qgd2lsbCB0ZWxsIHlvdSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgY2hhcmFj
dGVyLgotICAgIHZpcnR1YWwgV2ViRmxvYXRSZWN0IHNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0
IFdlYlRleHRSdW4mLCBjb25zdCBXZWJGbG9hdFBvaW50JiBsZWZ0QmFzZWxpbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwgaW50IGZy
b20gPSAwLCBpbnQgdG8gPSAtMSkgY29uc3QgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkZvbnQuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRm9udERlc2NyaXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udERlc2NyaXB0aW9uLmgJKHJldmlzaW9uIDEwMTIy
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnREZXNjcmlwdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0yOCw3OSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFdlYkZvbnREZXNjcmlwdGlvbl9oCi0jZGVmaW5lIFdlYkZvbnREZXNjcmlwdGlvbl9o
Ci0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBGb250RGVzY3JpcHRpb247IH0KLSNl
bmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbiB7
Ci0gICAgZW51bSBHZW5lcmljRmFtaWx5IHsKLSAgICAgICAgR2VuZXJpY0ZhbWlseU5vbmUsCi0g
ICAgICAgIEdlbmVyaWNGYW1pbHlTdGFuZGFyZCwKLSAgICAgICAgR2VuZXJpY0ZhbWlseVNlcmlm
LAotICAgICAgICBHZW5lcmljRmFtaWx5U2Fuc1NlcmlmLAotICAgICAgICBHZW5lcmljRmFtaWx5
TW9ub3NwYWNlLAotICAgICAgICBHZW5lcmljRmFtaWx5Q3Vyc2l2ZSwKLSAgICAgICAgR2VuZXJp
Y0ZhbWlseUZhbnRhc3kKLSAgICB9OwotCi0gICAgZW51bSBTbW9vdGhpbmcgewotICAgICAgICBT
bW9vdGhpbmdBdXRvLAotICAgICAgICBTbW9vdGhpbmdOb25lLAotICAgICAgICBTbW9vdGhpbmdH
cmF5c2NhbGUsCi0gICAgICAgIFNtb290aGluZ1N1YnBpeGVsCi0gICAgfTsKLQotICAgIGVudW0g
V2VpZ2h0IHsgCi0gICAgICAgIFdlaWdodDEwMCwKLSAgICAgICAgV2VpZ2h0MjAwLAotICAgICAg
ICBXZWlnaHQzMDAsCi0gICAgICAgIFdlaWdodDQwMCwKLSAgICAgICAgV2VpZ2h0NTAwLAotICAg
ICAgICBXZWlnaHQ2MDAsCi0gICAgICAgIFdlaWdodDcwMCwKLSAgICAgICAgV2VpZ2h0ODAwLAot
ICAgICAgICBXZWlnaHQ5MDAsCi0gICAgICAgIFdlaWdodE5vcm1hbCA9IFdlaWdodDQwMCwKLSAg
ICAgICAgV2VpZ2h0Qm9sZCA9IFdlaWdodDcwMAotICAgIH07Ci0KLSAgICBXZWJGb250RGVzY3Jp
cHRpb24oKQotICAgICAgICA6IGdlbmVyaWNGYW1pbHkoR2VuZXJpY0ZhbWlseU5vbmUpCi0gICAg
ICAgICwgc2l6ZSgwKQotICAgICAgICAsIGl0YWxpYyhmYWxzZSkKLSAgICAgICAgLCBzbWFsbENh
cHMoZmFsc2UpCi0gICAgICAgICwgd2VpZ2h0KFdlaWdodE5vcm1hbCkKLSAgICAgICAgLCBzbW9v
dGhpbmcoU21vb3RoaW5nQXV0bykKLSAgICAgICAgLCBsZXR0ZXJTcGFjaW5nKDApCi0gICAgICAg
ICwgd29yZFNwYWNpbmcoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViU3RyaW5nIGZhbWlseTsK
LSAgICBHZW5lcmljRmFtaWx5IGdlbmVyaWNGYW1pbHk7Ci0gICAgZmxvYXQgc2l6ZTsKLSAgICBi
b29sIGl0YWxpYzsKLSAgICBib29sIHNtYWxsQ2FwczsKLSAgICBXZWlnaHQgd2VpZ2h0OwotICAg
IFNtb290aGluZyBzbW9vdGhpbmc7Ci0KLSAgICBzaG9ydCBsZXR0ZXJTcGFjaW5nOwotICAgIHNo
b3J0IHdvcmRTcGFjaW5nOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViRm9u
dERlc2NyaXB0aW9uKGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbiYsIHNob3J0IGZvbnRM
ZXR0ZXJTcGFjaW5nLCBzaG9ydCBmb250V29yZFNwYWNpbmcpOwotCi0gICAgb3BlcmF0b3IgV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0K
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGb250RGVzY3JpcHRpb24uaCIKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZp
c2lvbiAxMDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJO
YXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNs
dWRlICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCi0jaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5o
IgotI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9u
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxFcnJvci5o
IgogCiAjaWYgV0VCS0lUX1VTSU5HX1Y4CiAjaW5jbHVkZSA8djguaD4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHkuaAkocmV2aXNpb24gMTAxMjI0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMjgsODIgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJI
VFRQQm9keV9oCi0jZGVmaW5lIFdlYkhUVFBCb2R5X2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkRhdGEuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgotCi0j
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEZvcm1E
YXRhOyB9Ci1uYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NS
ZWZQdHI7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSFRUUEJv
ZHlQcml2YXRlOwotCi1jbGFzcyBXZWJIVFRQQm9keSB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IEVs
ZW1lbnQgewotICAgICAgICBlbnVtIFR5cGUgeyBUeXBlRGF0YSwgVHlwZUZpbGUsIFR5cGVCbG9i
IH0gdHlwZTsKLSAgICAgICAgV2ViRGF0YSBkYXRhOwotICAgICAgICBXZWJTdHJpbmcgZmlsZVBh
dGg7Ci0gICAgICAgIGxvbmcgbG9uZyBmaWxlU3RhcnQ7Ci0gICAgICAgIGxvbmcgbG9uZyBmaWxl
TGVuZ3RoOyAvLyAtMSBtZWFucyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLgotICAgICAgICBkb3Vi
bGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAgV2ViVVJMIGJsb2JVUkw7Ci0gICAgfTsKLQot
ICAgIH5XZWJIVFRQQm9keSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViSFRUUEJvZHkoKSA6IG1f
cHJpdmF0ZSgwKSB7IH0KLSAgICBXZWJIVFRQQm9keShjb25zdCBXZWJIVFRQQm9keSYgYikgOiBt
X3ByaXZhdGUoMCkgeyBhc3NpZ24oYik7IH0KLSAgICBXZWJIVFRQQm9keSYgb3BlcmF0b3I9KGNv
bnN0IFdlYkhUVFBCb2R5JiBiKQotICAgIHsKLSAgICAgICAgYXNzaWduKGIpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUo
KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXNzaWduKGNvbnN0IFdlYkhUVFBCb2R5Jik7Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuICFtX3ByaXZhdGU7IH0KLQotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBl
bGVtZW50cyBjb21wcmlzaW5nIHRoZSBodHRwIGJvZHkuCi0gICAgV0VCS0lUX0VYUE9SVCBzaXpl
X3QgZWxlbWVudENvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBTZXRzIHRoZSB2YWx1ZXMgb2YgdGhl
IGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4LiAgUmV0dXJucyBmYWxzZSBpZgotICAgIC8vIGlu
ZGV4IGlzIG91dCBvZiBib3VuZHMuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGVsZW1lbnRBdChz
aXplX3QgaW5kZXgsIEVsZW1lbnQmKSBjb25zdDsKLQotICAgIC8vIEFwcGVuZCB0byB0aGUgbGlz
dCBvZiBlbGVtZW50cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCBX
ZWJEYXRhJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEZpbGUoY29uc3QgV2ViU3Ry
aW5nJik7Ci0gICAgLy8gUGFzc2luZyAtMSB0byBmaWxlTGVuZ3RoIG1lYW5zIHRvIHRoZSBlbmQg
b2YgdGhlIGZpbGUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25z
dCBXZWJTdHJpbmcmLCBsb25nIGxvbmcgZmlsZVN0YXJ0LCBsb25nIGxvbmcgZmlsZUxlbmd0aCwg
ZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmRC
bG9iKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgLy8gSWRlbnRpZmllcyBhIHBhcnRpY3VsYXIgZm9y
bSBzdWJtaXNzaW9uIGluc3RhbmNlLiAgQSB2YWx1ZSBvZiAwIGlzCi0gICAgLy8gdXNlZCB0byBp
bmRpY2F0ZSBhbiB1bnNwZWNpZmllZCBpZGVudGlmaWVyLgotICAgIFdFQktJVF9FWFBPUlQgbG9u
ZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRl
bnRpZmllcihsb25nIGxvbmcpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2Vi
SFRUUEJvZHkoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1EYXRhPiYpOwotICAg
IFdlYkhUVFBCb2R5JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZv
cm1EYXRhPiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtRGF0
YT4oKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIHZvaWQgYXNzaWduKFdlYkhUVFBC
b2R5UHJpdmF0ZSopOwotICAgIHZvaWQgZW5zdXJlTXV0YWJsZSgpOwotICAgIFdlYkhUVFBCb2R5
UHJpdmF0ZSogbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5k
ZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkhUVFBCb2R5LmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaAkocmV2aXNpb24gMTAxMjIzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQpAQCAtMjgsMjEgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBXZWJIVFRQSGVhZGVyVmlzaXRvcl9oCi0jZGVmaW5lIFdlYkhUVFBIZWFkZXJWaXNpdG9y
X2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlN0cmluZzsKLQotY2xhc3MgV2Vi
SFRUUEhlYWRlclZpc2l0b3IgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCB2aXNpdEhlYWRl
cihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpID0gMDsKLQot
cHJvdGVjdGVkOgotICAgIH5XZWJIVFRQSGVhZGVyVmlzaXRvcigpIHsgfQotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFU
Rk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmgiCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5m
by5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJIVFRQTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNjEgKzI4LDYgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJIVFRQTG9hZEluZm9faAotI2RlZmluZSBXZWJIVFRQ
TG9hZEluZm9faAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdHJ1Y3Qg
UmVzb3VyY2VMb2FkSW5mbzsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJTdHJp
bmc7Ci0KLWNsYXNzIFdlYkhUVFBMb2FkSW5mbyB7Ci1wdWJsaWM6Ci0gICAgV2ViSFRUUExvYWRJ
bmZvKCkgeyBpbml0aWFsaXplKCk7IH0KLSAgICB+V2ViSFRUUExvYWRJbmZvKCkgeyByZXNldCgp
OyB9Ci0gICAgV2ViSFRUUExvYWRJbmZvKGNvbnN0IFdlYkhUVFBMb2FkSW5mbyYgcikgeyBhc3Np
Z24ocik7IH0KLSAgICBXZWJIVFRQTG9hZEluZm8mIG9wZXJhdG9yID0oY29uc3QgV2ViSFRUUExv
YWRJbmZvJiByKQotICAgIHsgCi0gICAgICAgIGFzc2lnbihyKTsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2ln
bihjb25zdCBXZWJIVFRQTG9hZEluZm8mIHIpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgaHR0
cFN0YXR1c0NvZGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1
c0NvZGUoaW50KTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGh0dHBTdGF0dXNUZXh0
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhUVFBTdGF0dXNUZXh0KGNvbnN0
IFdlYlN0cmluZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RW5jb2RlZERhdGFMZW5n
dGgobG9uZyBsb25nKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhZGRSZXF1ZXN0SGVhZGVy
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGFkZFJlc3BvbnNlSGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBy
ZXF1ZXN0SGVhZGVyc1RleHQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVx
dWVzdEhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBX
ZWJTdHJpbmcgcmVzcG9uc2VIZWFkZXJzVGV4dCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRSZXNwb25zZUhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCi0jaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViSFRUUExvYWRJbmZvKFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRJbmZvPik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OlJlc291cmNlTG9hZEluZm8+KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToK
LSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZEluZm8+IG1fcHJpdmF0ZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hF
QURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJIVFRQTG9hZEluZm8uaCIK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VEZWNv
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW1h
Z2VEZWNvZGVyLmgJKHJldmlzaW9uIDEwMTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw2MyArMjgsNiBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkltYWdlRGVjb2Rlcl9oCi0jZGVmaW5l
IFdlYkltYWdlRGVjb2Rlcl9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYk5vbkNv
cHlhYmxlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW1hZ2VEZWNvZGVyOyB9Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi10eXBlZGVmIFdlYkNvcmU6OkltYWdlRGVjb2RlciBXZWJJ
bWFnZURlY29kZXJQcml2YXRlOwotY2xhc3MgV2ViRGF0YTsKLQotY2xhc3MgV2ViSW1hZ2VEZWNv
ZGVyIDogcHVibGljIFdlYk5vbkNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgewot
ICAgICAgICBUeXBlQk1QLAotICAgICAgICBUeXBlSUNPCi0gICAgfTsKLQotICAgIH5XZWJJbWFn
ZURlY29kZXIoKSB7IHJlc2V0KCk7IH0KLQotICAgIGV4cGxpY2l0IFdlYkltYWdlRGVjb2RlcihU
eXBlIHR5cGUpIHsgaW5pdCh0eXBlKTsgfQotCi0gICAgLy8gU2V0cyBkYXRhIGNvbnRlbnRzIGZv
ciB1bmRlcmx5aW5nIGRlY29kZXIuIEFsbCB0aGUgQVBJIG1ldGhvZHMKLSAgICAvLyByZXF1aXJl
IHRoYXQgc2V0RGF0YSgpIGlzIGNhbGxlZCBwcmlvciB0byB0aGVpciB1c2UuCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOwotCi0gICAgLy8gRGVsZXRlcyBvd25lZCBkZWNvZGVyLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXNldCgpOwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIGltYWdlIGRlY29kaW5n
IGZhaWxlZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNGYWlsZWQoKSBjb25zdDsKLSAgICAK
LSAgICAvLyBSZXR1cm5zIHRydWUgaWYgc2l6ZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZm9y
IHRoZSBkZWNvZGVyLgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBj
b25zdDsKLQotICAgIC8vIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGltYWdlLgotICAgIFdFQktJ
VF9FWFBPUlQgV2ViU2l6ZSBzaXplKCkgY29uc3Q7Ci0KLSAgICAvLyBHaXZlcyBmcmFtZSBjb3Vu
dCBmb3IgdGhlIGltYWdlLiBGb3IgbXVsdGlwbGUgZnJhbWVzLCBkZWNvZGVyIHNjYW5zIHRoZSBp
bWFnZSBkYXRhIGZvciB0aGUgY291bnQuCi0gICAgV0VCS0lUX0VYUE9SVCBzaXplX3QgZnJhbWVD
b3VudCgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyBpZiB0aGUgZnJhbWUgYXQgZ2l2ZW4gaW5k
ZXggaXMgY29tcGxldGVseSBkZWNvZGVkLgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc0ZyYW1l
Q29tcGxldGVBdEluZGV4KGludCBpbmRleCkgY29uc3Q7Ci0KLSAgICAvLyBDcmVhdGVzIGFuZCBy
ZXR1cm5zIFdlYkltYWdlIGZyb20gYnVmZmVyIGF0IHRoZSBpbmRleC4KLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYkltYWdlIGdldEZyYW1lQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0OwotCi1wcml2YXRl
OgotICAgIC8vIENyZWF0ZXMgdHlwZS1zcGVjaWZpYyBkZWNvZGVyLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBpbml0KFR5cGUgdHlwZSk7Ci0KLSAgICBXZWJJbWFnZURlY29kZXJQcml2YXRlKiBt
X3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRf
TUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2VE
ZWNvZGVyLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSAr
MzEsOSBAQAogI2lmbmRlZiBXZWJNZWRpYVBsYXllcl9oCiAjZGVmaW5lIFdlYk1lZGlhUGxheWVy
X2gKIAotI2luY2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
YW52YXMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJWaWRlb0ZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaAkocmV2aXNp
b24gMTAxMjMwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVudUl0ZW1J
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2ViTWVudUl0
ZW1JbmZvX2gKICNkZWZpbmUgV2ViTWVudUl0ZW1JbmZvX2gKIAotI2luY2x1ZGUgIldlYlRleHRE
aXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUZXh0RGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTmV0d29ya1N0YXRlTm90
aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJO
ZXR3b3JrU3RhdGVOb3RpZmllci5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwyMSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYk5l
dHdvcmtTdGF0ZU5vdGlmaWVyX2gKLSNkZWZpbmUgV2ViTmV0d29ya1N0YXRlTm90aWZpZXJfaAot
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJOZXR3b3JrU3RhdGVOb3RpZmllciB7Ci1wdWJsaWM6Ci0gICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgdm9pZCBzZXRPbkxpbmUoYm9vbCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViTmV0
d29ya1N0YXRlTm90aWZpZXIoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZu
ZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJOb3RpZmljYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOb3RpZmljYXRpb24uaAkocmV2aXNpb24gMTAxMjMw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm90aWZpY2F0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpZm5kZWYgV2ViTm90aWZpY2F0aW9uX2gK
ICNkZWZpbmUgV2ViTm90aWZpY2F0aW9uX2gKIAotI2luY2x1ZGUgIldlYlRleHREaXJlY3Rpb24u
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJUZXh0RGlyZWN0aW9uLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgTm90aWZpY2F0aW9uOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgJKHJldmlzaW9u
IDEwMTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHBy
ZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDI5ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgV2ViUmVndWxhckV4cHJlc3Npb25faAotI2RlZmluZSBXZWJSZWd1bGFy
RXhwcmVzc2lvbl9oCi0KLSNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTm9uQ29w
eWFibGUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlJlZ3VsYXJFeHByZXNz
aW9uUHJpdmF0ZTsKLWNsYXNzIFdlYlN0cmluZzsKLQotY2xhc3MgV2ViUmVndWxhckV4cHJlc3Np
b24gOiBwdWJsaWMgV2ViTm9uQ29weWFibGUgewotcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQg
V2ViUmVndWxhckV4cHJlc3Npb24oY29uc3QgV2ViU3RyaW5nJiBwYXR0ZXJuLCBXZWJUZXh0Q2Fz
ZVNlbnNpdGl2aXR5KTsKLSAgICBXRUJLSVRfRVhQT1JUIH5XZWJSZWd1bGFyRXhwcmVzc2lvbigp
OwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgbWF0Y2goY29uc3QgV2ViU3RyaW5nJiwgaW50IHN0
YXJ0RnJvbSA9IDAsIGludCogbWF0Y2hMZW5ndGggPSAwKSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBXZWJSZWd1bGFyRXhwcmVzc2lvblByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZP
Uk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENh
c2VTZW5zaXRpdml0eS5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDE3
ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVGV4dENhc2VTZW5z
aXRpdml0eV9oCi0jZGVmaW5lIFdlYlRleHRDYXNlU2Vuc2l0aXZpdHlfaAotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotLy8gVGhlc2UgY29uc3RhbnRzIHNwZWNpZnkgdGhlIHByZWZlcnJlZCBjYXNl
IHNlbnNpdGl2aXR5LgotZW51bSBXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5IHsKLSAgICBXZWJUZXh0
Q2FzZVNlbnNpdGl2ZSwgICAvLyBTdHJpbmcgbWF0Y2hpbmcgaXMgY2FzZS1zZW5zaXRpdmUuCi0g
ICAgV2ViVGV4dENhc2VJbnNlbnNpdGl2ZSwgLy8gU3RyaW5nIG1hdGNoaW5nIGlzIGNhc2UtaW5z
ZW5zaXRpdmUuCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRf
TUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGV4dENh
c2VTZW5zaXRpdml0eS5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTI4LDE4ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVGV4
dERpcmVjdGlvbl9oCi0jZGVmaW5lIFdlYlRleHREaXJlY3Rpb25faAotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotLy8gUmVwcmVzZW50cyB0ZXh0IGRpcmVjdGlvbnMgKG9yIHdyaXRpbmcgZGlyZWN0
aW9ucykgb2YgYSBET00gbm9kZS4KLWVudW0gV2ViVGV4dERpcmVjdGlvbiB7Ci0gICAgV2ViVGV4
dERpcmVjdGlvbkRlZmF1bHQsICAvLyBOYXR1cmFsIHdyaXRpbmcgZGlyZWN0aW9uICgiaW5oZXJp
dCIpCi0gICAgV2ViVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0LAotICAgIFdlYlRleHREaXJlY3Rp
b25SaWdodFRvTGVmdCwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdF
QktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJU
ZXh0RGlyZWN0aW9uLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlRleHRSdW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0UnVuLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlRleHRSdW4uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNDEgKzI4LDYgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJUZXh0UnVuX2gKLSNkZWZpbmUgV2Vi
VGV4dFJ1bl9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotI2lmZGVmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBUZXh0UnVuOyB9
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJUZXh0UnVuIHsKLSAg
ICBXZWJUZXh0UnVuKGNvbnN0IFdlYlN0cmluZyYgdCwgYm9vbCBpc1JUTCwgYm9vbCBoYXNEaXJl
Y3Rpb25hbE92ZXJyaWRlKQotICAgICAgICA6IHRleHQodCkKLSAgICAgICAgLCBydGwoaXNSVEwp
Ci0gICAgICAgICwgZGlyZWN0aW9uYWxPdmVycmlkZShoYXNEaXJlY3Rpb25hbE92ZXJyaWRlKQot
ICAgIHsKLSAgICB9Ci0gICAgV2ViVGV4dFJ1bigpCi0gICAgICAgIDogcnRsKGZhbHNlKQotICAg
ICAgICAsIGRpcmVjdGlvbmFsT3ZlcnJpZGUoZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIFdl
YlN0cmluZyB0ZXh0OwotICAgIGJvb2wgcnRsOwotICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlk
ZTsKLQotI2lmZGVmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIC8vIFRoZSByZXN1bHRpbmcg
V2ViQ29yZTo6VGV4dFJ1biB3aWxsIHJlZmVyIHRvIHRoZSB0ZXh0IGluIHRoaXMKLSAgICAvLyBz
dHJ1Y3QsIHNvICJ0aGlzIiBtdXN0IG91dGxpdmUgdGhlIFdlYkNvcmUgdGV4dCBydW4uCi0gICAg
b3BlcmF0b3IgV2ViQ29yZTo6VGV4dFJ1bigpIGNvbnN0OwotI2VuZGlmCi19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRG
T1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGV4dFJ1bi5oIgogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUaHJlYWRTYWZlRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVhZFNhZmVEYXRhLmgJKHJl
dmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVh
ZFNhZmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDUwICsyOCw2IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViVGhyZWFkU2FmZURhdGFfaAotI2RlZmluZSBXZWJUaHJlYWRT
YWZlRGF0YV9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0KLSNpZiAhV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0j
aW5jbHVkZSA8c3RyaW5nPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmF3
RGF0YTsgfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQSBjb250YWluZXIgZm9yIHJhdyBi
eXRlcy4gIEl0IGlzIGluZXhwZW5zaXZlIHRvIGNvcHkgYSBXZWJUaHJlYWRTYWZlRGF0YSBvYmpl
Y3QuCi0vLyBJdCBpcyBzYWZlIHRvIHBhc3MgYSBXZWJUaHJlYWRTYWZlRGF0YSBhY3Jvc3MgdGhy
ZWFkcyEhIQotY2xhc3MgV2ViVGhyZWFkU2FmZURhdGEgewotcHVibGljOgotICAgIFdlYlRocmVh
ZFNhZmVEYXRhKCkgeyB9Ci0gICAgfldlYlRocmVhZFNhZmVEYXRhKCkgeyByZXNldCgpOyB9Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlRocmVhZFNhZmVEYXRhJik7
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHNp
emVfdCBzaXplKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBjb25zdCBjaGFyKiBkYXRhKCkg
Y29uc3Q7Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0K
LSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJUaHJlYWRTYWZlRGF0YShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmF3RGF0YT4mKTsKLSAgICBXZWJUaHJlYWRTYWZlRGF0
YSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSYXdEYXRhPiYpOwot
I2Vsc2UKLSAgICBvcGVyYXRvciBzdGQ6OnN0cmluZygpIGNvbnN0Ci0gICAgewotICAgICAgICBz
aXplX3QgbGVuID0gc2l6ZSgpOwotICAgICAgICByZXR1cm4gbGVuID8gc3RkOjpzdHJpbmcoZGF0
YSgpLCBsZW4pIDogc3RkOjpzdHJpbmcoKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAg
ICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJhd0RhdGE+IG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExB
VEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5oIgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxFcnJvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTEVycm9yLmgJKHJldmlz
aW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTEVycm9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTI4LDQ2ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV2ViVVJMRXJyb3JfaAotI2RlZmluZSBXZWJVUkxFcnJvcl9oCi0KLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKLQot
I2lmIGRlZmluZWQoV0VCS0lUX0lNUExFTUVOVEFUSU9OKQotbmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyBSZXNvdXJjZUVycm9yOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0
cnVjdCBXZWJVUkxFcnJvciB7Ci0gICAgLy8gQSBuYW1lc3BhY2UgZm9yICJyZWFzb24iIHRvIHN1
cHBvcnQgdmFyaW91cyBsYXllcnMgZ2VuZXJhdGluZwotICAgIC8vIHJlc291cmNlIGVycm9ycy4g
IFdlYktpdCBkb2VzIG5vdCBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZiB0aGlzCi0gICAgLy8gc3Ry
aW5nIGFzIGl0IHdpbGwganVzdCBiZSBwYXNzZWQgdmlhIGNhbGxiYWNrcyB0byB0aGUgY29uc3Vt
ZXIuCi0gICAgV2ViU3RyaW5nIGRvbWFpbjsKLQotICAgIC8vIEEgbnVtZXJpYyBlcnJvciBjb2Rl
IGRldGFpbGluZyB0aGUgcmVhc29uIGZvciB0aGlzIGVycm9yLiAgQSB2YWx1ZQotICAgIC8vIG9m
IDAgbWVhbnMgbm8gZXJyb3IuICBXZWJLaXQgZG9lcyBub3QgaW50ZXJwcmV0IHRoZSBtZWFuaW5n
IG9mIG90aGVyCi0gICAgLy8gdmFsdWVzIGFuZCBub3JtYWxseSBqdXN0IGZvcndhcmRzIHRoaXMg
ZXJyb3IgaW5mb3JtYXRpb24gYmFjayB0byB0aGUKLSAgICAvLyBlbWJlZGRlciAoc2VlIGZvciBl
eGFtcGxlIFdlYkZyYW1lQ2xpZW50KS4KLSAgICBpbnQgcmVhc29uOwotCi0gICAgLy8gQSBmbGFn
IHNob3dpbmcgd2hldGhlciB0aGlzIGVycm9yIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2FuY2Vs
bGF0aW9uLAotICAgIC8vIGUuZy4gd2UgZG8gbm90IHNob3cgY29uc29sZSBlcnJvcnMgZm9yIGNh
bmNlbGxhdGlvbnMuCi0gICAgYm9vbCBpc0NhbmNlbGxhdGlvbjsKLQotICAgIC8vIFRoZSB1cmwg
dGhhdCBmYWlsZWQgdG8gbG9hZC4KLSAgICBXZWJVUkwgdW5yZWFjaGFibGVVUkw7Ci0KLSAgICBX
ZWJVUkxFcnJvcigpIDogcmVhc29uKDApLCBpc0NhbmNlbGxhdGlvbihmYWxzZSkgeyB9Ci0KLSNp
ZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKLSAgICBXZWJVUkxFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgV2ViVVJMRXJyb3ImIG9wZXJhdG9yPShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgb3BlcmF0b3IgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcigpIGNvbnN0OwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQor
I2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViVVJMRXJyb3IuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRUaW1pbmcuaAkocmV2aXNpb24gMTAxMjIzKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC0yOCw4MSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdl
YlVSTExvYWRUaW1pbmdfaAotI2RlZmluZSBXZWJVUkxMb2FkVGltaW5nX2gKLQotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVQdHIu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSZXNvdXJjZUxvYWRUaW1pbmc7IH0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJTdHJpbmc7Ci0KLWNsYXNzIFdlYlVSTExvYWRU
aW1pbmcgewotcHVibGljOgotICAgIH5XZWJVUkxMb2FkVGltaW5nKCkgeyByZXNldCgpOyB9Ci0K
LSAgICBXZWJVUkxMb2FkVGltaW5nKCkgeyB9Ci0gICAgV2ViVVJMTG9hZFRpbWluZyhjb25zdCBX
ZWJVUkxMb2FkVGltaW5nJiBkKSB7IGFzc2lnbihkKTsgfQotICAgIFdlYlVSTExvYWRUaW1pbmcm
IG9wZXJhdG9yPShjb25zdCBXZWJVUkxMb2FkVGltaW5nJiBkKQotICAgIHsKLSAgICAgICAgYXNz
aWduKGQpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlVSTExvYWRUaW1pbmcmKTsKLQot
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIGRvdWJsZSByZXF1ZXN0VGltZSgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0VGltZShkb3VibGUgdGltZSk7Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIGludCBwcm94eVN0YXJ0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dFByb3h5U3RhcnQoaW50IHN0YXJ0KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHByb3h5RW5k
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByb3h5RW5kKGludCBlbmQpOwot
Ci0gICAgV0VCS0lUX0VYUE9SVCBpbnQgZG5zU3RhcnQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0RE5TU3RhcnQoaW50IHN0YXJ0KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50
IGRuc0VuZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRETlNFbmQoaW50IGVu
ZCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBjb25uZWN0U3RhcnQoKSBjb25zdDsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdFN0YXJ0KGludCBzdGFydCk7Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIGludCBjb25uZWN0RW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldENvbm5lY3RFbmQoaW50IGVuZCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBzZW5kU3Rh
cnQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2VuZFN0YXJ0KGludCBzdGFy
dCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBzZW5kRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFNlbmRFbmQoaW50IGVuZCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGlu
dCByZWNlaXZlSGVhZGVyc0VuZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRS
ZWNlaXZlSGVhZGVyc0VuZChpbnQgZW5kKTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHNzbFN0
YXJ0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNTTFN0YXJ0KGludCBzdGFy
dCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBzc2xFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0U1NMRW5kKGludCBlbmQpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgV2ViVVJMTG9hZFRpbWluZyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
UmVzb3VyY2VMb2FkVGltaW5nPiYpOwotICAgIFdlYlVSTExvYWRUaW1pbmcmIG9wZXJhdG9yPShj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPiYpOwotICAg
IG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc+KCkg
Y29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJl
c291cmNlTG9hZFRpbWluZz4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9u
IDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw1MSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFdlYlVSTExvYWRlckNsaWVudF9oCi0jZGVmaW5lIFdlYlVSTExvYWRlckNs
aWVudF9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJVUkxMb2FkZXI7Ci1jbGFz
cyBXZWJVUkxSZXF1ZXN0OwotY2xhc3MgV2ViVVJMUmVzcG9uc2U7Ci1zdHJ1Y3QgV2ViVVJMRXJy
b3I7Ci0KLWNsYXNzIFdlYlVSTExvYWRlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgLy8gQ2FsbGVk
IHdoZW4gZm9sbG93aW5nIGEgcmVkaXJlY3QuICB8bmV3UmVxdWVzdHwgY29udGFpbnMgdGhlIHJl
cXVlc3QKLSAgICAvLyBnZW5lcmF0ZWQgYnkgdGhlIHJlZGlyZWN0LiAgVGhlIGNsaWVudCBtYXkg
bW9kaWZ5IHxuZXdSZXF1ZXN0fC4KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KAot
ICAgICAgICBXZWJVUkxMb2FkZXIqLCBXZWJVUkxSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBX
ZWJVUkxSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgeyB9Ci0KLSAgICAvLyBDYWxsZWQgdG8g
cmVwb3J0IHVwbG9hZCBwcm9ncmVzcy4gIFRoZSBieXRlcyByZXBvcnRlZCBjb3JyZXNwb25kIHRv
Ci0gICAgLy8gdGhlIEhUVFAgbWVzc2FnZSBib2R5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSgKLSAgICAgICAgV2ViVVJMTG9hZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgeyB9Ci0KLSAgICAvLyBD
YWxsZWQgd2hlbiByZXNwb25zZSBoZWFkZXJzIGFyZSByZWNlaXZlZC4KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTExvYWRlciosIGNvbnN0IFdlYlVSTFJlc3BvbnNl
JikgeyB9Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBhIGNodW5rIG9mIHJlc3BvbnNlIGRhdGEgaXMg
ZG93bmxvYWRlZC4gIFRoaXMgaXMgb25seSBjYWxsZWQKLSAgICAvLyBpZiBXZWJVUkxSZXF1ZXN0
J3MgZG93bmxvYWRUb0ZpbGUgZmxhZyB3YXMgc2V0IHRvIHRydWUuCi0gICAgdmlydHVhbCB2b2lk
IGRpZERvd25sb2FkRGF0YShXZWJVUkxMb2FkZXIqLCBpbnQgZGF0YUxlbmd0aCkgeyB9Ci0KLSAg
ICAvLyBDYWxsZWQgd2hlbiBhIGNodW5rIG9mIHJlc3BvbnNlIGRhdGEgaXMgcmVjZWl2ZWQuCi0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlVSTExvYWRlciosIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIHsgfQotCi0gICAg
Ly8gQ2FsbGVkIHdoZW4gYSBjaHVuayBvZiByZW5kZXJlci1nZW5lcmF0ZWQgbWV0YWRhdGEgaXMg
cmVjZWl2ZWQgZnJvbSB0aGUgY2FjaGUuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDYWNo
ZWRNZXRhZGF0YShXZWJVUkxMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgeyB9Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiB0aGUgbG9hZCBjb21wbGV0ZXMgc3VjY2Vzc2Z1
bGx5LgotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYlVSTExvYWRlciosIGRv
dWJsZSBmaW5pc2hUaW1lKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBsb2FkIGNvbXBs
ZXRlcyB3aXRoIGFuIGVycm9yLgotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYlVSTExvYWRl
ciosIGNvbnN0IFdlYlVSTEVycm9yJikgeyB9Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5X
ZWJVUkxMb2FkZXJDbGllbnQoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisj
aWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlcXVlc3QuaAkocmV2aXNpb24gMTAxMjIzKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yOCwxNzIgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJV
UkxSZXF1ZXN0X2gKLSNkZWZpbmUgV2ViVVJMUmVxdWVzdF9oCi0KLSNpbmNsdWRlICJXZWJIVFRQ
Qm9keS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotCi0jaWYgZGVmaW5lZChX
RUJLSVRfSU1QTEVNRU5UQVRJT04pCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291cmNl
UmVxdWVzdDsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJDU3Ry
aW5nOwotY2xhc3MgV2ViSFRUUEJvZHk7Ci1jbGFzcyBXZWJIVFRQSGVhZGVyVmlzaXRvcjsKLWNs
YXNzIFdlYlN0cmluZzsKLWNsYXNzIFdlYlVSTDsKLWNsYXNzIFdlYlVSTFJlcXVlc3RQcml2YXRl
OwotCi1jbGFzcyBXZWJVUkxSZXF1ZXN0IHsKLXB1YmxpYzoKLSAgICBlbnVtIENhY2hlUG9saWN5
IHsKLSAgICAgICAgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgIC8vIG5vcm1hbCBsb2FkCi0gICAg
ICAgIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhLCAvLyByZWxvYWQKLSAgICAgICAgUmV0dXJuQ2Fj
aGVEYXRhRWxzZUxvYWQsIC8vIGJhY2svZm9yd2FyZCBvciBlbmNvZGluZyBjaGFuZ2UgLSBhbGxv
dyBzdGFsZSBkYXRhCi0gICAgICAgIFJldHVybkNhY2hlRGF0YURvbnRMb2FkLCAvLyByZXN1bHRz
IG9mIGEgcG9zdCAtIGFsbG93IHN0YWxlIGRhdGEgYW5kIG9ubHkgdXNlIGNhY2hlCi0gICAgfTsK
LQotICAgIGVudW0gVGFyZ2V0VHlwZSB7Ci0gICAgICAgIFRhcmdldElzTWFpbkZyYW1lID0gMCwK
LSAgICAgICAgVGFyZ2V0SXNTdWJmcmFtZSA9IDEsCi0gICAgICAgIFRhcmdldElzU3VicmVzb3Vy
Y2UgPSAyLAotICAgICAgICBUYXJnZXRJc1N0eWxlU2hlZXQgPSAzLAotICAgICAgICBUYXJnZXRJ
c1NjcmlwdCA9IDQsCi0gICAgICAgIFRhcmdldElzRm9udFJlc291cmNlID0gNSwKLSAgICAgICAg
VGFyZ2V0SXNJbWFnZSA9IDYsCi0gICAgICAgIFRhcmdldElzT2JqZWN0ID0gNywKLSAgICAgICAg
VGFyZ2V0SXNNZWRpYSA9IDgsCi0gICAgICAgIFRhcmdldElzV29ya2VyID0gOSwKLSAgICAgICAg
VGFyZ2V0SXNTaGFyZWRXb3JrZXIgPSAxMCwKLSAgICAgICAgVGFyZ2V0SXNQcmVmZXRjaCA9IDEx
LAotICAgICAgICBUYXJnZXRJc1ByZXJlbmRlciA9IDEyLAotICAgICAgICBUYXJnZXRJc0Zhdmlj
b24gPSAxMywKLSAgICAgICAgVGFyZ2V0SXNYSFIgPSAxNCwKLSAgICAgICAgVGFyZ2V0SXNUZXh0
VHJhY2sgPSAxNSwKLSAgICAgICAgVGFyZ2V0SXNVbnNwZWNpZmllZCA9IDE2LAotICAgIH07Ci0K
LSAgICBjbGFzcyBFeHRyYURhdGEgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+RXh0
cmFEYXRhKCkgeyB9Ci0gICAgfTsKLQotICAgIH5XZWJVUkxSZXF1ZXN0KCkgeyByZXNldCgpOyB9
Ci0KLSAgICBXZWJVUkxSZXF1ZXN0KCkgOiBtX3ByaXZhdGUoMCkgeyB9Ci0gICAgV2ViVVJMUmVx
dWVzdChjb25zdCBXZWJVUkxSZXF1ZXN0JiByKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihyKTsg
fQotICAgIFdlYlVSTFJlcXVlc3QmIG9wZXJhdG9yPShjb25zdCBXZWJVUkxSZXF1ZXN0JiByKQot
ICAgIHsKLSAgICAgICAgYXNzaWduKHIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
Ci0gICAgZXhwbGljaXQgV2ViVVJMUmVxdWVzdChjb25zdCBXZWJVUkwmIHVybCkgOiBtX3ByaXZh
dGUoMCkKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemUoKTsKLSAgICAgICAgc2V0VVJMKHVybCk7
Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoKTsKLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNv
bnN0IFdlYlVSTFJlcXVlc3QmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc051bGwoKSBj
b25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMIHVybCgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRVUkwoY29uc3QgV2ViVVJMJik7Ci0KLSAgICAvLyBVc2VkIHRvIGlt
cGxlbWVudCB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcuCi0gICAgV0VCS0lUX0VYUE9SVCBX
ZWJVUkwgZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgV2ViVVJMJik7Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgYWxsb3dDb29raWVzKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEFsbG93Q29va2llcyhib29sIGFsbG93Q29va2llcyk7Ci0KLSAgICAvLyBDb250cm9scyB3
aGV0aGVyIHVzZXIgbmFtZSwgcGFzc3dvcmQsIGFuZCBjb29raWVzIG1heSBiZSBzZW50IHdpdGgg
dGhlCi0gICAgLy8gcmVxdWVzdC4gKElmIGZhbHNlLCB0aGlzIG92ZXJyaWRlcyBhbGxvd0Nvb2tp
ZXMuKQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzKCkgY29u
c3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFsbG93U3RvcmVkQ3JlZGVudGlhbHMoYm9v
bCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKLQotICAgIFdFQktJVF9FWFBPUlQgQ2FjaGVQb2xp
Y3kgY2FjaGVQb2xpY3koKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q2FjaGVQ
b2xpY3koQ2FjaGVQb2xpY3kpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgaHR0cE1l
dGhvZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIVFRQTWV0aG9kKGNvbnN0
IFdlYlN0cmluZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgaHR0cEhlYWRlckZp
ZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmlu
ZyYgdmFsdWUpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhZGRIVFRQSGVhZGVyRmllbGQoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgY2xlYXJIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgdmlzaXRIVFRQSGVhZGVyRmllbGRzKFdlYkhUVFBIZWFk
ZXJWaXNpdG9yKikgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYkhUVFBCb2R5IGh0dHBC
b2R5KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhUVFBCb2R5KGNvbnN0IFdl
YkhUVFBCb2R5Jik7Ci0KLSAgICAvLyBDb250cm9scyB3aGV0aGVyIHVwbG9hZCBwcm9ncmVzcyBl
dmVudHMgYXJlIGdlbmVyYXRlZCB3aGVuIGEgcmVxdWVzdAotICAgIC8vIGhhcyBhIGJvZHkuCi0g
ICAgV0VCS0lUX0VYUE9SVCBib29sIHJlcG9ydFVwbG9hZFByb2dyZXNzKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcG9ydFVwbG9hZFByb2dyZXNzKGJvb2wpOwotCi0gICAg
Ly8gQ29udHJvbHMgd2hldGhlciBsb2FkIHRpbWluZyBpbmZvIGlzIGNvbGxlY3RlZCBmb3IgdGhl
IHJlcXVlc3QuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIHJlcG9ydExvYWRUaW1pbmcoKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwb3J0TG9hZFRpbWluZyhib29sKTsKLQot
ICAgIC8vIENvbnRyb2xzIHdoZXRoZXIgYWN0dWFsIGhlYWRlcnMgc2VudCBhbmQgcmVjZWl2ZWQg
Zm9yIHJlcXVlc3QgYXJlCi0gICAgLy8gY29sbGVjdGVkIGFuZCByZXBvcnRlZC4KLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgcmVwb3J0UmF3SGVhZGVycygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRSZXBvcnRSYXdIZWFkZXJzKGJvb2wpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBU
YXJnZXRUeXBlIHRhcmdldFR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
VGFyZ2V0VHlwZShUYXJnZXRUeXBlKTsKLQotICAgIC8vIFRydWUgaWYgdGhlIHJlcXVlc3Qgd2Fz
IHVzZXIgaW5pdGlhdGVkLgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNVc2VyR2VzdHVyZSgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIYXNVc2VyR2VzdHVyZShib29sKTsK
LQotICAgIC8vIEEgY29uc3VtZXIgY29udHJvbGxlZCB2YWx1ZSBpbnRlbmRlZCB0byBiZSB1c2Vk
IHRvIGlkZW50aWZ5IHRoZQotICAgIC8vIHJlcXVlc3Rvci4KLSAgICBXRUJLSVRfRVhQT1JUIGlu
dCByZXF1ZXN0b3JJRCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0
b3JJRChpbnQpOwotCi0gICAgLy8gQSBjb25zdW1lciBjb250cm9sbGVkIHZhbHVlIGludGVuZGVk
IHRvIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlCi0gICAgLy8gcHJvY2VzcyBvZiB0aGUgcmVxdWVz
dG9yLgotICAgIFdFQktJVF9FWFBPUlQgaW50IHJlcXVlc3RvclByb2Nlc3NJRCgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0b3JQcm9jZXNzSUQoaW50KTsKLQotICAg
IC8vIEFsbG93cyB0aGUgcmVxdWVzdCB0byBiZSBtYXRjaGVkIHVwIHdpdGggaXRzIGFwcCBjYWNo
ZSBob3N0LgotICAgIFdFQktJVF9FWFBPUlQgaW50IGFwcENhY2hlSG9zdElEKCkgY29uc3Q7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFwcENhY2hlSG9zdElEKGludCBpZCk7Ci0KLSAgICAv
LyBJZiB0cnVlLCB0aGUgcmVzcG9uc2UgYm9keSB3aWxsIGJlIGRvd25sb2FkZWQgdG8gYSBmaWxl
IG1hbmFnZWQgYnkgdGhlCi0gICAgLy8gV2ViVVJMTG9hZGVyLiAgU2VlIFdlYlVSTFJlc3BvbnNl
Ojpkb3dubG9hZGVkRmlsZVBhdGguCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGRvd25sb2FkVG9G
aWxlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERvd25sb2FkVG9GaWxlKGJv
b2wpOwotCi0gICAgLy8gRXh0cmEgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHVuZGVybHlpbmcg
cmVzb3VyY2UgcmVxdWVzdC4gUmVzb3VyY2UKLSAgICAvLyByZXF1ZXN0cyBjYW4gYmUgY29waWVk
LiBJZiBub24tbnVsbCwgZWFjaCBjb3B5IG9mIGEgcmVzb3VyY2UgcmVxdWVzdHMKLSAgICAvLyBo
b2xkcyBhIHBvaW50ZXIgdG8gdGhlIGV4dHJhIGRhdGEsIGFuZCB0aGUgZXh0cmEgZGF0YSBwb2lu
dGVyIHdpbGwgYmUKLSAgICAvLyBkZWxldGVkIHdoZW4gdGhlIGxhc3QgcmVzb3VyY2UgcmVxdWVz
dCBpcyBkZXN0cm95ZWQuIFNldHRpbmcgdGhlIGV4dHJhCi0gICAgLy8gZGF0YSBwb2ludGVyIHdp
bGwgY2F1c2UgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2UgcmVxdWVzdCB0byBiZQotICAgIC8vIGRp
c3NvY2lhdGVkIGZyb20gYW55IGV4aXN0aW5nIG5vbi1udWxsIGV4dHJhIGRhdGEgcG9pbnRlci4K
LSAgICBXRUJLSVRfRVhQT1JUIEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKTsKLQotI2lmIGRlZmluZWQo
V0VCS0lUX0lNUExFTUVOVEFUSU9OKQotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgdG9N
dXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiB0b1Jlc291cmNlUmVxdWVzdCgpIGNvbnN0OwotI2VuZGlmCi0KLXByb3RlY3RlZDoKLSAg
ICB2b2lkIGFzc2lnbihXZWJVUkxSZXF1ZXN0UHJpdmF0ZSopOwotCi1wcml2YXRlOgotICAgIFdl
YlVSTFJlcXVlc3RQcml2YXRlKiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmgJKHJldmlzaW9uIDEwMTIyMykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTI4LDE1OSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYlVSTFJlc3BvbnNlX2gKLSNkZWZpbmUgV2ViVVJMUmVzcG9uc2VfaAotCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZU93blB0
ci5oIgotCi0jaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVNRU5UQVRJT04pCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViQ1N0cmluZzsKLWNsYXNzIFdlYkhUVFBIZWFkZXJWaXNpdG9yOwot
Y2xhc3MgV2ViSFRUUExvYWRJbmZvOwotY2xhc3MgV2ViU3RyaW5nOwotY2xhc3MgV2ViVVJMOwot
Y2xhc3MgV2ViVVJMTG9hZFRpbWluZzsKLWNsYXNzIFdlYlVSTFJlc3BvbnNlUHJpdmF0ZTsKLQot
Y2xhc3MgV2ViVVJMUmVzcG9uc2UgewotcHVibGljOgotICAgIH5XZWJVUkxSZXNwb25zZSgpIHsg
cmVzZXQoKTsgfQotCi0gICAgV2ViVVJMUmVzcG9uc2UoKSA6IG1fcHJpdmF0ZSgwKSB7IH0KLSAg
ICBXZWJVUkxSZXNwb25zZShjb25zdCBXZWJVUkxSZXNwb25zZSYgcikgOiBtX3ByaXZhdGUoMCkg
eyBhc3NpZ24ocik7IH0KLSAgICBXZWJVUkxSZXNwb25zZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlVS
TFJlc3BvbnNlJiByKQotICAgIHsKLSAgICAgICAgYXNzaWduKHIpOwotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCi0gICAgZXhwbGljaXQgV2ViVVJMUmVzcG9uc2UoY29uc3QgV2ViVVJM
JiB1cmwpIDogbV9wcml2YXRlKDApCi0gICAgewotICAgICAgICBpbml0aWFsaXplKCk7Ci0gICAg
ICAgIHNldFVSTCh1cmwpOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFs
aXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGFzc2lnbihjb25zdCBXZWJVUkxSZXNwb25zZSYpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCBib29sIGlzTnVsbCgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJVUkwgdXJsKCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFVSTChjb25zdCBXZWJVUkwmKTsKLQot
ICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgY29ubmVjdGlvbklEKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb25JRCh1bnNpZ25lZCk7Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgY29ubmVjdGlvblJldXNlZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRDb25uZWN0aW9uUmV1c2VkKGJvb2wpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJV
UkxMb2FkVGltaW5nIGxvYWRUaW1pbmcoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TG9h
ZFRpbWluZyhjb25zdCBXZWJVUkxMb2FkVGltaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdl
YkhUVFBMb2FkSW5mbyBodHRwTG9hZEluZm8oKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
SFRUUExvYWRJbmZvKGNvbnN0IFdlYkhUVFBMb2FkSW5mbyYpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCBkb3VibGUgcmVzcG9uc2VUaW1lKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dFJlc3BvbnNlVGltZShkb3VibGUpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbWlt
ZVR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TUlNRVR5cGUoY29uc3Qg
V2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGxvbmcgbG9uZyBleHBlY3RlZENvbnRl
bnRMZW5ndGgoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50TGVuZ3RoKGxvbmcgbG9uZyk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0ZXh0
RW5jb2RpbmdOYW1lKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRleHRFbmNv
ZGluZ05hbWUoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmlu
ZyBzdWdnZXN0ZWRGaWxlTmFtZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRT
dWdnZXN0ZWRGaWxlTmFtZShjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdFQktJVF9FWFBPUlQg
aW50IGh0dHBTdGF0dXNDb2RlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhU
VFBTdGF0dXNDb2RlKGludCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBodHRwU3Rh
dHVzVGV4dCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIVFRQU3RhdHVzVGV4
dChjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGh0dHBI
ZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYWRkSFRUUEhlYWRlckZp
ZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFySFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHZpc2l0SFRUUEhlYWRlckZpZWxkcyhXZWJI
VFRQSGVhZGVyVmlzaXRvciopIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgbGFz
dE1vZGlmaWVkRGF0ZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRMYXN0TW9k
aWZpZWREYXRlKGRvdWJsZSk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGxvbmcgbG9uZyBhcHBDYWNo
ZUlEKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFwcENhY2hlSUQobG9uZyBs
b25nKTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMIGFwcENhY2hlTWFuaWZlc3RVUkwoKSBj
b25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QXBwQ2FjaGVNYW5pZmVzdFVSTChjb25z
dCBXZWJVUkwmKTsKLQotICAgIC8vIEEgY29uc3VtZXIgY29udHJvbGxlZCB2YWx1ZSBpbnRlbmRl
ZCB0byBiZSB1c2VkIHRvIHJlY29yZCBvcGFxdWUKLSAgICAvLyBzZWN1cml0eSBpbmZvIHJlbGF0
ZWQgdG8gdGhpcyByZXF1ZXN0LgotICAgIFdFQktJVF9FWFBPUlQgV2ViQ1N0cmluZyBzZWN1cml0
eUluZm8oKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2VjdXJpdHlJbmZvKGNv
bnN0IFdlYkNTdHJpbmcmKTsKLQotI2lmIGRlZmluZWQoV0VCS0lUX0lNUExFTUVOVEFUSU9OKQot
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHRvTXV0YWJsZVJlc291cmNlUmVzcG9uc2Uo
KTsKLSAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB0b1Jlc291cmNlUmVzcG9u
c2UoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgLy8gRmxhZyB3aGV0aGVyIHRoaXMgcmVxdWVzdCB3
YXMgc2VydmVkIGZyb20gdGhlIGRpc2sgY2FjaGUgZW50cnkuCi0gICAgV0VCS0lUX0VYUE9SVCBi
b29sIHdhc0NhY2hlZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRXYXNDYWNo
ZWQoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IHdhcyBsb2FkZWQg
dmlhIHRoZSBTUERZIHByb3RvY29sIG9yIG5vdC4KLSAgICAvLyBTUERZIGlzIGFuIGV4cGVyaW1l
bnRhbCB3ZWIgcHJvdG9jb2wsIHNlZSBodHRwOi8vZGV2LmNocm9taXVtLm9yZy9zcGR5Ci0gICAg
V0VCS0lUX0VYUE9SVCBib29sIHdhc0ZldGNoZWRWaWFTUERZKCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFdhc0ZldGNoZWRWaWFTUERZKGJvb2wpOwotCi0gICAgLy8gRmxhZyB3
aGV0aGVyIHRoaXMgcmVxdWVzdCB3YXMgbG9hZGVkIGFmdGVyIHRoZSBUTFMvTmV4dC1Qcm90b2Nv
bC1OZWdvdGlhdGlvbiB3YXMgdXNlZC4KLSAgICAvLyBUaGlzIGlzIHJlbGF0ZWQgdG8gU1BEWS4K
LSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgd2FzTnBuTmVnb3RpYXRlZCgpIGNvbnN0OwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRXYXNOcG5OZWdvdGlhdGVkKGJvb2wpOwotCi0gICAgLy8gRmxh
ZyB3aGV0aGVyIHRoaXMgcmVxdWVzdCB3YXMgbWFkZSB3aGVuICJBbHRlcm5hdGUtUHJvdG9jb2w6
IHh4eCIKLSAgICAvLyBpcyBwcmVzZW50IGluIHNlcnZlcidzIHJlc3BvbnNlLgotICAgIFdFQktJ
VF9FWFBPUlQgYm9vbCB3YXNBbHRlcm5hdGVQcm90b2NvbEF2YWlsYWJsZSgpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRXYXNBbHRlcm5hdGVQcm90b2NvbEF2YWlsYWJsZShib29s
KTsKLQotICAgIC8vIEZsYWcgd2hldGhlciB0aGlzIHJlcXVlc3Qgd2FzIGxvYWRlZCB2aWEgYW4g
ZXhwbGljaXQgcHJveHkgKEhUVFAsIFNPQ0tTLCBldGMpLgotICAgIFdFQktJVF9FWFBPUlQgYm9v
bCB3YXNGZXRjaGVkVmlhUHJveHkoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
V2FzRmV0Y2hlZFZpYVByb3h5KGJvb2wpOwotCi0gICAgLy8gRmxhZyB3aGV0aGVyIHRoaXMgcmVx
dWVzdCBpcyBwYXJ0IG9mIGEgbXVsdGlwYXJ0IHJlc3BvbnNlLgotICAgIFdFQktJVF9FWFBPUlQg
Ym9vbCBpc011bHRpcGFydFBheWxvYWQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0SXNNdWx0aXBhcnRQYXlsb2FkKGJvb2wpOwotCi0gICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhl
IGxvY2F0aW9uIG9mIGEgZG93bmxvYWRlZCByZXNwb25zZSBpZiB0aGUKLSAgICAvLyBXZWJVUkxS
ZXF1ZXN0IGhhZCB0aGUgZG93bmxvYWRUb0ZpbGUgZmxhZyBzZXQgdG8gdHJ1ZS4gIFRoaXMgZmls
ZSBwYXRoCi0gICAgLy8gcmVtYWlucyB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBXZWJV
UkxMb2FkZXIgdXNlZCB0byBjcmVhdGUgaXQuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcg
ZG93bmxvYWRGaWxlUGF0aCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREb3du
bG9hZEZpbGVQYXRoKGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgLy8gUmVtb3RlIElQIGFkZHJl
c3Mgb2YgdGhlIHNvY2tldCB3aGljaCBmZXRjaGVkIHRoaXMgcmVzb3VyY2UuCi0gICAgV0VCS0lU
X0VYUE9SVCBXZWJTdHJpbmcgcmVtb3RlSVBBZGRyZXNzKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFJlbW90ZUlQQWRkcmVzcyhjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIC8v
IFJlbW90ZSBwb3J0IG51bWJlciBvZiB0aGUgc29ja2V0IHdoaWNoIGZldGNoZWQgdGhpcyByZXNv
dXJjZS4KLSAgICBXRUJLSVRfRVhQT1JUIHVuc2lnbmVkIHNob3J0IHJlbW90ZVBvcnQoKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVtb3RlUG9ydCh1bnNpZ25lZCBzaG9ydCk7
Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGFzc2lnbihXZWJVUkxSZXNwb25zZVByaXZhdGUqKTsK
LQotcHJpdmF0ZToKLSAgICBXZWJVUkxSZXNwb25zZVByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNf
VE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5o
CShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWRlb0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDQxICsyOCw2IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViVmlkZW9GcmFtZV9oCi0jZGVmaW5lIFdlYlZpZGVvRnJhbWVf
aAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQSBwcm94eSB2aWRlbyBmcmFtZSBpbnRlcmZh
Y2UgdG8gY29tbXVuaWNhdGUgZnJhbWUgZGF0YSBiZXR3ZWVuIGNocm9taXVtCi0vLyBhbmQgV2Vi
S2l0LgotY2xhc3MgV2ViVmlkZW9GcmFtZSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBGb3JtYXQgewot
ICAgICAgICBGb3JtYXRJbnZhbGlkLAotICAgICAgICBGb3JtYXRSR0I1NTUsCi0gICAgICAgIEZv
cm1hdFJHQjU2NSwKLSAgICAgICAgRm9ybWF0UkdCMjQsCi0gICAgICAgIEZvcm1hdFJHQjMyLAot
ICAgICAgICBGb3JtYXRSR0JBLAotICAgICAgICBGb3JtYXRZVjEyLAotICAgICAgICBGb3JtYXRZ
VjE2LAotICAgICAgICBGb3JtYXROVjEyLAotICAgICAgICBGb3JtYXRFbXB0eSwKLSAgICAgICAg
Rm9ybWF0QVNDSUksCi0gICAgICAgIEZvcm1hdEk0MjAsCi0gICAgICAgIEZvcm1hdE5hdGl2ZVRl
eHR1cmUsCi0gICAgfTsKLQotICAgIHZpcnR1YWwgfldlYlZpZGVvRnJhbWUoKSB7IH0KLSAgICB2
aXJ0dWFsIEZvcm1hdCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBGb3JtYXRJbnZhbGlkOyB9Ci0g
ICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0
dWFsIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIHBsYW5lcygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGludCBzdHJp
ZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGNvbnN0
IHZvaWQqIGRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0
dWFsIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExB
VEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWaWRlb0ZyYW1lLmgiCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJldmlz
aW9uIDEwMTIzMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOSBAQAogI2luY2x1ZGUgIldlYlBhZ2VW
aXNpYmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlICJXZWJQb3B1cFR5cGUuaCIKICNpbmNsdWRlICJX
ZWJUZXh0QWZmaW5pdHkuaCIKLSNpbmNsdWRlICJXZWJUZXh0RGlyZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViV2lkZ2V0Q2xpZW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViVGV4dERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgJKHJl
dmlzaW9uIDEwMTIzMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEgQEAKIAogI2luY2x1ZGUgIldlYkNv
bXBvc2l0aW9uVW5kZXJsaW5lLmgiCiAjaW5jbHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgotI2lu
Y2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlRleHREaXJlY3Rpb24uaCIKIAogI2RlZmluZSBXRUJLSVRfSEFTX05FV19GVUxMU0NS
RUVOX0FQSSAxCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdl
dENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YldpZGdldENsaWVudC5oCShyZXZpc2lvbiAxMDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
b21tb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViVGV4dERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
QXJyYXlCdWZmZXJWaWV3LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQXJyYXlCdWZmZXJWaWV3Lmg6MTAxMjIzKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3LmgJKHdvcmtp
bmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkFycmF5QnVmZmVyVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYkFycmF5QnVmZmVyVmlldy5oCShyZXZpc2lvbiAxMDEyMjMpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZp
ZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2lmbmRlZiBXZWJBcnJheUJ1
ZmZlclZpZXdfaAogI2RlZmluZSBXZWJBcnJheUJ1ZmZlclZpZXdfaAogCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgor
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKIAogbmFt
ZXNwYWNlIFdURiB7IGNsYXNzIEFycmF5QnVmZmVyVmlldzsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmgJKHJl
dmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmxv
YkRhdGEuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJCbG9iRGF0YS5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmgJKHJldmlzaW9uIDEw
MTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2ViQmxvYkRh
dGFfaAogI2RlZmluZSBXZWJCbG9iRGF0YV9oCiAKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNp
bmNsdWRlICJXZWJUaHJlYWRTYWZlRGF0YS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgog
CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEJs
b2JEYXRhOyB9CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgaXRlbXMuCiAgICAgV0VCS0lUX0VYUE9SVCBzaXplX3QgaXRlbUNvdW50KCkgY29u
c3Q7CiAKLSAgICAvLyBSZXRyaWV2ZXMgdGhlIHZhbHVlcyBvZiB0aGUgaXRlbSBhdCB0aGUgZ2l2
ZW4gaW5kZXguICBSZXR1cm5zIGZhbHNlIGlmCisgICAgLy8gUmV0cmlldmVzIHRoZSB2YWx1ZXMg
b2YgdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGluZGV4LiBSZXR1cm5zIGZhbHNlIGlmCiAgICAgLy8g
aW5kZXggaXMgb3V0IG9mIGJvdW5kcy4KICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXRlbUF0KHNp
emVfdCBpbmRleCwgSXRlbSYgcmVzdWx0KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llLmgJKHJldmlzaW9uIDEw
MTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmg6MTAx
MjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2ll
LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkNvb2tpZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYkNvb2tpZS5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb29raWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTMgKzMxLDExIEBACiAjaWZuZGVmIFdlYkNvb2tpZV9oCiAjZGVmaW5lIFdlYkNv
b2tpZV9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlN0cmluZzsKLQogLy8g
QSBjb29raWUuCiAvLwogc3RydWN0IFdlYkNvb2tpZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oCShyZXZp
c2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0
UG9pbnQuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJGbG9hdFBvaW50LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgJKHJldmlz
aW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkZsb2F0UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBX
ZWJGbG9hdFBvaW50X2gKICNkZWZpbmUgV2ViRmxvYXRQb2ludF9oCiAKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKIAogI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UXVhZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UXVhZC5oCShy
ZXZpc2lvbiAxMDEyMjQpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZs
b2F0UXVhZC5oOjEwMTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYkZsb2F0UXVhZC5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaAkocmV2aXNp
b24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
RmxvYXRRdWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2Vi
RmxvYXRRdWFkX2gKICNkZWZpbmUgV2ViRmxvYXRRdWFkX2gKIAorI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgogI2luY2x1ZGUgIldlYkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
b21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCisjaW5jbHVkZSAiV2ViUmVj
dC5oIgogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRS
ZWN0LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRmxvYXRSZWN0Lmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5o
CShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJGbG9hdFJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lm
bmRlZiBXZWJGbG9hdFJlY3RfaAogI2RlZmluZSBXZWJGbG9hdFJlY3RfaAogCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKICNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250LmgJKHJldmlzaW9u
IDEwMTIyNCkJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9udC5oOjEw
MTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnQu
aAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViRm9udC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYkZvbnQuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw5ICszMSw5IEBACiAjaWZuZGVmIFdlYkZvbnRfaAogI2RlZmluZSBXZWJGb250X2gKIAotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbG9y
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ2FudmFz
LmgiCisjaW5jbHVkZSAiV2ViQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkZvbnREZXNjcmlwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZvbnREZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAx
MDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnREZXNjcmlw
dGlvbi5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkZvbnREZXNjcmlwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250RGVzY3JpcHRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGb250RGVzY3Jp
cHRpb24uaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViRm9udERlc2NyaXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDcgQEAKICNpZm5kZWYgV2ViRm9udERlc2NyaXB0aW9uX2gKICNkZWZpbmUgV2ViRm9udERl
c2NyaXB0aW9uX2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUg
IldlYlN0cmluZy5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQQm9keS5oCShyZXZpc2lvbiAx
MDEyMjQpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5Lmg6
MTAxMjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRU
UEJvZHkuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQQm9keS5oCShyZXZpc2lvbiAxMDEyMjMpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQQm9keS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpZm5kZWYgV2ViSFRUUEJvZHlfaAog
I2RlZmluZSBXZWJIVFRQQm9keV9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEYXRhLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogbmFt
ZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBGb3JtRGF0YTsgfQpAQCAtNzYsNyArNzYsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbXByaXNpbmcgdGhl
IGh0dHAgYm9keS4KICAgICBXRUJLSVRfRVhQT1JUIHNpemVfdCBlbGVtZW50Q291bnQoKSBjb25z
dDsKIAotICAgIC8vIFNldHMgdGhlIHZhbHVlcyBvZiB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4g
aW5kZXguICBSZXR1cm5zIGZhbHNlIGlmCisgICAgLy8gU2V0cyB0aGUgdmFsdWVzIG9mIHRoZSBl
bGVtZW50IGF0IHRoZSBnaXZlbiBpbmRleC4gUmV0dXJucyBmYWxzZSBpZgogICAgIC8vIGluZGV4
IGlzIG91dCBvZiBib3VuZHMuCiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGVsZW1lbnRBdChzaXpl
X3QgaW5kZXgsIEVsZW1lbnQmKSBjb25zdDsKIApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25zdCBXZWJTdHJpbmcmLCBs
b25nIGxvbmcgZmlsZVN0YXJ0LCBsb25nIGxvbmcgZmlsZUxlbmd0aCwgZG91YmxlIG1vZGlmaWNh
dGlvblRpbWUpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFdlYlVS
TCYpOwogCi0gICAgLy8gSWRlbnRpZmllcyBhIHBhcnRpY3VsYXIgZm9ybSBzdWJtaXNzaW9uIGlu
c3RhbmNlLiAgQSB2YWx1ZSBvZiAwIGlzCisgICAgLy8gSWRlbnRpZmllcyBhIHBhcnRpY3VsYXIg
Zm9ybSBzdWJtaXNzaW9uIGluc3RhbmNlLiBBIHZhbHVlIG9mIDAgaXMKICAgICAvLyB1c2VkIHRv
IGluZGljYXRlIGFuIHVuc3BlY2lmaWVkIGlkZW50aWZpZXIuCiAgICAgV0VCS0lUX0VYUE9SVCBs
b25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJ
ZGVudGlmaWVyKGxvbmcgbG9uZyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmgJKHJl
dmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRU
UEhlYWRlclZpc2l0b3IuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQTG9hZEluZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJI
VFRQTG9hZEluZm8uaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJIVFRQTG9hZEluZm8uaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUExvYWRJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViSFRUUExvYWRJbmZvLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBMb2FkSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw4ICszMSw4IEBACiAjaWZuZGVmIFdlYkhUVFBMb2FkSW5mb19oCiAjZGVmaW5lIFdl
YkhUVFBMb2FkSW5mb19oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3Qg
UmVzb3VyY2VMb2FkSW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYkltYWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkltYWdlRGVjb2Rlci5oCShyZXZpc2lvbiAxMDEyMjQp
CShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkltYWdlRGVjb2Rlci5oOjEw
MTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkltYWdl
RGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZURlY29kZXIuaAkocmV2aXNpb24g
MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSW1h
Z2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2Vi
SW1hZ2VEZWNvZGVyX2gKICNkZWZpbmUgV2ViSW1hZ2VEZWNvZGVyX2gKIAotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIK
KyNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW1hZ2VEZWNvZGVyOyB9CiAKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogCiAgICAgLy8gU2V0cyBkYXRhIGNvbnRlbnRzIGZvciB1bmRlcmx5aW5nIGRl
Y29kZXIuIEFsbCB0aGUgQVBJIG1ldGhvZHMKICAgICAvLyByZXF1aXJlIHRoYXQgc2V0RGF0YSgp
IGlzIGNhbGxlZCBwcmlvciB0byB0aGVpciB1c2UuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dERhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkRhdGEmLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CiAKICAgICAvLyBEZWxldGVzIG93bmVkIGRlY29kZXIuCiAgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHJlc2V0KCk7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICAvLyBDcmVhdGVzIHR5cGUtc3BlY2lmaWMgZGVjb2Rlci4KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgaW5pdChUeXBlIHR5cGUpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0KFR5cGUpOwog
CiAgICAgV2ViSW1hZ2VEZWNvZGVyUHJpdmF0ZSogbV9wcml2YXRlOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViTmV0d29ya1N0YXRlTm90aWZpZXIuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJOZXR3b3JrU3RhdGVOb3RpZmllci5oOjEwMTIyMykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk5ldHdvcmtTdGF0
ZU5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTmV0d29ya1N0YXRlTm90
aWZpZXIuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTmV0d29ya1N0YXRlTm90aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJOZXR3b3JrU3RhdGVOb3RpZmllcl9oCiAjZGVmaW5l
IFdlYk5ldHdvcmtTdGF0ZU5vdGlmaWVyX2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVndWxhckV4cHJl
c3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oCShyZXZpc2lvbiAxMDEyMjQpCShmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmg6MTAxMjI0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVndWxhckV4cHJl
c3Npb24uaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViUmVndWxhckV4cHJlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oCShy
ZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJSZWd1bGFyRXhwcmVzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBA
CiAjaWZuZGVmIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gKICNkZWZpbmUgV2ViUmVndWxhckV4cHJl
c3Npb25faAogCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFi
bGUuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5
LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVGV4dENhc2VTZW5zaXRpdml0eS5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaAkod29ya2luZyBjb3B5
KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dENh
c2VTZW5zaXRpdml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaAkocmV2aXNpb24gMTAxMjIzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dENhc2VTZW5z
aXRpdml0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiAvLyBUaGVzZSBjb25zdGFudHMgc3BlY2lmeSB0aGUgcHJlZmVycmVkIGNhc2Ugc2Vu
c2l0aXZpdHkuCiBlbnVtIFdlYlRleHRDYXNlU2Vuc2l0aXZpdHkgewotICAgIFdlYlRleHRDYXNl
U2Vuc2l0aXZlLCAgIC8vIFN0cmluZyBtYXRjaGluZyBpcyBjYXNlLXNlbnNpdGl2ZS4KKyAgICBX
ZWJUZXh0Q2FzZVNlbnNpdGl2ZSwgLy8gU3RyaW5nIG1hdGNoaW5nIGlzIGNhc2Utc2Vuc2l0aXZl
LgogICAgIFdlYlRleHRDYXNlSW5zZW5zaXRpdmUsIC8vIFN0cmluZyBtYXRjaGluZyBpcyBjYXNl
LWluc2Vuc2l0aXZlLgogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViVGV4dERpcmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHREaXJlY3Rpb24uaAkocmV2aXNpb24gMTAx
MjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9u
Lmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
VGV4dERpcmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUZXh0RGlyZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dERpcmVjdGlvbi5oCShy
ZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJUZXh0RGlyZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIC8vIFJlcHJlc2VudHMgdGV4dCBkaXJlY3Rpb25zIChvciB3cml0
aW5nIGRpcmVjdGlvbnMpIG9mIGEgRE9NIG5vZGUuCiBlbnVtIFdlYlRleHREaXJlY3Rpb24gewot
ICAgIFdlYlRleHREaXJlY3Rpb25EZWZhdWx0LCAgLy8gTmF0dXJhbCB3cml0aW5nIGRpcmVjdGlv
biAoImluaGVyaXQiKQorICAgIFdlYlRleHREaXJlY3Rpb25EZWZhdWx0LCAvLyBOYXR1cmFsIHdy
aXRpbmcgZGlyZWN0aW9uICgiaW5oZXJpdCIpCiAgICAgV2ViVGV4dERpcmVjdGlvbkxlZnRUb1Jp
Z2h0LAogICAgIFdlYlRleHREaXJlY3Rpb25SaWdodFRvTGVmdCwKIH07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUZXh0UnVuLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGV4dFJ1bi5oCShy
ZXZpc2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRl
eHRSdW4uaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJUZXh0UnVuLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHRSdW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUZXh0UnVuLmgJKHJldmlzaW9uIDEwMTIy
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRleHRSdW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJUZXh0UnVuX2gK
ICNkZWZpbmUgV2ViVGV4dFJ1bl9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIK
KyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKIAogI2lmZGVmIFdFQktJVF9JTVBMRU1FTlRBVElPTgog
bmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBUZXh0UnVuOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZFNhZmVE
YXRhLmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGhyZWFkU2FmZURhdGEuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYlRocmVhZFNhZmVEYXRhLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZFNhZmVEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDggKzMxLDggQEAKICNpZm5kZWYgV2ViVGhyZWFkU2FmZURhdGFfaAogI2RlZmlu
ZSBXZWJUaHJlYWRTYWZlRGF0YV9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgogCiAjaWYgIVdFQktJVF9JTVBMRU1FTlRB
VElPTgogI2luY2x1ZGUgPHN0cmluZz4KQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgeyBjbGFzcyBSYXdEYXRhOyB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0vLyBBIGNvbnRh
aW5lciBmb3IgcmF3IGJ5dGVzLiAgSXQgaXMgaW5leHBlbnNpdmUgdG8gY29weSBhIFdlYlRocmVh
ZFNhZmVEYXRhIG9iamVjdC4KKy8vIEEgY29udGFpbmVyIGZvciByYXcgYnl0ZXMuIEl0IGlzIGlu
ZXhwZW5zaXZlIHRvIGNvcHkgYSBXZWJUaHJlYWRTYWZlRGF0YSBvYmplY3QuCiAvLyBJdCBpcyBz
YWZlIHRvIHBhc3MgYSBXZWJUaHJlYWRTYWZlRGF0YSBhY3Jvc3MgdGhyZWFkcyEhIQogY2xhc3Mg
V2ViVGhyZWFkU2FmZURhdGEgewogcHVibGljOgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxFcnJvci5oCShyZXZpc2lvbiAxMDEy
MjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTEVycm9yLmg6MTAx
MjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMRXJy
b3IuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViVVJMRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxFcnJvci5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxFcnJvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaWZuZGVmIFdlYlVSTEVycm9yX2gKICNkZWZp
bmUgV2ViVVJMRXJyb3JfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViVVJMLmgiCiAKICNpZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKIG5hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VFcnJvcjsgfQpAQCAtNDIsMTIgKzQyLDEyIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViVVJMRXJyb3IgewogICAgIC8vIEEgbmFt
ZXNwYWNlIGZvciAicmVhc29uIiB0byBzdXBwb3J0IHZhcmlvdXMgbGF5ZXJzIGdlbmVyYXRpbmcK
LSAgICAvLyByZXNvdXJjZSBlcnJvcnMuICBXZWJLaXQgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUg
dmFsdWUgb2YgdGhpcworICAgIC8vIHJlc291cmNlIGVycm9ycy4gV2ViS2l0IGRvZXMgbm90IGNh
cmUgYWJvdXQgdGhlIHZhbHVlIG9mIHRoaXMKICAgICAvLyBzdHJpbmcgYXMgaXQgd2lsbCBqdXN0
IGJlIHBhc3NlZCB2aWEgY2FsbGJhY2tzIHRvIHRoZSBjb25zdW1lci4KICAgICBXZWJTdHJpbmcg
ZG9tYWluOwogCi0gICAgLy8gQSBudW1lcmljIGVycm9yIGNvZGUgZGV0YWlsaW5nIHRoZSByZWFz
b24gZm9yIHRoaXMgZXJyb3IuICBBIHZhbHVlCi0gICAgLy8gb2YgMCBtZWFucyBubyBlcnJvci4g
IFdlYktpdCBkb2VzIG5vdCBpbnRlcnByZXQgdGhlIG1lYW5pbmcgb2Ygb3RoZXIKKyAgICAvLyBB
IG51bWVyaWMgZXJyb3IgY29kZSBkZXRhaWxpbmcgdGhlIHJlYXNvbiBmb3IgdGhpcyBlcnJvci4g
QSB2YWx1ZQorICAgIC8vIG9mIDAgbWVhbnMgbm8gZXJyb3IuIFdlYktpdCBkb2VzIG5vdCBpbnRl
cnByZXQgdGhlIG1lYW5pbmcgb2Ygb3RoZXIKICAgICAvLyB2YWx1ZXMgYW5kIG5vcm1hbGx5IGp1
c3QgZm9yd2FyZHMgdGhpcyBlcnJvciBpbmZvcm1hdGlvbiBiYWNrIHRvIHRoZQogICAgIC8vIGVt
YmVkZGVyIChzZWUgZm9yIGV4YW1wbGUgV2ViRnJhbWVDbGllbnQpLgogICAgIGludCByZWFzb247
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2Fk
VGltaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViVVJMTG9hZFRpbWluZy5oCShyZXZpc2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRUaW1pbmcuaDoxMDEyMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkVGltaW5nLmgJKHdv
cmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYlVSTExvYWRUaW1pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkVGltaW5nLmgJKHJldmlzaW9uIDEwMTIyMykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogI2lmbmRlZiBXZWJVUkxMb2FkVGlt
aW5nX2gKICNkZWZpbmUgV2ViVVJMTG9hZFRpbWluZ19oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIFJlc291cmNlTG9hZFRpbWluZzsgfQogCkBAIC01OCw0MCArNTgsNDAg
QEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlz
TnVsbCgpOyB9CiAKICAgICBXRUJLSVRfRVhQT1JUIGRvdWJsZSByZXF1ZXN0VGltZSgpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXF1ZXN0VGltZShkb3VibGUgdGltZSk7Cisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RUaW1lKGRvdWJsZSk7CiAKICAgICBXRUJL
SVRfRVhQT1JUIGludCBwcm94eVN0YXJ0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFByb3h5U3RhcnQoaW50IHN0YXJ0KTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJv
eHlTdGFydChpbnQpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgcHJveHlFbmQoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJveHlFbmQoaW50IGVuZCk7CisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFByb3h5RW5kKGludCk7CiAKICAgICBXRUJLSVRfRVhQT1JUIGludCBk
bnNTdGFydCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRETlNTdGFydChpbnQg
c3RhcnQpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRETlNTdGFydChpbnQpOwogCiAgICAg
V0VCS0lUX0VYUE9SVCBpbnQgZG5zRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEROU0VuZChpbnQgZW5kKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RE5TRW5kKGlu
dCk7CiAKICAgICBXRUJLSVRfRVhQT1JUIGludCBjb25uZWN0U3RhcnQoKSBjb25zdDsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdFN0YXJ0KGludCBzdGFydCk7CisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldENvbm5lY3RTdGFydChpbnQpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBp
bnQgY29ubmVjdEVuZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb25uZWN0
RW5kKGludCBlbmQpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb25uZWN0RW5kKGludCk7
CiAKICAgICBXRUJLSVRfRVhQT1JUIGludCBzZW5kU3RhcnQoKSBjb25zdDsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0U2VuZFN0YXJ0KGludCBzdGFydCk7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFNlbmRTdGFydChpbnQpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgc2VuZEVuZCgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTZW5kRW5kKGludCBlbmQpOworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTZW5kRW5kKGludCk7CiAKICAgICBXRUJLSVRfRVhQT1JU
IGludCByZWNlaXZlSGVhZGVyc0VuZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRSZWNlaXZlSGVhZGVyc0VuZChpbnQgZW5kKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
UmVjZWl2ZUhlYWRlcnNFbmQoaW50KTsKIAogICAgIFdFQktJVF9FWFBPUlQgaW50IHNzbFN0YXJ0
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNTTFN0YXJ0KGludCBzdGFydCk7
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNTTFN0YXJ0KGludCk7CiAKICAgICBXRUJLSVRf
RVhQT1JUIGludCBzc2xFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U1NM
RW5kKGludCBlbmQpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTU0xFbmQoaW50KTsKIAog
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYlVSTExvYWRUaW1pbmcoY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZz4mKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRl
ci5oCShyZXZpc2lvbiAxMDEyMzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJVUkxMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gRklYTUU6IE1vdmUgdGhlc2UgY2xhc3NlcyBpbnRv
IHBsYXRmb3JtLgogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYlVSTExvYWRlckNsaWVudDsKIGNs
YXNzIFdlYlVSTFJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
MTAxMjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJD
bGllbnQuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJVUkxMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYlVSTExvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
MiArNDAsMTIgQEAgc3RydWN0IFdlYlVSTEVycm9yOwogCiBjbGFzcyBXZWJVUkxMb2FkZXJDbGll
bnQgewogcHVibGljOgotICAgIC8vIENhbGxlZCB3aGVuIGZvbGxvd2luZyBhIHJlZGlyZWN0LiAg
fG5ld1JlcXVlc3R8IGNvbnRhaW5zIHRoZSByZXF1ZXN0Ci0gICAgLy8gZ2VuZXJhdGVkIGJ5IHRo
ZSByZWRpcmVjdC4gIFRoZSBjbGllbnQgbWF5IG1vZGlmeSB8bmV3UmVxdWVzdHwuCisgICAgLy8g
Q2FsbGVkIHdoZW4gZm9sbG93aW5nIGEgcmVkaXJlY3QuIHxuZXdSZXF1ZXN0fCBjb250YWlucyB0
aGUgcmVxdWVzdAorICAgIC8vIGdlbmVyYXRlZCBieSB0aGUgcmVkaXJlY3QuIFRoZSBjbGllbnQg
bWF5IG1vZGlmeSB8bmV3UmVxdWVzdHwuCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVz
dCgKICAgICAgICAgV2ViVVJMTG9hZGVyKiwgV2ViVVJMUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29u
c3QgV2ViVVJMUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIHsgfQogCi0gICAgLy8gQ2FsbGVk
IHRvIHJlcG9ydCB1cGxvYWQgcHJvZ3Jlc3MuICBUaGUgYnl0ZXMgcmVwb3J0ZWQgY29ycmVzcG9u
ZCB0bworICAgIC8vIENhbGxlZCB0byByZXBvcnQgdXBsb2FkIHByb2dyZXNzLiBUaGUgYnl0ZXMg
cmVwb3J0ZWQgY29ycmVzcG9uZCB0bwogICAgIC8vIHRoZSBIVFRQIG1lc3NhZ2UgYm9keS4KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoCiAgICAgICAgIFdlYlVSTExvYWRlciosIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpIHsgfQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4g
cmVzcG9uc2UgaGVhZGVycyBhcmUgcmVjZWl2ZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJVUkxMb2FkZXIqLCBjb25zdCBXZWJVUkxSZXNwb25zZSYpIHsgfQogCi0g
ICAgLy8gQ2FsbGVkIHdoZW4gYSBjaHVuayBvZiByZXNwb25zZSBkYXRhIGlzIGRvd25sb2FkZWQu
ICBUaGlzIGlzIG9ubHkgY2FsbGVkCisgICAgLy8gQ2FsbGVkIHdoZW4gYSBjaHVuayBvZiByZXNw
b25zZSBkYXRhIGlzIGRvd25sb2FkZWQuIFRoaXMgaXMgb25seSBjYWxsZWQKICAgICAvLyBpZiBX
ZWJVUkxSZXF1ZXN0J3MgZG93bmxvYWRUb0ZpbGUgZmxhZyB3YXMgc2V0IHRvIHRydWUuCiAgICAg
dmlydHVhbCB2b2lkIGRpZERvd25sb2FkRGF0YShXZWJVUkxMb2FkZXIqLCBpbnQgZGF0YUxlbmd0
aCkgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YlVSTFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oOjEwMTIyMykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlcXVlc3QuaAkod29ya2lu
ZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
VVJMUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYlVSTFJlcXVlc3QuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaWZuZGVmIFdlYlVSTFJlcXVlc3RfaAogI2RlZmluZSBX
ZWJVUkxSZXF1ZXN0X2gKIAorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkhU
VFBCb2R5LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKICNpZiBkZWZpbmVk
KFdFQktJVF9JTVBMRU1FTlRBVElPTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OyB9CkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFdlYlVSTFJlcXVlc3RQcml2YXRl
OwogY2xhc3MgV2ViVVJMUmVxdWVzdCB7CiBwdWJsaWM6CiAgICAgZW51bSBDYWNoZVBvbGljeSB7
Ci0gICAgICAgIFVzZVByb3RvY29sQ2FjaGVQb2xpY3ksICAvLyBub3JtYWwgbG9hZAorICAgICAg
ICBVc2VQcm90b2NvbENhY2hlUG9saWN5LCAvLyBub3JtYWwgbG9hZAogICAgICAgICBSZWxvYWRJ
Z25vcmluZ0NhY2hlRGF0YSwgLy8gcmVsb2FkCiAgICAgICAgIFJldHVybkNhY2hlRGF0YUVsc2VM
b2FkLCAvLyBiYWNrL2ZvcndhcmQgb3IgZW5jb2RpbmcgY2hhbmdlIC0gYWxsb3cgc3RhbGUgZGF0
YQogICAgICAgICBSZXR1cm5DYWNoZURhdGFEb250TG9hZCwgLy8gcmVzdWx0cyBvZiBhIHBvc3Qg
LSBhbGxvdyBzdGFsZSBkYXRhIGFuZCBvbmx5IHVzZSBjYWNoZQpAQCAtMTExLDEyICsxMTEsMTIg
QEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2ll
cyhjb25zdCBXZWJVUkwmKTsKIAogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhbGxvd0Nvb2tpZXMo
KSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wgYWxs
b3dDb29raWVzKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wp
OwogCiAgICAgLy8gQ29udHJvbHMgd2hldGhlciB1c2VyIG5hbWUsIHBhc3N3b3JkLCBhbmQgY29v
a2llcyBtYXkgYmUgc2VudCB3aXRoIHRoZQogICAgIC8vIHJlcXVlc3QuIChJZiBmYWxzZSwgdGhp
cyBvdmVycmlkZXMgYWxsb3dDb29raWVzLikKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWxsb3dT
dG9yZWRDcmVkZW50aWFscygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbGxv
d1N0b3JlZENyZWRlbnRpYWxzKGJvb2wgYWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldEFsbG93U3RvcmVkQ3JlZGVudGlhbHMoYm9vbCk7CiAKICAgICBX
RUJLSVRfRVhQT1JUIENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CiAgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldENhY2hlUG9saWN5KENhY2hlUG9saWN5KTsKQEAgLTE2NiwxMCArMTY2
LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIEFsbG93cyB0aGUgcmVxdWVzdCB0byBiZSBtYXRjaGVk
IHVwIHdpdGggaXRzIGFwcCBjYWNoZSBob3N0LgogICAgIFdFQktJVF9FWFBPUlQgaW50IGFwcENh
Y2hlSG9zdElEKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFwcENhY2hlSG9z
dElEKGludCBpZCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFwcENhY2hlSG9zdElEKGlu
dCk7CiAKICAgICAvLyBJZiB0cnVlLCB0aGUgcmVzcG9uc2UgYm9keSB3aWxsIGJlIGRvd25sb2Fk
ZWQgdG8gYSBmaWxlIG1hbmFnZWQgYnkgdGhlCi0gICAgLy8gV2ViVVJMTG9hZGVyLiAgU2VlIFdl
YlVSTFJlc3BvbnNlOjpkb3dubG9hZGVkRmlsZVBhdGguCisgICAgLy8gV2ViVVJMTG9hZGVyLiBT
ZWUgV2ViVVJMUmVzcG9uc2U6OmRvd25sb2FkZWRGaWxlUGF0aC4KICAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgZG93bmxvYWRUb0ZpbGUoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RG93bmxvYWRUb0ZpbGUoYm9vbCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaAkocmV2aXNpb24gMTAx
MjIzKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5o
OjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVS
TFJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaAkocmV2aXNpb24g
MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJM
UmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogI2lmbmRlZiBXZWJV
UkxSZXNwb25zZV9oCiAjZGVmaW5lIFdlYlVSTFJlc3BvbnNlX2gKIAotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVPd25QdHIuaCIK
KyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlT3duUHRyLmgiCiAK
ICNpZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsgfQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNNdWx0aXBhcnRQYXlsb2FkKGJvb2wpOwogCiAgICAg
Ly8gVGhpcyBpbmRpY2F0ZXMgdGhlIGxvY2F0aW9uIG9mIGEgZG93bmxvYWRlZCByZXNwb25zZSBp
ZiB0aGUKLSAgICAvLyBXZWJVUkxSZXF1ZXN0IGhhZCB0aGUgZG93bmxvYWRUb0ZpbGUgZmxhZyBz
ZXQgdG8gdHJ1ZS4gIFRoaXMgZmlsZSBwYXRoCisgICAgLy8gV2ViVVJMUmVxdWVzdCBoYWQgdGhl
IGRvd25sb2FkVG9GaWxlIGZsYWcgc2V0IHRvIHRydWUuIFRoaXMgZmlsZSBwYXRoCiAgICAgLy8g
cmVtYWlucyB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBXZWJVUkxMb2FkZXIgdXNlZCB0
byBjcmVhdGUgaXQuCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgZG93bmxvYWRGaWxlUGF0
aCgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREb3dubG9hZEZpbGVQYXRoKGNv
bnN0IFdlYlN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViVmlkZW9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlZpZGVvRnJhbWUuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJv
bSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmg6MTAxMjIzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVmlkZW9GcmFtZS5o
CSh3b3JraW5nIGNvcHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116781</attachid>
            <date>2011-11-28 10:43:13 -0800</date>
            <delta_ts>2011-11-28 11:02:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73198-20111128104312.patch</filename>
            <type>text/plain</type>
            <size>67769</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDEyNjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4
IEBACisyMDExLTExLTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtXSBNb3ZlICJmaW5hbCIgYmF0Y2ggb2YgaGVhZGVycyBpbnRvIHB1YmxpYy9w
bGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIG1vdmVzIGFub3RoZXIgZ3JvdXAgb2YgaGVhZGVycyBpbnRvIHRoZSBwbGF0Zm9y
bSBkaXJlY3RvcnkuCisgICAgICAgIEkgZm91bmQgdGhlc2UgaGVhZGVycyBieSByZWFkaW5nIHRo
cm91Z2ggdGhlIGxpc3Qgb2YgaGVhZGVycyBhbmQKKyAgICAgICAgY29vcmVsYXRpbmcgdGhlbSB3
aXRoIFdlYkNvcmUgY29uY2VwdHMuICBUaGlzIHBhdGNoIGRvZXNuJ3QgbW92ZSBhbGwKKyAgICAg
ICAgdGhlIEFQSXMgdGhhdCBjb29yZXNwb25kIHRvIFdlYkNvcmUgcGxhdGZvcm0gY29uY2VwdHMg
YmVjYXVzZSBzb21lLAorICAgICAgICBzdWNoIGFzIFdlYkZvbnRDYWNoZSwgYXJlIG5vdCB1c2Vk
IHRvIHN1cHBvcnQgdGhlIFdlYkNvcmUgcGxhdGZvcm0gYnV0CisgICAgICAgIHJhdGhlciB0byBw
cm92aWRlIHRoZSBlbWJlZGRlciBhY2Nlc3MgdG8gdGhlIFdlYkNvcmUgY29uY2VwdC4gIFRoaXMK
KyAgICAgICAgcGF0Y2ggc2hvdWxkIGJlIHRoZSBsYXN0IGJ1bGsgbW92ZSBvZiBoZWFkZXJzLgor
CisgICAgICAgIFRoZXJlIGFyZSB0d28gbWFpbiBncm91cHMgb2YgaGVhZGVycyB0aGF0IG1ha2Ug
dXAgdGhlIGJ1bGsgb2YgdGhpcworICAgICAgICBwYXRjaDoKKworICAgICAgICAxKSBVUkxMb2Fk
ZXItcmVsYXRlZCBoZWFkZXJzLgorICAgICAgICAyKSBHZW9tZXRyeS1yZWxhdGVkIGhlYWRlcnMu
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQXJyYXlCdWZmZXJWaWV3Lmg6IFJlcGxhY2VkLgorICAg
ICAgICAqIHB1YmxpYy9XZWJCbG9iRGF0YS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMv
V2ViQ29va2llLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllci5oOiBVcGRhdGUgaW5jbHVkZS4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmxvYXRQb2lu
dC5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmxvYXRRdWFkLmg6IFJlcGxhY2Vk
LgorICAgICAgICAqIHB1YmxpYy9XZWJGbG9hdFJlY3QuaDogUmVwbGFjZWQuCisgICAgICAgICog
cHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6IFVwZGF0ZSBpbmNsdWRlLgorICAgICAgICAqIHB1Ymxp
Yy9XZWJIVFRQQm9keS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViSFRUUEhlYWRl
clZpc2l0b3IuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYkhUVFBMb2FkSW5mby5o
OiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEuaDogUmVwbGFj
ZWQuCisgICAgICAgICogcHVibGljL1dlYlVSTEVycm9yLmg6IFJlcGxhY2VkLgorICAgICAgICAq
IHB1YmxpYy9XZWJVUkxMb2FkVGltaW5nLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9X
ZWJVUkxMb2FkZXJDbGllbnQuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlVSTFJl
cXVlc3QuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlVSTFJlc3BvbnNlLmg6IFJl
cGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXJyYXlCdWZmZXJW
aWV3LmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRhLmguCisgICAgICAg
ICogcHVibGljL3BsYXRmb3JtL1dlYkNvb2tpZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWUuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0v
V2ViRmxvYXRQb2ludC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGbG9hdFBvaW50LmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UXVh
ZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFF1
YWQuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRSZWN0Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UmVjdC5oLgorICAgICAg
ICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQQm9keS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQQm9keS5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0
Zm9ybS9XZWJIVFRQSGVhZGVyVmlzaXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJIVFRQSGVhZGVyVmlzaXRvci5oLgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9XZWJIVFRQTG9hZEluZm8uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3Jt
L1dlYlRocmVhZFNhZmVEYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlRocmVhZFNhZmVEYXRhLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
YlVSTEVycm9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVSTEVycm9yLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRp
bWluZy5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXIuaDogUmVtb3Zl
IEZJWE1FLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyQ2xp
ZW50LmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlcXVlc3QuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oLgorCiAyMDExLTExLTI1
ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gV2ViIEluc3BlY3RvcjogZGVsZXRlIFdlYkRldlRvb2xzQWdlbnQ6OmZyb250ZW5kTG9h
ZGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcnJheUJ1ZmZlclZp
ZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcnJh
eUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQXJyYXlCdWZmZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIsNjQgKzIs
MzIgQEAKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgogICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkFycmF5QnVmZmVyVmlld19oCi0jZGVm
aW5lIFdlYkFycmF5QnVmZmVyVmlld19oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24u
aCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0KLW5hbWVzcGFjZSBXVEYg
eyBjbGFzcyBBcnJheUJ1ZmZlclZpZXc7IH0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFBy
b3ZpZGVzIGFjY2VzcyB0byBhbiBBcnJheUJ1ZmZlclZpZXcuCi1jbGFzcyBXZWJBcnJheUJ1ZmZl
clZpZXcgewotcHVibGljOgotICAgIH5XZWJBcnJheUJ1ZmZlclZpZXcoKSB7IHJlc2V0KCk7IH0K
LSAgICBXZWJBcnJheUJ1ZmZlclZpZXcoKSB7IH0KLSAgICBXZWJBcnJheUJ1ZmZlclZpZXcoY29u
c3QgV2ViQXJyYXlCdWZmZXJWaWV3JiB2KSB7IGFzc2lnbih2KTsgfQotCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkKiBiYXNlQWRkcmVzcygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdW5zaWdu
ZWQgYnl0ZU9mZnNldCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgYnl0ZUxl
bmd0aCgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJB
cnJheUJ1ZmZlclZpZXcmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLQotI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkFycmF5QnVmZmVyVmlldyhjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V1RGOjpBcnJheUJ1ZmZlclZpZXc+Jik7Ci0gICAgV2ViQXJyYXlCdWZmZXJW
aWV3JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdURjo6QXJyYXlCdWZmZXJWaWV3
PiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXVEY6OkFycmF5QnVmZmVyVmlldz4o
KSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8V1RGOjpBcnJh
eUJ1ZmZlclZpZXc+IG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisj
aWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQmxvYkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0y
OCw2NyArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkJsb2JEYXRh
X2gKLSNkZWZpbmUgV2ViQmxvYkRhdGFfaAotCi0jaW5jbHVkZSAiV2ViVGhyZWFkU2FmZURhdGEu
aCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJVUkwuaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNwYWNlIFdlYkNvcmUg
eyBjbGFzcyBCbG9iRGF0YTsgfQotbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBQYXNzT3duUHRyOyB9CisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9f
UExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJCbG9iRGF0YS5oIgogI2VuZGlmCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJCbG9iRGF0YVByaXZhdGU7Ci0KLWNsYXNzIFdl
YkJsb2JEYXRhIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAgICAgIGVudW0geyBU
eXBlRGF0YSwgVHlwZUZpbGUsIFR5cGVCbG9iIH0gdHlwZTsKLSAgICAgICAgV2ViVGhyZWFkU2Fm
ZURhdGEgZGF0YTsKLSAgICAgICAgV2ViU3RyaW5nIGZpbGVQYXRoOwotICAgICAgICBXZWJVUkwg
YmxvYlVSTDsKLSAgICAgICAgbG9uZyBsb25nIG9mZnNldDsKLSAgICAgICAgbG9uZyBsb25nIGxl
bmd0aDsgLy8gLTEgbWVhbnMgZ28gdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS9ibG9iLgotICAgICAg
ICBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOyAvLyAwLjAgbWVhbnMgdGhhdCB0aGUg
dGltZSBpcyBub3Qgc2V0LgotICAgIH07Ci0KLSAgICB+V2ViQmxvYkRhdGEoKSB7IHJlc2V0KCk7
IH0KLQotICAgIFdlYkJsb2JEYXRhKCkgOiBtX3ByaXZhdGUoMCkgeyB9Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgp
OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9Ci0KLSAg
ICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMuCi0gICAgV0VCS0lUX0VYUE9SVCBzaXpl
X3QgaXRlbUNvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBSZXRyaWV2ZXMgdGhlIHZhbHVlcyBvZiB0
aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gaW5kZXguICBSZXR1cm5zIGZhbHNlIGlmCi0gICAgLy8gaW5k
ZXggaXMgb3V0IG9mIGJvdW5kcy4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXRlbUF0KHNpemVf
dCBpbmRleCwgSXRlbSYgcmVzdWx0KSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3Ry
aW5nIGNvbnRlbnRUeXBlKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBj
b250ZW50RGlzcG9zaXRpb24oKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgot
ICAgIFdlYkJsb2JEYXRhKGNvbnN0IFdURjo6UGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4m
KTsKLSAgICBXZWJCbG9iRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc093blB0cjxXZWJD
b3JlOjpCbG9iRGF0YT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NPd25QdHI8V2ViQ29yZTo6
QmxvYkRhdGE+KCk7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KLSAgICB2b2lkIGFzc2lnbihjb25zdCBXVEY6OlBhc3NPd25QdHI8V2ViQ29yZTo6QmxvYkRh
dGE+Jik7Ci0jZW5kaWYKLSAgICBXZWJCbG9iRGF0YVByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViQmxvYkRhdGFfaApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgJKHJldmlzaW9uIDEwMTIy
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC0yOCw1MCArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdl
YkNvb2tpZV9oCi0jZGVmaW5lIFdlYkNvb2tpZV9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
b21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYlN0cmluZzsKLQotLy8gQSBjb29raWUuCi0vLwotc3RydWN0IFdl
YkNvb2tpZSB7Ci0gICAgV2ViQ29va2llKCkKLSAgICAgICAgOiBleHBpcmVzKDApCi0gICAgICAg
ICwgaHR0cE9ubHkoZmFsc2UpCi0gICAgICAgICwgc2VjdXJlKGZhbHNlKQotICAgICAgICAsIHNl
c3Npb24oZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIFdlYkNvb2tpZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUsIGNvbnN0IFdlYlN0cmluZyYgZG9tYWlu
LAotICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBpcmVzLCBi
b29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwgYm9vbCBzZXNzaW9uKQotICAgICAgICA6IG5hbWUo
bmFtZSkKLSAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKLSAgICAgICAgLCBkb21haW4oZG9tYWluKQot
ICAgICAgICAsIHBhdGgocGF0aCkKLSAgICAgICAgLCBleHBpcmVzKGV4cGlyZXMpCi0gICAgICAg
ICwgaHR0cE9ubHkoaHR0cE9ubHkpCi0gICAgICAgICwgc2VjdXJlKHNlY3VyZSkKLSAgICAgICAg
LCBzZXNzaW9uKHNlc3Npb24pCi0gICAgewotICAgIH0KLQotICAgIFdlYlN0cmluZyBuYW1lOwot
ICAgIFdlYlN0cmluZyB2YWx1ZTsKLSAgICBXZWJTdHJpbmcgZG9tYWluOwotICAgIFdlYlN0cmlu
ZyBwYXRoOwotICAgIGRvdWJsZSBleHBpcmVzOwotICAgIGJvb2wgaHR0cE9ubHk7Ci0gICAgYm9v
bCBzZWN1cmU7Ci0gICAgYm9vbCBzZXNzaW9uOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvb2tpZS5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgJKHJldmlz
aW9uIDEwMTIzMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpZm5kZWYg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJfaAogI2RlZmluZSBXZWJFeHRlcm5hbFRleHR1cmVMYXll
cl9oCiAKLSNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJXZWJMYXllci5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZs
b2F0UmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0
UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
bG9hdFBvaW50LmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZsb2F0UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNjQgKzI4LDYgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGbG9hdFBvaW50X2gKLSNkZWZpbmUgV2Vi
RmxvYXRQb2ludF9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNlbmRpZgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZsb2F0UG9pbnQgewotICAgIGZsb2F0IHg7
Ci0gICAgZmxvYXQgeTsKLQotICAgIFdlYkZsb2F0UG9pbnQoKQotICAgICAgICA6IHgoMC4wZikK
LSAgICAgICAgLCB5KDAuMGYpCi0gICAgewotICAgIH0KLQotICAgIFdlYkZsb2F0UG9pbnQoZmxv
YXQgeCwgZmxvYXQgeSkKLSAgICAgICAgOiB4KHgpCi0gICAgICAgICwgeSh5KQotICAgIHsKLSAg
ICB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJGbG9hdFBvaW50KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHApCi0gICAgICAgIDogeChwLngoKSkKLSAgICAgICAgLCB5
KHAueSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJGbG9hdFBvaW50JiBvcGVyYXRvcj0oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcCkKLSAgICB7Ci0gICAgICAgIHggPSBwLngoKTsKLSAg
ICAgICAgeSA9IHAueSgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgb3Bl
cmF0b3IgV2ViQ29yZTo6RmxvYXRQb2ludCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6RmxvYXRQb2ludCh4LCB5KTsKLSAgICB9Ci0jZW5kaWYKLX07Ci0KLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgV2ViRmxvYXRQb2ludCYgYSwgY29uc3QgV2ViRmxvYXRQb2lu
dCYgYikKLXsKLSAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55OwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYkZsb2F0UG9pbnQmIGEsIGNvbnN0IFdlYkZsb2F0
UG9pbnQmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmgJKHJldmlzaW9uIDEwMTIyNCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UXVhZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw1NSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYkZsb2F0UXVhZF9oCi0jZGVmaW5lIFdlYkZsb2F0UXVhZF9oCi0KLSNpbmNsdWRlICJXZWJG
bG9hdFBvaW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViUmVjdC5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNt
YXRoPgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSAiRmxvYXRRdWFkLmgi
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJGbG9hdFF1YWQgewot
ICAgIFdlYkZsb2F0UG9pbnQgcFs0XTsKLQotICAgIFdlYkZsb2F0UXVhZCgpCi0gICAgewotICAg
IH0KLQotICAgIFdlYkZsb2F0UXVhZChjb25zdCBXZWJGbG9hdFBvaW50JiBwMCwgY29uc3QgV2Vi
RmxvYXRQb2ludCYgcDEsIGNvbnN0IFdlYkZsb2F0UG9pbnQmIHAyLCBjb25zdCBXZWJGbG9hdFBv
aW50JiBwMykKLSAgICB7Ci0gICAgICAgIHBbMF0gPSBwMDsKLSAgICAgICAgcFsxXSA9IHAxOwot
ICAgICAgICBwWzJdID0gcDI7Ci0gICAgICAgIHBbM10gPSBwMzsKLSAgICB9Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlJlY3QgZW5jbG9zaW5nUmVjdCgpIGNvbnN0OwotCi0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgV2ViRmxvYXRRdWFkJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6
RmxvYXRRdWFkJiBxKQotICAgIHsKLSAgICAgICAgcFswXSA9IHEucDEoKTsKLSAgICAgICAgcFsx
XSA9IHEucDIoKTsKLSAgICAgICAgcFsyXSA9IHEucDMoKTsKLSAgICAgICAgcFszXSA9IHEucDQo
KTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBXZWJGbG9hdFF1YWQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRRdWFkJiBxKQotICAgIHsKLSAgICAgICAgKnRoaXMgPSBxOwotICAgIH0K
LSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01J
R1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UXVh
ZC5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9h
dFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
bG9hdFJlY3QuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRmxvYXRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDc2ICsyOCw2IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRmxvYXRSZWN0X2gKLSNkZWZpbmUgV2ViRmxv
YXRSZWN0X2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jZW5kaWYKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJGbG9hdFJlY3QgewotICAgIGZsb2F0IHg7Ci0gICAg
ZmxvYXQgeTsKLSAgICBmbG9hdCB3aWR0aDsKLSAgICBmbG9hdCBoZWlnaHQ7Ci0KLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwOyB9Ci0K
LSAgICBXZWJGbG9hdFJlY3QoKQotICAgICAgICA6IHgoMC4wZikKLSAgICAgICAgLCB5KDAuMGYp
Ci0gICAgICAgICwgd2lkdGgoMC4wZikKLSAgICAgICAgLCBoZWlnaHQoMC4wZikKLSAgICB7Ci0g
ICAgfQotCi0gICAgV2ViRmxvYXRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQpCi0gICAgICAgIDogeCh4KQotICAgICAgICAsIHkoeSkKLSAgICAgICAgLCB3
aWR0aCh3aWR0aCkKLSAgICAgICAgLCBoZWlnaHQoaGVpZ2h0KQotICAgIHsKLSAgICB9Ci0KLSNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJGbG9hdFJlY3QoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiByKQotICAgICAgICA6IHgoci54KCkpCi0gICAgICAgICwgeShyLnkoKSkKLSAg
ICAgICAgLCB3aWR0aChyLndpZHRoKCkpCi0gICAgICAgICwgaGVpZ2h0KHIuaGVpZ2h0KCkpCi0g
ICAgewotICAgIH0KLQotICAgIFdlYkZsb2F0UmVjdCYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgcikKLSAgICB7Ci0gICAgICAgIHggPSByLngoKTsKLSAgICAgICAgeSA9IHIu
eSgpOwotICAgICAgICB3aWR0aCA9IHIud2lkdGgoKTsKLSAgICAgICAgaGVpZ2h0ID0gci5oZWln
aHQoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFdlYkNv
cmU6OkZsb2F0UmVjdCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Rmxv
YXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLSNlbmRpZgotfTsKLQotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGbG9hdFJlY3QmIGEsIGNvbnN0IFdlYkZsb2F0UmVj
dCYgYikKLXsKLSAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55ICYmIGEud2lkdGgg
PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsKLX0KLQotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBXZWJGbG9hdFJlY3QmIGEsIGNvbnN0IFdlYkZsb2F0UmVjdCYgYikKLXsK
LSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lm
bmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViRmxvYXRSZWN0LmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24gMTAxMjMwKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzYsOSArMzYsOSBAQAogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVk
ZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIK
LSNpbmNsdWRlICJXZWJVUkxFcnJvci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJVUkxFcnJvci5oIgogCiAjaWYgV0VCS0lUX1VTSU5HX1Y4CiAjaW5jbHVkZSA8djguaD4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJvZHkuaAkocmV2
aXNpb24gMTAxMjI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEJv
ZHkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsODIgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJIVFRQQm9keV9oCi0jZGVmaW5lIFdlYkhUVFBCb2R5X2gKLQotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkRhdGEuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJOb25Db3B5YWJs
ZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlVSTC5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7IGNsYXNzIEZvcm1EYXRhOyB9Ci1uYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViSFRUUEJvZHlQcml2YXRlOwotCi1jbGFzcyBXZWJIVFRQQm9keSB7Ci1wdWJsaWM6
Ci0gICAgc3RydWN0IEVsZW1lbnQgewotICAgICAgICBlbnVtIFR5cGUgeyBUeXBlRGF0YSwgVHlw
ZUZpbGUsIFR5cGVCbG9iIH0gdHlwZTsKLSAgICAgICAgV2ViRGF0YSBkYXRhOwotICAgICAgICBX
ZWJTdHJpbmcgZmlsZVBhdGg7Ci0gICAgICAgIGxvbmcgbG9uZyBmaWxlU3RhcnQ7Ci0gICAgICAg
IGxvbmcgbG9uZyBmaWxlTGVuZ3RoOyAvLyAtMSBtZWFucyB0byB0aGUgZW5kIG9mIHRoZSBmaWxl
LgotICAgICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAgV2ViVVJMIGJsb2JV
Ukw7Ci0gICAgfTsKLQotICAgIH5XZWJIVFRQQm9keSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2Vi
SFRUUEJvZHkoKSA6IG1fcHJpdmF0ZSgwKSB7IH0KLSAgICBXZWJIVFRQQm9keShjb25zdCBXZWJI
VFRQQm9keSYgYikgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24oYik7IH0KLSAgICBXZWJIVFRQQm9k
eSYgb3BlcmF0b3I9KGNvbnN0IFdlYkhUVFBCb2R5JiBiKQotICAgIHsKLSAgICAgICAgYXNzaWdu
KGIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIGluaXRpYWxpemUoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkhUVFBCb2R5Jik7Ci0KLSAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3ByaXZhdGU7IH0KLQotICAgIC8vIFJldHVybnMg
dGhlIG51bWJlciBvZiBlbGVtZW50cyBjb21wcmlzaW5nIHRoZSBodHRwIGJvZHkuCi0gICAgV0VC
S0lUX0VYUE9SVCBzaXplX3QgZWxlbWVudENvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBTZXRzIHRo
ZSB2YWx1ZXMgb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4LiAgUmV0dXJucyBmYWxz
ZSBpZgotICAgIC8vIGluZGV4IGlzIG91dCBvZiBib3VuZHMuCi0gICAgV0VCS0lUX0VYUE9SVCBi
b29sIGVsZW1lbnRBdChzaXplX3QgaW5kZXgsIEVsZW1lbnQmKSBjb25zdDsKLQotICAgIC8vIEFw
cGVuZCB0byB0aGUgbGlzdCBvZiBlbGVtZW50cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBw
ZW5kRGF0YShjb25zdCBXZWJEYXRhJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZEZp
bGUoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgLy8gUGFzc2luZyAtMSB0byBmaWxlTGVuZ3RoIG1l
YW5zIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVu
ZEZpbGVSYW5nZShjb25zdCBXZWJTdHJpbmcmLCBsb25nIGxvbmcgZmlsZVN0YXJ0LCBsb25nIGxv
bmcgZmlsZUxlbmd0aCwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgLy8gSWRlbnRpZmllcyBh
IHBhcnRpY3VsYXIgZm9ybSBzdWJtaXNzaW9uIGluc3RhbmNlLiAgQSB2YWx1ZSBvZiAwIGlzCi0g
ICAgLy8gdXNlZCB0byBpbmRpY2F0ZSBhbiB1bnNwZWNpZmllZCBpZGVudGlmaWVyLgotICAgIFdF
QktJVF9FWFBPUlQgbG9uZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0SWRlbnRpZmllcihsb25nIGxvbmcpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCi0gICAgV2ViSFRUUEJvZHkoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZv
cm1EYXRhPiYpOwotICAgIFdlYkhUVFBCb2R5JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1EYXRhPiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpGb3JtRGF0YT4oKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIHZvaWQg
YXNzaWduKFdlYkhUVFBCb2R5UHJpdmF0ZSopOwotICAgIHZvaWQgZW5zdXJlTXV0YWJsZSgpOwot
ICAgIFdlYkhUVFBCb2R5UHJpdmF0ZSogbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkhUVFBCb2R5LmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaAkocmV2
aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEhl
YWRlclZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMjEgKzI4LDYgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJIVFRQSGVhZGVyVmlzaXRvcl9oCi0jZGVmaW5lIFdlYkhU
VFBIZWFkZXJWaXNpdG9yX2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlN0cmlu
ZzsKLQotY2xhc3MgV2ViSFRUUEhlYWRlclZpc2l0b3IgewotcHVibGljOgotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdEhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
dmFsdWUpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIH5XZWJIVFRQSGVhZGVyVmlzaXRvcigpIHsg
fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVf
SEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkhUVFBIZWFkZXJWaXNp
dG9yLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhU
VFBMb2FkSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkhUVFBMb2FkSW5mby5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJIVFRQTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsNjEgKzI4
LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJIVFRQTG9hZEluZm9faAot
I2RlZmluZSBXZWJIVFRQTG9hZEluZm9faAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9u
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1zdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci1jbGFzcyBXZWJTdHJpbmc7Ci0KLWNsYXNzIFdlYkhUVFBMb2FkSW5mbyB7Ci1wdWJsaWM6Ci0g
ICAgV2ViSFRUUExvYWRJbmZvKCkgeyBpbml0aWFsaXplKCk7IH0KLSAgICB+V2ViSFRUUExvYWRJ
bmZvKCkgeyByZXNldCgpOyB9Ci0gICAgV2ViSFRUUExvYWRJbmZvKGNvbnN0IFdlYkhUVFBMb2Fk
SW5mbyYgcikgeyBhc3NpZ24ocik7IH0KLSAgICBXZWJIVFRQTG9hZEluZm8mIG9wZXJhdG9yID0o
Y29uc3QgV2ViSFRUUExvYWRJbmZvJiByKQotICAgIHsgCi0gICAgICAgIGFzc2lnbihyKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0
aWFsaXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJIVFRQTG9hZEluZm8mIHIpOwotCi0gICAgV0VCS0lU
X0VYUE9SVCBpbnQgaHR0cFN0YXR1c0NvZGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGh0dHBTdGF0dXNUZXh0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhUVFBT
dGF0dXNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RW5jb2RlZERhdGFMZW5ndGgobG9uZyBsb25nKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBh
ZGRSZXF1ZXN0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2
YWx1ZSk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZFJlc3BvbnNlSGVhZGVyKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlN0cmluZyByZXF1ZXN0SGVhZGVyc1RleHQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0UmVxdWVzdEhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAg
V0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgcmVzcG9uc2VIZWFkZXJzVGV4dCgpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZUhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0cmlu
ZyYpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViSFRUUExvYWRJbmZvKFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRJbmZvPik7Ci0gICAgb3BlcmF0b3Ig
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZEluZm8+KCkgY29uc3Q7Ci0jZW5k
aWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZElu
Zm8+IG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdF
QktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJI
VFRQTG9hZEluZm8uaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGhyZWFkU2FmZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJUaHJlYWRTYWZlRGF0YS5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUaHJlYWRTYWZlRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yOCw1MCArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlRo
cmVhZFNhZmVEYXRhX2gKLSNkZWZpbmUgV2ViVGhyZWFkU2FmZURhdGFfaAotCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5o
IgotCi0jaWYgIVdFQktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgPHN0cmluZz4KLSNlbmRp
ZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJhd0RhdGE7IH0KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLS8vIEEgY29udGFpbmVyIGZvciByYXcgYnl0ZXMuICBJdCBpcyBpbmV4cGVuc2l2
ZSB0byBjb3B5IGEgV2ViVGhyZWFkU2FmZURhdGEgb2JqZWN0LgotLy8gSXQgaXMgc2FmZSB0byBw
YXNzIGEgV2ViVGhyZWFkU2FmZURhdGEgYWNyb3NzIHRocmVhZHMhISEKLWNsYXNzIFdlYlRocmVh
ZFNhZmVEYXRhIHsKLXB1YmxpYzoKLSAgICBXZWJUaHJlYWRTYWZlRGF0YSgpIHsgfQotICAgIH5X
ZWJUaHJlYWRTYWZlRGF0YSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGFzc2lnbihjb25zdCBXZWJUaHJlYWRTYWZlRGF0YSYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCByZXNldCgpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgY29uc3QgY2hhciogZGF0YSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgV2ViVGhyZWFkU2FmZURhdGEoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlJhd0RhdGE+Jik7Ci0gICAgV2ViVGhyZWFkU2FmZURhdGEmIG9wZXJhdG9yPShjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmF3RGF0YT4mKTsKLSNlbHNlCi0gICAgb3BlcmF0b3Igc3Rk
OjpzdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgc2l6ZV90IGxlbiA9IHNpemUoKTsKLSAg
ICAgICAgcmV0dXJuIGxlbiA/IHN0ZDo6c3RyaW5nKGRhdGEoKSwgbGVuKSA6IHN0ZDo6c3RyaW5n
KCk7Ci0gICAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3Jl
OjpSYXdEYXRhPiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lm
bmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViVGhyZWFkU2FmZURhdGEuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVVJMRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxFcnJvci5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw0
NiArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlVSTEVycm9yX2gK
LSNkZWZpbmUgV2ViVVJMRXJyb3JfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCi0KLSNpZiBkZWZpbmVkKFdFQktJVF9JTVBM
RU1FTlRBVElPTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VFcnJvcjsgfQot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViVVJMRXJyb3IgewotICAg
IC8vIEEgbmFtZXNwYWNlIGZvciAicmVhc29uIiB0byBzdXBwb3J0IHZhcmlvdXMgbGF5ZXJzIGdl
bmVyYXRpbmcKLSAgICAvLyByZXNvdXJjZSBlcnJvcnMuICBXZWJLaXQgZG9lcyBub3QgY2FyZSBh
Ym91dCB0aGUgdmFsdWUgb2YgdGhpcwotICAgIC8vIHN0cmluZyBhcyBpdCB3aWxsIGp1c3QgYmUg
cGFzc2VkIHZpYSBjYWxsYmFja3MgdG8gdGhlIGNvbnN1bWVyLgotICAgIFdlYlN0cmluZyBkb21h
aW47Ci0KLSAgICAvLyBBIG51bWVyaWMgZXJyb3IgY29kZSBkZXRhaWxpbmcgdGhlIHJlYXNvbiBm
b3IgdGhpcyBlcnJvci4gIEEgdmFsdWUKLSAgICAvLyBvZiAwIG1lYW5zIG5vIGVycm9yLiAgV2Vi
S2l0IGRvZXMgbm90IGludGVycHJldCB0aGUgbWVhbmluZyBvZiBvdGhlcgotICAgIC8vIHZhbHVl
cyBhbmQgbm9ybWFsbHkganVzdCBmb3J3YXJkcyB0aGlzIGVycm9yIGluZm9ybWF0aW9uIGJhY2sg
dG8gdGhlCi0gICAgLy8gZW1iZWRkZXIgKHNlZSBmb3IgZXhhbXBsZSBXZWJGcmFtZUNsaWVudCku
Ci0gICAgaW50IHJlYXNvbjsKLQotICAgIC8vIEEgZmxhZyBzaG93aW5nIHdoZXRoZXIgdGhpcyBl
cnJvciBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIGNhbmNlbGxhdGlvbiwKLSAgICAvLyBlLmcuIHdl
IGRvIG5vdCBzaG93IGNvbnNvbGUgZXJyb3JzIGZvciBjYW5jZWxsYXRpb25zLgotICAgIGJvb2wg
aXNDYW5jZWxsYXRpb247Ci0KLSAgICAvLyBUaGUgdXJsIHRoYXQgZmFpbGVkIHRvIGxvYWQuCi0g
ICAgV2ViVVJMIHVucmVhY2hhYmxlVVJMOwotCi0gICAgV2ViVVJMRXJyb3IoKSA6IHJlYXNvbigw
KSwgaXNDYW5jZWxsYXRpb24oZmFsc2UpIHsgfQotCi0jaWYgZGVmaW5lZChXRUJLSVRfSU1QTEVN
RU5UQVRJT04pCi0gICAgV2ViVVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwotICAgIFdlYlVSTEVycm9yJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwotICAgIG9wZXJhdG9yIFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKSBjb25zdDsKLSNlbmRp
ZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVf
SEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTEVycm9yLmgiCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRUaW1p
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxM
b2FkVGltaW5nLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlVSTExvYWRUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsODEgKzI4LDYgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJVUkxMb2FkVGltaW5nX2gKLSNkZWZp
bmUgV2ViVVJMTG9hZFRpbWluZ19oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsgY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5nOyB9Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xh
c3MgV2ViU3RyaW5nOwotCi1jbGFzcyBXZWJVUkxMb2FkVGltaW5nIHsKLXB1YmxpYzoKLSAgICB+
V2ViVVJMTG9hZFRpbWluZygpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViVVJMTG9hZFRpbWluZygp
IHsgfQotICAgIFdlYlVSTExvYWRUaW1pbmcoY29uc3QgV2ViVVJMTG9hZFRpbWluZyYgZCkgeyBh
c3NpZ24oZCk7IH0KLSAgICBXZWJVUkxMb2FkVGltaW5nJiBvcGVyYXRvcj0oY29uc3QgV2ViVVJM
TG9hZFRpbWluZyYgZCkKLSAgICB7Ci0gICAgICAgIGFzc2lnbihkKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFz
c2lnbihjb25zdCBXZWJVUkxMb2FkVGltaW5nJik7Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBkb3Vi
bGUgcmVxdWVzdFRpbWUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVxdWVz
dFRpbWUoZG91YmxlIHRpbWUpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgcHJveHlTdGFydCgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQcm94eVN0YXJ0KGludCBzdGFydCk7
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBwcm94eUVuZCgpIGNvbnN0OwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRQcm94eUVuZChpbnQgZW5kKTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50
IGRuc1N0YXJ0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEROU1N0YXJ0KGlu
dCBzdGFydCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBkbnNFbmQoKSBjb25zdDsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0RE5TRW5kKGludCBlbmQpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCBpbnQgY29ubmVjdFN0YXJ0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENv
bm5lY3RTdGFydChpbnQgc3RhcnQpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgY29ubmVjdEVu
ZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb25uZWN0RW5kKGludCBlbmQp
OwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgc2VuZFN0YXJ0KCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFNlbmRTdGFydChpbnQgc3RhcnQpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCBpbnQgc2VuZEVuZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTZW5kRW5k
KGludCBlbmQpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgcmVjZWl2ZUhlYWRlcnNFbmQoKSBj
b25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVjZWl2ZUhlYWRlcnNFbmQoaW50IGVu
ZCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBzc2xTdGFydCgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRTU0xTdGFydChpbnQgc3RhcnQpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCBpbnQgc3NsRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNTTEVuZChp
bnQgZW5kKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYlVSTExvYWRUaW1p
bmcoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZz4mKTsK
LSAgICBXZWJVUkxMb2FkVGltaW5nJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OlJlc291cmNlTG9hZFRpbWluZz4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZh
dGU6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc+IG1fcHJp
dmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdS
QVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxMb2FkVGlt
aW5nLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVS
TExvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlVSTExvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjgsNTEgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJVUkxMb2Fk
ZXJDbGllbnRfaAotI2RlZmluZSBXZWJVUkxMb2FkZXJDbGllbnRfaAotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViVVJMTG9hZGVyOwotY2xhc3MgV2ViVVJMUmVxdWVzdDsKLWNsYXNz
IFdlYlVSTFJlc3BvbnNlOwotc3RydWN0IFdlYlVSTEVycm9yOwotCi1jbGFzcyBXZWJVUkxMb2Fk
ZXJDbGllbnQgewotcHVibGljOgotICAgIC8vIENhbGxlZCB3aGVuIGZvbGxvd2luZyBhIHJlZGly
ZWN0LiAgfG5ld1JlcXVlc3R8IGNvbnRhaW5zIHRoZSByZXF1ZXN0Ci0gICAgLy8gZ2VuZXJhdGVk
IGJ5IHRoZSByZWRpcmVjdC4gIFRoZSBjbGllbnQgbWF5IG1vZGlmeSB8bmV3UmVxdWVzdHwuCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdCgKLSAgICAgICAgV2ViVVJMTG9hZGVyKiwg
V2ViVVJMUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpIHsgfQotCi0gICAgLy8gQ2FsbGVkIHRvIHJlcG9ydCB1cGxvYWQgcHJvZ3Jlc3Mu
ICBUaGUgYnl0ZXMgcmVwb3J0ZWQgY29ycmVzcG9uZCB0bwotICAgIC8vIHRoZSBIVFRQIG1lc3Nh
Z2UgYm9keS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoCi0gICAgICAgIFdlYlVSTExv
YWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpIHsgfQotCi0gICAgLy8gQ2FsbGVkIHdoZW4gcmVzcG9uc2UgaGVh
ZGVycyBhcmUgcmVjZWl2ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJVUkxMb2FkZXIqLCBjb25zdCBXZWJVUkxSZXNwb25zZSYpIHsgfQotCi0gICAgLy8gQ2FsbGVk
IHdoZW4gYSBjaHVuayBvZiByZXNwb25zZSBkYXRhIGlzIGRvd25sb2FkZWQuICBUaGlzIGlzIG9u
bHkgY2FsbGVkCi0gICAgLy8gaWYgV2ViVVJMUmVxdWVzdCdzIGRvd25sb2FkVG9GaWxlIGZsYWcg
d2FzIHNldCB0byB0cnVlLgotICAgIHZpcnR1YWwgdm9pZCBkaWREb3dubG9hZERhdGEoV2ViVVJM
TG9hZGVyKiwgaW50IGRhdGFMZW5ndGgpIHsgfQotCi0gICAgLy8gQ2FsbGVkIHdoZW4gYSBjaHVu
ayBvZiByZXNwb25zZSBkYXRhIGlzIHJlY2VpdmVkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJVUkxMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEgY2h1bmsg
b2YgcmVuZGVyZXItZ2VuZXJhdGVkIG1ldGFkYXRhIGlzIHJlY2VpdmVkIGZyb20gdGhlIGNhY2hl
LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoV2ViVVJMTG9hZGVy
KiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIHsgfQotCi0gICAgLy8gQ2FsbGVk
IHdoZW4gdGhlIGxvYWQgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhXZWJVUkxMb2FkZXIqLCBkb3VibGUgZmluaXNoVGltZSkgeyB9Ci0K
LSAgICAvLyBDYWxsZWQgd2hlbiB0aGUgbG9hZCBjb21wbGV0ZXMgd2l0aCBhbiBlcnJvci4KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJVUkxMb2FkZXIqLCBjb25zdCBXZWJVUkxFcnJvciYp
IHsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+V2ViVVJMTG9hZGVyQ2xpZW50KCkgeyB9
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9I
RUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50
LmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTFJl
cXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJV
UkxSZXF1ZXN0LmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlVSTFJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTcyICsyOCw2IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMUmVxdWVzdF9oCi0jZGVmaW5lIFdl
YlVSTFJlcXVlc3RfaAotCi0jaW5jbHVkZSAiV2ViSFRUUEJvZHkuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJDb21tb24uaCIKLQotI2lmIGRlZmluZWQoV0VCS0lUX0lNUExFTUVOVEFUSU9OKQot
bmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7IH0KLSNlbmRpZgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViQ1N0cmluZzsKLWNsYXNzIFdlYkhUVFBCb2R5
OwotY2xhc3MgV2ViSFRUUEhlYWRlclZpc2l0b3I7Ci1jbGFzcyBXZWJTdHJpbmc7Ci1jbGFzcyBX
ZWJVUkw7Ci1jbGFzcyBXZWJVUkxSZXF1ZXN0UHJpdmF0ZTsKLQotY2xhc3MgV2ViVVJMUmVxdWVz
dCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBDYWNoZVBvbGljeSB7Ci0gICAgICAgIFVzZVByb3RvY29s
Q2FjaGVQb2xpY3ksICAvLyBub3JtYWwgbG9hZAotICAgICAgICBSZWxvYWRJZ25vcmluZ0NhY2hl
RGF0YSwgLy8gcmVsb2FkCi0gICAgICAgIFJldHVybkNhY2hlRGF0YUVsc2VMb2FkLCAvLyBiYWNr
L2ZvcndhcmQgb3IgZW5jb2RpbmcgY2hhbmdlIC0gYWxsb3cgc3RhbGUgZGF0YQotICAgICAgICBS
ZXR1cm5DYWNoZURhdGFEb250TG9hZCwgLy8gcmVzdWx0cyBvZiBhIHBvc3QgLSBhbGxvdyBzdGFs
ZSBkYXRhIGFuZCBvbmx5IHVzZSBjYWNoZQotICAgIH07Ci0KLSAgICBlbnVtIFRhcmdldFR5cGUg
ewotICAgICAgICBUYXJnZXRJc01haW5GcmFtZSA9IDAsCi0gICAgICAgIFRhcmdldElzU3ViZnJh
bWUgPSAxLAotICAgICAgICBUYXJnZXRJc1N1YnJlc291cmNlID0gMiwKLSAgICAgICAgVGFyZ2V0
SXNTdHlsZVNoZWV0ID0gMywKLSAgICAgICAgVGFyZ2V0SXNTY3JpcHQgPSA0LAotICAgICAgICBU
YXJnZXRJc0ZvbnRSZXNvdXJjZSA9IDUsCi0gICAgICAgIFRhcmdldElzSW1hZ2UgPSA2LAotICAg
ICAgICBUYXJnZXRJc09iamVjdCA9IDcsCi0gICAgICAgIFRhcmdldElzTWVkaWEgPSA4LAotICAg
ICAgICBUYXJnZXRJc1dvcmtlciA9IDksCi0gICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyID0g
MTAsCi0gICAgICAgIFRhcmdldElzUHJlZmV0Y2ggPSAxMSwKLSAgICAgICAgVGFyZ2V0SXNQcmVy
ZW5kZXIgPSAxMiwKLSAgICAgICAgVGFyZ2V0SXNGYXZpY29uID0gMTMsCi0gICAgICAgIFRhcmdl
dElzWEhSID0gMTQsCi0gICAgICAgIFRhcmdldElzVGV4dFRyYWNrID0gMTUsCi0gICAgICAgIFRh
cmdldElzVW5zcGVjaWZpZWQgPSAxNiwKLSAgICB9OwotCi0gICAgY2xhc3MgRXh0cmFEYXRhIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQotICAgIH07Ci0K
LSAgICB+V2ViVVJMUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViVVJMUmVxdWVzdCgp
IDogbV9wcml2YXRlKDApIHsgfQotICAgIFdlYlVSTFJlcXVlc3QoY29uc3QgV2ViVVJMUmVxdWVz
dCYgcikgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24ocik7IH0KLSAgICBXZWJVUkxSZXF1ZXN0JiBv
cGVyYXRvcj0oY29uc3QgV2ViVVJMUmVxdWVzdCYgcikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihy
KTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGV4cGxpY2l0IFdlYlVSTFJl
cXVlc3QoY29uc3QgV2ViVVJMJiB1cmwpIDogbV9wcml2YXRlKDApCi0gICAgewotICAgICAgICBp
bml0aWFsaXplKCk7Ci0gICAgICAgIHNldFVSTCh1cmwpOwotICAgIH0KLQotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJVUkxSZXF1ZXN0Jik7Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VVJMKGNv
bnN0IFdlYlVSTCYpOwotCi0gICAgLy8gVXNlZCB0byBpbXBsZW1lbnQgdGhpcmQtcGFydHkgY29v
a2llIGJsb2NraW5nLgotICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMIGZpcnN0UGFydHlGb3JDb29r
aWVzKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29r
aWVzKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGFsbG93Q29va2ll
cygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbGxvd0Nvb2tpZXMoYm9vbCBh
bGxvd0Nvb2tpZXMpOwotCi0gICAgLy8gQ29udHJvbHMgd2hldGhlciB1c2VyIG5hbWUsIHBhc3N3
b3JkLCBhbmQgY29va2llcyBtYXkgYmUgc2VudCB3aXRoIHRoZQotICAgIC8vIHJlcXVlc3QuIChJ
ZiBmYWxzZSwgdGhpcyBvdmVycmlkZXMgYWxsb3dDb29raWVzLikKLSAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgYWxsb3dTdG9yZWRDcmVkZW50aWFscygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRBbGxvd1N0b3JlZENyZWRlbnRpYWxzKGJvb2wgYWxsb3dTdG9yZWRDcmVkZW50aWFs
cyk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENhY2hlUG9saWN5KENhY2hlUG9saWN5KTsKLQot
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGh0dHBNZXRob2QoKSBjb25zdDsKLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0SFRUUE1ldGhvZChjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdF
QktJVF9FWFBPUlQgV2ViU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5h
bWUpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgYWRkSFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFySFRUUEhl
YWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHZpc2l0SFRUUEhlYWRlckZpZWxkcyhXZWJIVFRQSGVhZGVyVmlzaXRvciopIGNvbnN0OwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBXZWJIVFRQQm9keSBodHRwQm9keSgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRIVFRQQm9keShjb25zdCBXZWJIVFRQQm9keSYpOwotCi0gICAgLy8g
Q29udHJvbHMgd2hldGhlciB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzIGFyZSBnZW5lcmF0ZWQgd2hl
biBhIHJlcXVlc3QKLSAgICAvLyBoYXMgYSBib2R5LgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBy
ZXBvcnRVcGxvYWRQcm9ncmVzcygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRS
ZXBvcnRVcGxvYWRQcm9ncmVzcyhib29sKTsKLQotICAgIC8vIENvbnRyb2xzIHdoZXRoZXIgbG9h
ZCB0aW1pbmcgaW5mbyBpcyBjb2xsZWN0ZWQgZm9yIHRoZSByZXF1ZXN0LgotICAgIFdFQktJVF9F
WFBPUlQgYm9vbCByZXBvcnRMb2FkVGltaW5nKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFJlcG9ydExvYWRUaW1pbmcoYm9vbCk7Ci0KLSAgICAvLyBDb250cm9scyB3aGV0aGVy
IGFjdHVhbCBoZWFkZXJzIHNlbnQgYW5kIHJlY2VpdmVkIGZvciByZXF1ZXN0IGFyZQotICAgIC8v
IGNvbGxlY3RlZCBhbmQgcmVwb3J0ZWQuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIHJlcG9ydFJh
d0hlYWRlcnMoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwb3J0UmF3SGVh
ZGVycyhib29sKTsKLQotICAgIFdFQktJVF9FWFBPUlQgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRhcmdldFR5cGUoVGFyZ2V0VHlwZSk7
Ci0KLSAgICAvLyBUcnVlIGlmIHRoZSByZXF1ZXN0IHdhcyB1c2VyIGluaXRpYXRlZC4KLSAgICBX
RUJLSVRfRVhQT1JUIGJvb2wgaGFzVXNlckdlc3R1cmUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0SGFzVXNlckdlc3R1cmUoYm9vbCk7Ci0KLSAgICAvLyBBIGNvbnN1bWVyIGNv
bnRyb2xsZWQgdmFsdWUgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUKLSAgICAv
LyByZXF1ZXN0b3IuCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgcmVxdWVzdG9ySUQoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdG9ySUQoaW50KTsKLQotICAgIC8vIEEg
Y29uc3VtZXIgY29udHJvbGxlZCB2YWx1ZSBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGlkZW50aWZ5
IHRoZQotICAgIC8vIHByb2Nlc3Mgb2YgdGhlIHJlcXVlc3Rvci4KLSAgICBXRUJLSVRfRVhQT1JU
IGludCByZXF1ZXN0b3JQcm9jZXNzSUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0UmVxdWVzdG9yUHJvY2Vzc0lEKGludCk7Ci0KLSAgICAvLyBBbGxvd3MgdGhlIHJlcXVlc3Qg
dG8gYmUgbWF0Y2hlZCB1cCB3aXRoIGl0cyBhcHAgY2FjaGUgaG9zdC4KLSAgICBXRUJLSVRfRVhQ
T1JUIGludCBhcHBDYWNoZUhvc3RJRCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRBcHBDYWNoZUhvc3RJRChpbnQgaWQpOwotCi0gICAgLy8gSWYgdHJ1ZSwgdGhlIHJlc3BvbnNl
IGJvZHkgd2lsbCBiZSBkb3dubG9hZGVkIHRvIGEgZmlsZSBtYW5hZ2VkIGJ5IHRoZQotICAgIC8v
IFdlYlVSTExvYWRlci4gIFNlZSBXZWJVUkxSZXNwb25zZTo6ZG93bmxvYWRlZEZpbGVQYXRoLgot
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBkb3dubG9hZFRvRmlsZSgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXREb3dubG9hZFRvRmlsZShib29sKTsKLQotICAgIC8vIEV4dHJhIGRh
dGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlIHJlcXVlc3QuIFJlc291
cmNlCi0gICAgLy8gcmVxdWVzdHMgY2FuIGJlIGNvcGllZC4gSWYgbm9uLW51bGwsIGVhY2ggY29w
eSBvZiBhIHJlc291cmNlIHJlcXVlc3RzCi0gICAgLy8gaG9sZHMgYSBwb2ludGVyIHRvIHRoZSBl
eHRyYSBkYXRhLCBhbmQgdGhlIGV4dHJhIGRhdGEgcG9pbnRlciB3aWxsIGJlCi0gICAgLy8gZGVs
ZXRlZCB3aGVuIHRoZSBsYXN0IHJlc291cmNlIHJlcXVlc3QgaXMgZGVzdHJveWVkLiBTZXR0aW5n
IHRoZSBleHRyYQotICAgIC8vIGRhdGEgcG9pbnRlciB3aWxsIGNhdXNlIHRoZSB1bmRlcmx5aW5n
IHJlc291cmNlIHJlcXVlc3QgdG8gYmUKLSAgICAvLyBkaXNzb2NpYXRlZCBmcm9tIGFueSBleGlz
dGluZyBub24tbnVsbCBleHRyYSBkYXRhIHBvaW50ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCBFeHRy
YURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFeHRy
YURhdGEoRXh0cmFEYXRhKik7Ci0KLSNpZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikK
LSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHRvTXV0YWJsZVJlc291cmNlUmVxdWVzdCgp
OwotICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgdG9SZXNvdXJjZVJlcXVlc3Qo
KSBjb25zdDsKLSNlbmRpZgotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBhc3NpZ24oV2ViVVJMUmVx
dWVzdFByaXZhdGUqKTsKLQotcHJpdmF0ZToKLSAgICBXZWJVUkxSZXF1ZXN0UHJpdmF0ZSogbV9w
cml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01J
R1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlcXVl
c3QuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJM
UmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxSZXNwb25zZS5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwxNTkgKzI4LDYg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJVUkxSZXNwb25zZV9oCi0jZGVm
aW5lIFdlYlVSTFJlc3BvbnNlX2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVPd25QdHIuaCIKLQotI2lmIGRlZmluZWQoV0VC
S0lUX0lNUExFTUVOVEFUSU9OKQotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkNTdHJp
bmc7Ci1jbGFzcyBXZWJIVFRQSGVhZGVyVmlzaXRvcjsKLWNsYXNzIFdlYkhUVFBMb2FkSW5mbzsK
LWNsYXNzIFdlYlN0cmluZzsKLWNsYXNzIFdlYlVSTDsKLWNsYXNzIFdlYlVSTExvYWRUaW1pbmc7
Ci1jbGFzcyBXZWJVUkxSZXNwb25zZVByaXZhdGU7Ci0KLWNsYXNzIFdlYlVSTFJlc3BvbnNlIHsK
LXB1YmxpYzoKLSAgICB+V2ViVVJMUmVzcG9uc2UoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlVS
TFJlc3BvbnNlKCkgOiBtX3ByaXZhdGUoMCkgeyB9Ci0gICAgV2ViVVJMUmVzcG9uc2UoY29uc3Qg
V2ViVVJMUmVzcG9uc2UmIHIpIDogbV9wcml2YXRlKDApIHsgYXNzaWduKHIpOyB9Ci0gICAgV2Vi
VVJMUmVzcG9uc2UmIG9wZXJhdG9yPShjb25zdCBXZWJVUkxSZXNwb25zZSYgcikKLSAgICB7Ci0g
ICAgICAgIGFzc2lnbihyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGV4
cGxpY2l0IFdlYlVSTFJlc3BvbnNlKGNvbnN0IFdlYlVSTCYgdXJsKSA6IG1fcHJpdmF0ZSgwKQot
ICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZSgpOwotICAgICAgICBzZXRVUkwodXJsKTsKLSAgICB9
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2Vi
VVJMUmVzcG9uc2UmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc051bGwoKSBjb25zdDsK
LQotICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMIHVybCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRVUkwoY29uc3QgV2ViVVJMJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHVuc2ln
bmVkIGNvbm5lY3Rpb25JRCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb25u
ZWN0aW9uSUQodW5zaWduZWQpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGNvbm5lY3Rpb25S
ZXVzZWQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvblJldXNl
ZChib29sKTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMTG9hZFRpbWluZyBsb2FkVGltaW5n
KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldExvYWRUaW1pbmcoY29uc3QgV2ViVVJMTG9h
ZFRpbWluZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJIVFRQTG9hZEluZm8gaHR0cExvYWRJ
bmZvKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhUVFBMb2FkSW5mbyhjb25zdCBXZWJI
VFRQTG9hZEluZm8mKTsKLQotICAgIFdFQktJVF9FWFBPUlQgZG91YmxlIHJlc3BvbnNlVGltZSgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZVRpbWUoZG91YmxlKTsK
LQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIG1pbWVUeXBlKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldE1JTUVUeXBlKGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcpOwot
Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFdlYlN0cmlu
ZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc3VnZ2VzdGVkRmlsZU5hbWUoKSBj
b25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U3VnZ2VzdGVkRmlsZU5hbWUoY29uc3Qg
V2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBodHRwU3RhdHVzQ29kZSgpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShpbnQpOwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgaHR0cFN0YXR1c1RleHQoKSBjb25zdDsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRUUFN0YXR1c1RleHQoY29uc3QgV2ViU3RyaW5nJik7Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBodHRwSGVhZGVyRmllbGQoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRUUEhlYWRlckZp
ZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGFkZEhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBjbGVh
ckhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCB2aXNpdEhUVFBIZWFkZXJGaWVsZHMoV2ViSFRUUEhlYWRlclZpc2l0b3IqKSBjb25z
dDsKLQotICAgIFdFQktJVF9FWFBPUlQgZG91YmxlIGxhc3RNb2RpZmllZERhdGUoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TGFzdE1vZGlmaWVkRGF0ZShkb3VibGUpOwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBsb25nIGxvbmcgYXBwQ2FjaGVJRCgpIGNvbnN0OwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRBcHBDYWNoZUlEKGxvbmcgbG9uZyk7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlVSTCBhcHBDYWNoZU1hbmlmZXN0VVJMKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldEFwcENhY2hlTWFuaWZlc3RVUkwoY29uc3QgV2ViVVJMJik7Ci0KLSAgICAvLyBB
IGNvbnN1bWVyIGNvbnRyb2xsZWQgdmFsdWUgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byByZWNvcmQg
b3BhcXVlCi0gICAgLy8gc2VjdXJpdHkgaW5mbyByZWxhdGVkIHRvIHRoaXMgcmVxdWVzdC4KLSAg
ICBXRUJLSVRfRVhQT1JUIFdlYkNTdHJpbmcgc2VjdXJpdHlJbmZvKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFNlY3VyaXR5SW5mbyhjb25zdCBXZWJDU3RyaW5nJik7Ci0KLSNp
ZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiB0b011dGFibGVSZXNvdXJjZVJlc3BvbnNlKCk7Ci0gICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgdG9SZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7Ci0jZW5kaWYKLQot
ICAgIC8vIEZsYWcgd2hldGhlciB0aGlzIHJlcXVlc3Qgd2FzIHNlcnZlZCBmcm9tIHRoZSBkaXNr
IGNhY2hlIGVudHJ5LgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCB3YXNDYWNoZWQoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0V2FzQ2FjaGVkKGJvb2wpOwotCi0gICAgLy8gRmxh
ZyB3aGV0aGVyIHRoaXMgcmVxdWVzdCB3YXMgbG9hZGVkIHZpYSB0aGUgU1BEWSBwcm90b2NvbCBv
ciBub3QuCi0gICAgLy8gU1BEWSBpcyBhbiBleHBlcmltZW50YWwgd2ViIHByb3RvY29sLCBzZWUg
aHR0cDovL2Rldi5jaHJvbWl1bS5vcmcvc3BkeQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCB3YXNG
ZXRjaGVkVmlhU1BEWSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRXYXNGZXRj
aGVkVmlhU1BEWShib29sKTsKLQotICAgIC8vIEZsYWcgd2hldGhlciB0aGlzIHJlcXVlc3Qgd2Fz
IGxvYWRlZCBhZnRlciB0aGUgVExTL05leHQtUHJvdG9jb2wtTmVnb3RpYXRpb24gd2FzIHVzZWQu
Ci0gICAgLy8gVGhpcyBpcyByZWxhdGVkIHRvIFNQRFkuCi0gICAgV0VCS0lUX0VYUE9SVCBib29s
IHdhc05wbk5lZ290aWF0ZWQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0V2Fz
TnBuTmVnb3RpYXRlZChib29sKTsKLQotICAgIC8vIEZsYWcgd2hldGhlciB0aGlzIHJlcXVlc3Qg
d2FzIG1hZGUgd2hlbiAiQWx0ZXJuYXRlLVByb3RvY29sOiB4eHgiCi0gICAgLy8gaXMgcHJlc2Vu
dCBpbiBzZXJ2ZXIncyByZXNwb25zZS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgd2FzQWx0ZXJu
YXRlUHJvdG9jb2xBdmFpbGFibGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
V2FzQWx0ZXJuYXRlUHJvdG9jb2xBdmFpbGFibGUoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRo
ZXIgdGhpcyByZXF1ZXN0IHdhcyBsb2FkZWQgdmlhIGFuIGV4cGxpY2l0IHByb3h5IChIVFRQLCBT
T0NLUywgZXRjKS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgd2FzRmV0Y2hlZFZpYVByb3h5KCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFdhc0ZldGNoZWRWaWFQcm94eShib29s
KTsKLQotICAgIC8vIEZsYWcgd2hldGhlciB0aGlzIHJlcXVlc3QgaXMgcGFydCBvZiBhIG11bHRp
cGFydCByZXNwb25zZS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNNdWx0aXBhcnRQYXlsb2Fk
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldElzTXVsdGlwYXJ0UGF5bG9hZChi
b29sKTsKLQotICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoZSBsb2NhdGlvbiBvZiBhIGRvd25sb2Fk
ZWQgcmVzcG9uc2UgaWYgdGhlCi0gICAgLy8gV2ViVVJMUmVxdWVzdCBoYWQgdGhlIGRvd25sb2Fk
VG9GaWxlIGZsYWcgc2V0IHRvIHRydWUuICBUaGlzIGZpbGUgcGF0aAotICAgIC8vIHJlbWFpbnMg
dmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgV2ViVVJMTG9hZGVyIHVzZWQgdG8gY3JlYXRl
IGl0LgotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGRvd25sb2FkRmlsZVBhdGgoKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RG93bmxvYWRGaWxlUGF0aChjb25zdCBXZWJT
dHJpbmcmKTsKLQotICAgIC8vIFJlbW90ZSBJUCBhZGRyZXNzIG9mIHRoZSBzb2NrZXQgd2hpY2gg
ZmV0Y2hlZCB0aGlzIHJlc291cmNlLgotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHJlbW90
ZUlQQWRkcmVzcygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZW1vdGVJUEFk
ZHJlc3MoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICAvLyBSZW1vdGUgcG9ydCBudW1iZXIgb2Yg
dGhlIHNvY2tldCB3aGljaCBmZXRjaGVkIHRoaXMgcmVzb3VyY2UuCi0gICAgV0VCS0lUX0VYUE9S
VCB1bnNpZ25lZCBzaG9ydCByZW1vdGVQb3J0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFJlbW90ZVBvcnQodW5zaWduZWQgc2hvcnQpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9p
ZCBhc3NpZ24oV2ViVVJMUmVzcG9uc2VQcml2YXRlKik7Ci0KLXByaXZhdGU6Ci0gICAgV2ViVVJM
UmVzcG9uc2VQcml2YXRlKiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJW
aWV3LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQXJyYXlCdWZmZXJWaWV3Lmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViQXJyYXlCdWZmZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkFycmF5QnVmZmVy
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYkFycmF5QnVmZmVyVmlldy5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJBcnJheUJ1ZmZlclZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2lmbmRlZiBXZWJBcnJheUJ1ZmZlclZpZXdfaAog
I2RlZmluZSBXZWJBcnJheUJ1ZmZlclZpZXdfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29t
bW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKIAogbmFtZXNwYWNlIFdURiB7
IGNsYXNzIEFycmF5QnVmZmVyVmlldzsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmgJKHJldmlzaW9uIDEwMTIy
MykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmxvYkRhdGEuaDoxMDEy
MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJCbG9iRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2ViQmxvYkRhdGFfaAogI2RlZmlu
ZSBXZWJCbG9iRGF0YV9oCiAKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJU
aHJlYWRTYWZlRGF0YS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEJsb2JEYXRhOyB9CkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRl
bXMuCiAgICAgV0VCS0lUX0VYUE9SVCBzaXplX3QgaXRlbUNvdW50KCkgY29uc3Q7CiAKLSAgICAv
LyBSZXRyaWV2ZXMgdGhlIHZhbHVlcyBvZiB0aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gaW5kZXguICBS
ZXR1cm5zIGZhbHNlIGlmCisgICAgLy8gUmV0cmlldmVzIHRoZSB2YWx1ZXMgb2YgdGhlIGl0ZW0g
YXQgdGhlIGdpdmVuIGluZGV4LiBSZXR1cm5zIGZhbHNlIGlmCiAgICAgLy8gaW5kZXggaXMgb3V0
IG9mIGJvdW5kcy4KICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXRlbUF0KHNpemVfdCBpbmRleCwg
SXRlbSYgcmVzdWx0KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViQ29va2llLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llLmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmg6MTAxMjIzKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llLmgJKHdvcmtpbmcg
Y29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNv
b2tpZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYkNvb2tpZS5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb29raWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMg
KzMxLDExIEBACiAjaWZuZGVmIFdlYkNvb2tpZV9oCiAjZGVmaW5lIFdlYkNvb2tpZV9oCiAKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJp
bmcuaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlN0cmluZzsKLQogLy8gQSBjb29raWUuCiAv
Lwogc3RydWN0IFdlYkNvb2tpZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oCShyZXZpc2lvbiAxMDEyMjMp
CShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaDoxMDEy
MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBv
aW50LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgJKHJldmlzaW9uIDEwMTIyMykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UG9pbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJGbG9hdFBvaW50
X2gKICNkZWZpbmUgV2ViRmxvYXRQb2ludF9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UXVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UXVhZC5oCShyZXZpc2lvbiAxMDEy
MjQpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UXVhZC5oOjEw
MTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0
UXVhZC5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaAkocmV2aXNpb24gMTAxMjIzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpZm5kZWYgV2ViRmxvYXRRdWFkX2gK
ICNkZWZpbmUgV2ViRmxvYXRRdWFkX2gKIAorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1
ZGUgIldlYkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCisjaW5jbHVkZSAiV2ViUmVjdC5oIgogCiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNtYXRoPgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgJKHJldmlz
aW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRS
ZWN0Lmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViRmxvYXRSZWN0LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UmVjdC5oCShyZXZpc2lvbiAx
MDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9h
dFJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJGbG9h
dFJlY3RfaAogI2RlZmluZSBXZWJGbG9hdFJlY3RfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBCb2R5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaAkocmV2aXNpb24gMTAx
MjI0KQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQQm9keS5oOjEw
MTIyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBC
b2R5LmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkhUVFBCb2R5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaAkocmV2aXNpb24gMTAxMjIzKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUEJvZHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBACiAjaWZuZGVmIFdlYkhUVFBCb2R5X2gKICNk
ZWZpbmUgV2ViSFRUUEJvZHlfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRGF0YS5oIgotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYk5vbkNvcHlhYmxlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
U3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViRGF0
YS5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgi
CisjaW5jbHVkZSAiV2ViVVJMLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KIG5hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgRm9ybURhdGE7IH0KQEAgLTc2LDcgKzc2LDcgQEAgcHVibGlj
OgogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb21wcmlzaW5nIHRoZSBo
dHRwIGJvZHkuCiAgICAgV0VCS0lUX0VYUE9SVCBzaXplX3QgZWxlbWVudENvdW50KCkgY29uc3Q7
CiAKLSAgICAvLyBTZXRzIHRoZSB2YWx1ZXMgb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGlu
ZGV4LiAgUmV0dXJucyBmYWxzZSBpZgorICAgIC8vIFNldHMgdGhlIHZhbHVlcyBvZiB0aGUgZWxl
bWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXguIFJldHVybnMgZmFsc2UgaWYKICAgICAvLyBpbmRleCBp
cyBvdXQgb2YgYm91bmRzLgogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlbGVtZW50QXQoc2l6ZV90
IGluZGV4LCBFbGVtZW50JikgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmRGaWxlUmFuZ2UoY29uc3QgV2ViU3RyaW5nJiwgbG9u
ZyBsb25nIGZpbGVTdGFydCwgbG9uZyBsb25nIGZpbGVMZW5ndGgsIGRvdWJsZSBtb2RpZmljYXRp
b25UaW1lKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXBwZW5kQmxvYihjb25zdCBXZWJVUkwm
KTsKIAotICAgIC8vIElkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIGZvcm0gc3VibWlzc2lvbiBpbnN0
YW5jZS4gIEEgdmFsdWUgb2YgMCBpcworICAgIC8vIElkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIGZv
cm0gc3VibWlzc2lvbiBpbnN0YW5jZS4gQSB2YWx1ZSBvZiAwIGlzCiAgICAgLy8gdXNlZCB0byBp
bmRpY2F0ZSBhbiB1bnNwZWNpZmllZCBpZGVudGlmaWVyLgogICAgIFdFQktJVF9FWFBPUlQgbG9u
ZyBsb25nIGlkZW50aWZpZXIoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SWRl
bnRpZmllcihsb25nIGxvbmcpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViSFRUUEhlYWRlclZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCShyZXZp
c2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkhUVFBI
ZWFkZXJWaXNpdG9yLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViSFRUUEhlYWRlclZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUExvYWRJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRU
UExvYWRJbmZvLmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSFRUUExvYWRJbmZvLmgJKHdvcmtpbmcgY29weSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkhUVFBMb2FkSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYkhUVFBMb2FkSW5mby5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsOCArMzEsOCBAQAogI2lmbmRlZiBXZWJIVFRQTG9hZEluZm9faAogI2RlZmluZSBXZWJI
VFRQTG9hZEluZm9faAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJl
c291cmNlTG9hZEluZm87CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZFNhZmVEYXRhLmgJKHJldmlzaW9uIDEwMTIy
MykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEu
aDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJU
aHJlYWRTYWZlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWRTYWZlRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZFNhZmVEYXRhLmgJ
KHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYlRocmVhZFNhZmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAK
ICNpZm5kZWYgV2ViVGhyZWFkU2FmZURhdGFfaAogI2RlZmluZSBXZWJUaHJlYWRTYWZlRGF0YV9o
CiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJp
dmF0ZVB0ci5oIgogCiAjaWYgIVdFQktJVF9JTVBMRU1FTlRBVElPTgogI2luY2x1ZGUgPHN0cmlu
Zz4KQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBSYXdEYXRhOyB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0vLyBBIGNvbnRhaW5lciBmb3IgcmF3IGJ5dGVzLiAg
SXQgaXMgaW5leHBlbnNpdmUgdG8gY29weSBhIFdlYlRocmVhZFNhZmVEYXRhIG9iamVjdC4KKy8v
IEEgY29udGFpbmVyIGZvciByYXcgYnl0ZXMuIEl0IGlzIGluZXhwZW5zaXZlIHRvIGNvcHkgYSBX
ZWJUaHJlYWRTYWZlRGF0YSBvYmplY3QuCiAvLyBJdCBpcyBzYWZlIHRvIHBhc3MgYSBXZWJUaHJl
YWRTYWZlRGF0YSBhY3Jvc3MgdGhyZWFkcyEhIQogY2xhc3MgV2ViVGhyZWFkU2FmZURhdGEgewog
cHVibGljOgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
VVJMRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJVUkxFcnJvci5oCShyZXZpc2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlVSTEVycm9yLmg6MTAxMjIzKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMRXJyb3IuaAkod29ya2luZyBjb3B5KQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMRXJyb3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJVUkxFcnJvci5oCShyZXZpc2lvbiAxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICsz
MSw4IEBACiAjaWZuZGVmIFdlYlVSTEVycm9yX2gKICNkZWZpbmUgV2ViVVJMRXJyb3JfaAogCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJM
LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCiAKICNpZiBk
ZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElPTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
UmVzb3VyY2VFcnJvcjsgfQpAQCAtNDIsMTIgKzQyLDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBzdHJ1Y3QgV2ViVVJMRXJyb3IgewogICAgIC8vIEEgbmFtZXNwYWNlIGZvciAicmVhc29uIiB0
byBzdXBwb3J0IHZhcmlvdXMgbGF5ZXJzIGdlbmVyYXRpbmcKLSAgICAvLyByZXNvdXJjZSBlcnJv
cnMuICBXZWJLaXQgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgdmFsdWUgb2YgdGhpcworICAgIC8v
IHJlc291cmNlIGVycm9ycy4gV2ViS2l0IGRvZXMgbm90IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9m
IHRoaXMKICAgICAvLyBzdHJpbmcgYXMgaXQgd2lsbCBqdXN0IGJlIHBhc3NlZCB2aWEgY2FsbGJh
Y2tzIHRvIHRoZSBjb25zdW1lci4KICAgICBXZWJTdHJpbmcgZG9tYWluOwogCi0gICAgLy8gQSBu
dW1lcmljIGVycm9yIGNvZGUgZGV0YWlsaW5nIHRoZSByZWFzb24gZm9yIHRoaXMgZXJyb3IuICBB
IHZhbHVlCi0gICAgLy8gb2YgMCBtZWFucyBubyBlcnJvci4gIFdlYktpdCBkb2VzIG5vdCBpbnRl
cnByZXQgdGhlIG1lYW5pbmcgb2Ygb3RoZXIKKyAgICAvLyBBIG51bWVyaWMgZXJyb3IgY29kZSBk
ZXRhaWxpbmcgdGhlIHJlYXNvbiBmb3IgdGhpcyBlcnJvci4gQSB2YWx1ZQorICAgIC8vIG9mIDAg
bWVhbnMgbm8gZXJyb3IuIFdlYktpdCBkb2VzIG5vdCBpbnRlcnByZXQgdGhlIG1lYW5pbmcgb2Yg
b3RoZXIKICAgICAvLyB2YWx1ZXMgYW5kIG5vcm1hbGx5IGp1c3QgZm9yd2FyZHMgdGhpcyBlcnJv
ciBpbmZvcm1hdGlvbiBiYWNrIHRvIHRoZQogICAgIC8vIGVtYmVkZGVyIChzZWUgZm9yIGV4YW1w
bGUgV2ViRnJhbWVDbGllbnQpLgogICAgIGludCByZWFzb247CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkVGltaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZFRpbWlu
Zy5oCShyZXZpc2lvbiAxMDEyMjMpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlVSTExvYWRUaW1pbmcuaDoxMDEyMjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkVGltaW5nLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJV
UkxMb2FkVGltaW5nLmgJKHJldmlzaW9uIDEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOCArMzEsOCBAQAogI2lmbmRlZiBXZWJVUkxMb2FkVGltaW5nX2gKICNkZWZpbmUgV2ViVVJM
TG9hZFRpbWluZ19oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291
cmNlTG9hZFRpbWluZzsgfQogCkBAIC01OCw0MCArNTgsNDAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9CiAKICAgICBXRUJL
SVRfRVhQT1JUIGRvdWJsZSByZXF1ZXN0VGltZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRSZXF1ZXN0VGltZShkb3VibGUgdGltZSk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFJlcXVlc3RUaW1lKGRvdWJsZSk7CiAKICAgICBXRUJLSVRfRVhQT1JUIGludCBwcm94eVN0
YXJ0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByb3h5U3RhcnQoaW50IHN0
YXJ0KTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJveHlTdGFydChpbnQpOwogCiAgICAg
V0VCS0lUX0VYUE9SVCBpbnQgcHJveHlFbmQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0UHJveHlFbmQoaW50IGVuZCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByb3h5
RW5kKGludCk7CiAKICAgICBXRUJLSVRfRVhQT1JUIGludCBkbnNTdGFydCgpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRETlNTdGFydChpbnQgc3RhcnQpOworICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRETlNTdGFydChpbnQpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgZG5z
RW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEROU0VuZChpbnQgZW5kKTsK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RE5TRW5kKGludCk7CiAKICAgICBXRUJLSVRfRVhQ
T1JUIGludCBjb25uZWN0U3RhcnQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
Q29ubmVjdFN0YXJ0KGludCBzdGFydCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENvbm5l
Y3RTdGFydChpbnQpOwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgY29ubmVjdEVuZCgpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb25uZWN0RW5kKGludCBlbmQpOworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRDb25uZWN0RW5kKGludCk7CiAKICAgICBXRUJLSVRfRVhQT1JU
IGludCBzZW5kU3RhcnQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2VuZFN0
YXJ0KGludCBzdGFydCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNlbmRTdGFydChpbnQp
OwogCiAgICAgV0VCS0lUX0VYUE9SVCBpbnQgc2VuZEVuZCgpIGNvbnN0OwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRTZW5kRW5kKGludCBlbmQpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRTZW5kRW5kKGludCk7CiAKICAgICBXRUJLSVRfRVhQT1JUIGludCByZWNlaXZlSGVhZGVyc0Vu
ZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZWNlaXZlSGVhZGVyc0VuZChp
bnQgZW5kKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVjZWl2ZUhlYWRlcnNFbmQoaW50
KTsKIAogICAgIFdFQktJVF9FWFBPUlQgaW50IHNzbFN0YXJ0KCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldFNTTFN0YXJ0KGludCBzdGFydCk7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFNTTFN0YXJ0KGludCk7CiAKICAgICBXRUJLSVRfRVhQT1JUIGludCBzc2xFbmQoKSBj
b25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U1NMRW5kKGludCBlbmQpOworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRTU0xFbmQoaW50KTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgogICAgIFdlYlVSTExvYWRUaW1pbmcoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlJlc291cmNlTG9hZFRpbWluZz4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYlVSTExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRlci5oCShyZXZpc2lvbiAxMDEyMzAp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotLy8gRklYTUU6IE1vdmUgdGhlc2UgY2xhc3NlcyBpbnRvIHBsYXRmb3JtLgogY2xhc3MgV2Vi
RGF0YTsKIGNsYXNzIFdlYlVSTExvYWRlckNsaWVudDsKIGNsYXNzIFdlYlVSTFJlcXVlc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJDbGllbnQuaDoxMDEyMjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDEw
MTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTExv
YWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsMTIgQEAgc3RydWN0IFdl
YlVSTEVycm9yOwogCiBjbGFzcyBXZWJVUkxMb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIC8v
IENhbGxlZCB3aGVuIGZvbGxvd2luZyBhIHJlZGlyZWN0LiAgfG5ld1JlcXVlc3R8IGNvbnRhaW5z
IHRoZSByZXF1ZXN0Ci0gICAgLy8gZ2VuZXJhdGVkIGJ5IHRoZSByZWRpcmVjdC4gIFRoZSBjbGll
bnQgbWF5IG1vZGlmeSB8bmV3UmVxdWVzdHwuCisgICAgLy8gQ2FsbGVkIHdoZW4gZm9sbG93aW5n
IGEgcmVkaXJlY3QuIHxuZXdSZXF1ZXN0fCBjb250YWlucyB0aGUgcmVxdWVzdAorICAgIC8vIGdl
bmVyYXRlZCBieSB0aGUgcmVkaXJlY3QuIFRoZSBjbGllbnQgbWF5IG1vZGlmeSB8bmV3UmVxdWVz
dHwuCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdCgKICAgICAgICAgV2ViVVJMTG9h
ZGVyKiwgV2ViVVJMUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpIHsgfQogCi0gICAgLy8gQ2FsbGVkIHRvIHJlcG9ydCB1cGxvYWQgcHJv
Z3Jlc3MuICBUaGUgYnl0ZXMgcmVwb3J0ZWQgY29ycmVzcG9uZCB0bworICAgIC8vIENhbGxlZCB0
byByZXBvcnQgdXBsb2FkIHByb2dyZXNzLiBUaGUgYnl0ZXMgcmVwb3J0ZWQgY29ycmVzcG9uZCB0
bwogICAgIC8vIHRoZSBIVFRQIG1lc3NhZ2UgYm9keS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEoCiAgICAgICAgIFdlYlVSTExvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1Nl
bnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIHsgfQpAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIHdoZW4gcmVzcG9uc2UgaGVhZGVycyBhcmUg
cmVjZWl2ZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJVUkxMb2Fk
ZXIqLCBjb25zdCBXZWJVUkxSZXNwb25zZSYpIHsgfQogCi0gICAgLy8gQ2FsbGVkIHdoZW4gYSBj
aHVuayBvZiByZXNwb25zZSBkYXRhIGlzIGRvd25sb2FkZWQuICBUaGlzIGlzIG9ubHkgY2FsbGVk
CisgICAgLy8gQ2FsbGVkIHdoZW4gYSBjaHVuayBvZiByZXNwb25zZSBkYXRhIGlzIGRvd25sb2Fk
ZWQuIFRoaXMgaXMgb25seSBjYWxsZWQKICAgICAvLyBpZiBXZWJVUkxSZXF1ZXN0J3MgZG93bmxv
YWRUb0ZpbGUgZmxhZyB3YXMgc2V0IHRvIHRydWUuCiAgICAgdmlydHVhbCB2b2lkIGRpZERvd25s
b2FkRGF0YShXZWJVUkxMb2FkZXIqLCBpbnQgZGF0YUxlbmd0aCkgeyB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlcXVlc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxSZXF1
ZXN0LmgJKHJldmlzaW9uIDEwMTIyMykJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVVJMUmVxdWVzdC5oOjEwMTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYlVSTFJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlcXVl
c3QuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBA
CiAjaWZuZGVmIFdlYlVSTFJlcXVlc3RfaAogI2RlZmluZSBXZWJVUkxSZXF1ZXN0X2gKIAorI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkhUVFBCb2R5LmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKICNpZiBkZWZpbmVkKFdFQktJVF9JTVBMRU1FTlRBVElP
TikKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OyB9CkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIFdlYlVSTFJlcXVlc3RQcml2YXRlOwogY2xhc3MgV2ViVVJMUmVxdWVz
dCB7CiBwdWJsaWM6CiAgICAgZW51bSBDYWNoZVBvbGljeSB7Ci0gICAgICAgIFVzZVByb3RvY29s
Q2FjaGVQb2xpY3ksICAvLyBub3JtYWwgbG9hZAorICAgICAgICBVc2VQcm90b2NvbENhY2hlUG9s
aWN5LCAvLyBub3JtYWwgbG9hZAogICAgICAgICBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSwgLy8g
cmVsb2FkCiAgICAgICAgIFJldHVybkNhY2hlRGF0YUVsc2VMb2FkLCAvLyBiYWNrL2ZvcndhcmQg
b3IgZW5jb2RpbmcgY2hhbmdlIC0gYWxsb3cgc3RhbGUgZGF0YQogICAgICAgICBSZXR1cm5DYWNo
ZURhdGFEb250TG9hZCwgLy8gcmVzdWx0cyBvZiBhIHBvc3QgLSBhbGxvdyBzdGFsZSBkYXRhIGFu
ZCBvbmx5IHVzZSBjYWNoZQpAQCAtMTExLDEyICsxMTEsMTIgQEAgcHVibGljOgogICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBXZWJVUkwmKTsKIAog
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhbGxvd0Nvb2tpZXMoKSBjb25zdDsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wgYWxsb3dDb29raWVzKTsKKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0QWxsb3dDb29raWVzKGJvb2wpOwogCiAgICAgLy8gQ29udHJvbHMg
d2hldGhlciB1c2VyIG5hbWUsIHBhc3N3b3JkLCBhbmQgY29va2llcyBtYXkgYmUgc2VudCB3aXRo
IHRoZQogICAgIC8vIHJlcXVlc3QuIChJZiBmYWxzZSwgdGhpcyBvdmVycmlkZXMgYWxsb3dDb29r
aWVzLikKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWxsb3dTdG9yZWRDcmVkZW50aWFscygpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbGxvd1N0b3JlZENyZWRlbnRpYWxzKGJv
b2wgYWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFs
bG93U3RvcmVkQ3JlZGVudGlhbHMoYm9vbCk7CiAKICAgICBXRUJLSVRfRVhQT1JUIENhY2hlUG9s
aWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENhY2hl
UG9saWN5KENhY2hlUG9saWN5KTsKQEAgLTE2NiwxMCArMTY2LDEwIEBAIHB1YmxpYzoKIAogICAg
IC8vIEFsbG93cyB0aGUgcmVxdWVzdCB0byBiZSBtYXRjaGVkIHVwIHdpdGggaXRzIGFwcCBjYWNo
ZSBob3N0LgogICAgIFdFQktJVF9FWFBPUlQgaW50IGFwcENhY2hlSG9zdElEKCkgY29uc3Q7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFwcENhY2hlSG9zdElEKGludCBpZCk7CisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldEFwcENhY2hlSG9zdElEKGludCk7CiAKICAgICAvLyBJZiB0cnVl
LCB0aGUgcmVzcG9uc2UgYm9keSB3aWxsIGJlIGRvd25sb2FkZWQgdG8gYSBmaWxlIG1hbmFnZWQg
YnkgdGhlCi0gICAgLy8gV2ViVVJMTG9hZGVyLiAgU2VlIFdlYlVSTFJlc3BvbnNlOjpkb3dubG9h
ZGVkRmlsZVBhdGguCisgICAgLy8gV2ViVVJMTG9hZGVyLiBTZWUgV2ViVVJMUmVzcG9uc2U6OmRv
d25sb2FkZWRGaWxlUGF0aC4KICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZG93bmxvYWRUb0ZpbGUo
KSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RG93bmxvYWRUb0ZpbGUoYm9vbCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJl
c3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViVVJMUmVzcG9uc2UuaAkocmV2aXNpb24gMTAxMjIzKQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25zZS5oOjEwMTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgJKHdvcmtpbmcg
Y29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlVS
TFJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaAkocmV2aXNpb24gMTAxMjIzKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsOCArMzEsOCBAQAogI2lmbmRlZiBXZWJVUkxSZXNwb25zZV9oCiAjZGVmaW5l
IFdlYlVSTFJlc3BvbnNlX2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVPd25QdHIuaCIKKyNpbmNsdWRlICJXZWJDb21tb24u
aCIKKyNpbmNsdWRlICJXZWJQcml2YXRlT3duUHRyLmgiCiAKICNpZiBkZWZpbmVkKFdFQktJVF9J
TVBMRU1FTlRBVElPTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsgfQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0SXNNdWx0aXBhcnRQYXlsb2FkKGJvb2wpOwogCiAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhl
IGxvY2F0aW9uIG9mIGEgZG93bmxvYWRlZCByZXNwb25zZSBpZiB0aGUKLSAgICAvLyBXZWJVUkxS
ZXF1ZXN0IGhhZCB0aGUgZG93bmxvYWRUb0ZpbGUgZmxhZyBzZXQgdG8gdHJ1ZS4gIFRoaXMgZmls
ZSBwYXRoCisgICAgLy8gV2ViVVJMUmVxdWVzdCBoYWQgdGhlIGRvd25sb2FkVG9GaWxlIGZsYWcg
c2V0IHRvIHRydWUuIFRoaXMgZmlsZSBwYXRoCiAgICAgLy8gcmVtYWlucyB2YWxpZCBmb3IgdGhl
IGxpZmV0aW1lIG9mIHRoZSBXZWJVUkxMb2FkZXIgdXNlZCB0byBjcmVhdGUgaXQuCiAgICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgZG93bmxvYWRGaWxlUGF0aCgpIGNvbnN0OwogICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXREb3dubG9hZEZpbGVQYXRoKGNvbnN0IFdlYlN0cmluZyYpOwo=
</data>
<flag name="review"
          id="116043"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>