<?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>84120</bug_id>
          
          <creation_ts>2012-04-16 19:24:51 -0700</creation_ts>
          <short_desc>[chromium] Convert WebPluginContainerImpl over to use WebExternalTextureLayer</short_desc>
          <delta_ts>2012-04-18 19:48:28 -0700</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="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603695</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 19:24:51 -0700</bug_when>
    <thetext>[chromium] Convert WebPluginContainerImpl over to use WebExternalTextureLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603699</commentid>
    <comment_count>1</comment_count>
      <attachid>137461</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 19:28:28 -0700</bug_when>
    <thetext>Created attachment 137461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603703</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-16 19:33:28 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603704</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-16 19:33:53 -0700</bug_when>
    <thetext>Attachment 137461 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebKit/chromium/src/WebExternalTextureLayer.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 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>603735</commentid>
    <comment_count>4</comment_count>
      <attachid>137469</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 20:12:22 -0700</bug_when>
    <thetext>Created attachment 137469
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603737</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 20:13:29 -0700</bug_when>
    <thetext>Stylebot is wrong about the #include order, it doesn&apos;t realize that:

#include &lt;public/WebExternalTextureLayer.h&gt;

in WebExternalTextureLayer.cpp is #including the header for that class.

I&apos;ll try to get this up on github to make it easier to tell the code changes apart from the file moves, but it&apos;s currently giving me errors running remote hooks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603741</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-16 20:15:33 -0700</bug_when>
    <thetext>Attachment 137469 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebKit/chromium/src/WebExternalTextureLayer.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 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>604455</commentid>
    <comment_count>7</comment_count>
      <attachid>137628</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-17 16:25:55 -0700</bug_when>
    <thetext>Created attachment 137628
patch 1 (for reference)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604456</commentid>
    <comment_count>8</comment_count>
      <attachid>137629</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-17 16:26:16 -0700</bug_when>
    <thetext>Created attachment 137629
patch 2 (for reference)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604872</commentid>
    <comment_count>9</comment_count>
      <attachid>137469</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-18 10:37:17 -0700</bug_when>
    <thetext>Comment on attachment 137469
rebased

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

Thanks for splitting this up into two patches.  That made it way easier to review.

&gt; Source/Platform/chromium/public/WebExternalTextureLayer.h:38
&gt;  class WebExternalTextureLayerImpl;

Remove me.

&gt; Source/Platform/chromium/public/WebExternalTextureLayer.h:59
&gt;      // Sets the texture id that represents the layer, in the namespace of the
&gt;      // compositor context.
&gt;      WEBKIT_EXPORT void setTextureId(unsigned);
&gt; -    WEBKIT_EXPORT unsigned textureId() const;
&gt; +
&gt; +    // Sets the IO surface id that represents this layer. setTextureId() and setIOSurfaceProperties() are mutually
&gt; +    // exclusive - a layer can be either backed by a texture or an IO surface, but not both.
&gt; +    WEBKIT_EXPORT void setIOSurfaceProperties(const WebSize&amp;, unsigned ioSurfaceId);

A random design aside.  It&apos;s always struck me as a little bit of a wart that we have this class that gets used in these two modes, and these modes infect its usage all the way down, even though one path (seemingly?) is only used by npapi plugins and the other only by ppapi.  I kind of wish it wouldn&apos;t cost so much boilerplate to have them be two separate classes.  It doesn&apos;t have to be fixed here, but do you have any thoughts on how to make this better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605311</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-18 19:42:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Source/Platform/chromium/public/WebExternalTextureLayer.h:59
&gt; &gt;      // Sets the texture id that represents the layer, in the namespace of the
&gt; &gt;      // compositor context.
&gt; &gt;      WEBKIT_EXPORT void setTextureId(unsigned);
&gt; &gt; -    WEBKIT_EXPORT unsigned textureId() const;
&gt; &gt; +
&gt; &gt; +    // Sets the IO surface id that represents this layer. setTextureId() and setIOSurfaceProperties() are mutually
&gt; &gt; +    // exclusive - a layer can be either backed by a texture or an IO surface, but not both.
&gt; &gt; +    WEBKIT_EXPORT void setIOSurfaceProperties(const WebSize&amp;, unsigned ioSurfaceId);
&gt; 
&gt; A random design aside.  It&apos;s always struck me as a little bit of a wart that we have this class that gets used in these two modes, and these modes infect its usage all the way down, even though one path (seemingly?) is only used by npapi plugins and the other only by ppapi.  I kind of wish it wouldn&apos;t cost so much boilerplate to have them be two separate classes.  It doesn&apos;t have to be fixed here, but do you have any thoughts on how to make this better?

I think it&apos;s a problem.  I think the first step to fixing things is to figure out how many of the features (meaning options like flipped, uvrect, premultiplied, etc) on this class are actually being used by the IOSurface path.  If it&apos;s a small number, then I think having a dedicated type for IOSurface backed layers would make more sense than having them share the texture type.  If IOSurface-backed layers can do pretty much everything that texture layers can do, then I&apos;d like to continue to share as much code as possible.  I haven&apos;t been able to do this investigation yet but would like to soon - of course if anyone else gets to it first that&apos;d be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605313</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-18 19:48:28 -0700</bug_when>
    <thetext>Committed r114604: &lt;http://trac.webkit.org/changeset/114604&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137461</attachid>
            <date>2012-04-16 19:28:28 -0700</date>
            <delta_ts>2012-04-16 20:12:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84120-20120416192827.patch</filename>
            <type>text/plain</type>
            <size>42307</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNDBjNjA2ZWM3YTFl
MGVlYmIzYWY2NjljNWM1ZDU1NzU0MWUwMDc5Li5lNDRjMjYzZjVlYjQ4ODBiZDFjMjUxOTYxMTky
MTQ2NzU4NTQ4NjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wNC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ29udmVydCBXZWJQbHVnaW5Db250YWluZXJJbXBsIG92ZXIgdG8gdXNlIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NDEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBJTyBzdXJmYWNlIGJhY2tlZCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllciwgdXNlZCBieSBDb3JlQW5pbWF0aW9uIHBsdWdpbnMgb24gT1MgWCBhbmQgbW92
ZXMKKyAgICAgICAgc29tZSBmdW5jdGlvbmFsaXR5IHVzZWQgYnkgbXVsdGlwbGUgV2ViTGF5ZXIg
c3ViY2xhc3NlcyB1cCB0byB0aGUgYmFzZSBjbGFzcy4KKworICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJDb250ZW50TGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvbnRlbnRMYXllcik6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjp1bndyYXApOgorCiAyMDEy
LTA0LTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBSZW1vdmUgdW51c2VkIGNvbXBvc2l0ZVRvVGV4dHVyZSAvIGNvbXBvc2l0ZU9m
ZnNjcmVlbiBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ1MzBhM2I1MTA1ODFhM2NkZjc3YjM5NzRh
ZmIzNzQ1YzlmN2MxNC4uMTk5ZTk4NTE3ZmNiZGU4NTMyNDRlMzQ5Njc0MGUwN2VkN2U1ZWMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTE2ICBKYW1lcyBSb2JpbnNvbiAg
PGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IFdlYlBs
dWdpbkNvbnRhaW5lckltcGwgb3ZlciB0byB1c2UgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyByZW5hbWVz
IFBsdWdpbkxheWVyQ2hyb21pdW0gLT4gVGV4dHVyZUxheWVyQ2hyb21pdW0gc2luY2UgaXQgaXMg
bm93IHVzZWQgb25seSBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIgYW5kIGNsZWFucyBpdCB1cCBzbGlnaHRseS4KKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TGF5ZXJDaHJvbWl1bS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6VGV4dHVyZUxheWVyQ2hyb21p
dW0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5
ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtOjpkcmF3c0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUxheWVyQ2hyb21pdW06OnNldFRleHR1
cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0RmxpcHBl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0VVZSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtOjpzZXRJT1N1cmZhY2VQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TGF5ZXJDaHJvbWl1bS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChUZXh0dXJlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTGF5ZXJDaHJvbWl1bTo6ZmxpcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTGF5
ZXJDaHJvbWl1bTo6dXZSZWN0KToKKwogMjAxMi0wNC0xNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIGJ1aWxkIGZpeCBh
ZnRlciByMTE0MjY5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4MzE4ZGY3NTJjODg1
MzYwOTBkZmU0OTRiODFhOTcyYWE4ODk1ZjJiLi4wM2E4YmE0NDQ5OWIwZTJmZGU4YTVmZTEwYTBl
NjZmNzU5N2Q2ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBA
CisyMDEyLTA0LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IFdlYlBsdWdpbkNvbnRhaW5lckltcGwgb3ZlciB0byB1
c2UgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0MTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwb3J0cyBXZWJQbHVnaW5Db250YWluZXJJbXBsIG92ZXIg
dG8gdXNlIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIGluc3RlYWQgb2YgZGlyZWN0bHkgdXNpbmcg
YSAqTGF5ZXJDaHJvbWl1bQorICAgICAgICB0eXBlIGZvciBiZXR0ZXIgbGF5ZXJpbmcgYW5kIGNv
ZGUgc2hhcmluZy4gVGhlIGNoYW5nZXMgdG8gV2ViUGx1Z2luQ29udGFpbmVySW1wbCBhcmUgZmFp
cmx5IHN0cmFpZ2h0Zm9yd2FyZC4gIEluCisgICAgICAgIGFkZGl0aW9uIHRvIHJlbmFtZXMgSSBh
bHNvIG1vdmVkIHNvbWUgc3RhdGUgdHJhY2tpbmcgaW50byBXUENJIGluc3RlYWQgb2YgaGF2aW5n
IGl0IGV4cG9zZWQgb24gdGhlIGludGVyZmFjZS4gSQorICAgICAgICBhbHNvIHJlbW92ZWQgdGhl
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCBpbnRlcm1lZGlhdGUgY2xhc3Mgc2luY2UgaXQg
d2Fzbid0IGRvaW5nIGFueXRoaW5nIHVzZWZ1bC4KKworICAgICAgICAqIFdlYktpdC5neXA6Cisg
ICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogc3JjL1dlYkNvbnRlbnRMYXllci5jcHA6
CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRUZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0SU9TdXJmYWNlUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRGbGlwcGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmZsaXBwZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VVZSZWN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnV2UmVjdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcik6CisgICAg
ICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHNyYy9XZWJMYXllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjppbnZhbGlk
YXRlUmVjdCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6
aW52YWxpZGF0ZSk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nVGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2lu
Z0lPU3VyZmFjZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6
Y29tbWl0QmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJ
bXBsOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVy
SW1wbDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViUGx1Z2luQ29u
dGFpbmVySW1wbCk6CisgICAgICAgICogdGVzdHMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
VGVzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcDoKKwog
MjAxMi0wNC0xNiAgUmF5bWVzIEtob3VyeSAgPHJheW1lc0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgRml4IGJ1ZyBpbiBXZWJQbHVnaW5Db250YWluZXI6OmlzUmVjdFRvcG1vc3QoKSB3aGljaCBn
YXZlIHRoZSBpbmNvcnJlY3QgcmVzdWx0IGZvciBhIHNjcm9sbGVkIHdpbmRvdy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCmluZGV4IDZk
N2Y5MTQ4MzAxYTA1OGFjZjljYjUxYzkyZDc3ZjlhZGRlZjNmNmMuLjY5OTQxOGMzNDliZTk2NTM5
YThjYTdmNzZhMTVjYzM1MzVhNDFlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaApAQCAtNTEsMTQgKzUxLDYgQEAgcHVibGljOgog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CiAgICAgV0VCS0lU
X0VYUE9SVCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwogCi0gICAgLy8gU2V0cyBhIHJlZ2lv
biBvZiB0aGUgbGF5ZXIgYXMgaW52YWxpZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNvbnRl
bnQuCi0gICAgLy8gVGhlIHZpc2libGUgYXJlYSBvZiB0aGUgZGlydHkgcmVjdCB3aWxsIGJlIHBh
c3NlZCB0byBvbmUgb3IgbW9yZSBjYWxscyB0bwotICAgIC8vIFdlYkNvbnRlbnRMYXllckNsaWVu
dDo6cGFpbnRDb250ZW50cyBiZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBhc3Mgb2NjdXJzLgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsK
LQotICAgIC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRv
IHVwZGF0ZSBpdHMgY29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgp
OwotCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViQ29udGVudExheWVyKGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiYpOwogICAgIFdlYkNvbnRlbnRM
YXllciYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBs
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJF
eHRlcm5hbFRleHR1cmVMYXllci5oCmluZGV4IGNlODdiYjIzODc2MjUyY2UxNWQ1OTM2NDFiYzM0
NGIyNDYyMTJkZTguLmQ4ZjU0Nzc3ZjBkM2U5NzEzYjQ4MzVhOWQ0MzI3OGZhZTI2NDU2ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyLmgKQEAgLTMwLDYgKzMwLDEwIEBACiAjaW5jbHVkZSAiV2ViRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgVGV4dHVyZUxheWVyQ2hyb21pdW07Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOwogCkBAIC00NCwxOCArNDgsMTUgQEAgcHVibGlj
OgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIGNyZWF0
ZSgpOwogCiAgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KLSAgICBXZWJFeHRlcm5h
bFRleHR1cmVMYXllcihjb25zdCBXZWJFeHRlcm5hbFRleHR1cmVMYXllciYgbGF5ZXIpIDogV2Vi
TGF5ZXIobGF5ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYkV4dGVybmFsVGV4dHVyZUxheWVyKCkg
eyB9Ci0gICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJFeHRl
cm5hbFRleHR1cmVMYXllciYgbGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWdu
KGxheWVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KIAogICAgIC8vIFNldHMgdGhl
IHRleHR1cmUgaWQgdGhhdCByZXByZXNlbnRzIHRoZSBsYXllciwgaW4gdGhlIG5hbWVzcGFjZSBv
ZiB0aGUKICAgICAvLyBjb21wb3NpdG9yIGNvbnRleHQuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFRleHR1cmVJZCh1bnNpZ25lZCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCB0ZXh0
dXJlSWQoKSBjb25zdDsKKworICAgIC8vIFNldHMgdGhlIElPIHN1cmZhY2UgaWQgdGhhdCByZXBy
ZXNlbnRzIHRoaXMgbGF5ZXIuIHNldFRleHR1cmVJZCgpIGFuZCBzZXRJT1N1cmZhY2VQcm9wZXJ0
aWVzKCkgYXJlIG11dHVhbGx5CisgICAgLy8gZXhjbHVzaXZlIC0gYSBsYXllciBjYW4gYmUgZWl0
aGVyIGJhY2tlZCBieSBhIHRleHR1cmUgb3IgYW4gSU8gc3VyZmFjZSwgYnV0IG5vdCBib3RoLgor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGNvbnN0IFdlYlNp
emUmLCB1bnNpZ25lZCBpb1N1cmZhY2VJZCk7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgb3Igbm90
IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRoZSBZIGRpcmVjdGlvbiB3aGVuCiAg
ICAgLy8gcmVuZGVyZWQuCkBAIC02NywxNCArNjgsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKICAgICBXRUJLSVRfRVhQ
T1JUIFdlYkZsb2F0UmVjdCB1dlJlY3QoKSBjb25zdDsKIAotICAgIC8vIE1hcmtzIGEgcmVnaW9u
IG9mIHRoZSBsYXllciBhcyBuZWVkaW5nIGEgZGlzcGxheS4gVGhlc2UgcmVnaW9ucyBhcmUKLSAg
ICAvLyBjb2xsZWN0ZWQgaW4gYSB1bmlvbiB1bnRpbCB0aGUgZGlzcGxheSBvY2N1cnMuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpOwot
Citwcml2YXRlOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGw+Jik7Ci0gICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYpOwotICAgIG9wZXJhdG9y
IFdURjo6UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkgY29uc3Q7Cisg
ICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpU
ZXh0dXJlTGF5ZXJDaHJvbWl1bT4pOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggM2Q5MTlmYTQ2MDM1MTUxZTU5YTQ1MjJhYjU4
ZGM1MDNkZWU4Y2NkYi4uOWY3YjljYzdhYThiNjFmZTE3OWE4YzY1YTI5NzI5NDcyNTYwMGI0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMzUsNiAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07IH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgV2ViRmxvYXRQb2ludDsKK3N0cnVjdCBXZWJGbG9hdFJl
Y3Q7CiBzdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgV2ViTGF5ZXIgewpAQCAtNTQsNiArNTUsMTIg
QEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXIm
KTsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7
CiAKKyAgICAvLyBTZXRzIGEgcmVnaW9uIG9mIHRoZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5l
ZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxp
ZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jik7CisKKyAgICAvLyBTZXRzIHRoZSBlbnRpcmUg
bGF5ZXIgYXMgaW52YWxpZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNvbnRlbnQuCisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKKwogICAgIFdFQktJVF9FWFBPUlQgV2Vi
TGF5ZXIgcm9vdExheWVyKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJMYXllciBwYXJl
bnQoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYWRkQ2hpbGQoY29uc3QgV2ViTGF5
ZXImKTsKQEAgLTExMyw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgV2ViTGF5ZXIoY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+Jik7CiAgICAgV2ViTGF5ZXImIG9w
ZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsK
ICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4oKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiB1bndyYXAoKQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFQqIHVud3JhcCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VCo+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IGFjNzliMDJhMmJkYjgzZTg5ZjZjMmQwM2ExNzViNWY0MjhiNGViODEuLmJiZTQyYmQ2ZTQzMDU1
MTU5OTEyYjFjNzkyMGQ3MTI1NmRmNmU3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1NTcsOCAr
MzU1Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZv
cm1JY29uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRm
b3JtSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bGF0Zm9ybUltYWdlLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUHJvZ3JhbUJpbmRpbmcuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGlu
Zy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SYXRlTGltaXRl
ci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOGE5OWFiMDQ3OGYyYzVkODY0OTA1MmRmZWEwY2IyYjI1MTViNDMwZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNpbmNsdWRlICJQbHVnaW5M
YXllckNocm9taXVtLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVMYXllckltcGwuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IFBs
dWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
bHVnaW5MYXllckNocm9taXVtKTsKLX0KLQotUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UGx1Z2luTGF5
ZXJDaHJvbWl1bSgpCi0gICAgOiBMYXllckNocm9taXVtKCkKLSAgICAsIG1fdGV4dHVyZUlkKDAp
Ci0gICAgLCBtX2ZsaXBwZWQodHJ1ZSkKLSAgICAsIG1fdXZSZWN0KDAsIDAsIDEsIDEpCi0gICAg
LCBtX2lvU3VyZmFjZUlkKDApCi17Ci19Ci0KLVBhc3NPd25QdHI8Q0NMYXllckltcGw+IFBsdWdp
bkxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkKLXsKLSAgICByZXR1cm4gQ0NUZXh0
dXJlTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKLX0KLQotdm9pZCBQbHVnaW5MYXllckNo
cm9taXVtOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCi17Ci0gICAgbV90ZXh0dXJlSWQgPSBp
ZDsKLSAgICBzZXROZWVkc0NvbW1pdCgpOwotfQotCi12b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06
OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQotewotICAgIG1fZmxpcHBlZCA9IGZsaXBwZWQ7Ci0g
ICAgc2V0TmVlZHNDb21taXQoKTsKLX0KLQotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpzZXRV
VlJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQotewotICAgIG1fdXZSZWN0ID0gcmVjdDsKLSAg
ICBzZXROZWVkc0NvbW1pdCgpOwotfQotCi12b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnNldElP
U3VyZmFjZVByb3BlcnRpZXMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50MzJfdCBpb1N1cmZh
Y2VJZCkKLXsKLSAgICBtX2lvU3VyZmFjZVNpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwot
ICAgIG1faW9TdXJmYWNlSWQgPSBpb1N1cmZhY2VJZDsKLSAgICBzZXROZWVkc0NvbW1pdCgpOwot
fQotCi11aW50MzJfdCBQbHVnaW5MYXllckNocm9taXVtOjpnZXRJT1N1cmZhY2VJZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1faW9TdXJmYWNlSWQ7Ci19Ci0KLXZvaWQgUGx1Z2luTGF5ZXJDaHJv
bWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCi17Ci0gICAgTGF5ZXJD
aHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7Ci0KLSAgICBDQ1RleHR1cmVMYXllcklt
cGwqIHRleHR1cmVMYXllciA9IHN0YXRpY19jYXN0PENDVGV4dHVyZUxheWVySW1wbCo+KGxheWVy
KTsKLSAgICB0ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZChtX3RleHR1cmVJZCk7Ci0gICAgdGV4
dHVyZUxheWVyLT5zZXRGbGlwcGVkKG1fZmxpcHBlZCk7Ci0gICAgdGV4dHVyZUxheWVyLT5zZXRV
VlJlY3QobV91dlJlY3QpOwotICAgIHRleHR1cmVMYXllci0+c2V0SU9TdXJmYWNlUHJvcGVydGll
cyhtX2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlSWQpOwotfQotCi19Ci0jZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmI1OGQzMTE4YTRmM2ZjYmQxMWY4MDBiYmUy
NDczMDNmMGI3M2ZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0KLSNpZm5k
ZWYgUGx1Z2luTGF5ZXJDaHJvbWl1bV9oCi0jZGVmaW5lIFBsdWdpbkxheWVyQ2hyb21pdW1faAot
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiTGF5ZXJDaHJv
bWl1bS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEEgTGF5ZXIgY29udGFpbmluZyBh
IHRoZSByZW5kZXJlZCBvdXRwdXQgb2YgYSBwbHVnaW4gaW5zdGFuY2UuCi1jbGFzcyBQbHVnaW5M
YXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOwotCi0gICAgdmlydHVh
bCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpIE9WRVJSSURFOwot
Ci0gICAgLy8gQ29kZSBwYXRoIGZvciBwbHVnaW5zIHdoaWNoIHN1cHBseSB0aGVpciBvd24gdGV4
dHVyZSBJRC4KLSAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpOwotICAg
IHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9Ci0gICAg
dm9pZCBzZXRGbGlwcGVkKGJvb2wpOwotICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxpcHBlZDsgfQotICAgIHZvaWQgc2V0VVZSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotICAg
IGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91dlJlY3Q7IH0KLQot
ICAgIC8vIENvZGUgcGF0aCBmb3IgcGx1Z2lucyB3aGljaCByZW5kZXIgdmlhIGFuIElPU3VyZmFj
ZS4KLSAgICB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCB1aW50MzJfdCBpb1N1cmZhY2VJZCk7Ci0gICAgdWludDMyX3QgZ2V0SU9TdXJmYWNlSWQoKSBj
b25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKikg
T1ZFUlJJREU7Ci0KLXByb3RlY3RlZDoKLSAgICBQbHVnaW5MYXllckNocm9taXVtKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgYm9vbCBtX2ZsaXBwZWQ7Ci0g
ICAgRmxvYXRSZWN0IG1fdXZSZWN0OwotICAgIEludFNpemUgbV9pb1N1cmZhY2VTaXplOwotICAg
IHVpbnQzMl90IG1faW9TdXJmYWNlSWQ7Ci19OwotCi19Ci0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVt
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yOWNjNmJhMGIxMjRjMGZjZWVhYWEwM2M2YzA1ZWRjYTkzNmRiZjA1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNpbmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAiY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxUZXh0
dXJlTGF5ZXJDaHJvbWl1bT4gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTGF5ZXJDaHJvbWl1bSk7Cit9CisKK1RleHR1cmVM
YXllckNocm9taXVtOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bSgpCisgICAgOiBMYXllckNocm9taXVt
KCkKKyAgICAsIG1fdGV4dHVyZUlkKDApCisgICAgLCBtX2ZsaXBwZWQodHJ1ZSkKKyAgICAsIG1f
dXZSZWN0KDAsIDAsIDEsIDEpCisgICAgLCBtX2lvU3VyZmFjZUlkKDApCit7Cit9CisKK1Bhc3NP
d25QdHI8Q0NMYXllckltcGw+IFRleHR1cmVMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1w
bCgpCit7CisgICAgcmV0dXJuIENDVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlKG1fbGF5ZXJJZCk7
Cit9CisKK2Jvb2wgVGV4dHVyZUxheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChtX3RleHR1cmVJZCB8fCBtX2lvU3VyZmFjZUlkKSAmJiBMYXllckNocm9t
aXVtOjpkcmF3c0NvbnRlbnQoKTsKK30KKwordm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0
VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQoreworICAgIG1fdGV4dHVyZUlkID0gaWQ7CisgICAgc2V0
TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6c2V0RmxpcHBl
ZChib29sIGZsaXBwZWQpCit7CisgICAgbV9mbGlwcGVkID0gZmxpcHBlZDsKKyAgICBzZXROZWVk
c0NvbW1pdCgpOworfQorCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRVVlJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIG1fdXZSZWN0ID0gcmVjdDsKKyAgICBzZXROZWVk
c0NvbW1pdCgpOworfQorCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRJT1N1cmZhY2VQ
cm9wZXJ0aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgaW9TdXJmYWNlSWQpCit7
CisgICAgbV9pb1N1cmZhY2VTaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBtX2lv
U3VyZmFjZUlkID0gaW9TdXJmYWNlSWQ7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9p
ZCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5
ZXIpCit7CisgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7CisKKyAg
ICBDQ1RleHR1cmVMYXllckltcGwqIHRleHR1cmVMYXllciA9IHN0YXRpY19jYXN0PENDVGV4dHVy
ZUxheWVySW1wbCo+KGxheWVyKTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZChtX3Rl
eHR1cmVJZCk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRGbGlwcGVkKG1fZmxpcHBlZCk7CisgICAg
dGV4dHVyZUxheWVyLT5zZXRVVlJlY3QobV91dlJlY3QpOworICAgIHRleHR1cmVMYXllci0+c2V0
SU9TdXJmYWNlUHJvcGVydGllcyhtX2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlSWQpOworfQor
Cit9CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVMYXllckNocm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5MTA5MjQ4MTUxYjRkMTEwMThjN2U4Njcw
OWYzOWFhYzUxYzU1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKworI2lmbmRlZiBUZXh0dXJlTGF5ZXJDaHJvbWl1bV9oCisjZGVmaW5lIFRleHR1
cmVMYXllckNocm9taXVtX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKwor
I2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBB
IExheWVyIGNvbnRhaW5pbmcgYSB0aGUgcmVuZGVyZWQgb3V0cHV0IG9mIGEgcGx1Z2luIGluc3Rh
bmNlLgorY2xhc3MgVGV4dHVyZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGNy
ZWF0ZSgpOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xh
eWVySW1wbCgpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0IE9WRVJSSURFOworCisgICAgLy8gQ29kZSBwYXRoIGZvciBwbHVnaW5zIHdoaWNoIHN1cHBs
eSB0aGVpciBvd24gdGV4dHVyZSBJRC4KKyAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCk7
CisgICAgdm9pZCBzZXRGbGlwcGVkKGJvb2wpOworICAgIGJvb2wgZmxpcHBlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxpcHBlZDsgfQorICAgIHZvaWQgc2V0VVZSZWN0KGNvbnN0IEZsb2F0UmVjdCYp
OworICAgIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91dlJlY3Q7
IH0KKworICAgIC8vIENvZGUgcGF0aCBmb3IgcGx1Z2lucyB3aGljaCByZW5kZXIgdmlhIGFuIElP
U3VyZmFjZS4KKyAgICB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXMoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCB1aW50MzJfdCBpb1N1cmZhY2VJZCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCopIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgVGV4
dHVyZUxheWVyQ2hyb21pdW0oKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX3RleHR1cmVJ
ZDsKKyAgICBib29sIG1fZmxpcHBlZDsKKyAgICBGbG9hdFJlY3QgbV91dlJlY3Q7CisgICAgSW50
U2l6ZSBtX2lvU3VyZmFjZVNpemU7CisgICAgdWludDMyX3QgbV9pb1N1cmZhY2VJZDsKK307CisK
K30KKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGZlNGMzZGQwOTM5MmNjZWNkM2JkNmVlZDMzMzQz
ZGVmNzQyZmZkYjguLmFjZjk2M2FkZDFjNjY0NTQ2OTljNmRhYzRjMGE0ZmUyM2ExOTMxN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTUzNCw4ICs1MzQsNiBAQAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViRW50aXRpZXMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkVu
dGl0aWVzLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
Y3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5j
cHAnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZUNob29zZXJDb21wbGV0aW9uSW1wbC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA5YWJjMWY4ZTRhNGRiN2ZlNjAwNDNhZDE4
ZTcwMGQ1ZDcxN2ZmMmI5Li45NTQ4YjJhMGY2NWRiMTk5MzkyYThiZmU1NWE5Zjk3ZDBlNzI2N2Y0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEzMCw3ICsxMzAsNiBAQAogICAg
ICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1RyZWVUZXN0SGVscGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QuY3BwJywKLSAgICAgICAgICAgICd0ZXN0cy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViRnJhbWVUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAKaW5kZXggN2IzNzMzM2U1NjMwOGEwNjhi
ODRjM2FjZGVlYTUzMTk1YzkzZmZkMi4uNTI5MGUyZjM1YWIxMmI4YTc1NjIyMDAwZmExOTMzMGE4
OTM2ZDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVu
dExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5
ZXIuY3BwCkBAIC00NiwxNiArNDYsNiBAQCBib29sIFdlYkNvbnRlbnRMYXllcjo6ZHJhd3NDb250
ZW50KCkgY29uc3QKICAgICByZXR1cm4gY29uc3RVbndyYXA8V2ViQ29udGVudExheWVySW1wbD4o
KS0+ZHJhd3NDb250ZW50KCk7CiB9CiAKLXZvaWQgV2ViQ29udGVudExheWVyOjppbnZhbGlkYXRl
UmVjdChjb25zdCBXZWJGbG9hdFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICB1bndyYXA8V2ViQ29u
dGVudExheWVySW1wbD4oKS0+c2V0TmVlZHNEaXNwbGF5UmVjdChkaXJ0eVJlY3QpOwotfQotCi12
b2lkIFdlYkNvbnRlbnRMYXllcjo6aW52YWxpZGF0ZSgpCi17Ci0gICAgdW53cmFwPFdlYkNvbnRl
bnRMYXllckltcGw+KCktPnNldE5lZWRzRGlzcGxheSgpOwotfQotCiBXZWJDb250ZW50TGF5ZXI6
OldlYkNvbnRlbnRMYXllcihjb25zdCBQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+JiBu
b2RlKQogICAgIDogV2ViTGF5ZXIobm9kZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAppbmRleCBjOWJhMGJjN2I5
MjhkMTY4ZjI4NWI5ZmI3YzMzZGFkMzIzOGYxNjU5Li4yNjIwMDI2YmZiN2YxODM1NDJmNWM3ODJh
MGQ3NDkwYjMwY2RhYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCkBAIC0yNCw2NyArMjQsNTYgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4K
IAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIldlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbC5oIgorI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgi
CisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
aXplLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0
ZSgpCiB7Ci0gICAgcmV0dXJuIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbDo6Y3JlYXRlKCkpOworICAgIFJlZlB0cjxUZXh0dXJlTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIgPSBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgbGF5ZXItPnNl
dElzRHJhd2FibGUodHJ1ZSk7CisgICAgcmV0dXJuIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKGxh
eWVyLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFRl
eHR1cmVJZCh1bnNpZ25lZCBpZCkKIHsKLSAgICB1bndyYXA8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsPigpLT5zZXRUZXh0dXJlSWQoaWQpOworICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJv
bWl1bT4oKS0+c2V0VGV4dHVyZUlkKGlkKTsKIH0KIAotdW5zaWduZWQgV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI6OnRleHR1cmVJZCgpIGNvbnN0Cit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
OjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGNvbnN0IFdlYlNpemUmIHNpemUsIHVuc2lnbmVkIGlv
U3VyZmFjZUlkKQogewotICAgIHJldHVybiBjb25zdFVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw+KCktPnRleHR1cmVJZCgpOworICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1
bT4oKS0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyhzaXplLndpZHRoLCBzaXplLmhlaWdodCwgaW9T
dXJmYWNlSWQpOwogfQogCiB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRGbGlwcGVk
KGJvb2wgZmxpcHBlZCkKIHsKLSAgICB1bndyYXA8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
PigpLT5zZXRGbGlwcGVkKGZsaXBwZWQpOworICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1
bT4oKS0+c2V0RmxpcHBlZChmbGlwcGVkKTsKIH0KIAogYm9vbCBXZWJFeHRlcm5hbFRleHR1cmVM
YXllcjo6ZmxpcHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0VW53cmFwPFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbD4oKS0+ZmxpcHBlZCgpOworICAgIHJldHVybiBjb25zdFVud3Jh
cDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+ZmxpcHBlZCgpOwogfQogCiB2b2lkIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyOjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiByZWN0KQogewot
ICAgIHVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPnNldFVWUmVjdChyZWN0
KTsKKyAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFVWUmVjdChyZWN0KTsK
IH0KIAogV2ViRmxvYXRSZWN0IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjp1dlJlY3QoKSBjb25z
dAogewotICAgIHJldHVybiBXZWJGbG9hdFJlY3QoY29uc3RVbndyYXA8V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsPigpLT51dlJlY3QoKSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OmludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYgdXBkYXRlUmVjdCkKLXsK
LSAgICB1bndyYXA8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPigpLT5zZXROZWVkc0Rpc3Bs
YXlSZWN0KHVwZGF0ZVJlY3QpOwotfQotCi1XZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGw+JiBub2RlKQotICAgIDogV2ViTGF5ZXIobm9kZSkKLXsKLX0KLQotV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXImIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpvcGVyYXRvcj0oY29uc3QgUGFz
c1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+JiBub2RlKQotewotICAgIG1fcHJp
dmF0ZSA9IG5vZGU7Ci0gICAgcmV0dXJuICp0aGlzOworICAgIHJldHVybiBXZWJGbG9hdFJlY3Qo
Y29uc3RVbndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnV2UmVjdCgpKTsKIH0KIAotV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsPigpIGNvbnN0CitXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisg
ICAgOiBXZWJMYXllcihsYXllcikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsKj4obV9wcml2YXRlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWM2YzI5MDYwMDUyMzU2MzY0ZGJkNjJlNjNjNGExNDMzOTBjMDQ5OS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsPiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNyZWF0ZSgpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKSk7Ci19Ci0K
LVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
KCkKLSAgICA6IFBsdWdpbkxheWVyQ2hyb21pdW0oKQotewotICAgIHNldEZsaXBwZWQoZmFsc2Up
OwotICAgIHNldElzRHJhd2FibGUodHJ1ZSk7Ci19Ci0KLVdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbDo6fldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpCi17Ci19Ci0KLWJvb2wgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQoKSBjb25zdAotewotICAgIHJldHVy
biAhIXRleHR1cmVJZCgpICYmIExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdiNzNlNzA4MGRkNmYxZjA1ODRjNGM2MjFkZjNhNmVlMzRhNzViNWUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGxfaAotI2RlZmluZSBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxfaAotCi0jaW5jbHVkZSAi
UGx1Z2luTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwgOiBw
dWJsaWMgV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBjcmVhdGUoKTsKLQotcHJv
dGVjdGVkOgotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpOwotICAgIHZpcnR1YWwg
fldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpOwotICAgIHZpcnR1YWwgYm9vbCBkcmF3c0Nv
bnRlbnQoKSBjb25zdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyLmNwcAppbmRleCBmMzFjNWE4YzNlMzAwOTFiNGI2ZWM0ZDY4ZmVkOGEyNjc2MjQxMDFh
Li4zNWE0NDVjMjM0MTIxNzExMDk4NzcxYWMwNWIyM2RiNGU3OTc2YzE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCkBAIC0yNiwxMyArMjYsMTUgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllci5oIgogCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlNpemUuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
aXplLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05NCw2ICs5NiwxNiBAQCBi
b29sIFdlYkxheWVyOjplcXVhbHMoY29uc3QgV2ViTGF5ZXImIG4pIGNvbnN0CiAgICAgcmV0dXJu
IChtX3ByaXZhdGUuZ2V0KCkgPT0gbi5tX3ByaXZhdGUuZ2V0KCkpOwogfQogCit2b2lkIFdlYkxh
eWVyOjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmIGRpcnR5UmVjdCkKK3sKKyAg
ICBtX3ByaXZhdGUtPnNldE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0KTsKK30KKwordm9pZCBX
ZWJMYXllcjo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9wcml2YXRlLT5zZXROZWVkc0Rpc3BsYXko
KTsKK30KKwogV2ViTGF5ZXIgV2ViTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFdlYkxheWVyKGNvbnN0X2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KG1fcHJpdmF0ZS0+cm9vdExh
eWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHAKaW5kZXggZjY5YWU1YzkzNWZiOTU3ZjBhYTdlMDI0OGFiMzYwMDM2
NDM1ZjcwZS4uOGE5OWU0NzBiNTZkNzhhMzZjYjlmMThmNzE2MmEwZTBhNzMwODU5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudEltcGwuaCIKLSNpbmNsdWRlICJQbHVnaW5MYXllckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsYmFyR3JvdXAuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDbGlwYm9h
cmQuaCIKICNpbmNsdWRlICJXZWJDdXJzb3JJbmZvLmgiCkBAIC0zMzQsMTkgKzMzMywyMSBAQCB2
b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnJlcG9ydEdlb21ldHJ5KCkKICAgICB9CiB9CiAK
LXZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ1RleHR1cmVJZCh1bnNpZ25l
ZCBpZCkKK3ZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ1RleHR1cmVJZCh1
bnNpZ25lZCB0ZXh0dXJlSWQpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgIHVuc2lnbmVkIGN1cnJJZCA9IG1fcGxhdGZvcm1MYXllci0+dGV4dHVyZUlkKCk7Ci0gICAg
aWYgKGN1cnJJZCA9PSBpZCkKKyAgICBpZiAobV90ZXh0dXJlSWQgPT0gdGV4dHVyZUlkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3BsYXRmb3JtTGF5ZXItPnNldFRleHR1cmVJZChpZCk7Cisg
ICAgbV9sYXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKwogICAgIC8vIElmIGFueW9uZSBv
ZiB0aGUgSURzIGlzIHplcm8gd2UgbmVlZCB0byBzd2l0Y2ggYmV0d2VlbiBoYXJkd2FyZQogICAg
IC8vIGFuZCBzb2Z0d2FyZSBjb21wb3NpdGluZy4gVGhpcyBpcyBkb25lIGJ5IHRyaWdnZXJpbmcg
YSBzdHlsZSByZWNhbGMKICAgICAvLyBvbiB0aGUgY29udGFpbmVyIGVsZW1lbnQuCi0gICAgaWYg
KCEoY3VycklkICogaWQpKQorICAgIGlmICghbV90ZXh0dXJlSWQgfHwgIXRleHR1cmVJZCkKICAg
ICAgICAgbV9lbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKFdlYkNvcmU6OlN5bnRoZXRpY1N0
eWxlQ2hhbmdlKTsKKworICAgIG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOwogI2VuZGlmCiB9CiAK
QEAgLTM1NSwyNSArMzU2LDI2IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFj
a2luZ0lPU3VyZmFjZUlkKGludCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGlvU3VyZmFjZUlkKQogewogI2lmIE9TKERB
UldJTikgJiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHVpbnQzMl90IGN1cnJl
bnRJZCA9IG1fcGxhdGZvcm1MYXllci0+Z2V0SU9TdXJmYWNlSWQoKTsKLSAgICBpZiAoaW9TdXJm
YWNlSWQgPT0gY3VycmVudElkKQorICAgIGlmIChpb1N1cmZhY2VJZCA9PSBtX2lvU3VyZmFjZUlk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsYXRmb3JtTGF5ZXItPnNldElPU3VyZmFjZVBy
b3BlcnRpZXMod2lkdGgsIGhlaWdodCwgaW9TdXJmYWNlSWQpOworICAgIG1fbGF5ZXIuc2V0SU9T
dXJmYWNlUHJvcGVydGllcyhXZWJSZWN0KHdpZHRoLCBoZWlnaHQpLCBpb1N1cmZhY2VJZCk7CiAK
ICAgICAvLyBJZiBhbnlvbmUgb2YgdGhlIElEcyBpcyB6ZXJvIHdlIG5lZWQgdG8gc3dpdGNoIGJl
dHdlZW4gaGFyZHdhcmUKICAgICAvLyBhbmQgc29mdHdhcmUgY29tcG9zaXRpbmcuIFRoaXMgaXMg
ZG9uZSBieSB0cmlnZ2VyaW5nIGEgc3R5bGUgcmVjYWxjCiAgICAgLy8gb24gdGhlIGNvbnRhaW5l
ciBlbGVtZW50LgotICAgIGlmICghKGlvU3VyZmFjZUlkICogY3VycmVudElkKSkKKyAgICBpZiAo
IWlvU3VyZmFjZUlkIHx8ICFtX2lvU3VyZmFjZUlkKQogICAgICAgICBtX2VsZW1lbnQtPnNldE5l
ZWRzU3R5bGVSZWNhbGMoV2ViQ29yZTo6U3ludGhldGljU3R5bGVDaGFuZ2UpOworCisgICAgbV9p
b1N1cmZhY2VJZCA9IGlvU3VyZmFjZUlkOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGx1Z2luQ29u
dGFpbmVySW1wbDo6Y29tbWl0QmFja2luZ1RleHR1cmUoKQogewogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLSAgICBpZiAobV9wbGF0Zm9ybUxheWVyKQotICAgICAgICBtX3BsYXRm
b3JtTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgIGlmICghbV9sYXllci5pc051bGwoKSkK
KyAgICAgICAgbV9sYXllci5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIH0KIApAQCAtNDQwLDggKzQ0
Miw4IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6em9vbUxldmVsQ2hhbmdlZChkb3Vi
bGUgem9vbUxldmVsKQogdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRPcGFxdWUoYm9v
bCBvcGFxdWUpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICht
X3BsYXRmb3JtTGF5ZXIpCi0gICAgICAgIG1fcGxhdGZvcm1MYXllci0+c2V0T3BhcXVlKG9wYXF1
ZSk7CisgICAgaWYgKCFtX2xheWVyLmlzTnVsbCgpKQorICAgICAgICBtX2xheWVyLnNldE9wYXF1
ZShvcGFxdWUpOwogI2VuZGlmCiB9CiAKQEAgLTUxNiw3ICs1MTgsNyBAQCB2b2lkIFdlYlBsdWdp
bkNvbnRhaW5lckltcGw6OndpbGxEZXN0cm95UGx1Z2luTG9hZE9ic2VydmVyKFdlYlBsdWdpbkxv
YWRPYnNlcnZlcgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW0qIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAogewotICAgIHJldHVybiAobV9wbGF0Zm9ybUxheWVyLT50ZXh0dXJlSWQoKSB8fCBtX3BsYXRm
b3JtTGF5ZXItPmdldElPU3VyZmFjZUlkKCkpID8gbV9wbGF0Zm9ybUxheWVyLmdldCgpIDogMDsK
KyAgICByZXR1cm4gKG1fdGV4dHVyZUlkIHx8IG1faW9TdXJmYWNlSWQpID8gbV9sYXllci51bndy
YXA8TGF5ZXJDaHJvbWl1bT4oKSA6IDA7CiB9CiAjZW5kaWYKIApAQCAtNTU2LDcgKzU1OCw5IEBA
IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OldlYlBsdWdpbkNvbnRhaW5lckltcGwoV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAs
IG1fd2ViUGx1Z2luKHdlYlBsdWdpbikKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgLCBtX3BsYXRmb3JtTGF5ZXIoUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpCisg
ICAgLCBtX2xheWVyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKSkKKyAgICAsIG1f
dGV4dHVyZUlkKDApCisgICAgLCBtX2lvU3VyZmFjZUlkKDApCiAjZW5kaWYKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaApp
bmRleCA5ZDk3MGYyZjhkZGIwN2Y4MGE4MDFmMmEzYTE4M2E4OTUzNWU3ZDk0Li5lN2QyYTY1MmQ1
ZjQ2ZjM1ZGRjMDdlNTE4ZjIwNThlNzA4YTkxMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC00OCw3ICs0OSw2IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBLZXlib2Fy
ZEV2ZW50OwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIGNsYXNzIE1vdXNlRXZlbnQ7Ci1jbGFzcyBQ
bHVnaW5MYXllckNocm9taXVtOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBXaGVlbEV2ZW50OwpAQCAtMTczLDcgKzE3Myw5IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFdlYlBsdWdpbkxvYWRPYnNlcnZlcio+IG1fcGx1Z2luTG9hZE9ic2VydmVy
czsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bT4gbV9wbGF0Zm9ybUxheWVyOworICAgIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgdW5z
aWduZWQgbV9pb1N1cmZhY2VJZDsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFzc29jaWF0ZWQgc2Ny
b2xsYmFyIGdyb3VwIG9iamVjdCwgY3JlYXRlZCBsYXppbHkuIFVzZWQgZm9yIFBlcHBlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDU4M2QwZGY3MDE4ZDRlZTc1YmQ1MGRiMjI0Y2M3ZTU4NmI2NWZkMDguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxUZXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCIKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgewotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotdXNpbmcgV1RGOjpSZWZQdHI7Ci0KLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbFRlc3QgOiBwdWJsaWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsIHsKLXB1
YmxpYzoKLSAgICBib29sIGlzRHJhd2FibGUoKSBjb25zdCB7IHJldHVybiBkcmF3c0NvbnRlbnQo
KTsgfQotfTsKLQotVEVTVChXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwsIHRlc3RJc0RyYXdh
YmxlKQotewotICAgIFJlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxUZXN0PiB0ZXh0
dXJlTGF5ZXIgPSBhZG9wdFJlZihuZXcgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsVGVzdCgp
KTsKLQotICAgIHRleHR1cmVMYXllci0+c2V0VGV4dHVyZUlkKDEpOwotICAgIEVYUEVDVF9UUlVF
KHRleHR1cmVMYXllci0+aXNEcmF3YWJsZSgpKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IGFhYzhmYjE3YjE2OGU1ZDdkMjE2
ZTVjY2JkMWFlZDJmNDQwNmUxMTUuLjJiNmNiYTU2MmMyNGUzNDI2NDg2ZGU3MDM5NzRjMGViZDk2
Y2U4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5j
cHAKQEAgLTE2MCw3ICsxNjAsNiBAQCBURVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiAgICAg
RVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3Qo
MSkpOwogICAgIHRleHR1cmVMYXllci5zZXRUZXh0dXJlSWQoMyk7CiAgICAgTW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEoM3UsIHRleHR1
cmVMYXllci50ZXh0dXJlSWQoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1
bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7CiAgICAgdGV4dHVyZUxheWVyLnNldEZs
aXBwZWQodHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137469</attachid>
            <date>2012-04-16 20:12:22 -0700</date>
            <delta_ts>2012-04-18 10:37:17 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>bug-84120-20120416201221.patch</filename>
            <type>text/plain</type>
            <size>41520</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0YWFkYzNiMTAyZGZj
NzM3MDViNDkwYmI5YmM4MTBkNzcyMzY2ZjZiLi40ODE1YmI0YTVhYzA0YWJhZWU2NzYyMjJiMGY5
Mjc4NDY1YzEwYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wNC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ29udmVydCBXZWJQbHVnaW5Db250YWluZXJJbXBsIG92ZXIgdG8gdXNlIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NDEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBJTyBzdXJmYWNlIGJhY2tlZCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllciwgdXNlZCBieSBDb3JlQW5pbWF0aW9uIHBsdWdpbnMgb24gT1MgWCBhbmQgbW92
ZXMKKyAgICAgICAgc29tZSBmdW5jdGlvbmFsaXR5IHVzZWQgYnkgbXVsdGlwbGUgV2ViTGF5ZXIg
c3ViY2xhc3NlcyB1cCB0byB0aGUgYmFzZSBjbGFzcy4KKworICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJDb250ZW50TGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvbnRlbnRMYXllcik6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjp1bndyYXApOgorCiAyMDEy
LTA0LTEzICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBFeHBvc2UgV2ViVmlkZW9MYXllciB0byBQbGF0Zm9ybSBBUEkgYW5kIHBvcnQg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIHRvIHVzaW5nIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGYwOTYw
Mjc3ODM1ZTQxNGU2ODU5Y2M5ZTZkNmU0MjQxOGRmNzg0NC4uNjFkNTI0ZWQ2YWI1ZTJkM2Y4Njk3
NWZhYmIwZDVkOTIxN2M0OTkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0
LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBDb252ZXJ0IFdlYlBsdWdpbkNvbnRhaW5lckltcGwgb3ZlciB0byB1c2UgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg0MTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyByZW5hbWVzIFBsdWdpbkxheWVyQ2hyb21pdW0gLT4gVGV4dHVyZUxheWVy
Q2hyb21pdW0gc2luY2UgaXQgaXMgbm93IHVzZWQgb25seSBhcyB0aGUgaW1wbGVtZW50YXRpb24g
b2YKKyAgICAgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgYW5kIGNsZWFucyBpdCB1cCBzbGln
aHRseS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUxheWVy
Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1
bTo6VGV4dHVyZUxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUxheWVy
Q2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVM
YXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUxh
eWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTGF5
ZXJDaHJvbWl1bTo6c2V0RmxpcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTGF5ZXJD
aHJvbWl1bTo6c2V0VVZSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9t
aXVtOjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVM
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5o
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTGF5ZXJDaHJvbWl1bSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6ZmxpcHBlZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6dXZSZWN0KToKKwogMjAxMi0wNC0xMyAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gRXhwb3NlIFdlYlZpZGVvTGF5ZXIgdG8gUGxhdGZvcm0gQVBJIGFuZCBwb3J0IFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbCB0byB1c2luZyBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCBkMjI1YTJiZDQxMDM0YjU5ODYyOTIxYjgwZTVlYWQ2N2JhNWE4Njg5Li44MjhhYmI4NTIxODYx
ZTI4NWZjY2Q1ZTM0NzZlZDM5MjU2N2RmODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ2IEBACisyMDEyLTA0LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDb252ZXJ0IFdlYlBsdWdpbkNvbnRhaW5l
ckltcGwgb3ZlciB0byB1c2UgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwb3J0cyBXZWJQbHVnaW5Db250
YWluZXJJbXBsIG92ZXIgdG8gdXNlIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIGluc3RlYWQgb2Yg
ZGlyZWN0bHkgdXNpbmcgYSAqTGF5ZXJDaHJvbWl1bQorICAgICAgICB0eXBlIGZvciBiZXR0ZXIg
bGF5ZXJpbmcgYW5kIGNvZGUgc2hhcmluZy4gVGhlIGNoYW5nZXMgdG8gV2ViUGx1Z2luQ29udGFp
bmVySW1wbCBhcmUgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZC4gIEluCisgICAgICAgIGFkZGl0aW9u
IHRvIHJlbmFtZXMgSSBhbHNvIG1vdmVkIHNvbWUgc3RhdGUgdHJhY2tpbmcgaW50byBXUENJIGlu
c3RlYWQgb2YgaGF2aW5nIGl0IGV4cG9zZWQgb24gdGhlIGludGVyZmFjZS4gSQorICAgICAgICBh
bHNvIHJlbW92ZWQgdGhlIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCBpbnRlcm1lZGlhdGUg
Y2xhc3Mgc2luY2UgaXQgd2Fzbid0IGRvaW5nIGFueXRoaW5nIHVzZWZ1bC4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogc3JjL1dlYkNv
bnRlbnRMYXllci5jcHA6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRUZXh0dXJlSWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0SU9TdXJmYWNlUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRG
bGlwcGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmZsaXBw
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VVZSZWN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnV2UmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1
cmVMYXllcik6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJMYXllci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVyOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpz
ZXRCYWNraW5nVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVy
SW1wbDo6c2V0QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2lu
Q29udGFpbmVySW1wbDo6Y29tbWl0QmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGx1Z2luQ29udGFpbmVySW1wbDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisgICAgICAgICog
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisgICAgICAgICogdGVzdHMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsVGVzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvV2ViTGF5
ZXJUZXN0LmNwcDoKKwogMjAxMi0wNC0xMyAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRXhwb3NlIFdlYlZpZGVvTGF5ZXIgdG8gUGxh
dGZvcm0gQVBJIGFuZCBwb3J0IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCB0byB1c2luZyBpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5
ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgK
aW5kZXggZDVjOTE1ZDg1MmIyZDc0Yjk4MTE1MTMxZTU2MDY2OWIzZDgyZTE3Mi4uNjk5NDE4YzM0
OWJlOTY1MzlhOGNhN2Y3NmExNWNjMzUzNWE0MWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCkBAIC01MSwxMSArNTEsNiBAQCBw
dWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKICAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CiAKLSAgICAvLyBTZXRz
IGEgcmVnaW9uIG9mIHRoZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBp
dHMgY29udGVudC4KLSAgICAvLyBUaGUgdmlzaWJsZSBhcmVhIG9mIHRoZSBkaXJ0eSByZWN0IHdp
bGwgYmUgcGFzc2VkIHRvIG9uZSBvciBtb3JlIGNhbGxzIHRvCi0gICAgLy8gV2ViQ29udGVudExh
eWVyQ2xpZW50OjpwYWludENvbnRlbnRzIGJlZm9yZSB0aGUgY29tcG9zaXRpbmcgcGFzcyBvY2N1
cnMuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0
UmVjdCYpOwotCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViQ29udGVudExheWVy
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiYpOwogICAgIFdlYkNv
bnRlbnRMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb250ZW50TGF5
ZXJJbXBsPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCmluZGV4IGNlODdiYjIzODc2MjUyY2UxNWQ1OTM2
NDFiYzM0NGIyNDYyMTJkZTguLmQ4ZjU0Nzc3ZjBkM2U5NzEzYjQ4MzVhOWQ0MzI3OGZhZTI2NDU2
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmgKQEAgLTMwLDYgKzMwLDEwIEBACiAjaW5jbHVkZSAiV2Vi
RmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgVGV4dHVyZUxheWVyQ2hyb21pdW07Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOwogCkBAIC00NCwxOCArNDgsMTUgQEAg
cHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
IGNyZWF0ZSgpOwogCiAgICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KLSAgICBXZWJF
eHRlcm5hbFRleHR1cmVMYXllcihjb25zdCBXZWJFeHRlcm5hbFRleHR1cmVMYXllciYgbGF5ZXIp
IDogV2ViTGF5ZXIobGF5ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYkV4dGVybmFsVGV4dHVyZUxh
eWVyKCkgeyB9Ci0gICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIG9wZXJhdG9yPShjb25zdCBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllciYgbGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6
YXNzaWduKGxheWVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KIAogICAgIC8vIFNl
dHMgdGhlIHRleHR1cmUgaWQgdGhhdCByZXByZXNlbnRzIHRoZSBsYXllciwgaW4gdGhlIG5hbWVz
cGFjZSBvZiB0aGUKICAgICAvLyBjb21wb3NpdG9yIGNvbnRleHQuCiAgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25l
ZCB0ZXh0dXJlSWQoKSBjb25zdDsKKworICAgIC8vIFNldHMgdGhlIElPIHN1cmZhY2UgaWQgdGhh
dCByZXByZXNlbnRzIHRoaXMgbGF5ZXIuIHNldFRleHR1cmVJZCgpIGFuZCBzZXRJT1N1cmZhY2VQ
cm9wZXJ0aWVzKCkgYXJlIG11dHVhbGx5CisgICAgLy8gZXhjbHVzaXZlIC0gYSBsYXllciBjYW4g
YmUgZWl0aGVyIGJhY2tlZCBieSBhIHRleHR1cmUgb3IgYW4gSU8gc3VyZmFjZSwgYnV0IG5vdCBi
b3RoLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGNvbnN0
IFdlYlNpemUmLCB1bnNpZ25lZCBpb1N1cmZhY2VJZCk7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIg
b3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRoZSBZIGRpcmVjdGlvbiB3
aGVuCiAgICAgLy8gcmVuZGVyZWQuCkBAIC02NywxNCArNjgsOSBAQCBwdWJsaWM6CiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKICAgICBXRUJL
SVRfRVhQT1JUIFdlYkZsb2F0UmVjdCB1dlJlY3QoKSBjb25zdDsKIAotICAgIC8vIE1hcmtzIGEg
cmVnaW9uIG9mIHRoZSBsYXllciBhcyBuZWVkaW5nIGEgZGlzcGxheS4gVGhlc2UgcmVnaW9ucyBh
cmUKLSAgICAvLyBjb2xsZWN0ZWQgaW4gYSB1bmlvbiB1bnRpbCB0aGUgZGlzcGxheSBvY2N1cnMu
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVj
dCYpOwotCitwcml2YXRlOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw+Jik7Ci0gICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIG9wZXJhdG9yPShjb25z
dCBXVEY6OlBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiYpOwotICAgIG9w
ZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkgY29u
c3Q7CisgICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxXZWJD
b3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bT4pOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggYjI1N2ViYzY1OWYxODU5NjJmMDUx
MDQzZmRmZjU4ZTE5ZTQwNWNiZC4uOWY3YjljYzdhYThiNjFmZTE3OWE4YzY1YTI5NzI5NDcyNTYw
MGI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
ci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07IH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgV2ViRmxvYXRQb2ludDsKK3N0cnVjdCBXZWJG
bG9hdFJlY3Q7CiBzdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgV2ViTGF5ZXIgewpAQCAtNTQsNiAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJM
YXllciYpOwogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3QgV2ViTGF5ZXImKSBj
b25zdDsKIAorICAgIC8vIFNldHMgYSByZWdpb24gb2YgdGhlIGxheWVyIGFzIGludmFsaWQsIGku
ZS4gbmVlZHMgdG8gdXBkYXRlIGl0cyBjb250ZW50LgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBp
bnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKwogICAgIC8vIFNldHMgdGhlIGVu
dGlyZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4K
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggOTY0NzkxOTdjMWNmNmQxM2E3YjdkZmU5ZTU2YzkwODgzODU4ZDk2Yy4uZjAyYTM5NDg5MTQ1
ODY4Y2NhOGI5NzY5YzM0N2FlZTdlODQxOGYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzU1Nyw4
ICszNTU3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0
Zm9ybUljb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxh
dGZvcm1JbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsYXRmb3JtSW1hZ2UuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5k
aW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JhdGVMaW1p
dGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4YTk5YWIwNDc4ZjJjNWQ4NjQ5MDUyZGZlYTBjYjJiMjUxNWI0MzBl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIlBsdWdp
bkxheWVyQ2hyb21pdW0uaCIKLQotI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1wbC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4g
UGx1Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBsdWdpbkxheWVyQ2hyb21pdW0pOwotfQotCi1QbHVnaW5MYXllckNocm9taXVtOjpQbHVnaW5M
YXllckNocm9taXVtKCkKLSAgICA6IExheWVyQ2hyb21pdW0oKQotICAgICwgbV90ZXh0dXJlSWQo
MCkKLSAgICAsIG1fZmxpcHBlZCh0cnVlKQotICAgICwgbV91dlJlY3QoMCwgMCwgMSwgMSkKLSAg
ICAsIG1faW9TdXJmYWNlSWQoMCkKLXsKLX0KLQotUGFzc093blB0cjxDQ0xheWVySW1wbD4gUGx1
Z2luTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQotewotICAgIHJldHVybiBDQ1Rl
eHR1cmVMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOwotfQotCi12b2lkIFBsdWdpbkxheWVy
Q2hyb21pdW06OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKLXsKLSAgICBtX3RleHR1cmVJZCA9
IGlkOwotICAgIHNldE5lZWRzQ29tbWl0KCk7Ci19Ci0KLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1
bTo6c2V0RmxpcHBlZChib29sIGZsaXBwZWQpCi17Ci0gICAgbV9mbGlwcGVkID0gZmxpcHBlZDsK
LSAgICBzZXROZWVkc0NvbW1pdCgpOwotfQotCi12b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnNl
dFVWUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgbV91dlJlY3QgPSByZWN0Owot
ICAgIHNldE5lZWRzQ29tbWl0KCk7Ci19Ci0KLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6c2V0
SU9TdXJmYWNlUHJvcGVydGllcyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl90IGlvU3Vy
ZmFjZUlkKQotewotICAgIG1faW9TdXJmYWNlU2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7
Ci0gICAgbV9pb1N1cmZhY2VJZCA9IGlvU3VyZmFjZUlkOwotICAgIHNldE5lZWRzQ29tbWl0KCk7
Ci19Ci0KLXVpbnQzMl90IFBsdWdpbkxheWVyQ2hyb21pdW06OmdldElPU3VyZmFjZUlkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9pb1N1cmZhY2VJZDsKLX0KLQotdm9pZCBQbHVnaW5MYXllckNo
cm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKLXsKLSAgICBMYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKLQotICAgIENDVGV4dHVyZUxheWVy
SW1wbCogdGV4dHVyZUxheWVyID0gc3RhdGljX2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5
ZXIpOwotICAgIHRleHR1cmVMYXllci0+c2V0VGV4dHVyZUlkKG1fdGV4dHVyZUlkKTsKLSAgICB0
ZXh0dXJlTGF5ZXItPnNldEZsaXBwZWQobV9mbGlwcGVkKTsKLSAgICB0ZXh0dXJlTGF5ZXItPnNl
dFVWUmVjdChtX3V2UmVjdCk7Ci0gICAgdGV4dHVyZUxheWVyLT5zZXRJT1N1cmZhY2VQcm9wZXJ0
aWVzKG1faW9TdXJmYWNlU2l6ZSwgbV9pb1N1cmZhY2VJZCk7Ci19Ci0KLX0KLSNlbmRpZiAvLyBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YjU4ZDMxMThhNGYzZmNiZDExZjgwMGJi
ZTI0NzMwM2YwYjczZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLQotI2lm
bmRlZiBQbHVnaW5MYXllckNocm9taXVtX2gKLSNkZWZpbmUgUGx1Z2luTGF5ZXJDaHJvbWl1bV9o
Ci0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNpbmNsdWRlICJMYXllckNo
cm9taXVtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBMYXllciBjb250YWluaW5n
IGEgdGhlIHJlbmRlcmVkIG91dHB1dCBvZiBhIHBsdWdpbiBpbnN0YW5jZS4KLWNsYXNzIFBsdWdp
bkxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7Ci0KLSAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCkgT1ZFUlJJREU7
Ci0KLSAgICAvLyBDb2RlIHBhdGggZm9yIHBsdWdpbnMgd2hpY2ggc3VwcGx5IHRoZWlyIG93biB0
ZXh0dXJlIElELgotICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJZCk7Ci0g
ICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLSAg
ICB2b2lkIHNldEZsaXBwZWQoYm9vbCk7Ci0gICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyByZXR1
cm4gbV9mbGlwcGVkOyB9Ci0gICAgdm9pZCBzZXRVVlJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0g
ICAgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVjdDsgfQot
Ci0gICAgLy8gQ29kZSBwYXRoIGZvciBwbHVnaW5zIHdoaWNoIHJlbmRlciB2aWEgYW4gSU9TdXJm
YWNlLgotICAgIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyhpbnQgd2lkdGgsIGludCBoZWln
aHQsIHVpbnQzMl90IGlvU3VyZmFjZUlkKTsKLSAgICB1aW50MzJfdCBnZXRJT1N1cmZhY2VJZCgp
IGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwq
KSBPVkVSUklERTsKLQotcHJvdGVjdGVkOgotICAgIFBsdWdpbkxheWVyQ2hyb21pdW0oKTsKLQot
cHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLSAgICBib29sIG1fZmxpcHBlZDsK
LSAgICBGbG9hdFJlY3QgbV91dlJlY3Q7Ci0gICAgSW50U2l6ZSBtX2lvU3VyZmFjZVNpemU7Ci0g
ICAgdWludDMyX3QgbV9pb1N1cmZhY2VJZDsKLX07Ci0KLX0KLSNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21p
dW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI5Y2M2YmEwYjEyNGMwZmNlZWFhYTAzYzZjMDVlZGNhOTM2ZGJm
MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KworI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCisKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVMYXllckltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFRl
eHR1cmVMYXllckNocm9taXVtPiBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVMYXllckNocm9taXVtKTsKK30KKworVGV4dHVy
ZUxheWVyQ2hyb21pdW06OlRleHR1cmVMYXllckNocm9taXVtKCkKKyAgICA6IExheWVyQ2hyb21p
dW0oKQorICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fZmxpcHBlZCh0cnVlKQorICAgICwg
bV91dlJlY3QoMCwgMCwgMSwgMSkKKyAgICAsIG1faW9TdXJmYWNlSWQoMCkKK3sKK30KKworUGFz
c093blB0cjxDQ0xheWVySW1wbD4gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJ
bXBsKCkKK3sKKyAgICByZXR1cm4gQ0NUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklk
KTsKK30KKworYm9vbCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gKG1fdGV4dHVyZUlkIHx8IG1faW9TdXJmYWNlSWQpICYmIExheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpOworfQorCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpz
ZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgbV90ZXh0dXJlSWQgPSBpZDsKKyAgICBz
ZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpzZXRGbGlw
cGVkKGJvb2wgZmxpcHBlZCkKK3sKKyAgICBtX2ZsaXBwZWQgPSBmbGlwcGVkOworICAgIHNldE5l
ZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgVGV4dHVyZUxheWVyQ2hyb21pdW06OnNldFVWUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgbV91dlJlY3QgPSByZWN0OworICAgIHNldE5l
ZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgVGV4dHVyZUxheWVyQ2hyb21pdW06OnNldElPU3VyZmFj
ZVByb3BlcnRpZXMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1aW50MzJfdCBpb1N1cmZhY2VJZCkK
K3sKKyAgICBtX2lvU3VyZmFjZVNpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIG1f
aW9TdXJmYWNlSWQgPSBpb1N1cmZhY2VJZDsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2
b2lkIFRleHR1cmVMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBs
YXllcikKK3sKKyAgICBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKKwor
ICAgIENDVGV4dHVyZUxheWVySW1wbCogdGV4dHVyZUxheWVyID0gc3RhdGljX2Nhc3Q8Q0NUZXh0
dXJlTGF5ZXJJbXBsKj4obGF5ZXIpOworICAgIHRleHR1cmVMYXllci0+c2V0VGV4dHVyZUlkKG1f
dGV4dHVyZUlkKTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldEZsaXBwZWQobV9mbGlwcGVkKTsKKyAg
ICB0ZXh0dXJlTGF5ZXItPnNldFVWUmVjdChtX3V2UmVjdCk7CisgICAgdGV4dHVyZUxheWVyLT5z
ZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKG1faW9TdXJmYWNlU2l6ZSwgbV9pb1N1cmZhY2VJZCk7Cit9
CisKK30KKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZUxheWVyQ2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTkxMDkyNDgxNTFiNGQxMTAxOGM3ZTg2
NzA5ZjM5YWFjNTFjNTU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uaApAQCAtMCwwICsxLDcx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworCisjaWZuZGVmIFRleHR1cmVMYXllckNocm9taXVtX2gKKyNkZWZpbmUgVGV4
dHVyZUxheWVyQ2hyb21pdW1faAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8v
IEEgTGF5ZXIgY29udGFpbmluZyBhIHRoZSByZW5kZXJlZCBvdXRwdXQgb2YgYSBwbHVnaW4gaW5z
dGFuY2UuCitjbGFzcyBUZXh0dXJlTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVt
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4g
Y3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUND
TGF5ZXJJbXBsKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBDb2RlIHBhdGggZm9yIHBsdWdpbnMgd2hpY2ggc3Vw
cGx5IHRoZWlyIG93biB0ZXh0dXJlIElELgorICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVk
KTsKKyAgICB2b2lkIHNldEZsaXBwZWQoYm9vbCk7CisgICAgYm9vbCBmbGlwcGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGlwcGVkOyB9CisgICAgdm9pZCBzZXRVVlJlY3QoY29uc3QgRmxvYXRSZWN0
Jik7CisgICAgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3V2UmVj
dDsgfQorCisgICAgLy8gQ29kZSBwYXRoIGZvciBwbHVnaW5zIHdoaWNoIHJlbmRlciB2aWEgYW4g
SU9TdXJmYWNlLgorICAgIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyhpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIHVpbnQzMl90IGlvU3VyZmFjZUlkKTsKKworICAgIHZpcnR1YWwgdm9pZCBwdXNo
UHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKikgT1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICBU
ZXh0dXJlTGF5ZXJDaHJvbWl1bSgpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fdGV4dHVy
ZUlkOworICAgIGJvb2wgbV9mbGlwcGVkOworICAgIEZsb2F0UmVjdCBtX3V2UmVjdDsKKyAgICBJ
bnRTaXplIG1faW9TdXJmYWNlU2l6ZTsKKyAgICB1aW50MzJfdCBtX2lvU3VyZmFjZUlkOworfTsK
KworfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMjNkZTY5MDgzZGY5YjYzZTA5NGFiNWI3ZGZi
YWFjOGIwNjE3NjgwMC4uNDM3NTJmMzVhZmVjYjJkZDQ0MDg0ODdlZmExNzJhMzViOWIzYTdmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNTM1LDggKzUzNSw2IEBACiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJFbnRpdGllcy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RW50aXRpZXMuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ci5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
LmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDlhYmMxZjhlNGE0ZGI3ZmU2MDA0M2Fk
MThlNzAwZDVkNzE3ZmYyYjkuLjk1NDhiMmEwZjY1ZGIxOTkzOTJhOGJmZTU1YTlmOTdkMGU3MjY3
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTMwLDcgKzEzMCw2IEBACiAg
ICAgICAgICAgICAndGVzdHMvVHJlZVRlc3RIZWxwZXJzLmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvVHJlZVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAnLAotICAgICAgICAgICAgJ3Rlc3RzL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJGcmFtZVRl
c3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvV2ViTGF5ZXJUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcAppbmRleCBkOGE1ZDMwN2UwNzkyNTIx
ZWRkZDI3YWQyMzYyYmRlMmQ3YzA1Nzg2Li41MjkwZTJmMzVhYjEyYjhhNzU2MjIwMDBmYTE5MzMw
YTg5MzZkOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250
ZW50TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRM
YXllci5jcHAKQEAgLTQ2LDExICs0Niw2IEBAIGJvb2wgV2ViQ29udGVudExheWVyOjpkcmF3c0Nv
bnRlbnQoKSBjb25zdAogICAgIHJldHVybiBjb25zdFVud3JhcDxXZWJDb250ZW50TGF5ZXJJbXBs
PigpLT5kcmF3c0NvbnRlbnQoKTsKIH0KIAotdm9pZCBXZWJDb250ZW50TGF5ZXI6OmludmFsaWRh
dGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYgZGlydHlSZWN0KQotewotICAgIHVud3JhcDxXZWJD
b250ZW50TGF5ZXJJbXBsPigpLT5zZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5UmVjdCk7Ci19Ci0K
IFdlYkNvbnRlbnRMYXllcjo6V2ViQ29udGVudExheWVyKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29u
dGVudExheWVySW1wbD4mIG5vZGUpCiAgICAgOiBXZWJMYXllcihub2RlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3Bw
CmluZGV4IGM5YmEwYmM3YjkyOGQxNjhmMjg1YjlmYjdjMzNkYWQzMjM4ZjE2NTkuLjI2MjAwMjZi
ZmI3ZjE4MzU0MmY1Yzc4MmEwZDc0OTBiMzBjZGFjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTI0LDY3
ICsyNCw1NiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5oPgogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRSZWN0LmgiCi0j
aW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiVGV4dHVy
ZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYlNpemUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGUoKSk7CisgICAgUmVmUHRyPFRl
eHR1cmVMYXllckNocm9taXVtPiBsYXllciA9IFRleHR1cmVMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKKyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICByZXR1cm4gV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIobGF5ZXIucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcjo6c2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQogewotICAgIHVud3JhcDxXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPnNldFRleHR1cmVJZChpZCk7CisgICAgdW53cmFw
PFRleHR1cmVMYXllckNocm9taXVtPigpLT5zZXRUZXh0dXJlSWQoaWQpOwogfQogCi11bnNpZ25l
ZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6dGV4dHVyZUlkKCkgY29uc3QKK3ZvaWQgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldElPU3VyZmFjZVByb3BlcnRpZXMoY29uc3QgV2ViU2l6ZSYg
c2l6ZSwgdW5zaWduZWQgaW9TdXJmYWNlSWQpCiB7Ci0gICAgcmV0dXJuIGNvbnN0VW53cmFwPFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4oKS0+dGV4dHVyZUlkKCk7CisgICAgdW53cmFwPFRl
eHR1cmVMYXllckNocm9taXVtPigpLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHNpemUud2lkdGgs
IHNpemUuaGVpZ2h0LCBpb1N1cmZhY2VJZCk7CiB9CiAKIHZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQogewotICAgIHVud3JhcDxXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw+KCktPnNldEZsaXBwZWQoZmxpcHBlZCk7CisgICAgdW53cmFwPFRl
eHR1cmVMYXllckNocm9taXVtPigpLT5zZXRGbGlwcGVkKGZsaXBwZWQpOwogfQogCiBib29sIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyOjpmbGlwcGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29u
c3RVbndyYXA8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPigpLT5mbGlwcGVkKCk7CisgICAg
cmV0dXJuIGNvbnN0VW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT5mbGlwcGVkKCk7CiB9
CiAKIHZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFVWUmVjdChjb25zdCBXZWJGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0gICAgdW53cmFwPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4o
KS0+c2V0VVZSZWN0KHJlY3QpOworICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+
c2V0VVZSZWN0KHJlY3QpOwogfQogCiBXZWJGbG9hdFJlY3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI6OnV2UmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkZsb2F0UmVjdChjb25zdFVud3Jh
cDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPnV2UmVjdCgpKTsKLX0KLQotdm9pZCBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0
JiB1cGRhdGVSZWN0KQotewotICAgIHVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+
KCktPnNldE5lZWRzRGlzcGxheVJlY3QodXBkYXRlUmVjdCk7Ci19Ci0KLVdlYkV4dGVybmFsVGV4
dHVyZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcihjb25zdCBQYXNzUmVmUHRyPFdlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbD4mIG5vZGUpCi0gICAgOiBXZWJMYXllcihub2RlKQotewot
fQotCi1XZWJFeHRlcm5hbFRleHR1cmVMYXllciYgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6Om9w
ZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4mIG5v
ZGUpCi17Ci0gICAgbV9wcml2YXRlID0gbm9kZTsKLSAgICByZXR1cm4gKnRoaXM7CisgICAgcmV0
dXJuIFdlYkZsb2F0UmVjdChjb25zdFVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+dXZS
ZWN0KCkpOwogfQogCi1XZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6b3BlcmF0b3IgUGFzc1JlZlB0
cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkgY29uc3QKK1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcihQYXNzUmVmUHRyPFRleHR1cmVMYXllckNo
cm9taXVtPiBsYXllcikKKyAgICA6IFdlYkxheWVyKGxheWVyKQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwqPihtX3ByaXZhdGUuZ2V0KCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlYzZjMjkwNjAwNTIzNTYzNjRkYmQ2MmU2M2M0YTE0MzM5MGMw
NDk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIgotCi0jaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ2FudmFzLmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc1JlZlB0cjxX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6
Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbCgpKTsKLX0KLQotV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwoKQotICAgIDogUGx1Z2luTGF5ZXJDaHJvbWl1bSgpCi17Ci0gICAg
c2V0RmxpcHBlZChmYWxzZSk7Ci0gICAgc2V0SXNEcmF3YWJsZSh0cnVlKTsKLX0KLQotV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjp+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkKLXsK
LX0KLQotYm9vbCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmRyYXdzQ29udGVudCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICEhdGV4dHVyZUlkKCkgJiYgTGF5ZXJDaHJvbWl1bTo6ZHJhd3ND
b250ZW50KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I3M2U3MDgwZGQ2ZjFmMDU4NGM0YzYyMWRmM2E2
ZWUzNGE3NWI1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbF9oCi0jZGVmaW5lIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bF9oCi0KLSNpbmNsdWRlICJQbHVnaW5MYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+
IGNyZWF0ZSgpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
KCk7Ci0gICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCk7Ci0gICAgdmly
dHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IDU5ZGEyZjM5NDBkYTUzZGYxMzk5MTgx
MDAxOTliYzQwMzE5ZmQzNmYuLjM1YTQ0NWMyMzQxMjE3MTEwOTg3NzFhYzA1YjIzZGI0ZTc5NzZj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTI2LDEzICsy
NiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVy
LmgiCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiU2tNYXRyaXg0NC5o
IgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJ
bXBsLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgorCisjaW5jbHVkZSA8cHVibGlj
L1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYlNpemUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAg
LTk0LDYgKzk2LDExIEBAIGJvb2wgV2ViTGF5ZXI6OmVxdWFscyhjb25zdCBXZWJMYXllciYgbikg
Y29uc3QKICAgICByZXR1cm4gKG1fcHJpdmF0ZS5nZXQoKSA9PSBuLm1fcHJpdmF0ZS5nZXQoKSk7
CiB9CiAKK3ZvaWQgV2ViTGF5ZXI6OmludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYg
ZGlydHlSZWN0KQoreworICAgIG1fcHJpdmF0ZS0+c2V0TmVlZHNEaXNwbGF5UmVjdChkaXJ0eVJl
Y3QpOworfQorCiB2b2lkIFdlYkxheWVyOjppbnZhbGlkYXRlKCkKIHsKICAgICBtX3ByaXZhdGUt
PnNldE5lZWRzRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCBmNjlhZTVjOTM1ZmI5NTdmMGFhN2Uw
MjQ4YWIzNjAwMzY0MzVmNzBlLi44YTk5ZTQ3MGI1NmQ3OGEzNmNiOWYxOGY3MTYyYTBlMGE3MzA4
NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgi
CiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgotI2luY2x1ZGUgIlBsdWdpbkxheWVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJTY3JvbGxiYXJHcm91cC5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIldlYkN1cnNvckluZm8uaCIKQEAgLTMzNCwxOSAr
MzMzLDIxIEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6cmVwb3J0R2VvbWV0cnkoKQog
ICAgIH0KIH0KIAotdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nVGV4dHVy
ZUlkKHVuc2lnbmVkIGlkKQordm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5n
VGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJZCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgdW5zaWduZWQgY3VycklkID0gbV9wbGF0Zm9ybUxheWVyLT50ZXh0dXJl
SWQoKTsKLSAgICBpZiAoY3VycklkID09IGlkKQorICAgIGlmIChtX3RleHR1cmVJZCA9PSB0ZXh0
dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGxhdGZvcm1MYXllci0+c2V0VGV4dHVy
ZUlkKGlkKTsKKyAgICBtX2xheWVyLnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOworCiAgICAgLy8g
SWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhh
cmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkg
dHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwogICAgIC8vIG9uIHRoZSBjb250YWluZXIgZWxlbWVu
dC4KLSAgICBpZiAoIShjdXJySWQgKiBpZCkpCisgICAgaWYgKCFtX3RleHR1cmVJZCB8fCAhdGV4
dHVyZUlkKQogICAgICAgICBtX2VsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoV2ViQ29yZTo6
U3ludGhldGljU3R5bGVDaGFuZ2UpOworCisgICAgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CiAj
ZW5kaWYKIH0KIApAQCAtMzU1LDI1ICszNTYsMjYgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJ
bXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW9TdXJmYWNlSWQpCiB7
CiAjaWYgT1MoREFSV0lOKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdWlu
dDMyX3QgY3VycmVudElkID0gbV9wbGF0Zm9ybUxheWVyLT5nZXRJT1N1cmZhY2VJZCgpOwotICAg
IGlmIChpb1N1cmZhY2VJZCA9PSBjdXJyZW50SWQpCisgICAgaWYgKGlvU3VyZmFjZUlkID09IG1f
aW9TdXJmYWNlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGxhdGZvcm1MYXllci0+c2V0
SU9TdXJmYWNlUHJvcGVydGllcyh3aWR0aCwgaGVpZ2h0LCBpb1N1cmZhY2VJZCk7CisgICAgbV9s
YXllci5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKFdlYlJlY3Qod2lkdGgsIGhlaWdodCksIGlvU3Vy
ZmFjZUlkKTsKIAogICAgIC8vIElmIGFueW9uZSBvZiB0aGUgSURzIGlzIHplcm8gd2UgbmVlZCB0
byBzd2l0Y2ggYmV0d2VlbiBoYXJkd2FyZQogICAgIC8vIGFuZCBzb2Z0d2FyZSBjb21wb3NpdGlu
Zy4gVGhpcyBpcyBkb25lIGJ5IHRyaWdnZXJpbmcgYSBzdHlsZSByZWNhbGMKICAgICAvLyBvbiB0
aGUgY29udGFpbmVyIGVsZW1lbnQuCi0gICAgaWYgKCEoaW9TdXJmYWNlSWQgKiBjdXJyZW50SWQp
KQorICAgIGlmICghaW9TdXJmYWNlSWQgfHwgIW1faW9TdXJmYWNlSWQpCiAgICAgICAgIG1fZWxl
bWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhXZWJDb3JlOjpTeW50aGV0aWNTdHlsZUNoYW5nZSk7
CisKKyAgICBtX2lvU3VyZmFjZUlkID0gaW9TdXJmYWNlSWQ7CiAjZW5kaWYKIH0KIAogdm9pZCBX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSgpCiB7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChtX3BsYXRmb3JtTGF5ZXIpCi0gICAg
ICAgIG1fcGxhdGZvcm1MYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgaWYgKCFtX2xheWVy
LmlzTnVsbCgpKQorICAgICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsKICNlbmRpZgogfQogCkBA
IC00NDAsOCArNDQyLDggQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp6b29tTGV2ZWxD
aGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwpCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNl
dE9wYXF1ZShib29sIG9wYXF1ZSkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgaWYgKG1fcGxhdGZvcm1MYXllcikKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXRP
cGFxdWUob3BhcXVlKTsKKyAgICBpZiAoIW1fbGF5ZXIuaXNOdWxsKCkpCisgICAgICAgIG1fbGF5
ZXIuc2V0T3BhcXVlKG9wYXF1ZSk7CiAjZW5kaWYKIH0KIApAQCAtNTE2LDcgKzUxOCw3IEBAIHZv
aWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6d2lsbERlc3Ryb3lQbHVnaW5Mb2FkT2JzZXJ2ZXIo
V2ViUGx1Z2luTG9hZE9ic2VydmVyCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSogV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6cGxhdGZvcm1M
YXllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX3BsYXRmb3JtTGF5ZXItPnRleHR1cmVJZCgp
IHx8IG1fcGxhdGZvcm1MYXllci0+Z2V0SU9TdXJmYWNlSWQoKSkgPyBtX3BsYXRmb3JtTGF5ZXIu
Z2V0KCkgOiAwOworICAgIHJldHVybiAobV90ZXh0dXJlSWQgfHwgbV9pb1N1cmZhY2VJZCkgPyBt
X2xheWVyLnVud3JhcDxMYXllckNocm9taXVtPigpIDogMDsKIH0KICNlbmRpZgogCkBAIC01NTYs
NyArNTU4LDkgQEAgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6V2ViUGx1Z2luQ29udGFpbmVySW1w
bChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWUKICAgICAsIG1fZWxlbWVudChlbGVt
ZW50KQogICAgICwgbV93ZWJQbHVnaW4od2ViUGx1Z2luKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLSAgICAsIG1fcGxhdGZvcm1MYXllcihQbHVnaW5MYXllckNocm9taXVtOjpj
cmVhdGUoKSkKKyAgICAsIG1fbGF5ZXIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgp
KQorICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1faW9TdXJmYWNlSWQoMCkKICNlbmRpZgog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29u
dGFpbmVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFp
bmVySW1wbC5oCmluZGV4IDlkOTcwZjJmOGRkYjA3ZjgwYTgwMWYyYTNhMTgzYTg5NTM1ZTdkOTQu
LmU3ZDJhNjUyZDVmNDZmMzVkZGMwN2U1MThmMjA1OGU3MDhhOTExNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXIuaCIKICNpbmNsdWRlICJX
aWRnZXQuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ4LDcgKzQ5LDYgQEAgY2xhc3MgSW50UmVjdDsKIGNs
YXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBMYXllckNocm9taXVtOwogY2xhc3MgTW91c2VFdmVu
dDsKLWNsYXNzIFBsdWdpbkxheWVyQ2hyb21pdW07CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFdoZWVsRXZlbnQ7CkBAIC0xNzMsNyArMTczLDkg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViUGx1Z2luTG9hZE9ic2VydmVyKj4gbV9wbHVnaW5M
b2FkT2JzZXJ2ZXJzOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFJl
ZlB0cjxXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtPiBtX3BsYXRmb3JtTGF5ZXI7CisgICAg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgbV9sYXllcjsKKyAgICB1bnNpZ25lZCBtX3RleHR1cmVJ
ZDsKKyAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZUlkOwogI2VuZGlmCiAKICAgICAvLyBUaGUgYXNz
b2NpYXRlZCBzY3JvbGxiYXIgZ3JvdXAgb2JqZWN0LCBjcmVhdGVkIGxhemlseS4gVXNlZCBmb3Ig
UGVwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTgzZDBkZjcwMThkNGVlNzViZDUwZGIyMjRjYzdlNTg2YjY1ZmQwOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbFRlc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2luY2x1ZGUgIldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIgotCi0jaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci11c2luZyBXVEY6OlJlZlB0cjsKLQotY2xhc3MgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsVGVzdCA6IHB1YmxpYyBXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGwgewotcHVibGljOgotICAgIGJvb2wgaXNEcmF3YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGRy
YXdzQ29udGVudCgpOyB9Ci19OwotCi1URVNUKFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCwg
dGVzdElzRHJhd2FibGUpCi17Ci0gICAgUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bFRlc3Q+IHRleHR1cmVMYXllciA9IGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGxUZXN0KCkpOwotCi0gICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMSk7Ci0gICAg
RVhQRUNUX1RSVUUodGV4dHVyZUxheWVyLT5pc0RyYXdhYmxlKCkpOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKaW5kZXggYWFjOGZiMTdi
MTY4ZTVkN2QyMTZlNWNjYmQxYWVkMmY0NDA2ZTExNS4uMmI2Y2JhNTYyYzI0ZTM0MjY0ODZkZTcw
Mzk3NGMwZWJkOTZjZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJMYXllclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
TGF5ZXJUZXN0LmNwcApAQCAtMTYwLDcgKzE2MCw2IEBAIFRFU1RfRihXZWJMYXllclRlc3QsIENs
aWVudCkKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGlt
ZXMoQXRMZWFzdCgxKSk7CiAgICAgdGV4dHVyZUxheWVyLnNldFRleHR1cmVJZCgzKTsKICAgICBN
b2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9F
USgzdSwgdGV4dHVyZUxheWVyLnRleHR1cmVJZCgpKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xp
ZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKICAgICB0ZXh0dXJl
TGF5ZXIuc2V0RmxpcHBlZCh0cnVlKTsK
</data>
<flag name="review"
          id="142526"
          type_id="1"
          status="+"
          setter="enne"
    />
    <flag name="commit-queue"
          id="142872"
          type_id="3"
          status="-"
          setter="enne"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137628</attachid>
            <date>2012-04-17 16:25:55 -0700</date>
            <delta_ts>2012-04-17 16:25:55 -0700</delta_ts>
            <desc>patch 1 (for reference)</desc>
            <filename>0001-Port-WebPluginContainerImpl-over-to-use-WebExternalT.patch</filename>
            <type>text/plain</type>
            <size>24276</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">RnJvbSA4YmY1Y2FmOWE1YjM5NTJmM2ZhY2YxYTI0Yjk3MTBlNzRiZWI1M2IxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBSb2JpbnNvbiA8amFtZXNyQGNocm9taXVtLm9yZz4K
RGF0ZTogTW9uLCAxNiBBcHIgMjAxMiAxNjo0MTo1NyAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMS8z
XSBQb3J0IFdlYlBsdWdpbkNvbnRhaW5lckltcGwgb3ZlciB0byB1c2UKIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyCgotLS0KIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVu
dExheWVyLmggIHwgICAgNSAtLQogLi4uL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllci5oICAgICAgfCAgIDI0ICsrKystLS0tLQogU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJMYXllci5oICAgICAgICAgfCAgICA0ICsrCiAuLi4vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgICAgICB8ICAgIDUgKysKIC4uLi9ncmFwaGljcy9j
aHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmggICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAgICAgICAgICAgICAgICAgICB8ICAgIDIgLQogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSAgICAgICAgICAgICAgICAgfCAgICAxIC0KIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAgICAgIHwgICAgNSAt
LQogLi4uL2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAgICAgICAgfCAg
IDQ3ICsrKysrKy0tLS0tLS0tLS0KIC4uLi9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsLmNwcCAgIHwgICA1NyAtLS0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL2Nocm9taXVt
L3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCAgICAgfCAgIDQ2IC0tLS0tLS0tLS0t
LS0tLS0KIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcCAgICAgICAgICAg
IHwgICAxMSArKystCiAuLi4vV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJ
bXBsLmNwcCB8ICAgMzYgKysrKysrKy0tLS0tLQogLi4uL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGx1Z2luQ29udGFpbmVySW1wbC5oICAgfCAgICA2ICsrLQogLi4uL3Rlc3RzL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbFRlc3QuY3BwICAgICAgfCAgIDUxIC0tLS0tLS0tLS0tLS0tLS0tCiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAgICAgICB8ICAgIDEg
LQogMTYgZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgMjMxIGRlbGV0aW9ucygtKQog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbC5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsVGVzdC5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkNvbnRlbnRMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJD
b250ZW50TGF5ZXIuaAppbmRleCBkNWM5MTVkLi42OTk0MThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCisrKyBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgKQEAgLTUxLDExICs1MSw2
IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wp
OwogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKIAotICAgIC8v
IFNldHMgYSByZWdpb24gb2YgdGhlIGxheWVyIGFzIGludmFsaWQsIGkuZS4gbmVlZHMgdG8gdXBk
YXRlIGl0cyBjb250ZW50LgotICAgIC8vIFRoZSB2aXNpYmxlIGFyZWEgb2YgdGhlIGRpcnR5IHJl
Y3Qgd2lsbCBiZSBwYXNzZWQgdG8gb25lIG9yIG1vcmUgY2FsbHMgdG8KLSAgICAvLyBXZWJDb250
ZW50TGF5ZXJDbGllbnQ6OnBhaW50Q29udGVudHMgYmVmb3JlIHRoZSBjb21wb3NpdGluZyBwYXNz
IG9jY3Vycy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2Vi
RmxvYXRSZWN0Jik7Ci0KICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJDb250ZW50
TGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+Jik7CiAgICAg
V2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvbnRl
bnRMYXllckltcGw+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgKaW5kZXggY2U4N2JiMi4uYTA3Y2UxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJXZWJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJXZWJMYXllci5oIgogCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBQbHVnaW5MYXllckNocm9taXVtOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDsKIApAQCAtNDQsMTggKzQ4LDE1IEBAIHB1Ymxp
YzoKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBjcmVh
dGUoKTsKIAogICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9Ci0gICAgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIoY29uc3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXImIGxheWVyKSA6IFdl
YkxheWVyKGxheWVyKSB7IH0KICAgICB2aXJ0dWFsIH5XZWJFeHRlcm5hbFRleHR1cmVMYXllcigp
IHsgfQotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgV2ViTGF5ZXI6OmFzc2ln
bihsYXllcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9CiAKICAgICAvLyBTZXRzIHRo
ZSB0ZXh0dXJlIGlkIHRoYXQgcmVwcmVzZW50cyB0aGUgbGF5ZXIsIGluIHRoZSBuYW1lc3BhY2Ug
b2YgdGhlCiAgICAgLy8gY29tcG9zaXRvciBjb250ZXh0LgogICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpOwotICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgdGV4
dHVyZUlkKCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIHRoZSBJTyBzdXJmYWNlIGlkIHRoYXQgcmVw
cmVzZW50cyB0aGlzIGxheWVyLiBzZXRUZXh0dXJlSWQoKSBhbmQgc2V0SU9TdXJmYWNlUHJvcGVy
dGllcygpIGFyZSBtdXR1YWxseQorICAgIC8vIGV4Y2x1c2l2ZSAtIGEgbGF5ZXIgY2FuIGJlIGVp
dGhlciBiYWNrZWQgYnkgYSB0ZXh0dXJlIG9yIGFuIElPIHN1cmZhY2UsIGJ1dCBub3QgYm90aC4K
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyhjb25zdCBXZWJT
aXplJiwgdW5zaWduZWQgaW9TdXJmYWNlSWQpOwogCiAgICAgLy8gU2V0cyB3aGV0aGVyIG9yIG5v
dCB0aGUgdGV4dHVyZSBzaG91bGQgYmUgZmxpcHBlZCBpbiB0aGUgWSBkaXJlY3Rpb24gd2hlbgog
ICAgIC8vIHJlbmRlcmVkLgpAQCAtNjcsMTQgKzY4LDkgQEAgcHVibGljOgogICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jik7CiAgICAgV0VCS0lUX0VY
UE9SVCBXZWJGbG9hdFJlY3QgdXZSZWN0KCkgY29uc3Q7CiAKLSAgICAvLyBNYXJrcyBhIHJlZ2lv
biBvZiB0aGUgbGF5ZXIgYXMgbmVlZGluZyBhIGRpc3BsYXkuIFRoZXNlIHJlZ2lvbnMgYXJlCi0g
ICAgLy8gY29sbGVjdGVkIGluIGEgdW5pb24gdW50aWwgdGhlIGRpc3BsYXkgb2NjdXJzLgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsK
LQorcHJpdmF0ZToKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsPiYpOwotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4mKTsKLSAgICBvcGVyYXRv
ciBXVEY6OlBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPigpIGNvbnN0Owor
ICAgIGV4cGxpY2l0IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6
UGx1Z2luTGF5ZXJDaHJvbWl1bT4pOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggZGE5NzRmYS4uNDc0OTdkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07IH0KIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViRmlsdGVyT3BlcmF0aW9uczsKIHN0cnVjdCBXZWJGbG9hdFBvaW50Owor
c3RydWN0IFdlYkZsb2F0UmVjdDsKIHN0cnVjdCBXZWJTaXplOwogCiBjbGFzcyBXZWJMYXllciB7
CkBAIC01NSw2ICs1Niw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWdu
KGNvbnN0IFdlYkxheWVyJik7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBX
ZWJMYXllciYpIGNvbnN0OwogCisgICAgLy8gU2V0cyBhIHJlZ2lvbiBvZiB0aGUgbGF5ZXIgYXMg
aW52YWxpZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNvbnRlbnQuCisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpOworCiAgICAgLy8g
U2V0cyB0aGUgZW50aXJlIGxheWVyIGFzIGludmFsaWQsIGkuZS4gbmVlZHMgdG8gdXBkYXRlIGl0
cyBjb250ZW50LgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOGE5OWFiMC4uODM2YWI2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUyLDYgKzUyLDExIEBAIFBhc3NPd25Q
dHI8Q0NMYXllckltcGw+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKCkK
ICAgICByZXR1cm4gQ0NUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsKIH0KIAor
Ym9vbCBQbHVnaW5MYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAoreworICAgIHJl
dHVybiAobV90ZXh0dXJlSWQgfHwgbV9pb1N1cmZhY2VJZCkgJiYgTGF5ZXJDaHJvbWl1bTo6ZHJh
d3NDb250ZW50KCk7Cit9CisKIHZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUlk
KHVuc2lnbmVkIGlkKQogewogICAgIG1fdGV4dHVyZUlkID0gaWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmgKaW5kZXggMjZiNThkMy4uZWM1OTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uaApAQCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCkgT1ZFUlJJREU7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZFUlJJREU7CisKICAgICAvLyBDb2Rl
IHBhdGggZm9yIHBsdWdpbnMgd2hpY2ggc3VwcGx5IHRoZWlyIG93biB0ZXh0dXJlIElELgogICAg
IHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkIHRleHR1cmVJZCk7CiAgICAgdW5zaWduZWQgdGV4
dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCA5Y2JhZWQ3Li4yYzRiYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC01MzcsOCArNTM3LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkVudGl0aWVz
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbnRpdGllcy5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcCcsCi0gICAgICAgICAgICAgICAg
J3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwJywKLSAgICAgICAgICAgICAgICAn
c3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKaW5kZXggOWFiYzFmOC4uOTU0OGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CkBAIC0xMzAsNyArMTMwLDYgQEAKICAgICAgICAgICAgICd0ZXN0cy9UcmVlVGVzdEhlbHBlcnMu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UcmVlVGVzdEhlbHBlcnMuaCcsCiAgICAgICAgICAg
ICAndGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCcsCi0gICAgICAg
ICAgICAndGVzdHMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkdM
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRlc3Qu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3Bw
CmluZGV4IGQ4YTVkMzAuLjUyOTBlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQ29udGVudExheWVyLmNwcApAQCAtNDYsMTEgKzQ2LDYgQEAgYm9vbCBXZWJDb250ZW50
TGF5ZXI6OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0VW53cmFwPFdlYkNv
bnRlbnRMYXllckltcGw+KCktPmRyYXdzQ29udGVudCgpOwogfQogCi12b2lkIFdlYkNvbnRlbnRM
YXllcjo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0g
ICAgdW53cmFwPFdlYkNvbnRlbnRMYXllckltcGw+KCktPnNldE5lZWRzRGlzcGxheVJlY3QoZGly
dHlSZWN0KTsKLX0KLQogV2ViQ29udGVudExheWVyOjpXZWJDb250ZW50TGF5ZXIoY29uc3QgUGFz
c1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiYgbm9kZSkKICAgICA6IFdlYkxheWVyKG5vZGUp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5jcHAKaW5kZXggYzliYTBiYy4uM2U1ZmY4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcApAQCAt
MjQsNjcgKzI0LDU2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmg+CiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCIKKyNpbmNsdWRlICJQ
bHVnaW5MYXllckNocm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y3JlYXRlKCkpOworICAgIFJlZlB0
cjxQbHVnaW5MYXllckNocm9taXVtPiBsYXllciA9IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOworICAgIGxheWVyLT5zZXRJc0RyYXdhYmxlKHRydWUpOworICAgIHJldHVybiBXZWJFeHRl
cm5hbFRleHR1cmVMYXllcihsYXllci5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCiB7Ci0gICAgdW53cmFwPFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4oKS0+c2V0VGV4dHVyZUlkKGlkKTsKKyAgICB1bndy
YXA8UGx1Z2luTGF5ZXJDaHJvbWl1bT4oKS0+c2V0VGV4dHVyZUlkKGlkKTsKIH0KIAotdW5zaWdu
ZWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnRleHR1cmVJZCgpIGNvbnN0Cit2b2lkIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGNvbnN0IFdlYlNpemUm
IHNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZUlkKQogewotICAgIHJldHVybiBjb25zdFVud3JhcDxX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPnRleHR1cmVJZCgpOworICAgIHVud3JhcDxQ
bHVnaW5MYXllckNocm9taXVtPigpLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHNpemUud2lkdGgs
IHNpemUuaGVpZ2h0LCBpb1N1cmZhY2VJZCk7CiB9CiAKIHZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQogewotICAgIHVud3JhcDxXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw+KCktPnNldEZsaXBwZWQoZmxpcHBlZCk7CisgICAgdW53cmFwPFBs
dWdpbkxheWVyQ2hyb21pdW0+KCktPnNldEZsaXBwZWQoZmxpcHBlZCk7CiB9CiAKIGJvb2wgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmZsaXBwZWQoKSBjb25zdAogewotICAgIHJldHVybiBjb25z
dFVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPmZsaXBwZWQoKTsKKyAgICBy
ZXR1cm4gY29uc3RVbndyYXA8UGx1Z2luTGF5ZXJDaHJvbWl1bT4oKS0+ZmxpcHBlZCgpOwogfQog
CiB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRS
ZWN0JiByZWN0KQogewotICAgIHVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkt
PnNldFVWUmVjdChyZWN0KTsKKyAgICB1bndyYXA8UGx1Z2luTGF5ZXJDaHJvbWl1bT4oKS0+c2V0
VVZSZWN0KHJlY3QpOwogfQogCiBXZWJGbG9hdFJlY3QgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6
OnV2UmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkZsb2F0UmVjdChjb25zdFVud3JhcDxX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCktPnV2UmVjdCgpKTsKLX0KLQotdm9pZCBXZWJF
eHRlcm5hbFRleHR1cmVMYXllcjo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiB1
cGRhdGVSZWN0KQotewotICAgIHVud3JhcDxXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw+KCkt
PnNldE5lZWRzRGlzcGxheVJlY3QodXBkYXRlUmVjdCk7Ci19Ci0KLVdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcihjb25zdCBQYXNzUmVmUHRyPFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbD4mIG5vZGUpCi0gICAgOiBXZWJMYXllcihub2RlKQotewotfQot
Ci1XZWJFeHRlcm5hbFRleHR1cmVMYXllciYgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6Om9wZXJh
dG9yPShjb25zdCBQYXNzUmVmUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4mIG5vZGUp
Ci17Ci0gICAgbV9wcml2YXRlID0gbm9kZTsKLSAgICByZXR1cm4gKnRoaXM7CisgICAgcmV0dXJu
IFdlYkZsb2F0UmVjdChjb25zdFVud3JhcDxQbHVnaW5MYXllckNocm9taXVtPigpLT51dlJlY3Qo
KSk7CiB9CiAKLVdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdl
YkV4dGVybmFsVGV4dHVyZUxheWVySW1wbD4oKSBjb25zdAorV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyKFBhc3NSZWZQdHI8UGx1Z2luTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIpCisgICAgOiBXZWJMYXllcihsYXllcikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKj4obV9wcml2YXRlLmdldCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWM2YzI5MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGwuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NSZWZQdHI8V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsPiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNyZWF0ZSgpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoKSk7Ci19
Ci0KLVdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsKCkKLSAgICA6IFBsdWdpbkxheWVyQ2hyb21pdW0oKQotewotICAgIHNldEZsaXBwZWQoZmFs
c2UpOwotICAgIHNldElzRHJhd2FibGUodHJ1ZSk7Ci19Ci0KLVdlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6fldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpCi17Ci19Ci0KLWJvb2wgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQoKSBjb25zdAotewotICAgIHJl
dHVybiAhIXRleHR1cmVJZCgpICYmIExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdiNzNlNzAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxfaAot
I2RlZmluZSBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxfaAotCi0jaW5jbHVkZSAiUGx1Z2lu
TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwgOiBwdWJsaWMg
V2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1bSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsPiBjcmVhdGUoKTsKLQotcHJvdGVjdGVk
OgotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpOwotICAgIHZpcnR1YWwgfldlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbCgpOwotICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQo
KSBjb25zdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
LmNwcAppbmRleCBmNzdlMzczLi43Y2UwNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXIuY3BwCkBAIC0zMSw4ICszMSwxMCBAQAogI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIK
ICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIldlYkxheWVySW1w
bC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTaXplLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5o
PgogCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KIApAQCAtOTYsNiAr
OTgsMTEgQEAgYm9vbCBXZWJMYXllcjo6ZXF1YWxzKGNvbnN0IFdlYkxheWVyJiBuKSBjb25zdAog
ICAgIHJldHVybiAobV9wcml2YXRlLmdldCgpID09IG4ubV9wcml2YXRlLmdldCgpKTsKIH0KIAor
dm9pZCBXZWJMYXllcjo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiBkaXJ0eVJl
Y3QpCit7CisgICAgbV9wcml2YXRlLT5zZXROZWVkc0Rpc3BsYXlSZWN0KGRpcnR5UmVjdCk7Cit9
CisKIHZvaWQgV2ViTGF5ZXI6OmludmFsaWRhdGUoKQogewogICAgIG1fcHJpdmF0ZS0+c2V0TmVl
ZHNEaXNwbGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IGY2OWFlNWMuLjhhOTllNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSAiUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIlNjcm9sbGJhckdyb3VwLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgi
CiAjaW5jbHVkZSAiV2ViQ3Vyc29ySW5mby5oIgpAQCAtMzM0LDE5ICszMzMsMjEgQEAgdm9pZCBX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjpyZXBvcnRHZW9tZXRyeSgpCiAgICAgfQogfQogCi12b2lk
IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgaWQp
Cit2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWdu
ZWQgdGV4dHVyZUlkKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB1
bnNpZ25lZCBjdXJySWQgPSBtX3BsYXRmb3JtTGF5ZXItPnRleHR1cmVJZCgpOwotICAgIGlmIChj
dXJySWQgPT0gaWQpCisgICAgaWYgKG1fdGV4dHVyZUlkID09IHRleHR1cmVJZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wbGF0Zm9ybUxheWVyLT5zZXRUZXh0dXJlSWQoaWQpOworICAgIG1f
bGF5ZXIuc2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CisKICAgICAvLyBJZiBhbnlvbmUgb2YgdGhl
IElEcyBpcyB6ZXJvIHdlIG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gaGFyZHdhcmUKICAgICAvLyBh
bmQgc29mdHdhcmUgY29tcG9zaXRpbmcuIFRoaXMgaXMgZG9uZSBieSB0cmlnZ2VyaW5nIGEgc3R5
bGUgcmVjYWxjCiAgICAgLy8gb24gdGhlIGNvbnRhaW5lciBlbGVtZW50LgotICAgIGlmICghKGN1
cnJJZCAqIGlkKSkKKyAgICBpZiAoIW1fdGV4dHVyZUlkIHx8ICF0ZXh0dXJlSWQpCiAgICAgICAg
IG1fZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhXZWJDb3JlOjpTeW50aGV0aWNTdHlsZUNo
YW5nZSk7CisKKyAgICBtX3RleHR1cmVJZCA9IHRleHR1cmVJZDsKICNlbmRpZgogfQogCkBAIC0z
NTUsMjUgKzM1NiwyNiBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdJ
T1N1cmZhY2VJZChpbnQgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBpb1N1cmZhY2VJZCkKIHsKICNpZiBPUyhEQVJXSU4p
ICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB1aW50MzJfdCBjdXJyZW50SWQg
PSBtX3BsYXRmb3JtTGF5ZXItPmdldElPU3VyZmFjZUlkKCk7Ci0gICAgaWYgKGlvU3VyZmFjZUlk
ID09IGN1cnJlbnRJZCkKKyAgICBpZiAoaW9TdXJmYWNlSWQgPT0gbV9pb1N1cmZhY2VJZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGF0Zm9ybUxheWVyLT5zZXRJT1N1cmZhY2VQcm9wZXJ0
aWVzKHdpZHRoLCBoZWlnaHQsIGlvU3VyZmFjZUlkKTsKKyAgICBtX2xheWVyLnNldElPU3VyZmFj
ZVByb3BlcnRpZXMoV2ViUmVjdCh3aWR0aCwgaGVpZ2h0KSwgaW9TdXJmYWNlSWQpOwogCiAgICAg
Ly8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVu
IGhhcmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUg
YnkgdHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwogICAgIC8vIG9uIHRoZSBjb250YWluZXIgZWxl
bWVudC4KLSAgICBpZiAoIShpb1N1cmZhY2VJZCAqIGN1cnJlbnRJZCkpCisgICAgaWYgKCFpb1N1
cmZhY2VJZCB8fCAhbV9pb1N1cmZhY2VJZCkKICAgICAgICAgbV9lbGVtZW50LT5zZXROZWVkc1N0
eWxlUmVjYWxjKFdlYkNvcmU6OlN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKworICAgIG1faW9TdXJm
YWNlSWQgPSBpb1N1cmZhY2VJZDsKICNlbmRpZgogfQogCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5l
ckltcGw6OmNvbW1pdEJhY2tpbmdUZXh0dXJlKCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgaWYgKG1fcGxhdGZvcm1MYXllcikKLSAgICAgICAgbV9wbGF0Zm9ybUxh
eWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBpZiAoIW1fbGF5ZXIuaXNOdWxsKCkpCisgICAg
ICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgpOwogI2VuZGlmCiB9CiAKQEAgLTQ0MCw4ICs0NDIsOCBA
QCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6Onpvb21MZXZlbENoYW5nZWQoZG91YmxlIHpv
b21MZXZlbCkKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0T3BhcXVlKGJvb2wgb3Bh
cXVlKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAobV9wbGF0
Zm9ybUxheWVyKQotICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNldE9wYXF1ZShvcGFxdWUpOwor
ICAgIGlmICghbV9sYXllci5pc051bGwoKSkKKyAgICAgICAgbV9sYXllci5zZXRPcGFxdWUob3Bh
cXVlKTsKICNlbmRpZgogfQogCkBAIC01MTYsNyArNTE4LDcgQEAgdm9pZCBXZWJQbHVnaW5Db250
YWluZXJJbXBsOjp3aWxsRGVzdHJveVBsdWdpbkxvYWRPYnNlcnZlcihXZWJQbHVnaW5Mb2FkT2Jz
ZXJ2ZXIKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBXZWJDb3JlOjpMYXllckNo
cm9taXVtKiBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKG1fcGxhdGZvcm1MYXllci0+dGV4dHVyZUlkKCkgfHwgbV9wbGF0Zm9ybUxh
eWVyLT5nZXRJT1N1cmZhY2VJZCgpKSA/IG1fcGxhdGZvcm1MYXllci5nZXQoKSA6IDA7CisgICAg
cmV0dXJuIChtX3RleHR1cmVJZCB8fCBtX2lvU3VyZmFjZUlkKSA/IG1fbGF5ZXIudW53cmFwPExh
eWVyQ2hyb21pdW0+KCkgOiAwOwogfQogI2VuZGlmCiAKQEAgLTU1Niw3ICs1NTgsOSBAQCBXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjpXZWJQbHVnaW5Db250YWluZXJJbXBsKFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50KiBlbGVtZQogICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgLCBtX3dl
YlBsdWdpbih3ZWJQbHVnaW4pCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
ICwgbV9wbGF0Zm9ybUxheWVyKFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZSgpKQorICAgICwg
bV9sYXllcihXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKCkpCisgICAgLCBtX3RleHR1
cmVJZCgwKQorICAgICwgbV9pb1N1cmZhY2VJZCgwKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKaW5kZXgg
OWQ5NzBmMi4uZTdkMmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIldl
YlBsdWdpbkNvbnRhaW5lci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogCisjaW5jbHVkZSA8cHVi
bGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NDgsNyArNDksNiBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNz
IExheWVyQ2hyb21pdW07CiBjbGFzcyBNb3VzZUV2ZW50OwotY2xhc3MgUGx1Z2luTGF5ZXJDaHJv
bWl1bTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgV2hlZWxFdmVudDsKQEAgLTE3Myw3ICsxNzMsOSBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxX
ZWJQbHVnaW5Mb2FkT2JzZXJ2ZXIqPiBtX3BsdWdpbkxvYWRPYnNlcnZlcnM7CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUmVmUHRyPFdlYkNvcmU6OlBsdWdpbkxheWVy
Q2hyb21pdW0+IG1fcGxhdGZvcm1MYXllcjsKKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBt
X2xheWVyOworICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIHVuc2lnbmVkIG1faW9TdXJm
YWNlSWQ7CiAjZW5kaWYKIAogICAgIC8vIFRoZSBhc3NvY2lhdGVkIHNjcm9sbGJhciBncm91cCBv
YmplY3QsIGNyZWF0ZWQgbGF6aWx5LiBVc2VkIGZvciBQZXBwZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODNkMGRmLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsLmgiCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQotbmFtZXNwYWNlIHsKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIFdURjo6
UmVmUHRyOwotCi1jbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxUZXN0IDogcHVibGlj
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCB7Ci1wdWJsaWM6Ci0gICAgYm9vbCBpc0RyYXdh
YmxlKCkgY29uc3QgeyByZXR1cm4gZHJhd3NDb250ZW50KCk7IH0KLX07Ci0KLVRFU1QoV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLCB0ZXN0SXNEcmF3YWJsZSkKLXsKLSAgICBSZWZQdHI8V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsVGVzdD4gdGV4dHVyZUxheWVyID0gYWRvcHRSZWYobmV3
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbFRlc3QoKSk7Ci0KLSAgICB0ZXh0dXJlTGF5ZXIt
PnNldFRleHR1cmVJZCgxKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTGF5ZXItPmlzRHJhd2Fi
bGUoKSk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViTGF5ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJU
ZXN0LmNwcAppbmRleCBhYWM4ZmIxLi4yYjZjYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCkBAIC0xNjAsNyArMTYwLDYgQEAgVEVTVF9GKFdl
YkxheWVyVGVzdCwgQ2xpZW50KQogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNv
bXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKICAgICB0ZXh0dXJlTGF5ZXIuc2V0VGV4dHVy
ZUlkKDMpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7
Ci0gICAgRVhQRUNUX0VRKDN1LCB0ZXh0dXJlTGF5ZXIudGV4dHVyZUlkKCkpOwogCiAgICAgRVhQ
RUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkp
OwogICAgIHRleHR1cmVMYXllci5zZXRGbGlwcGVkKHRydWUpOwotLSAKMS43LjcuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137629</attachid>
            <date>2012-04-17 16:26:16 -0700</date>
            <delta_ts>2012-04-17 16:26:16 -0700</delta_ts>
            <desc>patch 2 (for reference)</desc>
            <filename>0002-Rename-PluginLayerChromium-TextureLayerChromium.patch</filename>
            <type>text/plain</type>
            <size>17511</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">RnJvbSA5ZDc5ZWQxMzUwMzM3Njg4ZjcxNjQ2MjJiMDdkMzU4MDJlNGRkYjQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBSb2JpbnNvbiA8amFtZXNyQGNocm9taXVtLm9yZz4K
RGF0ZTogTW9uLCAxNiBBcHIgMjAxMiAxNzoyMjoyNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMi8z
XSBSZW5hbWUgUGx1Z2luTGF5ZXJDaHJvbWl1bSAtPiBUZXh0dXJlTGF5ZXJDaHJvbWl1bQoKLS0t
CiAuLi4vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmggICAgICB8ICAg
IDQgKy0KIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgNCArLQogLi4uL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3Bw
ICAgICAgfCAgMTAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0v
UGx1Z2luTGF5ZXJDaHJvbWl1bS5oICAgICAgICB8ICAgNzMgLS0tLS0tLS0tLS0tLS0KIC4uLi9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHAgICAgIHwgICA5NyArKysr
KysrKysrKysrKysrKysrCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21p
dW0uaCAgICAgICB8ICAgNzEgKysrKysrKysrKysrKysKIC4uLi9jaHJvbWl1bS9zcmMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwICAgICAgIHwgICAxOCArKy0tCiA3IGZpbGVzIGNoYW5nZWQs
IDE4MSBpbnNlcnRpb25zKCspLCAxODggZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJv
bWl1bS5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJv
bWl1bS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCmlu
ZGV4IGEwN2NlMTMuLmQ4ZjU0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJXZWJMYXllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBQ
bHVnaW5MYXllckNocm9taXVtOworY2xhc3MgVGV4dHVyZUxheWVyQ2hyb21pdW07CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtPik7CisgICAgZXhw
bGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0dXJl
TGF5ZXJDaHJvbWl1bT4pOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGU3MmY0
Yy4uNjA4YWMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzU1Nyw4ICszNTU3LDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUljb24uaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1JbWFnZS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtSW1hZ2UuaCcs
Ci0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJv
bWl1bS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Qcm9ncmFtQmluZGluZy5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Byb2dyYW1CaW5kaW5nLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JhdGVMaW1pdGVyLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MzZhYjZmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi0KLSNpbmNsdWRlICJQbHVnaW5MYXllckNocm9taXVtLmgiCi0KLSNpbmNs
dWRlICJjYy9DQ1RleHR1cmVMYXllckltcGwuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Q
YXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0
ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5MYXllckNocm9taXVtKTsKLX0K
LQotUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UGx1Z2luTGF5ZXJDaHJvbWl1bSgpCi0gICAgOiBMYXll
ckNocm9taXVtKCkKLSAgICAsIG1fdGV4dHVyZUlkKDApCi0gICAgLCBtX2ZsaXBwZWQodHJ1ZSkK
LSAgICAsIG1fdXZSZWN0KDAsIDAsIDEsIDEpCi0gICAgLCBtX2lvU3VyZmFjZUlkKDApCi17Ci19
Ci0KLVBhc3NPd25QdHI8Q0NMYXllckltcGw+IFBsdWdpbkxheWVyQ2hyb21pdW06OmNyZWF0ZUND
TGF5ZXJJbXBsKCkKLXsKLSAgICByZXR1cm4gQ0NUZXh0dXJlTGF5ZXJJbXBsOjpjcmVhdGUobV9s
YXllcklkKTsKLX0KLQotYm9vbCBQbHVnaW5MYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBj
b25zdAotewotICAgIHJldHVybiAobV90ZXh0dXJlSWQgfHwgbV9pb1N1cmZhY2VJZCkgJiYgTGF5
ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCk7Ci19Ci0KLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1
bTo6c2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQotewotICAgIG1fdGV4dHVyZUlkID0gaWQ7Ci0g
ICAgc2V0TmVlZHNDb21taXQoKTsKLX0KLQotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpzZXRG
bGlwcGVkKGJvb2wgZmxpcHBlZCkKLXsKLSAgICBtX2ZsaXBwZWQgPSBmbGlwcGVkOwotICAgIHNl
dE5lZWRzQ29tbWl0KCk7Ci19Ci0KLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6c2V0VVZSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICBtX3V2UmVjdCA9IHJlY3Q7Ci0gICAgc2V0
TmVlZHNDb21taXQoKTsKLX0KLQotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpzZXRJT1N1cmZh
Y2VQcm9wZXJ0aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgaW9TdXJmYWNlSWQp
Ci17Ci0gICAgbV9pb1N1cmZhY2VTaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLSAgICBt
X2lvU3VyZmFjZUlkID0gaW9TdXJmYWNlSWQ7Ci0gICAgc2V0TmVlZHNDb21taXQoKTsKLX0KLQot
dWludDMyX3QgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6Z2V0SU9TdXJmYWNlSWQoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2lvU3VyZmFjZUlkOwotfQotCi12b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQotewotICAgIExheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwotCi0gICAgQ0NUZXh0dXJlTGF5ZXJJbXBsKiB0
ZXh0dXJlTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ1RleHR1cmVMYXllckltcGwqPihsYXllcik7Ci0g
ICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQobV90ZXh0dXJlSWQpOwotICAgIHRleHR1cmVM
YXllci0+c2V0RmxpcHBlZChtX2ZsaXBwZWQpOwotICAgIHRleHR1cmVMYXllci0+c2V0VVZSZWN0
KG1fdXZSZWN0KTsKLSAgICB0ZXh0dXJlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMobV9p
b1N1cmZhY2VTaXplLCBtX2lvU3VyZmFjZUlkKTsKLX0KLQotfQotI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM1OTc5ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotCi0jaWZuZGVmIFBsdWdpbkxheWVy
Q2hyb21pdW1faAotI2RlZmluZSBQbHVnaW5MYXllckNocm9taXVtX2gKLQotI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi0vLyBBIExheWVyIGNvbnRhaW5pbmcgYSB0aGUgcmVuZGVyZWQg
b3V0cHV0IG9mIGEgcGx1Z2luIGluc3RhbmNlLgotY2xhc3MgUGx1Z2luTGF5ZXJDaHJvbWl1bSA6
IHB1YmxpYyBMYXllckNocm9taXVtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
bHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoKTsKLQotICAgIHZpcnR1YWwgUGFzc093blB0cjxD
Q0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKSBPVkVSUklERTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKLQotICAgIC8vIENvZGUgcGF0aCBm
b3IgcGx1Z2lucyB3aGljaCBzdXBwbHkgdGhlaXIgb3duIHRleHR1cmUgSUQuCi0gICAgdm9pZCBz
ZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKTsKLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotICAgIHZvaWQgc2V0RmxpcHBlZChib29s
KTsKLSAgICBib29sIGZsaXBwZWQoKSBjb25zdCB7IHJldHVybiBtX2ZsaXBwZWQ7IH0KLSAgICB2
b2lkIHNldFVWUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBjb25zdCBGbG9hdFJlY3QmIHV2
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9Ci0KLSAgICAvLyBDb2RlIHBhdGggZm9y
IHBsdWdpbnMgd2hpY2ggcmVuZGVyIHZpYSBhbiBJT1N1cmZhY2UuCi0gICAgdm9pZCBzZXRJT1N1
cmZhY2VQcm9wZXJ0aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgaW9TdXJmYWNl
SWQpOwotICAgIHVpbnQzMl90IGdldElPU3VyZmFjZUlkKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopIE9WRVJSSURFOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgUGx1Z2luTGF5ZXJDaHJvbWl1bSgpOwotCi1wcml2YXRlOgotICAgIHVuc2lnbmVk
IG1fdGV4dHVyZUlkOwotICAgIGJvb2wgbV9mbGlwcGVkOwotICAgIEZsb2F0UmVjdCBtX3V2UmVj
dDsKLSAgICBJbnRTaXplIG1faW9TdXJmYWNlU2l6ZTsKLSAgICB1aW50MzJfdCBtX2lvU3VyZmFj
ZUlkOwotfTsKLQotfQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjljYzZiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNw
cApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiVGV4dHVyZUxheWVyQ2hyb21p
dW0uaCIKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1wbC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IFRleHR1cmVMYXll
ckNocm9taXVtOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZUxh
eWVyQ2hyb21pdW0pOworfQorCitUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6VGV4dHVyZUxheWVyQ2hy
b21pdW0oKQorICAgIDogTGF5ZXJDaHJvbWl1bSgpCisgICAgLCBtX3RleHR1cmVJZCgwKQorICAg
ICwgbV9mbGlwcGVkKHRydWUpCisgICAgLCBtX3V2UmVjdCgwLCAwLCAxLCAxKQorICAgICwgbV9p
b1N1cmZhY2VJZCgwKQoreworfQorCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBUZXh0dXJlTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwoKQoreworICAgIHJldHVybiBDQ1RleHR1cmVM
YXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOworfQorCitib29sIFRleHR1cmVMYXllckNocm9t
aXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAoreworICAgIHJldHVybiAobV90ZXh0dXJlSWQgfHwg
bV9pb1N1cmZhY2VJZCkgJiYgTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCk7Cit9CisKK3Zv
aWQgVGV4dHVyZUxheWVyQ2hyb21pdW06OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKK3sKKyAg
ICBtX3RleHR1cmVJZCA9IGlkOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgVGV4
dHVyZUxheWVyQ2hyb21pdW06OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQoreworICAgIG1fZmxp
cHBlZCA9IGZsaXBwZWQ7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBUZXh0dXJl
TGF5ZXJDaHJvbWl1bTo6c2V0VVZSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBt
X3V2UmVjdCA9IHJlY3Q7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBUZXh0dXJl
TGF5ZXJDaHJvbWl1bTo6c2V0SU9TdXJmYWNlUHJvcGVydGllcyhpbnQgd2lkdGgsIGludCBoZWln
aHQsIHVpbnQzMl90IGlvU3VyZmFjZUlkKQoreworICAgIG1faW9TdXJmYWNlU2l6ZSA9IEludFNp
emUod2lkdGgsIGhlaWdodCk7CisgICAgbV9pb1N1cmZhY2VJZCA9IGlvU3VyZmFjZUlkOworICAg
IHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgVGV4dHVyZUxheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQoreworICAgIExheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOworCisgICAgQ0NUZXh0dXJlTGF5ZXJJbXBsKiB0ZXh0dXJl
TGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ1RleHR1cmVMYXllckltcGwqPihsYXllcik7CisgICAgdGV4
dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQobV90ZXh0dXJlSWQpOworICAgIHRleHR1cmVMYXllci0+
c2V0RmxpcHBlZChtX2ZsaXBwZWQpOworICAgIHRleHR1cmVMYXllci0+c2V0VVZSZWN0KG1fdXZS
ZWN0KTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMobV9pb1N1cmZh
Y2VTaXplLCBtX2lvU3VyZmFjZUlkKTsKK30KKworfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhOTEwOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1
bS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgVGV4dHVyZUxheWVyQ2hyb21p
dW1faAorI2RlZmluZSBUZXh0dXJlTGF5ZXJDaHJvbWl1bV9oCisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQSBMYXllciBjb250YWluaW5nIGEgdGhlIHJlbmRlcmVkIG91dHB1
dCBvZiBhIHBsdWdpbiBpbnN0YW5jZS4KK2NsYXNzIFRleHR1cmVMYXllckNocm9taXVtIDogcHVi
bGljIExheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1
cmVMYXllckNocm9taXVtPiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xh
eWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9v
bCBkcmF3c0NvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIENvZGUgcGF0aCBmb3Ig
cGx1Z2lucyB3aGljaCBzdXBwbHkgdGhlaXIgb3duIHRleHR1cmUgSUQuCisgICAgdm9pZCBzZXRU
ZXh0dXJlSWQodW5zaWduZWQpOworICAgIHZvaWQgc2V0RmxpcHBlZChib29sKTsKKyAgICBib29s
IGZsaXBwZWQoKSBjb25zdCB7IHJldHVybiBtX2ZsaXBwZWQ7IH0KKyAgICB2b2lkIHNldFVWUmVj
dChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXZSZWN0OyB9CisKKyAgICAvLyBDb2RlIHBhdGggZm9yIHBsdWdpbnMgd2hp
Y2ggcmVuZGVyIHZpYSBhbiBJT1N1cmZhY2UuCisgICAgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0
aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgaW9TdXJmYWNlSWQpOworCisgICAg
dmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKSBPVkVSUklERTsKKwor
cHJvdGVjdGVkOgorICAgIFRleHR1cmVMYXllckNocm9taXVtKCk7CisKK3ByaXZhdGU6CisgICAg
dW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgYm9vbCBtX2ZsaXBwZWQ7CisgICAgRmxvYXRSZWN0
IG1fdXZSZWN0OworICAgIEludFNpemUgbV9pb1N1cmZhY2VTaXplOworICAgIHVpbnQzMl90IG1f
aW9TdXJmYWNlSWQ7Cit9OworCit9CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAppbmRleCAzZTVmZjg1Li4yNjIwMDI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSA8
cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAKLSNpbmNsdWRlICJQbHVnaW5MYXll
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiVGV4dHVyZUxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
IDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KIApA
QCAtMzYsNDIgKzM2LDQyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJFeHRlcm5hbFRleHR1
cmVMYXllciBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICBSZWZQdHI8
UGx1Z2luTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBQbHVnaW5MYXllckNocm9taXVtOjpjcmVhdGUo
KTsKKyAgICBSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGxheWVyID0gVGV4dHVyZUxheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwogICAgIGxheWVyLT5zZXRJc0RyYXdhYmxlKHRydWUpOwogICAg
IHJldHVybiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcihsYXllci5yZWxlYXNlKCkpOwogfQogCiB2
b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCiB7
Ci0gICAgdW53cmFwPFBsdWdpbkxheWVyQ2hyb21pdW0+KCktPnNldFRleHR1cmVJZChpZCk7Cisg
ICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT5zZXRUZXh0dXJlSWQoaWQpOwogfQog
CiB2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGNv
bnN0IFdlYlNpemUmIHNpemUsIHVuc2lnbmVkIGlvU3VyZmFjZUlkKQogewotICAgIHVud3JhcDxQ
bHVnaW5MYXllckNocm9taXVtPigpLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHNpemUud2lkdGgs
IHNpemUuaGVpZ2h0LCBpb1N1cmZhY2VJZCk7CisgICAgdW53cmFwPFRleHR1cmVMYXllckNocm9t
aXVtPigpLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBp
b1N1cmZhY2VJZCk7CiB9CiAKIHZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldEZsaXBw
ZWQoYm9vbCBmbGlwcGVkKQogewotICAgIHVud3JhcDxQbHVnaW5MYXllckNocm9taXVtPigpLT5z
ZXRGbGlwcGVkKGZsaXBwZWQpOworICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+
c2V0RmxpcHBlZChmbGlwcGVkKTsKIH0KIAogYm9vbCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6
ZmxpcHBlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0VW53cmFwPFBsdWdpbkxheWVyQ2hy
b21pdW0+KCktPmZsaXBwZWQoKTsKKyAgICByZXR1cm4gY29uc3RVbndyYXA8VGV4dHVyZUxheWVy
Q2hyb21pdW0+KCktPmZsaXBwZWQoKTsKIH0KIAogdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXll
cjo6c2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICB1bndyYXA8UGx1
Z2luTGF5ZXJDaHJvbWl1bT4oKS0+c2V0VVZSZWN0KHJlY3QpOworICAgIHVud3JhcDxUZXh0dXJl
TGF5ZXJDaHJvbWl1bT4oKS0+c2V0VVZSZWN0KHJlY3QpOwogfQogCiBXZWJGbG9hdFJlY3QgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnV2UmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkZs
b2F0UmVjdChjb25zdFVud3JhcDxQbHVnaW5MYXllckNocm9taXVtPigpLT51dlJlY3QoKSk7Cisg
ICAgcmV0dXJuIFdlYkZsb2F0UmVjdChjb25zdFVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4o
KS0+dXZSZWN0KCkpOwogfQogCi1XZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6V2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBsYXllcikKK1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcihQYXNzUmVmUHRyPFRl
eHR1cmVMYXllckNocm9taXVtPiBsYXllcikKICAgICA6IFdlYkxheWVyKGxheWVyKQogewogfQot
LSAKMS43LjcuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>