<?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>44539</bug_id>
          
          <creation_ts>2010-08-24 11:07:14 -0700</creation_ts>
          <short_desc>API changes for Video Frame sharing between WebKit and Chromium</short_desc>
          <delta_ts>2010-09-15 09:37:33 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Victoria Kirst">vrk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fishd</cc>
    
    <cc>hclam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268656</commentid>
    <comment_count>0</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-24 11:07:14 -0700</bug_when>
    <thetext>API changes for Video Frame sharing between WebKit and Chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268660</commentid>
    <comment_count>1</comment_count>
      <attachid>65297</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-24 11:10:24 -0700</bug_when>
    <thetext>Created attachment 65297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268669</commentid>
    <comment_count>2</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-24 11:21:11 -0700</bug_when>
    <thetext>Hi Darin! Could you take a look at this patch when you have time? I tried to address the concerns you and others mentioned in the previous review.

Some key points:

* This patch only contains the API changes and doesn&apos;t actually use the classes/methods yet. This is both so that it is hopefully easier to review, and also because I need to land a patch on the Chromium side before I can use these classes without breaking the build.

* WebVideoFrame interface does not contain enums and instead returns &quot;unsigned&quot; for the format/surface type. WebVideoFrame is intended to be a proxy between VideoFrameChromium and media::VideoFrame anyway, so it seemed like a reasonable trade-off to eliminate the enums from WebVideoFrame. 

* I didn&apos;t add anything to AssertMatchingEnums.cpp because (in light of the change mentioned above) I need to match enums between WebCore and Chromium, not WebCore and WebKit. Do you know of a way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268707</commentid>
    <comment_count>3</comment_count>
      <attachid>65306</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-24 12:18:04 -0700</bug_when>
    <thetext>Created attachment 65306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268708</commentid>
    <comment_count>4</comment_count>
      <attachid>65306</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-24 12:18:40 -0700</bug_when>
    <thetext>Comment on attachment 65306
Patch

Changed a few straggler size_t -&gt; unsigned</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268878</commentid>
    <comment_count>5</comment_count>
      <attachid>65337</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-24 15:58:05 -0700</bug_when>
    <thetext>Created attachment 65337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268880</commentid>
    <comment_count>6</comment_count>
      <attachid>65337</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-24 16:00:43 -0700</bug_when>
    <thetext>Comment on attachment 65337
Patch

Fixed some style issues brought up from levin. Thanks again! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269358</commentid>
    <comment_count>7</comment_count>
      <attachid>65439</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-25 11:07:25 -0700</bug_when>
    <thetext>Created attachment 65439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269360</commentid>
    <comment_count>8</comment_count>
      <attachid>65439</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-25 11:08:04 -0700</bug_when>
    <thetext>Comment on attachment 65439
Patch

Added enums back to WebVideoFrame, and added compiler asserts to match WebVideoFrame and VideoFrameChromium enums.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269405</commentid>
    <comment_count>9</comment_count>
      <attachid>65439</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-25 11:47:00 -0700</bug_when>
    <thetext>Comment on attachment 65439
Patch

WebCore/platform/graphics/chromium/VideoFrameChromium.h:38
 +  
nit: extra new line here

WebCore/platform/graphics/chromium/VideoFrameChromium.h:71
 +  public:
nit: no need for the redundant &apos;public:&apos; section

WebCore/platform/graphics/chromium/VideoFrameProvider.h:39
 +  
nit: extra new line here

WebCore/platform/graphics/chromium/VideoFrameProvider.h:41
 +      virtual VideoFrameChromium* getCurrentFrame() = 0;
please document the ownership model.  who owns the VideoFrameChromium?
how do I free it?  it looks like i have to call putCurrentFrame to
free it, but is that the only way?  it might help if these methods
were more fully documented.

WebKit/chromium/public/WebMediaPlayer.h:133
 +      // FIXME: Will be made pure virtual when API changes are fully landed.
WebKit API interfaces implemented by the embedder are intended to have
non-pure virtual methods.  so this FIXME is backwards.  the other methods
should have empty implementations :)

WebKit/chromium/public/WebVideoFrame.h:40
 +  
nit: kill the extra new line here

WebKit/chromium/public/WebVideoFrame.h:43
 +      enum Format {
nit: our convention for enums at the WebKit API level is to use the following
format:

  enum Foo {
      FooBar,
      FooBaz,
      ...
  };

So, I&apos;d expect to see:

  enum Format {
      FormatInvalid,
      FormatRGB555,
      ...
  };

  enum SurfaceType {
      SurfaceTypeSystemMemory,
      ...
  };

WebKit/chromium/public/WebVideoFrame.h:66
 +      virtual SurfaceType type() const = 0;
nit: type should be surfaceType to match the type name SurfaceType

WebKit/chromium/public/WebVideoFrame.h:71
 +      virtual int stride(unsigned plane) const = 0;
why does stride return signed instead of unsigned?

WebKit/chromium/public/WebVideoFrame.h:72
 +      virtual void* data(unsigned plane) const = 0;
can this pointer be a |const void*| instead?  it should be const
if you only expect the caller to get read access to the buffer.
otherwise, non-const implies mutability.  i think you only want
to provide read access, right?

WebKit/chromium/src/VideoFrameChromiumImpl.cpp:55
 +  VideoFrameChromiumImpl::VideoFrameChromiumImpl(WebVideoFrame* webVideoFrame) :
nit: the colon should be on the next line

WebKit/chromium/src/VideoFrameChromiumImpl.h:42
 +  
nit: no new line here

WebKit/chromium/src/VideoFrameChromiumImpl.cpp:47
 +  WebVideoFrame* VideoFrameChromiumImpl::toWebVideoFrame(WebCore::VideoFrameChromium* videoFrame)
nit: i recommend adding a &apos;using namespace WebCore&apos; at the top of this file,
and then remove the WebCore:: prefixes in the body of this file.

WebKit/chromium/src/VideoFrameChromiumImpl.cpp:56
 +      m_webVideoFrame(webVideoFrame)
what is the ownership model for m_webVideoFrame?  it looks like VideoFrameChromiumImpl
is not responsible for deleting m_webVideoFrame.  should it?

WebKit/chromium/src/WebMediaPlayerClientImpl.h:119
 +      // This function returns a pointer to a VideoFrameChromium, which is
this looks like documentation that should be in VideoFrameProvider.h instead of here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269522</commentid>
    <comment_count>10</comment_count>
      <attachid>65477</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-25 14:49:48 -0700</bug_when>
    <thetext>Created attachment 65477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269528</commentid>
    <comment_count>11</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-25 14:58:51 -0700</bug_when>
    <thetext>Hi Darin! I fixed my code to match your suggestions. Can you take another look?

&gt; WebCore/platform/graphics/chromium/VideoFrameProvider.h:41
&gt;  +      virtual VideoFrameChromium* getCurrentFrame() = 0;
&gt; please document the ownership model.  who owns the VideoFrameChromium?
&gt; how do I free it?  it looks like i have to call putCurrentFrame to
&gt; free it, but is that the only way?  it might help if these methods
&gt; were more fully documented.
I moved the comment from WebMediaPlayerClientImpl.h to this file. Let me know if you think I should add further clarification.

&gt; WebKit/chromium/public/WebMediaPlayer.h:133
&gt;  +      // FIXME: Will be made pure virtual when API changes are fully landed.
&gt; WebKit API interfaces implemented by the embedder are intended to have
&gt; non-pure virtual methods.  so this FIXME is backwards.  the other methods
&gt; should have empty implementations :)
For now I just deleted the FIXME.

&gt; WebKit/chromium/public/WebVideoFrame.h:71
&gt;  +      virtual int stride(unsigned plane) const = 0;
&gt; why does stride return signed instead of unsigned?
Strides can be negative if a frame is stored bottom-up in memory, and I believe this is true of RGB frames. (Not positive, though.)

&gt; WebKit/chromium/src/VideoFrameChromiumImpl.cpp:56
&gt;  +      m_webVideoFrame(webVideoFrame)
&gt; what is the ownership model for m_webVideoFrame?  it looks like VideoFrameChromiumImpl
&gt; is not responsible for deleting m_webVideoFrame.  should it?
You&apos;re correct, VideoFrameChromiumImpl is not responsible for deleting m_webVideoFrame. I added a comment saying such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269542</commentid>
    <comment_count>12</comment_count>
      <attachid>65477</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-25 15:18:58 -0700</bug_when>
    <thetext>Comment on attachment 65477
Patch

WebKit/chromium/public/WebMediaPlayer.h:132
 +      // For getting frames to and from media player.
nit: Something like the comments on VideoFrameProvider should be here as well.
Ideally, the user of the WebKit API should not need to read WebCore files to
understand how to use the API.

WebKit/chromium/public/WebVideoFrame.h:31
 +  
nit: extra new line here that should be removed

WebKit/chromium/public/WebVideoFrame.h:41
 +      // These enums must be kept in sync with media::VideoFormat.
nit: I&apos;d prefer that we avoid references to code in the Chromium repository.
These things can easily get out of sync as folks changing code in Chromium
may not realize they need to make a patch to WebKit to fix up the name of
something.  I&apos;d just drop this comment.

WebKit/chromium/src/VideoFrameChromiumImpl.h:46
 +      static WebVideoFrame* toWebVideoFrame(VideoFrameChromium*);
nit: i&apos;d recommend a new line after here for readability

R=me w/ these nits fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269662</commentid>
    <comment_count>13</comment_count>
      <attachid>65512</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-25 18:25:39 -0700</bug_when>
    <thetext>Created attachment 65512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269664</commentid>
    <comment_count>14</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-25 18:33:03 -0700</bug_when>
    <thetext>Thanks for the review, Darin! I will have Alpha commit it for me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65297</attachid>
            <date>2010-08-24 11:10:24 -0700</date>
            <delta_ts>2010-08-24 12:18:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44539-20100824111023.patch</filename>
            <type>text/plain</type>
            <size>24325</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzcyMmZhZDkwZWMxY2ExN2I0OTBlZjViNzIxNGNkMTg0ZjhiZWRlOS4uYTIxZDY0NmYzNTBjZDA0
MTI2MmU2YjVmNTEwMzBkZGQyZWJlOWU3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wOC0yNCAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBtZWFucyBvZiBjb21tdW5pY2F0aW9uIGJl
dHdlZW4gV2ViS2l0L1dlYkNvcmUgYW5kCisgICAgICAgIGNocm9taXVtIGluIG9yZGVyIHRvIHNo
YXJlIHZpZGVvIGZyYW1lcy4gVGhpcyBhZGRzIHRoZSBuZWNlc3NhcnkKKyAgICAgICAgV2ViS2l0
LXNpZGUgY2xhc3NlcyBhbmQgbWV0aG9kcywgYnV0IGRvZXMgbm90IGFjdHVhbGx5IHVzZSB0aGVt
CisgICAgICAgIHlldCAtIHRoYXQgd2lsbCBiZSBjb21taXR0ZWQgaW4gYSBzZXBhcmF0ZSBwYXRj
aCBhZnRlciB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBDaHJvbWl1bSBzaWRlIGlzIGNvbW1p
dHRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ1MzkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZXNlIG5ldyBjbGFzc2VzL0FQSXMg
YXJlIG5vdCB5ZXQgdXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvRnJhbWVDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWVDaHJvbWl1bTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0ZyYW1lUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMC0wOC0yNCAgTmF0ZSBDaGFwaW4gIDxq
YXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1l
Q2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFt
ZUNocm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdkYjg0YjMzNDAwN2Q4OGVjNmQyNmU4YjhlYjBlNDY2
ODJhNDIzNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9G
cmFtZUNocm9taXVtX2gKKyNkZWZpbmUgVmlkZW9GcmFtZUNocm9taXVtX2gKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhIHZpZGVvIGZyYW1lIGlu
IGNocm9taXVtLgorY2xhc3MgVmlkZW9GcmFtZUNocm9taXVtIHsKKworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4UGxhbmVzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBjTnVtUkdCUGxhbmVzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjUkdCUGxhbmU7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNOdW1ZVVZQbGFuZXM7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNZUGxhbmU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNVUGxhbmU7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNWUGxhbmU7CisKKyAgICAvLyBUaGVzZSBlbnVtcyBt
dXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIG1lZGlhOjpWaWRlb0Zvcm1hdC4KKyAgICBlbnVtIEZv
cm1hdCB7CisgICAgICAgIElOVkFMSUQsCisgICAgICAgIFJHQjU1NSwKKyAgICAgICAgUkdCNTY1
LAorICAgICAgICBSR0IyNCwKKyAgICAgICAgUkdCMzIsCisgICAgICAgIFJHQkEsCisgICAgICAg
IFlWMTIsCisgICAgICAgIFlWMTYsCisgICAgICAgIE5WMTIsCisgICAgICAgIEVNUFRZLAorICAg
ICAgICBBU0NJSSwKKyAgICB9OworCisgICAgZW51bSBTdXJmYWNlVHlwZSB7CisgICAgICAgIFRZ
UEVfU1lTVEVNX01FTU9SWSwKKyAgICAgICAgVFlQRV9PTVhCVUZGRVJIRUFELAorICAgICAgICBU
WVBFX0VHTF9JTUFHRSwKKyAgICAgICAgVFlQRV9NRkJVRkZFUiwKKyAgICAgICAgVFlQRV9ESVJF
Q1QzRFNVUkZBQ0UKKyAgICB9OworCitwdWJsaWM6CisgICAgdmlydHVhbCBTdXJmYWNlVHlwZSB0
eXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRm9ybWF0IGZvcm1hdCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5z
aWduZWQgaGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU0ZmU4ZGU0NjZlZmIyYTI1NzAxZWNkMjQzNTQwYjY1ZDQyNzgyOWEKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQ
cm92aWRlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvRnJhbWVQcm92aWRlcl9oCisj
ZGVmaW5lIFZpZGVvRnJhbWVQcm92aWRlcl9oCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21p
dW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb0ZyYW1lUHJvdmlkZXIg
eworCitwdWJsaWM6CisgICAgdmlydHVhbCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGdldEN1cnJlbnRG
cmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFZpZGVvRnJhbWVD
aHJvbWl1bSogdmlkZW9GcmFtZSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlYmI4YmNlZDFlMjY2NGQxZTk1NTUzYzJk
OTg2MjViNGY1NWFmYWJiLi43ZmY5OGI5M2ZkMDNhZGEyZGE2OGZjNGQxZjZlMjliNTc0MGZmNGJl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC00OCwxOCArNDgsMjAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9t
aXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1Bhc3NSZWZQdHI8Vmlk
ZW9MYXllckNocm9taXVtPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0xheWVyQ2hyb21pdW0ob3duZXIpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFZpZGVvTGF5ZXJDaHJvbWl1bShvd25lciwgcHJvdmlkZXIpKTsKIH0K
IAotVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lcikKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIp
CiAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShvd25lcikKICNpZiBQTEFURk9STShTS0lBKQog
ICAgICwgbV9jYW52YXMoMCkKICAgICAsIG1fc2tpYUNvbnRleHQoMCkKICNlbmRpZgogICAgICwg
bV9ncmFwaGljc0NvbnRleHQoMCkKKyAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGIwNjJlNjI4ZmRiOGE4MzY3NjM3NTc5NmJhMTI1MTBiNDYxZjQ3
ZGYuLmRiMGVlYTA0OTZlMzU4YzRiMmZhODczNTc5MGEyNTZiMmJkN2M2YzkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaApAQCAtMzUsMTggKzM1LDIwIEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogCiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJWaWRlb0Zy
YW1lUHJvdmlkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBIExheWVyIHRoYXQg
Y29udGFpbnMgYSBWaWRlbyBlbGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVi
bGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVy
ID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUo
R3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlciA9
IDApOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9M
YXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIFZpZGVvTGF5
ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlk
ZXIqIHByb3ZpZGVyKTsKICAgICB2b2lkIGNyZWF0ZVRleHR1cmVSZWN0KGNvbnN0IEludFNpemUm
IHJlcXVpcmVkVGV4dHVyZVNpemUsIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVk
IHRleHR1cmVJZCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChjb25zdCBJbnRSZWN0JiB1
cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOwogICAgIHZvaWQgdXBkYXRlQ29tcGxldGVk
KCk7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFBsYXRmb3JtQ29udGV4
dFNraWE+IG1fc2tpYUNvbnRleHQ7CiAjZW5kaWYKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBtX2dyYXBoaWNzQ29udGV4dDsKKyAgICBPd25QdHI8VmlkZW9GcmFtZVByb3ZpZGVyPiBtX3By
b3ZpZGVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDVmNjA2NDcwNjlkMWRkM2FlZmQ4NGRl
OTE5MDY3MzYzYjNmOThmZC4uMTI0MTQ4M2ZlYWIyZDJiOWVhMzk2ZTI1NjBiM2MwZTM3ODg2YWYx
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTAtMDgtMjQgIFZpY3RvcmlhIEtp
cnN0ICA8dnJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkaW5nIGEgd2F5IHRvIGNvbW11bmljYXRlIHZpZGVvIGZyYW1lcyBi
ZXR3ZWVuIENocm9taXVtIGFuZCBXZWJLaXQuCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBhY3Rz
IGFzIGEgbWlkZGxlbWFuIGJldHdlZW4gQ2hyb21pdW0gYW5kIFdlYkNvcmUuCisgICAgICAgIFRo
ZSBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsIGlzIG5vdCBiZWluZyB1c2VkIGJ5IFdlYkNvcmUgeWV0
LCBhcyB0aGVyZQorICAgICAgICBzdGlsbCBuZWVkcyB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiBXZWJWaWRlb0ZyYW1lIGluIENocm9taXVtCisgICAgICAgIC0tIGNvbWluZyBzb29uIGluIGEg
c3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICBBUEkgY2hhbmdlcyBmb3IgVmlkZW8gRnJhbWUg
c2hhcmluZyBiZXR3ZWVuIFdlYktpdCBhbmQgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NTM5CisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVBsYXllcjo6Z2V0Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXI6OnB1dEN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcHVibGljL1dlYlZpZGVvRnJh
bWUuaDogQWRkZWQuCisgICAgICAgICogc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dG9XZWJWaWRl
b0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6VmlkZW9G
cmFtZUNocm9taXVtSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUlt
cGw6OnR5cGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpmb3Jt
YXQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp3aWR0aCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OmhlaWdodCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnBsYW5lcyk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnN0cmlkZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnJhbWVDaHJvbWl1bUltcGw6OmRhdGEpOgorICAgICAgICAqIHNyYy9WaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdldEN1
cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
cHV0Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoK
KwogMjAxMC0wOC0yNCAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA1NjRiOWY5
ODE2MTIwN2Y5ZDI3YjU4YTk0NmRiMTMyMjg4M2ZkYTllLi45NDQzZDhlZWFhYWRlMmY1ZjQzNGYy
NmEwYTBjNzA1NGViNGI5NDg5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzgyLDYgKzM4Miw4IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1RlbXBvcmFyeUdsdWUuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsLmgnLApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCmluZGV4IDZmNTEzNDVkMDc0ZWVkZDdjMTk5
ZTEwYzM4YTM5OWY5YmQwZGE1OTUuLmU1MWU1YWNmZmFhNmVjYTBkM2QwMTZhNGNkNDAxNGU1YjQ4
YmE1NmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5o
IgorI2luY2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTEyNyw2ICsxMjgsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTW92aWVMb2FkVHlwZSBtb3Zp
ZUxvYWRUeXBlKCkgY29uc3QgPSAwOworCisgICAgLy8gRm9yIGdldHRpbmcgZnJhbWVzIHRvIGFu
ZCBmcm9tIG1lZGlhIHBsYXllci4KKyAgICAvLyBUT0RPKHZyayk6IFdpbGwgYmUgbWFkZSBwdXJl
IHZpcnR1YWwgd2hlbiBBUEkgY2hhbmdlcyBhcmUgZnVsbHkgbGFuZGVkLgorICAgIHZpcnR1YWwg
V2ViVmlkZW9GcmFtZSogZ2V0Q3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSogd2ViVmlkZW9GcmFtZSkge30K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVv
RnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZmQ0OWE0N2Y2YTkxNWQxZWIyOGVlMDE2NjUzNjNkMGE1MDk4
Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0Zy
YW1lLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBXZWJWaWRlb0ZyYW1lX2gKKyNkZWZpbmUg
V2ViVmlkZW9GcmFtZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBBIHByb3h5IHZpZGVv
IGZyYW1lIGludGVyZmFjZSB0byBjb21tdW5pY2F0ZSBmcmFtZSBkYXRhIGJldHdlZW4gY2hyb21p
dW0KKy8vIGFuZCBXZWJLaXQuCitjbGFzcyBXZWJWaWRlb0ZyYW1lIHsKKworcHVibGljOgorICAg
IHZpcnR1YWwgdW5zaWduZWQgdHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHN0cmlkZShz
aXplX3QgcGxhbmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoc2l6ZV90IHBs
YW5lKSBjb25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYzFlNWJkZjRhYzQ2YmRlOTM3Y2JjOWFhNGM0NWFiNmExYmJkZDMwCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcApA
QCAtMCwwICsxLDgzIEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTAgVGhlIENocm9taXVtIEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9G
cmFtZUNocm9taXVtSW1wbC5oIgorCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCisj
aW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3Qg
dW5zaWduZWQgY01heFBsYW5lcyA9IDM7Citjb25zdCB1bnNpZ25lZCBjTnVtUkdCUGxhbmVzID0g
MTsKK2NvbnN0IHVuc2lnbmVkIGNSR0JQbGFuZSA9IDA7Citjb25zdCB1bnNpZ25lZCBjTnVtWVVW
UGxhbmVzID0gMzsKK2NvbnN0IHVuc2lnbmVkIGNZUGxhbmUgPSAwOworY29uc3QgdW5zaWduZWQg
Y1VQbGFuZSA9IDE7Citjb25zdCB1bnNpZ25lZCBjVlBsYW5lID0gMjsKKworV2ViVmlkZW9GcmFt
ZSogVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dG9XZWJWaWRlb0ZyYW1lKFdlYkNvcmU6OlZpZGVv
RnJhbWVDaHJvbWl1bSogdmlkZW9GcmFtZSkKK3sKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
KiB3cmFwcGVkRnJhbWUgPSBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKj4odmlk
ZW9GcmFtZSk7CisgICAgaWYgKHdyYXBwZWRGcmFtZSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZWRG
cmFtZS0+bV93ZWJWaWRlb0ZyYW1lOworICAgIHJldHVybiAwOworfQorCitWaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsOjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKFdlYlZpZGVvRnJhbWUqIHdlYlZpZGVv
RnJhbWUpIDoKKyAgICBtX3dlYlZpZGVvRnJhbWUod2ViVmlkZW9GcmFtZSkKK3sKK30KKworV2Vi
Q29yZTo6VmlkZW9GcmFtZUNocm9taXVtOjpTdXJmYWNlVHlwZSBWaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsOjp0eXBlKCkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRlb0ZyYW1lKQorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZUNocm9taXVtOjpTdXJmYWNlVHlwZT4obV93ZWJW
aWRlb0ZyYW1lLT50eXBlKCkpOworICAgIHJldHVybiBUWVBFX1NZU1RFTV9NRU1PUlk7Cit9CisK
K1dlYkNvcmU6OlZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0IFZpZGVvRnJhbWVDaHJvbWl1bUlt
cGw6OmZvcm1hdCgpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0PihtX3dlYlZpZGVv
RnJhbWUtPmZvcm1hdCgpKTsKKyAgICByZXR1cm4gSU5WQUxJRDsKK30KKwordW5zaWduZWQgVmlk
ZW9GcmFtZUNocm9taXVtSW1wbDo6d2lkdGgoKSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVv
RnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYlZpZGVvRnJhbWUtPndpZHRoKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3Vuc2lnbmVkIFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OmhlaWdodCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlk
ZW9GcmFtZS0+aGVpZ2h0KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIFZpZGVvRnJh
bWVDaHJvbWl1bUltcGw6OnBsYW5lcygpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFt
ZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlkZW9GcmFtZS0+cGxhbmVzKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK2ludCBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpzdHJpZGUodW5zaWduZWQgcGxh
bmUpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1f
d2ViVmlkZW9GcmFtZS0+c3RyaWRlKHBsYW5lKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCog
VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6ZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QKK3sKKyAg
ICBpZiAobV93ZWJWaWRlb0ZyYW1lKQorICAgICAgICByZXR1cm4gbV93ZWJWaWRlb0ZyYW1lLT5k
YXRhKHBsYW5lKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVmYzJlZmZjNDgwNDdjMDVmOTk4MGY3NDU3Njk2YTE0MzkwZDNiZWQKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsX2gKKyNkZWZpbmUgVmlkZW9G
cmFtZUNocm9taXVtSW1wbF9oCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKKyNp
bmNsdWRlICJXZWJWaWRlb0ZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBBIHdy
YXBwZXIgY2xhc3MgZm9yIFdlYktpdDo6V2ViVmlkZW9GcmFtZS4gT2JqZWN0cyBjYW4gYmUgY3Jl
YXRlZCBpbiBXZWJLaXQKKy8vIGFuZCB1c2VkIGluIFdlYkNvcmUgYmVjYXVzZSBvZiB0aGUgVmlk
ZW9GcmFtZUNocm9taXVtIGludGVyZmFjZS4KK2NsYXNzIFZpZGVvRnJhbWVDaHJvbWl1bUltcGwg
OiBwdWJsaWMgV2ViQ29yZTo6VmlkZW9GcmFtZUNocm9taXVtIHsKKworcHVibGljOgorICAgIHN0
YXRpYyBXZWJWaWRlb0ZyYW1lKiB0b1dlYlZpZGVvRnJhbWUoV2ViQ29yZTo6VmlkZW9GcmFtZUNo
cm9taXVtKiB2aWRlb0ZyYW1lKTsKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKFdlYlZpZGVv
RnJhbWUqIHdlYlZpZGVvRnJhbWUpOworICAgIFN1cmZhY2VUeXBlIHR5cGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEZvcm1hdCBmb3JtYXQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHdp
ZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIHBsYW5lcygpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1
bnNpZ25lZCBwbGFuZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkKiBkYXRhKHVuc2lnbmVkIHBs
YW5lKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXZWJWaWRlb0ZyYW1lKiBtX3dlYlZpZGVvRnJh
bWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggOGYyMTBhMGYz
YmU3NzFhZDJhNzIzOWNhY2NkOTQ4NDgyNjYxZDBmOS4uZjBlY2UwZDc1MjFiZDZmOWQxZDIyYWYx
NTI5MGE2ZDZmZjc4NDYyYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgIlJlbmRlckxh
eWVyQ29tcG9zaXRvci5oIgogI2VuZGlmCiAKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0u
aCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgiCiAjaW5jbHVkZSAiV2ViQ2Fu
dmFzLmgiCiAjaW5jbHVkZSAiV2ViQ1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50
LmgiCkBAIC00MTYsNiArNDE4LDI4IEBAIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6bW92aWVMb2FkVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpVbmtub3duOwogfQogCitWaWRlb0ZyYW1lQ2hyb21pdW0qIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6Z2V0Q3VycmVudEZyYW1lKCkKK3sKKyAgICBWaWRlb0ZyYW1lQ2hyb21p
dW0qIHZpZGVvRnJhbWUgPSAwOworICAgIGlmIChtX3dlYk1lZGlhUGxheWVyLmdldCgpKSB7Cisg
ICAgICAgIFdlYlZpZGVvRnJhbWUqIHdlYmtpdFZpZGVvRnJhbWUgPSBtX3dlYk1lZGlhUGxheWVy
LT5nZXRDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKHdlYmtpdFZpZGVvRnJhbWUpCisgICAg
ICAgICAgICB2aWRlb0ZyYW1lID0gbmV3IFZpZGVvRnJhbWVDaHJvbWl1bUltcGwod2Via2l0Vmlk
ZW9GcmFtZSk7CisgICAgfQorICAgIHJldHVybiB2aWRlb0ZyYW1lOworfQorCit2b2lkIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6cHV0Q3VycmVudEZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1bSog
dmlkZW9GcmFtZSkKK3sKKyAgICBpZiAodmlkZW9GcmFtZSkgeworICAgICAgICBpZiAobV93ZWJN
ZWRpYVBsYXllci5nZXQoKSkgeworICAgICAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+cHV0Q3Vy
cmVudEZyYW1lKAorICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnRvV2Vi
VmlkZW9GcmFtZSh2aWRlb0ZyYW1lKSk7CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRlIHZpZGVv
RnJhbWU7CisgICAgfQorfQorCiBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6Y3JlYXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiB7CiAgICAgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsKiBjbGllbnQgPSBuZXcgV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsKCk7CkBAIC00MzMsNyArNDU3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmNyZWF0ZShNZWRpYVBsYXllciogcGxheWUKICAgICAg
ICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5jb21wb3NpdG9yKCktPmhhc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKTsKIAogICAgIGlmIChjbGllbnQtPm1fc3VwcG9ydHNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKQotICAgICAgICBjbGllbnQtPm1fdmlkZW9MYXllciA9IFZpZGVvTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKDApOworICAgICAgICBjbGllbnQtPm1fdmlkZW9MYXllciA9IFZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKDAsIGNsaWVudCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBjbGll
bnQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApp
bmRleCBkZjE3OWE4NTU0MDU0Njc2MGMyODMzMzdhNjZkM2RhMzFkODI5NDhiLi5jMzdlYjljOGUw
ZDhkZWFhMTBmOGZhYTczYjg1Y2RhZDU4NTUzNjI5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKQEAgLTM0LDYgKzM0LDggQEAKICNpZiBFTkFC
TEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKyNpbmNsdWRlICJW
aWRlb0ZyYW1lQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
IApAQCAtNDQsOCArNDYsMTAgQEAgY2xhc3MgV2ViTWVkaWFQbGF5ZXI7CiAKIC8vIFRoaXMgY2xh
c3Mgc2VydmVzIGFzIGEgYnJpZGdlIGJldHdlZW4gV2ViQ29yZTo6TWVkaWFQbGF5ZXIgYW5kCiAv
LyBXZWJLaXQ6OldlYk1lZGlhUGxheWVyLgotY2xhc3MgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
IDogcHVibGljIFdlYk1lZGlhUGxheWVyQ2xpZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKK2Ns
YXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1Ymxp
YyBXZWJDb3JlOjpWaWRlb0ZyYW1lUHJvdmlkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAsIHB1YmxpYyBXZWJNZWRpYVBsYXllckNsaWVudCB7CisKIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBpc0VuYWJsZWQoKTsKICAgICBzdGF0aWMgdm9pZCBzZXRJc0VuYWJsZWQoYm9vbCk7
CkBAIC0xMTAsNiArMTE0LDIwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwogCisgICAgLy8g
VmlkZW9GcmFtZVByb3ZpZGVyIG1ldGhvZHM6CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVy
bnMgYSBwb2ludGVyIHRvIGEgVmlkZW9GcmFtZUNocm9taXVtLCB3aGljaCBpcworICAgIC8vIHRo
ZSBXZWJDb3JlIHdyYXBwZXIgZm9yIGEgbWVkaWE6OlZpZGVvRnJhbWUgaW4gY2hyb21pdW0uIFRo
aXMgcGxhY2VzIGEKKyAgICAvLyBsb2NrIG9uIHRoZSBmcmFtZSBpbiBjaHJvbWl1bSwgYW5kIGNh
bGxzIHRvIHRoaXMgbWV0aG9kIHNob3VsZCBhbHdheXMgYmUKKyAgICAvLyBmb2xsb3dlZCB3aXRo
IGEgY2FsbCB0byBwdXRDdXJyZW50RnJhbWUoKS4gVGhlIG93bmVyc2hpcCBvZiB0aGUgb2JqZWN0
IGlzCisgICAgLy8gbm90IHRyYW5zZmVycmVkIHRvIHRoZSBjYWxsZXIgYW5kIHRoZSBjYWxsZXIg
c2hvdWxkIG5vdCBmcmVlIHRoZSByZXR1cm5lZAorICAgIC8vIG9iamVjdC4KKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OlZpZGVvRnJhbWVDaHJvbWl1bSogZ2V0Q3VycmVudEZyYW1lKCk7CisgICAgLy8g
VGhpcyBmdW5jdGlvbiB1bmxvY2tzIGFuZCBmcmVlcyBnaXZlbiB2aWRlbyBmcmFtZS4gSXQgc2hv
dWxkIGFsd2F5cyBiZQorICAgIC8vIGNhbGxlZCBhZnRlciBnZXRDdXJyZW50RnJhbWUoKS4gRnJh
bWVzIHBhc3NlZCBpbnRvIHRoaXMgbWV0aG9kIHNob3VsZCBubworICAgIC8vIGxvbmdlciBiZSBy
ZWZlcmVuY2VkIGFmdGVyIHRoZSBjYWxsIGlzIG1hZGUuCisgICAgdmlydHVhbCB2b2lkIHB1dEN1
cnJlbnRGcmFtZShXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW0qIHZpZGVvRnJhbWUpOworCiBw
cml2YXRlOgogICAgIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65306</attachid>
            <date>2010-08-24 12:18:04 -0700</date>
            <delta_ts>2010-08-24 15:58:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44539-20100824121803.patch</filename>
            <type>text/plain</type>
            <size>24329</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzcyMmZhZDkwZWMxY2ExN2I0OTBlZjViNzIxNGNkMTg0ZjhiZWRlOS4uYTIxZDY0NmYzNTBjZDA0
MTI2MmU2YjVmNTEwMzBkZGQyZWJlOWU3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wOC0yNCAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBtZWFucyBvZiBjb21tdW5pY2F0aW9uIGJl
dHdlZW4gV2ViS2l0L1dlYkNvcmUgYW5kCisgICAgICAgIGNocm9taXVtIGluIG9yZGVyIHRvIHNo
YXJlIHZpZGVvIGZyYW1lcy4gVGhpcyBhZGRzIHRoZSBuZWNlc3NhcnkKKyAgICAgICAgV2ViS2l0
LXNpZGUgY2xhc3NlcyBhbmQgbWV0aG9kcywgYnV0IGRvZXMgbm90IGFjdHVhbGx5IHVzZSB0aGVt
CisgICAgICAgIHlldCAtIHRoYXQgd2lsbCBiZSBjb21taXR0ZWQgaW4gYSBzZXBhcmF0ZSBwYXRj
aCBhZnRlciB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBDaHJvbWl1bSBzaWRlIGlzIGNvbW1p
dHRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ1MzkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZXNlIG5ldyBjbGFzc2VzL0FQSXMg
YXJlIG5vdCB5ZXQgdXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvRnJhbWVDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWVDaHJvbWl1bTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0ZyYW1lUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMC0wOC0yNCAgTmF0ZSBDaGFwaW4gIDxq
YXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1l
Q2hyb21pdW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFt
ZUNocm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTdkYjg0YjMzNDAwN2Q4OGVjNmQyNmU4YjhlYjBlNDY2
ODJhNDIzNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9GcmFtZUNocm9taXVtLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9G
cmFtZUNocm9taXVtX2gKKyNkZWZpbmUgVmlkZW9GcmFtZUNocm9taXVtX2gKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhIHZpZGVvIGZyYW1lIGlu
IGNocm9taXVtLgorY2xhc3MgVmlkZW9GcmFtZUNocm9taXVtIHsKKworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4UGxhbmVzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBjTnVtUkdCUGxhbmVzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjUkdCUGxhbmU7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNOdW1ZVVZQbGFuZXM7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNZUGxhbmU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNVUGxhbmU7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNWUGxhbmU7CisKKyAgICAvLyBUaGVzZSBlbnVtcyBt
dXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIG1lZGlhOjpWaWRlb0Zvcm1hdC4KKyAgICBlbnVtIEZv
cm1hdCB7CisgICAgICAgIElOVkFMSUQsCisgICAgICAgIFJHQjU1NSwKKyAgICAgICAgUkdCNTY1
LAorICAgICAgICBSR0IyNCwKKyAgICAgICAgUkdCMzIsCisgICAgICAgIFJHQkEsCisgICAgICAg
IFlWMTIsCisgICAgICAgIFlWMTYsCisgICAgICAgIE5WMTIsCisgICAgICAgIEVNUFRZLAorICAg
ICAgICBBU0NJSSwKKyAgICB9OworCisgICAgZW51bSBTdXJmYWNlVHlwZSB7CisgICAgICAgIFRZ
UEVfU1lTVEVNX01FTU9SWSwKKyAgICAgICAgVFlQRV9PTVhCVUZGRVJIRUFELAorICAgICAgICBU
WVBFX0VHTF9JTUFHRSwKKyAgICAgICAgVFlQRV9NRkJVRkZFUiwKKyAgICAgICAgVFlQRV9ESVJF
Q1QzRFNVUkZBQ0UKKyAgICB9OworCitwdWJsaWM6CisgICAgdmlydHVhbCBTdXJmYWNlVHlwZSB0
eXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRm9ybWF0IGZvcm1hdCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5z
aWduZWQgaGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU0ZmU4ZGU0NjZlZmIyYTI1NzAxZWNkMjQzNTQwYjY1ZDQyNzgyOWEKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQ
cm92aWRlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvRnJhbWVQcm92aWRlcl9oCisj
ZGVmaW5lIFZpZGVvRnJhbWVQcm92aWRlcl9oCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21p
dW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb0ZyYW1lUHJvdmlkZXIg
eworCitwdWJsaWM6CisgICAgdmlydHVhbCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGdldEN1cnJlbnRG
cmFtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFZpZGVvRnJhbWVD
aHJvbWl1bSogdmlkZW9GcmFtZSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlYmI4YmNlZDFlMjY2NGQxZTk1NTUzYzJk
OTg2MjViNGY1NWFmYWJiLi43ZmY5OGI5M2ZkMDNhZGEyZGE2OGZjNGQxZjZlMjliNTc0MGZmNGJl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC00OCwxOCArNDgsMjAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9t
aXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1Bhc3NSZWZQdHI8Vmlk
ZW9MYXllckNocm9taXVtPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0xheWVyQ2hyb21pdW0ob3duZXIpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFZpZGVvTGF5ZXJDaHJvbWl1bShvd25lciwgcHJvdmlkZXIpKTsKIH0K
IAotVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lcikKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIp
CiAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShvd25lcikKICNpZiBQTEFURk9STShTS0lBKQog
ICAgICwgbV9jYW52YXMoMCkKICAgICAsIG1fc2tpYUNvbnRleHQoMCkKICNlbmRpZgogICAgICwg
bV9ncmFwaGljc0NvbnRleHQoMCkKKyAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGIwNjJlNjI4ZmRiOGE4MzY3NjM3NTc5NmJhMTI1MTBiNDYxZjQ3
ZGYuLmRiMGVlYTA0OTZlMzU4YzRiMmZhODczNTc5MGEyNTZiMmJkN2M2YzkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaApAQCAtMzUsMTggKzM1LDIwIEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogCiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJWaWRlb0Zy
YW1lUHJvdmlkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBIExheWVyIHRoYXQg
Y29udGFpbnMgYSBWaWRlbyBlbGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVi
bGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVy
ID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUo
R3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlciA9
IDApOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9M
YXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIFZpZGVvTGF5
ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlk
ZXIqIHByb3ZpZGVyKTsKICAgICB2b2lkIGNyZWF0ZVRleHR1cmVSZWN0KGNvbnN0IEludFNpemUm
IHJlcXVpcmVkVGV4dHVyZVNpemUsIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVk
IHRleHR1cmVJZCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChjb25zdCBJbnRSZWN0JiB1
cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOwogICAgIHZvaWQgdXBkYXRlQ29tcGxldGVk
KCk7CkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFBsYXRmb3JtQ29udGV4
dFNraWE+IG1fc2tpYUNvbnRleHQ7CiAjZW5kaWYKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBtX2dyYXBoaWNzQ29udGV4dDsKKyAgICBPd25QdHI8VmlkZW9GcmFtZVByb3ZpZGVyPiBtX3By
b3ZpZGVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDVmNjA2NDcwNjlkMWRkM2FlZmQ4NGRl
OTE5MDY3MzYzYjNmOThmZC4uMTI0MTQ4M2ZlYWIyZDJiOWVhMzk2ZTI1NjBiM2MwZTM3ODg2YWYx
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTAtMDgtMjQgIFZpY3RvcmlhIEtp
cnN0ICA8dnJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkaW5nIGEgd2F5IHRvIGNvbW11bmljYXRlIHZpZGVvIGZyYW1lcyBi
ZXR3ZWVuIENocm9taXVtIGFuZCBXZWJLaXQuCisgICAgICAgIFRoZSBXZWJLaXQgc2lkZSBhY3Rz
IGFzIGEgbWlkZGxlbWFuIGJldHdlZW4gQ2hyb21pdW0gYW5kIFdlYkNvcmUuCisgICAgICAgIFRo
ZSBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsIGlzIG5vdCBiZWluZyB1c2VkIGJ5IFdlYkNvcmUgeWV0
LCBhcyB0aGVyZQorICAgICAgICBzdGlsbCBuZWVkcyB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiBXZWJWaWRlb0ZyYW1lIGluIENocm9taXVtCisgICAgICAgIC0tIGNvbWluZyBzb29uIGluIGEg
c3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICBBUEkgY2hhbmdlcyBmb3IgVmlkZW8gRnJhbWUg
c2hhcmluZyBiZXR3ZWVuIFdlYktpdCBhbmQgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NTM5CisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVBsYXllcjo6Z2V0Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXI6OnB1dEN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcHVibGljL1dlYlZpZGVvRnJh
bWUuaDogQWRkZWQuCisgICAgICAgICogc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dG9XZWJWaWRl
b0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6VmlkZW9G
cmFtZUNocm9taXVtSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUlt
cGw6OnR5cGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpmb3Jt
YXQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp3aWR0aCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OmhlaWdodCk6CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnBsYW5lcyk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnN0cmlkZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZGVvRnJhbWVDaHJvbWl1bUltcGw6OmRhdGEpOgorICAgICAgICAqIHNyYy9WaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdldEN1
cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
cHV0Q3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoK
KwogMjAxMC0wOC0yNCAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA1NjRiOWY5
ODE2MTIwN2Y5ZDI3YjU4YTk0NmRiMTMyMjg4M2ZkYTllLi45NDQzZDhlZWFhYWRlMmY1ZjQzNGYy
NmEwYTBjNzA1NGViNGI5NDg5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzgyLDYgKzM4Miw4IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1RlbXBvcmFyeUdsdWUuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q2FjaGVJbXBsLmgnLApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCmluZGV4IDZmNTEzNDVkMDc0ZWVkZDdjMTk5
ZTEwYzM4YTM5OWY5YmQwZGE1OTUuLmU1MWU1YWNmZmFhNmVjYTBkM2QwMTZhNGNkNDAxNGU1YjQ4
YmE1NmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5o
IgorI2luY2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTEyNyw2ICsxMjgsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTW92aWVMb2FkVHlwZSBtb3Zp
ZUxvYWRUeXBlKCkgY29uc3QgPSAwOworCisgICAgLy8gRm9yIGdldHRpbmcgZnJhbWVzIHRvIGFu
ZCBmcm9tIG1lZGlhIHBsYXllci4KKyAgICAvLyBUT0RPKHZyayk6IFdpbGwgYmUgbWFkZSBwdXJl
IHZpcnR1YWwgd2hlbiBBUEkgY2hhbmdlcyBhcmUgZnVsbHkgbGFuZGVkLgorICAgIHZpcnR1YWwg
V2ViVmlkZW9GcmFtZSogZ2V0Q3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSogd2ViVmlkZW9GcmFtZSkge30K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZGVv
RnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xOGIyNTlkN2MyMTBiMmY2OGNmNDM0Y2JkMzE5YTE5N2NiOWVh
ZDI5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0Zy
YW1lLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBXZWJWaWRlb0ZyYW1lX2gKKyNkZWZpbmUg
V2ViVmlkZW9GcmFtZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBBIHByb3h5IHZpZGVv
IGZyYW1lIGludGVyZmFjZSB0byBjb21tdW5pY2F0ZSBmcmFtZSBkYXRhIGJldHdlZW4gY2hyb21p
dW0KKy8vIGFuZCBXZWJLaXQuCitjbGFzcyBXZWJWaWRlb0ZyYW1lIHsKKworcHVibGljOgorICAg
IHZpcnR1YWwgdW5zaWduZWQgdHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1
bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCogZGF0YSh1bnNpZ25l
ZCBwbGFuZSkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmMxZTViZGY0YWM0NmJkZTkzN2NiYzlhYTRjNDVhYjZhMWJiZGQzMAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5j
cHAKQEAgLTAsMCArMSw4MyBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEwIFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZp
ZGVvRnJhbWVDaHJvbWl1bUltcGwuaCIKKworI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5o
IgorI2luY2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Nv
bnN0IHVuc2lnbmVkIGNNYXhQbGFuZXMgPSAzOworY29uc3QgdW5zaWduZWQgY051bVJHQlBsYW5l
cyA9IDE7Citjb25zdCB1bnNpZ25lZCBjUkdCUGxhbmUgPSAwOworY29uc3QgdW5zaWduZWQgY051
bVlVVlBsYW5lcyA9IDM7Citjb25zdCB1bnNpZ25lZCBjWVBsYW5lID0gMDsKK2NvbnN0IHVuc2ln
bmVkIGNVUGxhbmUgPSAxOworY29uc3QgdW5zaWduZWQgY1ZQbGFuZSA9IDI7CisKK1dlYlZpZGVv
RnJhbWUqIFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnRvV2ViVmlkZW9GcmFtZShXZWJDb3JlOjpW
aWRlb0ZyYW1lQ2hyb21pdW0qIHZpZGVvRnJhbWUpCit7CisgICAgVmlkZW9GcmFtZUNocm9taXVt
SW1wbCogd3JhcHBlZEZyYW1lID0gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZUNocm9taXVtSW1wbCo+
KHZpZGVvRnJhbWUpOworICAgIGlmICh3cmFwcGVkRnJhbWUpCisgICAgICAgIHJldHVybiB3cmFw
cGVkRnJhbWUtPm1fd2ViVmlkZW9GcmFtZTsKKyAgICByZXR1cm4gMDsKK30KKworVmlkZW9GcmFt
ZUNocm9taXVtSW1wbDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbChXZWJWaWRlb0ZyYW1lKiB3ZWJW
aWRlb0ZyYW1lKSA6CisgICAgbV93ZWJWaWRlb0ZyYW1lKHdlYlZpZGVvRnJhbWUpCit7Cit9CisK
K1dlYkNvcmU6OlZpZGVvRnJhbWVDaHJvbWl1bTo6U3VyZmFjZVR5cGUgVmlkZW9GcmFtZUNocm9t
aXVtSW1wbDo6dHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFZpZGVvRnJhbWVDaHJvbWl1bTo6U3VyZmFjZVR5cGU+KG1f
d2ViVmlkZW9GcmFtZS0+dHlwZSgpKTsKKyAgICByZXR1cm4gVFlQRV9TWVNURU1fTUVNT1JZOwor
fQorCitXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW06OkZvcm1hdCBWaWRlb0ZyYW1lQ2hyb21p
dW1JbXBsOjpmb3JtYXQoKSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lQ2hyb21pdW06OkZvcm1hdD4obV93ZWJW
aWRlb0ZyYW1lLT5mb3JtYXQoKSk7CisgICAgcmV0dXJuIElOVkFMSUQ7Cit9CisKK3Vuc2lnbmVk
IFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OndpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJW
aWRlb0ZyYW1lKQorICAgICAgICByZXR1cm4gbV93ZWJWaWRlb0ZyYW1lLT53aWR0aCgpOworICAg
IHJldHVybiAwOworfQorCit1bnNpZ25lZCBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpoZWlnaHQo
KSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dl
YlZpZGVvRnJhbWUtPmhlaWdodCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBWaWRl
b0ZyYW1lQ2hyb21pdW1JbXBsOjpwbGFuZXMoKSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVv
RnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYlZpZGVvRnJhbWUtPnBsYW5lcygpOworICAgIHJl
dHVybiAwOworfQorCitpbnQgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6c3RyaWRlKHVuc2lnbmVk
IHBsYW5lKSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVy
biBtX3dlYlZpZGVvRnJhbWUtPnN0cmlkZShwbGFuZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQqIFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OmRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0Cit7
CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlkZW9GcmFt
ZS0+ZGF0YShwbGFuZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZmMyZWZmYzQ4MDQ3YzA1Zjk5ODBmNzQ1NzY5NmExNDM5MGQzYmVkCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9GcmFtZUNocm9taXVtSW1wbF9oCisjZGVmaW5lIFZp
ZGVvRnJhbWVDaHJvbWl1bUltcGxfaAorCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgi
CisjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8g
QSB3cmFwcGVyIGNsYXNzIGZvciBXZWJLaXQ6OldlYlZpZGVvRnJhbWUuIE9iamVjdHMgY2FuIGJl
IGNyZWF0ZWQgaW4gV2ViS2l0CisvLyBhbmQgdXNlZCBpbiBXZWJDb3JlIGJlY2F1c2Ugb2YgdGhl
IFZpZGVvRnJhbWVDaHJvbWl1bSBpbnRlcmZhY2UuCitjbGFzcyBWaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsIDogcHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWVDaHJvbWl1bSB7CisKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgV2ViVmlkZW9GcmFtZSogdG9XZWJWaWRlb0ZyYW1lKFdlYkNvcmU6OlZpZGVvRnJh
bWVDaHJvbWl1bSogdmlkZW9GcmFtZSk7CisgICAgVmlkZW9GcmFtZUNocm9taXVtSW1wbChXZWJW
aWRlb0ZyYW1lKiB3ZWJWaWRlb0ZyYW1lKTsKKyAgICBTdXJmYWNlVHlwZSB0eXBlKCkgY29uc3Q7
CisgICAgdmlydHVhbCBGb3JtYXQgZm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25l
ZCB3aWR0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB1bnNpZ25lZCBwbGFuZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBzdHJp
ZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCogZGF0YSh1bnNpZ25l
ZCBwbGFuZSkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViVmlkZW9GcmFtZSogbV93ZWJWaWRl
b0ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDhmMjEw
YTBmM2JlNzcxYWQyYTcyMzljYWNjZDk0ODQ4MjY2MWQwZjkuLmYwZWNlMGQ3NTIxYmQ2ZjlkMWQy
MmFmMTUyOTBhNmQ2ZmY3ODQ2MmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTIyLDYgKzIyLDggQEAKICNpbmNsdWRlICJSZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCIKICNlbmRpZgogCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9t
aXVtLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oIgogI2luY2x1ZGUgIldl
YkNhbnZhcy5oIgogI2luY2x1ZGUgIldlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNs
aWVudC5oIgpAQCAtNDE2LDYgKzQxOCwyOCBAQCBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6Om1vdmllTG9hZFR5cGUoKSBjb25zdAogICAgIHJldHVy
biBNZWRpYVBsYXllcjo6VW5rbm93bjsKIH0KIAorVmlkZW9GcmFtZUNocm9taXVtKiBXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OmdldEN1cnJlbnRGcmFtZSgpCit7CisgICAgVmlkZW9GcmFtZUNo
cm9taXVtKiB2aWRlb0ZyYW1lID0gMDsKKyAgICBpZiAobV93ZWJNZWRpYVBsYXllci5nZXQoKSkg
eworICAgICAgICBXZWJWaWRlb0ZyYW1lKiB3ZWJraXRWaWRlb0ZyYW1lID0gbV93ZWJNZWRpYVBs
YXllci0+Z2V0Q3VycmVudEZyYW1lKCk7CisgICAgICAgIGlmICh3ZWJraXRWaWRlb0ZyYW1lKQor
ICAgICAgICAgICAgdmlkZW9GcmFtZSA9IG5ldyBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKHdlYmtp
dFZpZGVvRnJhbWUpOworICAgIH0KKyAgICByZXR1cm4gdmlkZW9GcmFtZTsKK30KKwordm9pZCBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnB1dEN1cnJlbnRGcmFtZShWaWRlb0ZyYW1lQ2hyb21p
dW0qIHZpZGVvRnJhbWUpCit7CisgICAgaWYgKHZpZGVvRnJhbWUpIHsKKyAgICAgICAgaWYgKG1f
d2ViTWVkaWFQbGF5ZXIuZ2V0KCkpIHsKKyAgICAgICAgICAgIG1fd2ViTWVkaWFQbGF5ZXItPnB1
dEN1cnJlbnRGcmFtZSgKKyAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0
b1dlYlZpZGVvRnJhbWUodmlkZW9GcmFtZSkpOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSB2
aWRlb0ZyYW1lOworICAgIH0KK30KKwogTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OmNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyKQogewogICAg
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCogY2xpZW50ID0gbmV3IFdlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbCgpOwpAQCAtNDMzLDcgKzQ1Nyw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZSogV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllCiAg
ICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5oYXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nKCk7CiAKICAgICBpZiAoY2xpZW50LT5tX3N1cHBvcnRzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZykKLSAgICAgICAgY2xpZW50LT5tX3ZpZGVvTGF5ZXIgPSBWaWRlb0xheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICAgICAgY2xpZW50LT5tX3ZpZGVvTGF5ZXIgPSBWaWRl
b0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwLCBjbGllbnQpOwogI2VuZGlmCiAKICAgICByZXR1cm4g
Y2xpZW50OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmgKaW5kZXggZGYxNzlhODU1NDA1NDY3NjBjMjgzMzM3YTY2ZDNkYTMxZDgyOTQ4Yi4uYzM3ZWI5
YzhlMGQ4ZGVhYTEwZjhmYWE3M2I4NWNkYWQ1ODU1MzYyOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC0zNCw2ICszNCw4IEBACiAjaWYg
RU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCisjaW5jbHVk
ZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZVByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAKQEAgLTQ0LDggKzQ2LDEwIEBAIGNsYXNzIFdlYk1lZGlhUGxheWVyOwogCiAvLyBUaGlz
IGNsYXNzIHNlcnZlcyBhcyBhIGJyaWRnZSBiZXR3ZWVuIFdlYkNvcmU6Ok1lZGlhUGxheWVyIGFu
ZAogLy8gV2ViS2l0OjpXZWJNZWRpYVBsYXllci4KLWNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbCA6IHB1YmxpYyBXZWJNZWRpYVBsYXllckNsaWVudAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICwgcHVibGljIFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7
CitjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBw
dWJsaWMgV2ViQ29yZTo6VmlkZW9GcmFtZVByb3ZpZGVyCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLCBwdWJsaWMgV2ViTWVkaWFQbGF5ZXJDbGllbnQgeworCiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNFbmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0SXNFbmFibGVkKGJv
b2wpOwpAQCAtMTEwLDYgKzExNCwyMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdDsKIAorICAg
IC8vIFZpZGVvRnJhbWVQcm92aWRlciBtZXRob2RzOgorCisgICAgLy8gVGhpcyBmdW5jdGlvbiBy
ZXR1cm5zIGEgcG9pbnRlciB0byBhIFZpZGVvRnJhbWVDaHJvbWl1bSwgd2hpY2ggaXMKKyAgICAv
LyB0aGUgV2ViQ29yZSB3cmFwcGVyIGZvciBhIG1lZGlhOjpWaWRlb0ZyYW1lIGluIGNocm9taXVt
LiBUaGlzIHBsYWNlcyBhCisgICAgLy8gbG9jayBvbiB0aGUgZnJhbWUgaW4gY2hyb21pdW0sIGFu
ZCBjYWxscyB0byB0aGlzIG1ldGhvZCBzaG91bGQgYWx3YXlzIGJlCisgICAgLy8gZm9sbG93ZWQg
d2l0aCBhIGNhbGwgdG8gcHV0Q3VycmVudEZyYW1lKCkuIFRoZSBvd25lcnNoaXAgb2YgdGhlIG9i
amVjdCBpcworICAgIC8vIG5vdCB0cmFuc2ZlcnJlZCB0byB0aGUgY2FsbGVyIGFuZCB0aGUgY2Fs
bGVyIHNob3VsZCBub3QgZnJlZSB0aGUgcmV0dXJuZWQKKyAgICAvLyBvYmplY3QuCisgICAgdmly
dHVhbCBXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW0qIGdldEN1cnJlbnRGcmFtZSgpOworICAg
IC8vIFRoaXMgZnVuY3Rpb24gdW5sb2NrcyBhbmQgZnJlZXMgZ2l2ZW4gdmlkZW8gZnJhbWUuIEl0
IHNob3VsZCBhbHdheXMgYmUKKyAgICAvLyBjYWxsZWQgYWZ0ZXIgZ2V0Q3VycmVudEZyYW1lKCku
IEZyYW1lcyBwYXNzZWQgaW50byB0aGlzIG1ldGhvZCBzaG91bGQgbm8KKyAgICAvLyBsb25nZXIg
YmUgcmVmZXJlbmNlZCBhZnRlciB0aGUgY2FsbCBpcyBtYWRlLgorICAgIHZpcnR1YWwgdm9pZCBw
dXRDdXJyZW50RnJhbWUoV2ViQ29yZTo6VmlkZW9GcmFtZUNocm9taXVtKiB2aWRlb0ZyYW1lKTsK
KwogcHJpdmF0ZToKICAgICBXZWJNZWRpYVBsYXllckNsaWVudEltcGwoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65337</attachid>
            <date>2010-08-24 15:58:05 -0700</date>
            <delta_ts>2010-08-25 11:07:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44539-20100824155804.patch</filename>
            <type>text/plain</type>
            <size>25653</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njk5ZjRlMGM2ZWFkMzFhNDg2YWNmZmJmNzhkODlhN2I3ZTllY2QxMC4uZTdjODRjZmRlOWI4NWFi
YTBjNDQ3YjhkZGZhYTNiZTI1ODA3ZGNhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wOC0yNCAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBtZWFucyBvZiBjb21tdW5pY2F0aW9uIGJl
dHdlZW4gV2ViS2l0L1dlYkNvcmUgYW5kCisgICAgICAgIGNocm9taXVtIGluIG9yZGVyIHRvIHNo
YXJlIHZpZGVvIGZyYW1lcy4gVGhpcyBhZGRzIHRoZSBuZWNlc3NhcnkKKyAgICAgICAgV2ViS2l0
LXNpZGUgY2xhc3NlcyBhbmQgbWV0aG9kcywgYnV0IGRvZXMgbm90IGFjdHVhbGx5IHVzZSB0aGVt
CisgICAgICAgIHlldCAtIHRoYXQgd2lsbCBiZSBjb21taXR0ZWQgaW4gYSBzZXBhcmF0ZSBwYXRj
aCBhZnRlciB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBDaHJvbWl1bSBzaWRlIGlzIGNvbW1p
dHRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ1MzkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZXNlIG5ldyBjbGFzc2VzL0FQSXMg
YXJlIG5vdCB5ZXQgdXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvRnJhbWVDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWVDaHJvbWl1bTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0ZyYW1lUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMC0wOC0yNCAgSm9zZXBoIFBlY29yYXJv
ICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFt
ZUNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJh
bWVDaHJvbWl1bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0ODIzZWI0ZWE3ZDU4MjRhYmE2ZmZjMWYzNjllZTM0
ZDg1MTgxODAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVv
RnJhbWVDaHJvbWl1bV9oCisjZGVmaW5lIFZpZGVvRnJhbWVDaHJvbWl1bV9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB2aWRlbyBmcmFtZSBp
biBjaHJvbWl1bS4KK2NsYXNzIFZpZGVvRnJhbWVDaHJvbWl1bSB7CisKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY01heFBsYW5lczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY051bVJHQlBsYW5lczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY1JHQlBsYW5lOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjTnVtWVVWUGxhbmVzOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjWVBsYW5lOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjVVBsYW5lOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjVlBsYW5lOworCisgICAgLy8gVGhlc2UgZW51bXMg
bXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBtZWRpYTo6VmlkZW9Gb3JtYXQuCisgICAgZW51bSBG
b3JtYXQgeworICAgICAgICBJbnZhbGlkLAorICAgICAgICBSR0I1NTUsCisgICAgICAgIFJHQjU2
NSwKKyAgICAgICAgUkdCMjQsCisgICAgICAgIFJHQjMyLAorICAgICAgICBSR0JBLAorICAgICAg
ICBZVjEyLAorICAgICAgICBZVjE2LAorICAgICAgICBOVjEyLAorICAgICAgICBFbXB0eSwKKyAg
ICAgICAgQVNDSUksCisgICAgfTsKKworICAgIGVudW0gU3VyZmFjZVR5cGUgeworICAgICAgICBU
eXBlU3lzdGVtTWVtb3J5LAorICAgICAgICBUeXBlT01YQnVmZmVySGVhZCwKKyAgICAgICAgVHlw
ZUVHTEltYWdlLAorICAgICAgICBUeXBlTUZCdWZmZXIsCisgICAgICAgIFR5cGVEaXJlY3QzRFN1
cmZhY2UKKyAgICB9OworCitwdWJsaWM6CisgICAgdmlydHVhbCBTdXJmYWNlVHlwZSB0eXBlKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgRm9ybWF0IGZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQg
aGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdiZWM0OTM5NDkxZGJlY2RlZTFkYmQyZDNhNzM0NTE0NGVkZTM2YTcKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRl
ci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvRnJhbWVQcm92aWRlcl9oCisjZGVmaW5l
IFZpZGVvRnJhbWVQcm92aWRlcl9oCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb0ZyYW1lUHJvdmlkZXIgeworCitw
dWJsaWM6CisgICAgdmlydHVhbCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGdldEN1cnJlbnRGcmFtZSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1
bSopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggZWJiOGJjZWQxZTI2NjRkMWU5NTU1M2MyZDk4NjI1YjRmNTVhZmFiYi4u
N2ZmOThiOTNmZDAzYWRhMmRhNjhmYzRkMWY2ZTI5YjU3NDBmZjRiZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVt
LmNwcApAQCAtNDgsMTggKzQ4LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4g
VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVmlkZW9MYXllckNocm9taXVtKG93bmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBW
aWRlb0xheWVyQ2hyb21pdW0ob3duZXIsIHByb3ZpZGVyKSk7CiB9CiAKLVZpZGVvTGF5ZXJDaHJv
bWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitW
aWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21p
dW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogICAgIDogQ29udGVudExh
eWVyQ2hyb21pdW0ob3duZXIpCiAjaWYgUExBVEZPUk0oU0tJQSkKICAgICAsIG1fY2FudmFzKDAp
CiAgICAgLCBtX3NraWFDb250ZXh0KDApCiAjZW5kaWYKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0
KDApCisgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRl
eCBiMDYyZTYyOGZkYjhhODM2NzYzNzU3OTZiYTEyNTEwYjQ2MWY0N2RmLi4zNTA3Y2IyMGNmMTdl
NzkzMzEyZDZlZWIzZTk1M2I3ZjhjZWJmMjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTM1LDE4ICsz
NSwyMCBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkNv
bnRlbnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZVByb3ZpZGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIGEgVmlkZW8g
ZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDb250ZW50TGF5ZXJD
aHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9t
aXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDApOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bSogb3duZXIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogPSAwKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJh
d3NDb250ZW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250
ZW50cygpOwogCiBwcml2YXRlOgotICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG93bmVyKTsKKyAgICBWaWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lciwgVmlkZW9GcmFtZVByb3ZpZGVyKik7CiAgICAgdm9pZCBjcmVhdGVUZXh0
dXJlUmVjdChjb25zdCBJbnRTaXplJiByZXF1aXJlZFRleHR1cmVTaXplLCBjb25zdCBJbnRSZWN0
JiB1cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkKTsKICAg
ICB2b2lkIHVwZGF0ZUNvbXBsZXRlZCgpOwpAQCAtNTYsNiArNTgsNyBAQCBwcml2YXRlOgogICAg
IE93blB0cjxQbGF0Zm9ybUNvbnRleHRTa2lhPiBtX3NraWFDb250ZXh0OwogI2VuZGlmCiAgICAg
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gbV9ncmFwaGljc0NvbnRleHQ7CisgICAgT3duUHRyPFZp
ZGVvRnJhbWVQcm92aWRlcj4gbV9wcm92aWRlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDEw
ZDg1OWJkMTc3NGU5M2UzYWZiOTMxZDhjZjRiMTQ2MmZlZjRmOTAuLmNkMDgxOGM0YzYyYWJiOWIz
NDcyZDk1YTdmMzU1MmQ3NjE4NTVjNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisy
MDEwLTA4LTI0ICBWaWN0b3JpYSBLaXJzdCAgPHZya0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBhIHdheSB0byBjb21t
dW5pY2F0ZSB2aWRlbyBmcmFtZXMgYmV0d2VlbiBDaHJvbWl1bSBhbmQgV2ViS2l0LgorICAgICAg
ICBUaGUgV2ViS2l0IHNpZGUgYWN0cyBhcyBhIG1pZGRsZW1hbiBiZXR3ZWVuIENocm9taXVtIGFu
ZCBXZWJDb3JlLgorICAgICAgICBUaGUgVmlkZW9GcmFtZUNocm9taXVtSW1wbCBpcyBub3QgYmVp
bmcgdXNlZCBieSBXZWJDb3JlIHlldCwgYXMgdGhlcmUKKyAgICAgICAgc3RpbGwgbmVlZHMgdG8g
YmUgYW4gaW1wbGVtZW50YXRpb24gb2YgV2ViVmlkZW9GcmFtZSBpbiBDaHJvbWl1bQorICAgICAg
ICAtLSBjb21pbmcgc29vbiBpbiBhIHN1YnNlcXVlbnQgcGF0Y2guCisKKyAgICAgICAgQVBJIGNo
YW5nZXMgZm9yIFZpZGVvIEZyYW1lIHNoYXJpbmcgYmV0d2VlbiBXZWJLaXQgYW5kIENocm9taXVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDUzOQor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OmdldEN1cnJlbnRGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyOjpwdXRDdXJyZW50RnJhbWUpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJWaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9WaWRlb0Zy
YW1lQ2hyb21pdW1JbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnJhbWVD
aHJvbWl1bUltcGw6OnRvV2ViVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnJh
bWVDaHJvbWl1bUltcGw6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGwpOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0eXBlKToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9G
cmFtZUNocm9taXVtSW1wbDo6Zm9ybWF0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GcmFtZUNo
cm9taXVtSW1wbDo6d2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsOjpoZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpw
bGFuZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpzdHJpZGUp
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpkYXRhKToKKyAgICAg
ICAgKiBzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpnZXRDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnB1dEN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDgtMjQgIEppYW4gTGkgIDxqaWFubGlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKaW5kZXggNTY0YjlmOTgxNjEyMDdmOWQyN2I1OGE5NDZkYjEzMjI4ODNmZGE5ZS4uOTQ0M2Q4
ZWVhYWFkZTJmNWY0MzRmMjZhMGEwYzcwNTRlYjRiOTQ4OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM4
Miw2ICszODIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9UZW1wb3JhcnlHbHVlLmgnLAorICAgICAgICAgICAgICAgICdz
cmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvVmlk
ZW9GcmFtZUNocm9taXVtSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFjY2Vzc2li
aWxpdHlDYWNoZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0eUNh
Y2hlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0eUNhY2hl
SW1wbC5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5
ZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCA2ZjUx
MzQ1ZDA3NGVlZGQ3YzE5OWUxMGMzOGEzOTlmOWJkMGRhNTk1Li5jZTYzNTc5NjAxODliMjhhNzU4
OTE2Y2IyNjk4NzZkOWY4ZDE1NWM4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYk1lZGlhUGxheWVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBs
YXllci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNs
dWRlICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0ZyYW1lLmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC0xMjcsNiArMTI4LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1v
dmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIEZvciBnZXR0
aW5nIGZyYW1lcyB0byBhbmQgZnJvbSBtZWRpYSBwbGF5ZXIuCisgICAgLy8gRklYTUU6IFdpbGwg
YmUgbWFkZSBwdXJlIHZpcnR1YWwgd2hlbiBBUEkgY2hhbmdlcyBhcmUgZnVsbHkgbGFuZGVkLgor
ICAgIHZpcnR1YWwgV2ViVmlkZW9GcmFtZSogZ2V0Q3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSopIHt9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlkZW9GcmFtZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0Zy
YW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMThiMjU5ZDdjMjEwYjJmNjhjZjQzNGNiZDMxOWExOTdjYjllYWQy
OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFt
ZS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgV2ViVmlkZW9GcmFtZV9oCisjZGVmaW5lIFdl
YlZpZGVvRnJhbWVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQSBwcm94eSB2aWRlbyBm
cmFtZSBpbnRlcmZhY2UgdG8gY29tbXVuaWNhdGUgZnJhbWUgZGF0YSBiZXR3ZWVuIGNocm9taXVt
CisvLyBhbmQgV2ViS2l0LgorY2xhc3MgV2ViVmlkZW9GcmFtZSB7CisKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIHVuc2lnbmVkIHR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBm
b3JtYXQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHVuc2lnbmVkIHBsYW5lcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBzdHJpZGUodW5z
aWduZWQgcGxhbmUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQqIGRhdGEodW5zaWduZWQg
cGxhbmUpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4ODdkOTczNDkyOTE5ZWJiZWE3NTNlOGM2NjQ3OGJkMmE5ODU5ZWIKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3Bw
CkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZGVvRnJh
bWVDaHJvbWl1bUltcGwuaCIKKworI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IHVu
c2lnbmVkIGNNYXhQbGFuZXMgPSAzOworY29uc3QgdW5zaWduZWQgY051bVJHQlBsYW5lcyA9IDE7
Citjb25zdCB1bnNpZ25lZCBjUkdCUGxhbmUgPSAwOworY29uc3QgdW5zaWduZWQgY051bVlVVlBs
YW5lcyA9IDM7Citjb25zdCB1bnNpZ25lZCBjWVBsYW5lID0gMDsKK2NvbnN0IHVuc2lnbmVkIGNV
UGxhbmUgPSAxOworY29uc3QgdW5zaWduZWQgY1ZQbGFuZSA9IDI7CisKK1dlYlZpZGVvRnJhbWUq
IFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnRvV2ViVmlkZW9GcmFtZShXZWJDb3JlOjpWaWRlb0Zy
YW1lQ2hyb21pdW0qIHZpZGVvRnJhbWUpCit7CisgICAgVmlkZW9GcmFtZUNocm9taXVtSW1wbCog
d3JhcHBlZEZyYW1lID0gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZUNocm9taXVtSW1wbCo+KHZpZGVv
RnJhbWUpOworICAgIGlmICh3cmFwcGVkRnJhbWUpCisgICAgICAgIHJldHVybiB3cmFwcGVkRnJh
bWUtPm1fd2ViVmlkZW9GcmFtZTsKKyAgICByZXR1cm4gMDsKK30KKworVmlkZW9GcmFtZUNocm9t
aXVtSW1wbDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbChXZWJWaWRlb0ZyYW1lKiB3ZWJWaWRlb0Zy
YW1lKSA6CisgICAgbV93ZWJWaWRlb0ZyYW1lKHdlYlZpZGVvRnJhbWUpCit7Cit9CisKK1dlYkNv
cmU6OlZpZGVvRnJhbWVDaHJvbWl1bTo6U3VyZmFjZVR5cGUgVmlkZW9GcmFtZUNocm9taXVtSW1w
bDo6dHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFZpZGVvRnJhbWVDaHJvbWl1bTo6U3VyZmFjZVR5cGU+KG1fd2ViVmlk
ZW9GcmFtZS0+dHlwZSgpKTsKKyAgICByZXR1cm4gVHlwZVN5c3RlbU1lbW9yeTsKK30KKworV2Vi
Q29yZTo6VmlkZW9GcmFtZUNocm9taXVtOjpGb3JtYXQgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6
Zm9ybWF0KCkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRlb0ZyYW1lKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZUNocm9taXVtOjpGb3JtYXQ+KG1fd2ViVmlkZW9GcmFt
ZS0+Zm9ybWF0KCkpOworICAgIHJldHVybiBJbnZhbGlkOworfQorCit1bnNpZ25lZCBWaWRlb0Zy
YW1lQ2hyb21pdW1JbXBsOjp3aWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFt
ZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlkZW9GcmFtZS0+d2lkdGgoKTsKKyAgICByZXR1cm4g
MDsKK30KKwordW5zaWduZWQgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6aGVpZ2h0KCkgY29uc3QK
K3sKKyAgICBpZiAobV93ZWJWaWRlb0ZyYW1lKQorICAgICAgICByZXR1cm4gbV93ZWJWaWRlb0Zy
YW1lLT5oZWlnaHQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgVmlkZW9GcmFtZUNo
cm9taXVtSW1wbDo6cGxhbmVzKCkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRlb0ZyYW1lKQor
ICAgICAgICByZXR1cm4gbV93ZWJWaWRlb0ZyYW1lLT5wbGFuZXMoKTsKKyAgICByZXR1cm4gMDsK
K30KKworaW50IFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnN0cmlkZSh1bnNpZ25lZCBwbGFuZSkg
Y29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRlb0ZyYW1lKQorICAgICAgICByZXR1cm4gbV93ZWJW
aWRlb0ZyYW1lLT5zdHJpZGUocGxhbmUpOworICAgIHJldHVybiAwOworfQorCit2b2lkKiBWaWRl
b0ZyYW1lQ2hyb21pdW1JbXBsOjpkYXRhKHVuc2lnbmVkIHBsYW5lKSBjb25zdAoreworICAgIGlm
IChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYlZpZGVvRnJhbWUtPmRhdGEo
cGxhbmUpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE2
MDExN2ZiZDBmY2MxMzU1YjliMjhlNmFmYTIyMDZjNWFmYTI0MgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oCkBAIC0wLDAgKzEs
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFZpZGVvRnJhbWVDaHJvbWl1bUltcGxfaAorI2RlZmluZSBWaWRlb0ZyYW1l
Q2hyb21pdW1JbXBsX2gKKworI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgorI2luY2x1
ZGUgIldlYlZpZGVvRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEEgd3JhcHBl
ciBjbGFzcyBmb3IgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lLiBPYmplY3RzIGNhbiBiZSBjcmVhdGVk
IGluIFdlYktpdAorLy8gYW5kIHVzZWQgaW4gV2ViQ29yZSBiZWNhdXNlIG9mIHRoZSBWaWRlb0Zy
YW1lQ2hyb21pdW0gaW50ZXJmYWNlLgorY2xhc3MgVmlkZW9GcmFtZUNocm9taXVtSW1wbCA6IHB1
YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW0geworCitwdWJsaWM6CisgICAgc3RhdGlj
IFdlYlZpZGVvRnJhbWUqIHRvV2ViVmlkZW9GcmFtZShXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21p
dW0qKTsKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKFdlYlZpZGVvRnJhbWUqKTsKKyAgICBT
dXJmYWNlVHlwZSB0eXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBGb3JtYXQgZm9ybWF0KCkgY29u
c3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5z
aWduZWQgaGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBwbGFuZXMoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGludCBzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
V2ViVmlkZW9GcmFtZSogbV93ZWJWaWRlb0ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBs
YXllckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCmluZGV4IDhmMjEwYTBmM2JlNzcxYWQyYTcyMzljYWNjZDk0ODQ4MjY2MWQw
ZjkuLmYwZWNlMGQ3NTIxYmQ2ZjlkMWQyMmFmMTUyOTBhNmQ2ZmY3ODQ2MmEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTIyLDYg
KzIyLDggQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNlbmRpZgogCisj
aW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9t
aXVtSW1wbC5oIgogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2luY2x1ZGUgIldlYkNTdHJpbmcu
aCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgpAQCAtNDE2LDYgKzQxOCwyOCBAQCBNZWRp
YVBsYXllcjo6TW92aWVMb2FkVHlwZSBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6Om1vdmllTG9h
ZFR5cGUoKSBjb25zdAogICAgIHJldHVybiBNZWRpYVBsYXllcjo6VW5rbm93bjsKIH0KIAorVmlk
ZW9GcmFtZUNocm9taXVtKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdldEN1cnJlbnRGcmFt
ZSgpCit7CisgICAgVmlkZW9GcmFtZUNocm9taXVtKiB2aWRlb0ZyYW1lID0gMDsKKyAgICBpZiAo
bV93ZWJNZWRpYVBsYXllci5nZXQoKSkgeworICAgICAgICBXZWJWaWRlb0ZyYW1lKiB3ZWJraXRW
aWRlb0ZyYW1lID0gbV93ZWJNZWRpYVBsYXllci0+Z2V0Q3VycmVudEZyYW1lKCk7CisgICAgICAg
IGlmICh3ZWJraXRWaWRlb0ZyYW1lKQorICAgICAgICAgICAgdmlkZW9GcmFtZSA9IG5ldyBWaWRl
b0ZyYW1lQ2hyb21pdW1JbXBsKHdlYmtpdFZpZGVvRnJhbWUpOworICAgIH0KKyAgICByZXR1cm4g
dmlkZW9GcmFtZTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnB1dEN1cnJl
bnRGcmFtZShWaWRlb0ZyYW1lQ2hyb21pdW0qIHZpZGVvRnJhbWUpCit7CisgICAgaWYgKHZpZGVv
RnJhbWUpIHsKKyAgICAgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIuZ2V0KCkpIHsKKyAgICAgICAg
ICAgIG1fd2ViTWVkaWFQbGF5ZXItPnB1dEN1cnJlbnRGcmFtZSgKKyAgICAgICAgICAgICAgICBW
aWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0b1dlYlZpZGVvRnJhbWUodmlkZW9GcmFtZSkpOworICAg
ICAgICB9CisgICAgICAgIGRlbGV0ZSB2aWRlb0ZyYW1lOworICAgIH0KK30KKwogTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmNyZWF0ZShNZWRp
YVBsYXllciogcGxheWVyKQogewogICAgIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCogY2xpZW50
ID0gbmV3IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCgpOwpAQCAtNDMzLDcgKzQ1Nyw3IEBAIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjcmVh
dGUoTWVkaWFQbGF5ZXIqIHBsYXllCiAgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+
Y29tcG9zaXRvcigpLT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CiAKICAgICBpZiAoY2xp
ZW50LT5tX3N1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZykKLSAgICAgICAgY2xpZW50LT5t
X3ZpZGVvTGF5ZXIgPSBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICAgICAgY2xp
ZW50LT5tX3ZpZGVvTGF5ZXIgPSBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZSgwLCBjbGllbnQp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gY2xpZW50OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5kZXggZGYxNzlhODU1NDA1NDY3NjBjMjgzMzM3
YTY2ZDNkYTMxZDgyOTQ4Yi4uMWY1YzA3N2NiMmJiODhjNmNjNDIyZTlmODM2ZGFkNTBmNmI1ZTA2
NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5o
CkBAIC0zNCw2ICszNCw4IEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCisjaW5jbHVk
ZSAiVmlkZW9GcmFtZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnQu
aCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTQ0LDggKzQ2LDEwIEBAIGNsYXNzIFdl
Yk1lZGlhUGxheWVyOwogCiAvLyBUaGlzIGNsYXNzIHNlcnZlcyBhcyBhIGJyaWRnZSBiZXR3ZWVu
IFdlYkNvcmU6Ok1lZGlhUGxheWVyIGFuZAogLy8gV2ViS2l0OjpXZWJNZWRpYVBsYXllci4KLWNs
YXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJNZWRpYVBsYXllckNsaWVu
dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CitjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudEltcGwg
OiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViQ29yZTo6VmlkZW9GcmFtZVByb3ZpZGVy
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViTWVkaWFQbGF5ZXJD
bGllbnQgeworCiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNFbmFibGVkKCk7CiAgICAgc3Rh
dGljIHZvaWQgc2V0SXNFbmFibGVkKGJvb2wpOwpAQCAtMTEwLDYgKzExNCwyMCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmll
TG9hZFR5cGUoKSBjb25zdDsKIAorICAgIC8vIFZpZGVvRnJhbWVQcm92aWRlciBtZXRob2RzOgor
CisgICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgcG9pbnRlciB0byBhIFZpZGVvRnJhbWVD
aHJvbWl1bSwgd2hpY2ggaXMKKyAgICAvLyB0aGUgV2ViQ29yZSB3cmFwcGVyIGZvciBhIG1lZGlh
OjpWaWRlb0ZyYW1lIGluIGNocm9taXVtLiBUaGlzIHBsYWNlcyBhCisgICAgLy8gbG9jayBvbiB0
aGUgZnJhbWUgaW4gY2hyb21pdW0sIGFuZCBjYWxscyB0byB0aGlzIG1ldGhvZCBzaG91bGQgYWx3
YXlzIGJlCisgICAgLy8gZm9sbG93ZWQgd2l0aCBhIGNhbGwgdG8gcHV0Q3VycmVudEZyYW1lKCku
IFRoZSBvd25lcnNoaXAgb2YgdGhlIG9iamVjdCBpcworICAgIC8vIG5vdCB0cmFuc2ZlcnJlZCB0
byB0aGUgY2FsbGVyIGFuZCB0aGUgY2FsbGVyIHNob3VsZCBub3QgZnJlZSB0aGUgcmV0dXJuZWQK
KyAgICAvLyBvYmplY3QuCisgICAgdmlydHVhbCBXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW0q
IGdldEN1cnJlbnRGcmFtZSgpOworICAgIC8vIFRoaXMgZnVuY3Rpb24gdW5sb2NrcyBhbmQgZnJl
ZXMgZ2l2ZW4gdmlkZW8gZnJhbWUuIEl0IHNob3VsZCBhbHdheXMgYmUKKyAgICAvLyBjYWxsZWQg
YWZ0ZXIgZ2V0Q3VycmVudEZyYW1lKCkuIEZyYW1lcyBwYXNzZWQgaW50byB0aGlzIG1ldGhvZCBz
aG91bGQgbm8KKyAgICAvLyBsb25nZXIgYmUgcmVmZXJlbmNlZCBhZnRlciB0aGUgY2FsbCBpcyBt
YWRlLgorICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViQ29yZTo6VmlkZW9GcmFt
ZUNocm9taXVtKik7CisKIHByaXZhdGU6CiAgICAgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKCk7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65439</attachid>
            <date>2010-08-25 11:07:25 -0700</date>
            <delta_ts>2010-08-25 14:49:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44539-20100825110724.patch</filename>
            <type>text/plain</type>
            <size>28961</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njk5ZjRlMGM2ZWFkMzFhNDg2YWNmZmJmNzhkODlhN2I3ZTllY2QxMC4uZTdjODRjZmRlOWI4NWFi
YTBjNDQ3YjhkZGZhYTNiZTI1ODA3ZGNhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wOC0yNCAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBtZWFucyBvZiBjb21tdW5pY2F0aW9uIGJl
dHdlZW4gV2ViS2l0L1dlYkNvcmUgYW5kCisgICAgICAgIGNocm9taXVtIGluIG9yZGVyIHRvIHNo
YXJlIHZpZGVvIGZyYW1lcy4gVGhpcyBhZGRzIHRoZSBuZWNlc3NhcnkKKyAgICAgICAgV2ViS2l0
LXNpZGUgY2xhc3NlcyBhbmQgbWV0aG9kcywgYnV0IGRvZXMgbm90IGFjdHVhbGx5IHVzZSB0aGVt
CisgICAgICAgIHlldCAtIHRoYXQgd2lsbCBiZSBjb21taXR0ZWQgaW4gYSBzZXBhcmF0ZSBwYXRj
aCBhZnRlciB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBDaHJvbWl1bSBzaWRlIGlzIGNvbW1p
dHRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ1MzkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZXNlIG5ldyBjbGFzc2VzL0FQSXMg
YXJlIG5vdCB5ZXQgdXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvRnJhbWVDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWVDaHJvbWl1bTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0ZyYW1lUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMC0wOC0yNCAgSm9zZXBoIFBlY29yYXJv
ICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFt
ZUNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJh
bWVDaHJvbWl1bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlZmNhODZlNDRmMTlmMGQzODRjNTZiZTk1YWRmYjUz
ZDlkNzJiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVv
RnJhbWVDaHJvbWl1bV9oCisjZGVmaW5lIFZpZGVvRnJhbWVDaHJvbWl1bV9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB2aWRlbyBmcmFtZSBp
biBjaHJvbWl1bS4KK2NsYXNzIFZpZGVvRnJhbWVDaHJvbWl1bSB7CisKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY01heFBsYW5lczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY051bVJHQlBsYW5lczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY1JHQlBsYW5lOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjTnVtWVVWUGxhbmVzOworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjWVBsYW5lOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjVVBsYW5lOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjVlBsYW5lOworCisgICAgLy8gVGhlc2UgZW51bXMg
bXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUuCisgICAgZW51
bSBGb3JtYXQgeworICAgICAgICBJbnZhbGlkLAorICAgICAgICBSR0I1NTUsCisgICAgICAgIFJH
QjU2NSwKKyAgICAgICAgUkdCMjQsCisgICAgICAgIFJHQjMyLAorICAgICAgICBSR0JBLAorICAg
ICAgICBZVjEyLAorICAgICAgICBZVjE2LAorICAgICAgICBOVjEyLAorICAgICAgICBFbXB0eSwK
KyAgICAgICAgQVNDSUksCisgICAgfTsKKworICAgIGVudW0gU3VyZmFjZVR5cGUgeworICAgICAg
ICBUeXBlU3lzdGVtTWVtb3J5LAorICAgICAgICBUeXBlT01YQnVmZmVySGVhZCwKKyAgICAgICAg
VHlwZUVHTEltYWdlLAorICAgICAgICBUeXBlTUZCdWZmZXIsCisgICAgICAgIFR5cGVEaXJlY3Qz
RFN1cmZhY2UKKyAgICB9OworCitwdWJsaWM6CisgICAgdmlydHVhbCBTdXJmYWNlVHlwZSB0eXBl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRm9ybWF0IGZvcm1hdCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgaGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdiZWM0OTM5NDkxZGJlY2RlZTFkYmQyZDNhNzM0NTE0NGVkZTM2YTcKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92
aWRlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvRnJhbWVQcm92aWRlcl9oCisjZGVm
aW5lIFZpZGVvRnJhbWVQcm92aWRlcl9oCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb0ZyYW1lUHJvdmlkZXIgewor
CitwdWJsaWM6CisgICAgdmlydHVhbCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGdldEN1cnJlbnRGcmFt
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFZpZGVvRnJhbWVDaHJv
bWl1bSopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggZWJiOGJjZWQxZTI2NjRkMWU5NTU1M2MyZDk4NjI1YjRmNTVhZmFi
Yi4uN2ZmOThiOTNmZDAzYWRhMmRhNjhmYzRkMWY2ZTI5YjU3NDBmZjRiZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmNwcApAQCAtNDgsMTggKzQ4LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1
bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25l
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVmlkZW9MYXllckNocm9taXVtKG93bmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBWaWRlb0xheWVyQ2hyb21pdW0ob3duZXIsIHByb3ZpZGVyKSk7CiB9CiAKLVZpZGVvTGF5ZXJD
aHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIp
CitWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hy
b21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogICAgIDogQ29udGVu
dExheWVyQ2hyb21pdW0ob3duZXIpCiAjaWYgUExBVEZPUk0oU0tJQSkKICAgICAsIG1fY2FudmFz
KDApCiAgICAgLCBtX3NraWFDb250ZXh0KDApCiAjZW5kaWYKICAgICAsIG1fZ3JhcGhpY3NDb250
ZXh0KDApCisgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogewogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApp
bmRleCBiMDYyZTYyOGZkYjhhODM2NzYzNzU3OTZiYTEyNTEwYjQ2MWY0N2RmLi4zNTA3Y2IyMGNm
MTdlNzkzMzEyZDZlZWIzZTk1M2I3ZjhjZWJmMjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTM1LDE4
ICszNSwyMCBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUg
IkNvbnRlbnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZVByb3ZpZGVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIGEgVmlk
ZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDb250ZW50TGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNo
cm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDApOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bSogb3duZXIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogPSAwKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b250ZW50cygpOwogCiBwcml2YXRlOgotICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xh
eWVyQ2hyb21pdW0qIG93bmVyKTsKKyAgICBWaWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXll
ckNocm9taXVtKiBvd25lciwgVmlkZW9GcmFtZVByb3ZpZGVyKik7CiAgICAgdm9pZCBjcmVhdGVU
ZXh0dXJlUmVjdChjb25zdCBJbnRTaXplJiByZXF1aXJlZFRleHR1cmVTaXplLCBjb25zdCBJbnRS
ZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOwogICAgIHZvaWQgdXBkYXRlVGV4
dHVyZVJlY3QoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkKTsK
ICAgICB2b2lkIHVwZGF0ZUNvbXBsZXRlZCgpOwpAQCAtNTYsNiArNTgsNyBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxQbGF0Zm9ybUNvbnRleHRTa2lhPiBtX3NraWFDb250ZXh0OwogI2VuZGlmCiAg
ICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gbV9ncmFwaGljc0NvbnRleHQ7CisgICAgT3duUHRy
PFZpZGVvRnJhbWVQcm92aWRlcj4gbV9wcm92aWRlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDEwZDg1OWJkMTc3NGU5M2UzYWZiOTMxZDhjZjRiMTQ2MmZlZjRmOTAuLmNkMDgxOGM0YzYyYWJi
OWIzNDcyZDk1YTdmMzU1MmQ3NjE4NTVjNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBA
CisyMDEwLTA4LTI0ICBWaWN0b3JpYSBLaXJzdCAgPHZya0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBhIHdheSB0byBj
b21tdW5pY2F0ZSB2aWRlbyBmcmFtZXMgYmV0d2VlbiBDaHJvbWl1bSBhbmQgV2ViS2l0LgorICAg
ICAgICBUaGUgV2ViS2l0IHNpZGUgYWN0cyBhcyBhIG1pZGRsZW1hbiBiZXR3ZWVuIENocm9taXVt
IGFuZCBXZWJDb3JlLgorICAgICAgICBUaGUgVmlkZW9GcmFtZUNocm9taXVtSW1wbCBpcyBub3Qg
YmVpbmcgdXNlZCBieSBXZWJDb3JlIHlldCwgYXMgdGhlcmUKKyAgICAgICAgc3RpbGwgbmVlZHMg
dG8gYmUgYW4gaW1wbGVtZW50YXRpb24gb2YgV2ViVmlkZW9GcmFtZSBpbiBDaHJvbWl1bQorICAg
ICAgICAtLSBjb21pbmcgc29vbiBpbiBhIHN1YnNlcXVlbnQgcGF0Y2guCisKKyAgICAgICAgQVBJ
IGNoYW5nZXMgZm9yIFZpZGVvIEZyYW1lIHNoYXJpbmcgYmV0d2VlbiBXZWJLaXQgYW5kIENocm9t
aXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDUz
OQorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OmdldEN1cnJlbnRGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyOjpwdXRDdXJyZW50RnJhbWUpOgorICAg
ICAgICAqIHB1YmxpYy9XZWJWaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9WaWRl
b0ZyYW1lQ2hyb21pdW1JbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnJh
bWVDaHJvbWl1bUltcGw6OnRvV2ViVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZGVv
RnJhbWVDaHJvbWl1bUltcGw6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0eXBlKToKKyAgICAgICAgKFdlYktpdDo6Vmlk
ZW9GcmFtZUNocm9taXVtSW1wbDo6Zm9ybWF0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GcmFt
ZUNocm9taXVtSW1wbDo6d2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21p
dW1JbXBsOjpoZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
OjpwbGFuZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpzdHJp
ZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpkYXRhKToKKyAg
ICAgICAgKiBzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpnZXRDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnB1dEN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBzcmMvV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDgtMjQgIEppYW4gTGkgIDxqaWFubGlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggNTY0YjlmOTgxNjEyMDdmOWQyN2I1OGE5NDZkYjEzMjI4ODNmZGE5ZS4uOTQ0
M2Q4ZWVhYWFkZTJmNWY0MzRmMjZhMGEwYzcwNTRlYjRiOTQ4OSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTM4Miw2ICszODIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVBy
b3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9UZW1wb3JhcnlHbHVlLmgnLAorICAgICAgICAgICAgICAg
ICdzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
VmlkZW9GcmFtZUNocm9taXVtSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFjY2Vz
c2liaWxpdHlDYWNoZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0
eUNhY2hlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0eUNh
Y2hlSW1wbC5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQ
bGF5ZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCA2
ZjUxMzQ1ZDA3NGVlZGQ3YzE5OWUxMGMzOGEzOTlmOWJkMGRhNTk1Li5jZTYzNTc5NjAxODliMjhh
NzU4OTE2Y2IyNjk4NzZkOWY4ZDE1NWM4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk1lZGlhUGxheWVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVBsYXllci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0ZyYW1lLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC0xMjcsNiArMTI4LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IE1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIEZvciBn
ZXR0aW5nIGZyYW1lcyB0byBhbmQgZnJvbSBtZWRpYSBwbGF5ZXIuCisgICAgLy8gRklYTUU6IFdp
bGwgYmUgbWFkZSBwdXJlIHZpcnR1YWwgd2hlbiBBUEkgY2hhbmdlcyBhcmUgZnVsbHkgbGFuZGVk
LgorICAgIHZpcnR1YWwgV2ViVmlkZW9GcmFtZSogZ2V0Q3VycmVudEZyYW1lKCkgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSopIHt9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRl
b0ZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM3M2Q1NzQxNTE4MzMyMzg2NzgxNjFkYzlkMTQwMGNiZTkx
ZjU5YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9G
cmFtZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgV2ViVmlkZW9GcmFtZV9oCisjZGVmaW5l
IFdlYlZpZGVvRnJhbWVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQSBwcm94eSB2aWRl
byBmcmFtZSBpbnRlcmZhY2UgdG8gY29tbXVuaWNhdGUgZnJhbWUgZGF0YSBiZXR3ZWVuIGNocm9t
aXVtCisvLyBhbmQgV2ViS2l0LgorY2xhc3MgV2ViVmlkZW9GcmFtZSB7CisKK3B1YmxpYzoKKyAg
ICAvLyBUaGVzZSBlbnVtcyBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIG1lZGlhOjpWaWRlb0Zv
cm1hdC4KKyAgICBlbnVtIEZvcm1hdCB7CisgICAgICAgIEludmFsaWQsCisgICAgICAgIFJHQjU1
NSwKKyAgICAgICAgUkdCNTY1LAorICAgICAgICBSR0IyNCwKKyAgICAgICAgUkdCMzIsCisgICAg
ICAgIFJHQkEsCisgICAgICAgIFlWMTIsCisgICAgICAgIFlWMTYsCisgICAgICAgIE5WMTIsCisg
ICAgICAgIEVtcHR5LAorICAgICAgICBBU0NJSSwKKyAgICB9OworCisgICAgZW51bSBTdXJmYWNl
VHlwZSB7CisgICAgICAgIFR5cGVTeXN0ZW1NZW1vcnksCisgICAgICAgIFR5cGVPTVhCdWZmZXJI
ZWFkLAorICAgICAgICBUeXBlRUdMSW1hZ2UsCisgICAgICAgIFR5cGVNRkJ1ZmZlciwKKyAgICAg
ICAgVHlwZURpcmVjdDNEU3VyZmFjZQorICAgIH07CisKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFN1
cmZhY2VUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGb3JtYXQgZm9ybWF0KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgd2lkdGgoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBwbGFuZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgc3RyaWRlKHVuc2lnbmVkIHBs
YW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkKiBkYXRhKHVuc2lnbmVkIHBsYW5lKSBj
b25zdCA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCBiOTNkNGJiMjYzZWVj
NGNiMDMyZDY5MjIzYzJhMGRmNDAxYzgwOGE1Li44NTc0NWJiOTc4MmM3OTVjNjE4ZWYzYTJhZGEx
Njg3MmVkZjc4MDNjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNs
dWRlICJVc2VyQ29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCisj
aW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVk
ZSAiV2ViQ2xpcGJvYXJkLmgiCkBAIC02Miw2ICs2Myw3IEBACiAjaW5jbHVkZSAiV2ViU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2Fz
ZVNlbnNpdGl2aXR5LmgiCisjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIldl
YlZpZXcuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaD4KQEAgLTMyNyw2ICszMjksMjQgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVBsYXllcjo6VW5rbm93biwgTWVkaWFQbGF5ZXI6OlVua25vd24pOwog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6RG93bmxvYWQsIE1l
ZGlhUGxheWVyOjpEb3dubG9hZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1l
ZGlhUGxheWVyOjpTdG9yZWRTdHJlYW0sIE1lZGlhUGxheWVyOjpTdG9yZWRTdHJlYW0pOwogQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSwgTWVk
aWFQbGF5ZXI6OkxpdmVTdHJlYW0pOworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YlZpZGVvRnJhbWU6OkludmFsaWQsIFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52YWxpZCk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlJHQjU1NSwgVmlkZW9GcmFt
ZUNocm9taXVtOjpSR0I1NTUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRl
b0ZyYW1lOjpSR0I1NjUsIFZpZGVvRnJhbWVDaHJvbWl1bTo6UkdCNTY1KTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6UkdCMjQsIFZpZGVvRnJhbWVDaHJvbWl1
bTo6UkdCMjQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpS
R0IzMiwgVmlkZW9GcmFtZUNocm9taXVtOjpSR0IzMik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYlZpZGVvRnJhbWU6OlJHQkEsIFZpZGVvRnJhbWVDaHJvbWl1bTo6UkdCQSk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OllWMTIsIFZpZGVvRnJh
bWVDaHJvbWl1bTo6WVYxMik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVv
RnJhbWU6OllWMTYsIFZpZGVvRnJhbWVDaHJvbWl1bTo6WVYxNik7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6Ok5WMTIsIFZpZGVvRnJhbWVDaHJvbWl1bTo6TlYx
Mik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkVtcHR5LCBW
aWRlb0ZyYW1lQ2hyb21pdW06OkVtcHR5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViVmlkZW9GcmFtZTo6QVNDSUksIFZpZGVvRnJhbWVDaHJvbWl1bTo6QVNDSUkpOworCitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlR5cGVTeXN0ZW1NZW1vcnks
IFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZVN5c3RlbU1lbW9yeSk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlR5cGVPTVhCdWZmZXJIZWFkLCBWaWRlb0ZyYW1l
Q2hyb21pdW06OlR5cGVPTVhCdWZmZXJIZWFkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViVmlkZW9GcmFtZTo6VHlwZUVHTEltYWdlLCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVF
R0xJbWFnZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlR5
cGVNRkJ1ZmZlciwgVmlkZW9GcmFtZUNocm9taXVtOjpUeXBlTUZCdWZmZXIpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpUeXBlRGlyZWN0M0RTdXJmYWNlLCBW
aWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVEaXJlY3QzRFN1cmZhY2UpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKQEAgLTM2MCw1ICszODAsMyBAQCBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlZpZXc6OlVzZXJDb250ZW50SW5qZWN0SW5Ub3BGcmFtZU9ubHksIElu
amVjdEluVAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6Ok51bGxUeXBl
LCBJREJLZXk6Ok51bGxUeXBlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSURC
S2V5OjpTdHJpbmdUeXBlLCBJREJLZXk6OlN0cmluZ1R5cGUpOwogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJJREJLZXk6Ok51bWJlclR5cGUsIElEQktleTo6TnVtYmVyVHlwZSk7Ci0K
LQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjg4N2Q5NzM0OTI5MTllYmJlYTc1M2U4YzY2NDc4YmQyYTk4NTllYgotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5j
cHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9G
cmFtZUNocm9taXVtSW1wbC5oIgorCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCisj
aW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3Qg
dW5zaWduZWQgY01heFBsYW5lcyA9IDM7Citjb25zdCB1bnNpZ25lZCBjTnVtUkdCUGxhbmVzID0g
MTsKK2NvbnN0IHVuc2lnbmVkIGNSR0JQbGFuZSA9IDA7Citjb25zdCB1bnNpZ25lZCBjTnVtWVVW
UGxhbmVzID0gMzsKK2NvbnN0IHVuc2lnbmVkIGNZUGxhbmUgPSAwOworY29uc3QgdW5zaWduZWQg
Y1VQbGFuZSA9IDE7Citjb25zdCB1bnNpZ25lZCBjVlBsYW5lID0gMjsKKworV2ViVmlkZW9GcmFt
ZSogVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dG9XZWJWaWRlb0ZyYW1lKFdlYkNvcmU6OlZpZGVv
RnJhbWVDaHJvbWl1bSogdmlkZW9GcmFtZSkKK3sKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
KiB3cmFwcGVkRnJhbWUgPSBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKj4odmlk
ZW9GcmFtZSk7CisgICAgaWYgKHdyYXBwZWRGcmFtZSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZWRG
cmFtZS0+bV93ZWJWaWRlb0ZyYW1lOworICAgIHJldHVybiAwOworfQorCitWaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsOjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKFdlYlZpZGVvRnJhbWUqIHdlYlZpZGVv
RnJhbWUpIDoKKyAgICBtX3dlYlZpZGVvRnJhbWUod2ViVmlkZW9GcmFtZSkKK3sKK30KKworV2Vi
Q29yZTo6VmlkZW9GcmFtZUNocm9taXVtOjpTdXJmYWNlVHlwZSBWaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsOjp0eXBlKCkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRlb0ZyYW1lKQorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZUNocm9taXVtOjpTdXJmYWNlVHlwZT4obV93ZWJW
aWRlb0ZyYW1lLT50eXBlKCkpOworICAgIHJldHVybiBUeXBlU3lzdGVtTWVtb3J5OworfQorCitX
ZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW06OkZvcm1hdCBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
Ojpmb3JtYXQoKSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lQ2hyb21pdW06OkZvcm1hdD4obV93ZWJWaWRlb0Zy
YW1lLT5mb3JtYXQoKSk7CisgICAgcmV0dXJuIEludmFsaWQ7Cit9CisKK3Vuc2lnbmVkIFZpZGVv
RnJhbWVDaHJvbWl1bUltcGw6OndpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRlb0Zy
YW1lKQorICAgICAgICByZXR1cm4gbV93ZWJWaWRlb0ZyYW1lLT53aWR0aCgpOworICAgIHJldHVy
biAwOworfQorCit1bnNpZ25lZCBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpoZWlnaHQoKSBjb25z
dAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYlZpZGVv
RnJhbWUtPmhlaWdodCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBWaWRlb0ZyYW1l
Q2hyb21pdW1JbXBsOjpwbGFuZXMoKSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUp
CisgICAgICAgIHJldHVybiBtX3dlYlZpZGVvRnJhbWUtPnBsYW5lcygpOworICAgIHJldHVybiAw
OworfQorCitpbnQgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6c3RyaWRlKHVuc2lnbmVkIHBsYW5l
KSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dl
YlZpZGVvRnJhbWUtPnN0cmlkZShwbGFuZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQqIFZp
ZGVvRnJhbWVDaHJvbWl1bUltcGw6OmRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0Cit7CisgICAg
aWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlkZW9GcmFtZS0+ZGF0
YShwbGFuZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YTYwMTE3ZmJkMGZjYzEzNTViOWIyOGU2YWZhMjIwNmM1YWZhMjQyCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVmlkZW9GcmFtZUNocm9taXVtSW1wbF9oCisjZGVmaW5lIFZpZGVvRnJh
bWVDaHJvbWl1bUltcGxfaAorCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCisjaW5j
bHVkZSAiV2ViVmlkZW9GcmFtZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQSB3cmFw
cGVyIGNsYXNzIGZvciBXZWJLaXQ6OldlYlZpZGVvRnJhbWUuIE9iamVjdHMgY2FuIGJlIGNyZWF0
ZWQgaW4gV2ViS2l0CisvLyBhbmQgdXNlZCBpbiBXZWJDb3JlIGJlY2F1c2Ugb2YgdGhlIFZpZGVv
RnJhbWVDaHJvbWl1bSBpbnRlcmZhY2UuCitjbGFzcyBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsIDog
cHVibGljIFdlYkNvcmU6OlZpZGVvRnJhbWVDaHJvbWl1bSB7CisKK3B1YmxpYzoKKyAgICBzdGF0
aWMgV2ViVmlkZW9GcmFtZSogdG9XZWJWaWRlb0ZyYW1lKFdlYkNvcmU6OlZpZGVvRnJhbWVDaHJv
bWl1bSopOworICAgIFZpZGVvRnJhbWVDaHJvbWl1bUltcGwoV2ViVmlkZW9GcmFtZSopOworICAg
IFN1cmZhY2VUeXBlIHR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZvcm1hdCBmb3JtYXQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCB1
bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHBsYW5lcygpIGNv
bnN0OworICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkKiBkYXRhKHVuc2lnbmVkIHBsYW5lKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBXZWJWaWRlb0ZyYW1lKiBtX3dlYlZpZGVvRnJhbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5jcHAKaW5kZXggOGYyMTBhMGYzYmU3NzFhZDJhNzIzOWNhY2NkOTQ4NDgyNjYx
ZDBmOS4uZjBlY2UwZDc1MjFiZDZmOWQxZDIyYWYxNTI5MGE2ZDZmZjc4NDYyYSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMjIs
NiArMjIsOCBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2VuZGlmCiAK
KyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsLmgiCiAjaW5jbHVkZSAiV2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAiV2ViQ1N0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCkBAIC00MTYsNiArNDE4LDI4IEBAIE1l
ZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bW92aWVM
b2FkVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpVbmtub3duOwogfQogCitW
aWRlb0ZyYW1lQ2hyb21pdW0qIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Z2V0Q3VycmVudEZy
YW1lKCkKK3sKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIHZpZGVvRnJhbWUgPSAwOworICAgIGlm
IChtX3dlYk1lZGlhUGxheWVyLmdldCgpKSB7CisgICAgICAgIFdlYlZpZGVvRnJhbWUqIHdlYmtp
dFZpZGVvRnJhbWUgPSBtX3dlYk1lZGlhUGxheWVyLT5nZXRDdXJyZW50RnJhbWUoKTsKKyAgICAg
ICAgaWYgKHdlYmtpdFZpZGVvRnJhbWUpCisgICAgICAgICAgICB2aWRlb0ZyYW1lID0gbmV3IFZp
ZGVvRnJhbWVDaHJvbWl1bUltcGwod2Via2l0VmlkZW9GcmFtZSk7CisgICAgfQorICAgIHJldHVy
biB2aWRlb0ZyYW1lOworfQorCit2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cHV0Q3Vy
cmVudEZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1bSogdmlkZW9GcmFtZSkKK3sKKyAgICBpZiAodmlk
ZW9GcmFtZSkgeworICAgICAgICBpZiAobV93ZWJNZWRpYVBsYXllci5nZXQoKSkgeworICAgICAg
ICAgICAgbV93ZWJNZWRpYVBsYXllci0+cHV0Q3VycmVudEZyYW1lKAorICAgICAgICAgICAgICAg
IFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnRvV2ViVmlkZW9GcmFtZSh2aWRlb0ZyYW1lKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZGVsZXRlIHZpZGVvRnJhbWU7CisgICAgfQorfQorCiBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2UqIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y3JlYXRlKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpCiB7CiAgICAgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKiBjbGll
bnQgPSBuZXcgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKCk7CkBAIC00MzMsNyArNDU3LDcgQEAg
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmNy
ZWF0ZShNZWRpYVBsYXllciogcGxheWUKICAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5jb21wb3NpdG9yKCktPmhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKTsKIAogICAgIGlmIChj
bGllbnQtPm1fc3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKQotICAgICAgICBjbGllbnQt
Pm1fdmlkZW9MYXllciA9IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDApOworICAgICAgICBj
bGllbnQtPm1fdmlkZW9MYXllciA9IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKDAsIGNsaWVu
dCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBjbGllbnQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAppbmRleCBkZjE3OWE4NTU0MDU0Njc2MGMyODMz
MzdhNjZkM2RhMzFkODI5NDhiLi4xZjVjMDc3Y2IyYmI4OGM2Y2M0MjJlOWY4MzZkYWQ1MGY2YjVl
MDY0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmgKQEAgLTM0LDYgKzM0LDggQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGUuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKKyNpbmNs
dWRlICJWaWRlb0ZyYW1lUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNDQsOCArNDYsMTAgQEAgY2xhc3Mg
V2ViTWVkaWFQbGF5ZXI7CiAKIC8vIFRoaXMgY2xhc3Mgc2VydmVzIGFzIGEgYnJpZGdlIGJldHdl
ZW4gV2ViQ29yZTo6TWVkaWFQbGF5ZXIgYW5kCiAvLyBXZWJLaXQ6OldlYk1lZGlhUGxheWVyLgot
Y2xhc3MgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIDogcHVibGljIFdlYk1lZGlhUGxheWVyQ2xp
ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKK2NsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bCA6IHB1YmxpYyBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBXZWJDb3JlOjpWaWRlb0ZyYW1lUHJvdmlk
ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBXZWJNZWRpYVBsYXll
ckNsaWVudCB7CisKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWQoKTsKICAgICBz
dGF0aWMgdm9pZCBzZXRJc0VuYWJsZWQoYm9vbCk7CkBAIC0xMTAsNiArMTE0LDIwIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92
aWVMb2FkVHlwZSgpIGNvbnN0OwogCisgICAgLy8gVmlkZW9GcmFtZVByb3ZpZGVyIG1ldGhvZHM6
CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBwb2ludGVyIHRvIGEgVmlkZW9GcmFt
ZUNocm9taXVtLCB3aGljaCBpcworICAgIC8vIHRoZSBXZWJDb3JlIHdyYXBwZXIgZm9yIGEgbWVk
aWE6OlZpZGVvRnJhbWUgaW4gY2hyb21pdW0uIFRoaXMgcGxhY2VzIGEKKyAgICAvLyBsb2NrIG9u
IHRoZSBmcmFtZSBpbiBjaHJvbWl1bSwgYW5kIGNhbGxzIHRvIHRoaXMgbWV0aG9kIHNob3VsZCBh
bHdheXMgYmUKKyAgICAvLyBmb2xsb3dlZCB3aXRoIGEgY2FsbCB0byBwdXRDdXJyZW50RnJhbWUo
KS4gVGhlIG93bmVyc2hpcCBvZiB0aGUgb2JqZWN0IGlzCisgICAgLy8gbm90IHRyYW5zZmVycmVk
IHRvIHRoZSBjYWxsZXIgYW5kIHRoZSBjYWxsZXIgc2hvdWxkIG5vdCBmcmVlIHRoZSByZXR1cm5l
ZAorICAgIC8vIG9iamVjdC4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpZGVvRnJhbWVDaHJvbWl1
bSogZ2V0Q3VycmVudEZyYW1lKCk7CisgICAgLy8gVGhpcyBmdW5jdGlvbiB1bmxvY2tzIGFuZCBm
cmVlcyBnaXZlbiB2aWRlbyBmcmFtZS4gSXQgc2hvdWxkIGFsd2F5cyBiZQorICAgIC8vIGNhbGxl
ZCBhZnRlciBnZXRDdXJyZW50RnJhbWUoKS4gRnJhbWVzIHBhc3NlZCBpbnRvIHRoaXMgbWV0aG9k
IHNob3VsZCBubworICAgIC8vIGxvbmdlciBiZSByZWZlcmVuY2VkIGFmdGVyIHRoZSBjYWxsIGlz
IG1hZGUuCisgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFtZShXZWJDb3JlOjpWaWRlb0Zy
YW1lQ2hyb21pdW0qKTsKKwogcHJpdmF0ZToKICAgICBXZWJNZWRpYVBsYXllckNsaWVudEltcGwo
KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65477</attachid>
            <date>2010-08-25 14:49:48 -0700</date>
            <delta_ts>2010-08-25 18:25:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44539-20100825144947.patch</filename>
            <type>text/plain</type>
            <size>29431</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njk5ZjRlMGM2ZWFkMzFhNDg2YWNmZmJmNzhkODlhN2I3ZTllY2QxMC4uZTdjODRjZmRlOWI4NWFi
YTBjNDQ3YjhkZGZhYTNiZTI1ODA3ZGNhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wOC0yNCAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBtZWFucyBvZiBjb21tdW5pY2F0aW9uIGJl
dHdlZW4gV2ViS2l0L1dlYkNvcmUgYW5kCisgICAgICAgIGNocm9taXVtIGluIG9yZGVyIHRvIHNo
YXJlIHZpZGVvIGZyYW1lcy4gVGhpcyBhZGRzIHRoZSBuZWNlc3NhcnkKKyAgICAgICAgV2ViS2l0
LXNpZGUgY2xhc3NlcyBhbmQgbWV0aG9kcywgYnV0IGRvZXMgbm90IGFjdHVhbGx5IHVzZSB0aGVt
CisgICAgICAgIHlldCAtIHRoYXQgd2lsbCBiZSBjb21taXR0ZWQgaW4gYSBzZXBhcmF0ZSBwYXRj
aCBhZnRlciB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBDaHJvbWl1bSBzaWRlIGlzIGNvbW1p
dHRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ1MzkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGFzIHRoZXNlIG5ldyBjbGFzc2VzL0FQSXMg
YXJlIG5vdCB5ZXQgdXNlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvRnJhbWVDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvRnJh
bWVDaHJvbWl1bTo6KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0ZyYW1lUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKwogMjAxMC0wOC0yNCAgSm9zZXBoIFBlY29yYXJv
ICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFt
ZUNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJh
bWVDaHJvbWl1bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZDY3N2U0OTE3OGUxNTM0MjAwZGIyMTQ2YzEzN2M2
ZDVjNTdkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvRnJhbWVDaHJvbWl1bS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVv
RnJhbWVDaHJvbWl1bV9oCisjZGVmaW5lIFZpZGVvRnJhbWVDaHJvbWl1bV9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB2aWRlbyBmcmFtZSBp
biBjaHJvbWl1bS4KK2NsYXNzIFZpZGVvRnJhbWVDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGNNYXhQbGFuZXM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGNOdW1SR0JQbGFuZXM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNSR0JQbGFuZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY051bVlVVlBsYW5lczsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY1lQbGFuZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY1VQbGFuZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY1ZQbGFuZTsKKworICAgIC8vIFRoZXNlIGVudW1zIG11
c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggV2ViS2l0OjpXZWJWaWRlb0ZyYW1lLgorICAgIGVudW0g
Rm9ybWF0IHsKKyAgICAgICAgSW52YWxpZCwKKyAgICAgICAgUkdCNTU1LAorICAgICAgICBSR0I1
NjUsCisgICAgICAgIFJHQjI0LAorICAgICAgICBSR0IzMiwKKyAgICAgICAgUkdCQSwKKyAgICAg
ICAgWVYxMiwKKyAgICAgICAgWVYxNiwKKyAgICAgICAgTlYxMiwKKyAgICAgICAgRW1wdHksCisg
ICAgICAgIEFTQ0lJLAorICAgIH07CisKKyAgICBlbnVtIFN1cmZhY2VUeXBlIHsKKyAgICAgICAg
VHlwZVN5c3RlbU1lbW9yeSwKKyAgICAgICAgVHlwZU9NWEJ1ZmZlckhlYWQsCisgICAgICAgIFR5
cGVFR0xJbWFnZSwKKyAgICAgICAgVHlwZU1GQnVmZmVyLAorICAgICAgICBUeXBlRGlyZWN0M0RT
dXJmYWNlCisgICAgfTsKKworICAgIHZpcnR1YWwgU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBGb3JtYXQgZm9ybWF0KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdW5zaWduZWQgd2lkdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBo
ZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBwbGFuZXMoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBpbnQgc3RyaWRlKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCB2b2lkKiBkYXRhKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1lUHJvdmlkZXIuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2Q2ODRkNjEzMTViZGQyNWVkOTMyZmFkNjgxODIwNGRkNTkyMjU1ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVBy
b3ZpZGVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlkZW9GcmFtZVByb3ZpZGVyX2gKKyNk
ZWZpbmUgVmlkZW9GcmFtZVByb3ZpZGVyX2gKKworI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1
bS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpZGVvRnJhbWVQcm92aWRlciB7
CitwdWJsaWM6CisgICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgcG9pbnRlciB0byBhIFZp
ZGVvRnJhbWVDaHJvbWl1bSwgd2hpY2ggaXMKKyAgICAvLyB0aGUgV2ViQ29yZSB3cmFwcGVyIGZv
ciBhIG1lZGlhOjpWaWRlb0ZyYW1lIGluIGNocm9taXVtLiBUaGlzIHBsYWNlcyBhCisgICAgLy8g
bG9jayBvbiB0aGUgZnJhbWUgaW4gY2hyb21pdW0uIENhbGxzIHRvIHRoaXMgbWV0aG9kIHNob3Vs
ZCBhbHdheXMgYmUKKyAgICAvLyBmb2xsb3dlZCB3aXRoIGEgY2FsbCB0byBwdXRDdXJyZW50RnJh
bWUoKS4gVGhlIG93bmVyc2hpcCBvZiB0aGUgb2JqZWN0IGlzCisgICAgLy8gbm90IHRyYW5zZmVy
cmVkIHRvIHRoZSBjYWxsZXIgYW5kIHRoZSBjYWxsZXIgc2hvdWxkIG5vdCBmcmVlIHRoZSByZXR1
cm5lZAorICAgIC8vIG9iamVjdC4KKyAgICB2aXJ0dWFsIFZpZGVvRnJhbWVDaHJvbWl1bSogZ2V0
Q3VycmVudEZyYW1lKCkgPSAwOworICAgIC8vIFRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgdGhlIGxv
Y2sgb24gdGhlIHZpZGVvIGZyYW1lIGluIGNocm9taXVtLiBJdCBzaG91bGQKKyAgICAvLyBhbHdh
eXMgYmUgY2FsbGVkIGFmdGVyIGdldEN1cnJlbnRGcmFtZSgpLiBGcmFtZXMgcGFzc2VkIGludG8g
dGhpcyBtZXRob2QKKyAgICAvLyBzaG91bGQgbm8gbG9uZ2VyIGJlIHJlZmVyZW5jZWQgYWZ0ZXIg
dGhlIGNhbGwgaXMgbWFkZS4KKyAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFZpZGVv
RnJhbWVDaHJvbWl1bSopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWJiOGJjZWQxZTI2NjRkMWU5NTU1M2MyZDk4NjI1
YjRmNTVhZmFiYi4uN2ZmOThiOTNmZDAzYWRhMmRhNjhmYzRkMWY2ZTI5YjU3NDBmZjRiZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmNwcApAQCAtNDgsMTggKzQ4LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCitQYXNzUmVmUHRyPFZpZGVvTGF5
ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9t
aXVtKiBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVmlkZW9MYXllckNocm9taXVtKG93bmVyKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBWaWRlb0xheWVyQ2hyb21pdW0ob3duZXIsIHByb3ZpZGVyKSk7CiB9CiAKLVZp
ZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSogb3duZXIpCitWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGlj
c0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogICAg
IDogQ29udGVudExheWVyQ2hyb21pdW0ob3duZXIpCiAjaWYgUExBVEZPUk0oU0tJQSkKICAgICAs
IG1fY2FudmFzKDApCiAgICAgLCBtX3NraWFDb250ZXh0KDApCiAjZW5kaWYKICAgICAsIG1fZ3Jh
cGhpY3NDb250ZXh0KDApCisgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogewogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uaAppbmRleCBiMDYyZTYyOGZkYjhhODM2NzYzNzU3OTZiYTEyNTEwYjQ2MWY0N2RmLi4z
NTA3Y2IyMGNmMTdlNzkzMzEyZDZlZWIzZTk1M2I3ZjhjZWJmMjU5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgK
QEAgLTM1LDE4ICszNSwyMCBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAog
I2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZVBy
b3ZpZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQSBMYXllciB0aGF0IGNvbnRh
aW5zIGEgVmlkZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBD
b250ZW50TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Vmlk
ZW9MYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDAp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogPSAwKTsKICAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDb250ZW50cygpOwogCiBwcml2YXRlOgotICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShH
cmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKKyAgICBWaWRlb0xheWVyQ2hyb21pdW0oR3Jh
cGhpY3NMYXllckNocm9taXVtKiBvd25lciwgVmlkZW9GcmFtZVByb3ZpZGVyKik7CiAgICAgdm9p
ZCBjcmVhdGVUZXh0dXJlUmVjdChjb25zdCBJbnRTaXplJiByZXF1aXJlZFRleHR1cmVTaXplLCBj
b25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOwogICAgIHZvaWQg
dXBkYXRlVGV4dHVyZVJlY3QoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwgdW5zaWduZWQgdGV4
dHVyZUlkKTsKICAgICB2b2lkIHVwZGF0ZUNvbXBsZXRlZCgpOwpAQCAtNTYsNiArNTgsNyBAQCBw
cml2YXRlOgogICAgIE93blB0cjxQbGF0Zm9ybUNvbnRleHRTa2lhPiBtX3NraWFDb250ZXh0Owog
I2VuZGlmCiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gbV9ncmFwaGljc0NvbnRleHQ7Cisg
ICAgT3duUHRyPFZpZGVvRnJhbWVQcm92aWRlcj4gbV9wcm92aWRlcjsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDEwZDg1OWJkMTc3NGU5M2UzYWZiOTMxZDhjZjRiMTQ2MmZlZjRmOTAuLmNkMDgx
OGM0YzYyYWJiOWIzNDcyZDk1YTdmMzU1MmQ3NjE4NTVjNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM4IEBACisyMDEwLTA4LTI0ICBWaWN0b3JpYSBLaXJzdCAgPHZya0Bnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBh
IHdheSB0byBjb21tdW5pY2F0ZSB2aWRlbyBmcmFtZXMgYmV0d2VlbiBDaHJvbWl1bSBhbmQgV2Vi
S2l0LgorICAgICAgICBUaGUgV2ViS2l0IHNpZGUgYWN0cyBhcyBhIG1pZGRsZW1hbiBiZXR3ZWVu
IENocm9taXVtIGFuZCBXZWJDb3JlLgorICAgICAgICBUaGUgVmlkZW9GcmFtZUNocm9taXVtSW1w
bCBpcyBub3QgYmVpbmcgdXNlZCBieSBXZWJDb3JlIHlldCwgYXMgdGhlcmUKKyAgICAgICAgc3Rp
bGwgbmVlZHMgdG8gYmUgYW4gaW1wbGVtZW50YXRpb24gb2YgV2ViVmlkZW9GcmFtZSBpbiBDaHJv
bWl1bQorICAgICAgICAtLSBjb21pbmcgc29vbiBpbiBhIHN1YnNlcXVlbnQgcGF0Y2guCisKKyAg
ICAgICAgQVBJIGNoYW5nZXMgZm9yIFZpZGVvIEZyYW1lIHNoYXJpbmcgYmV0d2VlbiBXZWJLaXQg
YW5kIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NDUzOQorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2Vi
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OmdldEN1cnJl
bnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyOjpwdXRDdXJyZW50RnJh
bWUpOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAq
IHNyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnRvV2ViVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0eXBlKToKKyAgICAgICAgKFdl
YktpdDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6Zm9ybWF0KToKKyAgICAgICAgKFdlYktpdDo6
VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6d2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Zy
YW1lQ2hyb21pdW1JbXBsOjpoZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsOjpwbGFuZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1J
bXBsOjpzdHJpZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpk
YXRhKToKKyAgICAgICAgKiBzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpnZXRDdXJyZW50RnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnB1dEN1cnJlbnRGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAgICAg
KiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDgtMjQgIEppYW4gTGkg
IDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hl
ci4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggNTY0YjlmOTgxNjEyMDdmOWQyN2I1OGE5NDZkYjEzMjI4ODNm
ZGE5ZS4uOTQ0M2Q4ZWVhYWFkZTJmNWY0MzRmMjZhMGEwYzcwNTRlYjRiOTQ4OSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTM4Miw2ICszODIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5h
bWVzcGFjZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNl
UHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9UZW1wb3JhcnlHbHVlLmgnLAorICAgICAg
ICAgICAgICAgICdzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNj
ZXNzaWJpbGl0eUNhY2hlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNz
aWJpbGl0eUNhY2hlSW1wbC5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViTWVkaWFQbGF5ZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAppbmRleCA2ZjUxMzQ1ZDA3NGVlZGQ3YzE5OWUxMGMzOGEzOTlmOWJkMGRhNTk1Li4wNDY5NWIz
YmRhMThhZGY1MTM0NzhkODllYzc1Y2Q0MjI3MDEyYTdjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVBsYXllci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJDYW52
YXMuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0ZyYW1lLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMjcsNiArMTI4LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0ID0gMDsKKworICAg
IC8vIEZvciBnZXR0aW5nIGZyYW1lcyB0byBhbmQgZnJvbSBtZWRpYSBwbGF5ZXIuCisgICAgdmly
dHVhbCBXZWJWaWRlb0ZyYW1lKiBnZXRDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFtZShXZWJWaWRlb0ZyYW1lKikgeyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlkZW9GcmFtZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDUzMzhmMTI5OTEwOWNlM2Y3MmYyNmVhN2JjZjRkODIzNjdmODRjZgotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZS5oCkBA
IC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisKKyNpZm5kZWYgV2ViVmlkZW9GcmFtZV9oCisjZGVmaW5lIFdlYlZpZGVv
RnJhbWVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQSBwcm94eSB2aWRlbyBmcmFtZSBp
bnRlcmZhY2UgdG8gY29tbXVuaWNhdGUgZnJhbWUgZGF0YSBiZXR3ZWVuIGNocm9taXVtCisvLyBh
bmQgV2ViS2l0LgorY2xhc3MgV2ViVmlkZW9GcmFtZSB7CitwdWJsaWM6CisgICAgLy8gVGhlc2Ug
ZW51bXMgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBtZWRpYTo6VmlkZW9Gb3JtYXQuCisgICAg
ZW51bSBGb3JtYXQgeworICAgICAgICBGb3JtYXRJbnZhbGlkLAorICAgICAgICBGb3JtYXRSR0I1
NTUsCisgICAgICAgIEZvcm1hdFJHQjU2NSwKKyAgICAgICAgRm9ybWF0UkdCMjQsCisgICAgICAg
IEZvcm1hdFJHQjMyLAorICAgICAgICBGb3JtYXRSR0JBLAorICAgICAgICBGb3JtYXRZVjEyLAor
ICAgICAgICBGb3JtYXRZVjE2LAorICAgICAgICBGb3JtYXROVjEyLAorICAgICAgICBGb3JtYXRF
bXB0eSwKKyAgICAgICAgRm9ybWF0QVNDSUksCisgICAgfTsKKworICAgIGVudW0gU3VyZmFjZVR5
cGUgeworICAgICAgICBTdXJmYWNlVHlwZVN5c3RlbU1lbW9yeSwKKyAgICAgICAgU3VyZmFjZVR5
cGVPTVhCdWZmZXJIZWFkLAorICAgICAgICBTdXJmYWNlVHlwZUVHTEltYWdlLAorICAgICAgICBT
dXJmYWNlVHlwZU1GQnVmZmVyLAorICAgICAgICBTdXJmYWNlVHlwZURpcmVjdDNEU3VyZmFjZQor
ICAgIH07CisKKyAgICB2aXJ0dWFsIFN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgRm9ybWF0IGZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIHdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgY29uc3Qgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0
TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggYjkzZDRiYjI2M2VlYzRjYjAzMmQ2OTIyM2MyYTBkZjQw
MWM4MDhhNS4uYTExN2ZjMmE3N2ZkZjViZGQ3ODI2ZjQ3YTBhNDA1YjEyOWM5OTNlNiAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRUeXBl
cy5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWVD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRl
ICJXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIldlYkNsaXBib2FyZC5oIgpA
QCAtNjIsNiArNjMsNyBAQAogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2Vi
VGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oIgorI2lu
Y2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CkBAIC0z
MjcsNiArMzI5LDI0IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFQbGF5
ZXI6OlVua25vd24sIE1lZGlhUGxheWVyOjpVbmtub3duKTsKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkRvd25sb2FkLCBNZWRpYVBsYXllcjo6RG93bmxvYWQp
OwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6U3RvcmVkU3Ry
ZWFtLCBNZWRpYVBsYXllcjo6U3RvcmVkU3RyZWFtKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW0sIE1lZGlhUGxheWVyOjpMaXZlU3RyZWFt
KTsKKworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpGb3JtYXRJ
bnZhbGlkLCBWaWRlb0ZyYW1lQ2hyb21pdW06OkludmFsaWQpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpGb3JtYXRSR0I1NTUsIFZpZGVvRnJhbWVDaHJvbWl1
bTo6UkdCNTU1KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6
Rm9ybWF0UkdCNTY1LCBWaWRlb0ZyYW1lQ2hyb21pdW06OlJHQjU2NSk7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkZvcm1hdFJHQjI0LCBWaWRlb0ZyYW1lQ2hy
b21pdW06OlJHQjI0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFt
ZTo6Rm9ybWF0UkdCMzIsIFZpZGVvRnJhbWVDaHJvbWl1bTo6UkdCMzIpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpGb3JtYXRSR0JBLCBWaWRlb0ZyYW1lQ2hy
b21pdW06OlJHQkEpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1l
OjpGb3JtYXRZVjEyLCBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTIpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpGb3JtYXRZVjE2LCBWaWRlb0ZyYW1lQ2hyb21p
dW06OllWMTYpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpG
b3JtYXROVjEyLCBWaWRlb0ZyYW1lQ2hyb21pdW06Ok5WMTIpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpGb3JtYXRFbXB0eSwgVmlkZW9GcmFtZUNocm9taXVt
OjpFbXB0eSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkZv
cm1hdEFTQ0lJLCBWaWRlb0ZyYW1lQ2hyb21pdW06OkFTQ0lJKTsKKworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlwZVN5c3RlbU1lbW9yeSwgVmlk
ZW9GcmFtZUNocm9taXVtOjpUeXBlU3lzdGVtTWVtb3J5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6U3VyZmFjZVR5cGVPTVhCdWZmZXJIZWFkLCBWaWRlb0Zy
YW1lQ2hyb21pdW06OlR5cGVPTVhCdWZmZXJIZWFkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViVmlkZW9GcmFtZTo6U3VyZmFjZVR5cGVFR0xJbWFnZSwgVmlkZW9GcmFtZUNocm9t
aXVtOjpUeXBlRUdMSW1hZ2UpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRl
b0ZyYW1lOjpTdXJmYWNlVHlwZU1GQnVmZmVyLCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVNRkJ1
ZmZlcik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlN1cmZh
Y2VUeXBlRGlyZWN0M0RTdXJmYWNlLCBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVEaXJlY3QzRFN1
cmZhY2UpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKQEAgLTM2MCw1ICsz
ODAsMyBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZXc6OlVzZXJDb250ZW50
SW5qZWN0SW5Ub3BGcmFtZU9ubHksIEluamVjdEluVAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJJREJLZXk6Ok51bGxUeXBlLCBJREJLZXk6Ok51bGxUeXBlKTsKIENPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViSURCS2V5OjpTdHJpbmdUeXBlLCBJREJLZXk6OlN0cmluZ1R5
cGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6Ok51bWJlclR5cGUs
IElEQktleTo6TnVtYmVyVHlwZSk7Ci0KLQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvVmlkZW9G
cmFtZUNocm9taXVtSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI5ODMyMGEzY2UwNTc2NTViNjdjZDBh
NGM3OGIxYmZiOWMxZTg2MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
VmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oIgorCisjaW5jbHVkZSAi
VmlkZW9GcmFtZUNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IHVuc2ln
bmVkIGNNYXhQbGFuZXMgPSAzOworY29uc3QgdW5zaWduZWQgY051bVJHQlBsYW5lcyA9IDE7Citj
b25zdCB1bnNpZ25lZCBjUkdCUGxhbmUgPSAwOworY29uc3QgdW5zaWduZWQgY051bVlVVlBsYW5l
cyA9IDM7Citjb25zdCB1bnNpZ25lZCBjWVBsYW5lID0gMDsKK2NvbnN0IHVuc2lnbmVkIGNVUGxh
bmUgPSAxOworY29uc3QgdW5zaWduZWQgY1ZQbGFuZSA9IDI7CisKK1dlYlZpZGVvRnJhbWUqIFZp
ZGVvRnJhbWVDaHJvbWl1bUltcGw6OnRvV2ViVmlkZW9GcmFtZShWaWRlb0ZyYW1lQ2hyb21pdW0q
IHZpZGVvRnJhbWUpCit7CisgICAgVmlkZW9GcmFtZUNocm9taXVtSW1wbCogd3JhcHBlZEZyYW1l
ID0gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZUNocm9taXVtSW1wbCo+KHZpZGVvRnJhbWUpOworICAg
IGlmICh3cmFwcGVkRnJhbWUpCisgICAgICAgIHJldHVybiB3cmFwcGVkRnJhbWUtPm1fd2ViVmlk
ZW9GcmFtZTsKKyAgICByZXR1cm4gMDsKK30KKworVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6Vmlk
ZW9GcmFtZUNocm9taXVtSW1wbChXZWJWaWRlb0ZyYW1lKiB3ZWJWaWRlb0ZyYW1lKQorICAgIDog
bV93ZWJWaWRlb0ZyYW1lKHdlYlZpZGVvRnJhbWUpCit7Cit9CisKK1ZpZGVvRnJhbWVDaHJvbWl1
bTo6U3VyZmFjZVR5cGUgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6c3VyZmFjZVR5cGUoKSBjb25z
dAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxWaWRlb0ZyYW1lQ2hyb21pdW06OlN1cmZhY2VUeXBlPihtX3dlYlZpZGVvRnJhbWUtPnN1cmZh
Y2VUeXBlKCkpOworICAgIHJldHVybiBUeXBlU3lzdGVtTWVtb3J5OworfQorCitWaWRlb0ZyYW1l
Q2hyb21pdW06OkZvcm1hdCBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpmb3JtYXQoKSBjb25zdAor
eworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
aWRlb0ZyYW1lQ2hyb21pdW06OkZvcm1hdD4obV93ZWJWaWRlb0ZyYW1lLT5mb3JtYXQoKSk7Cisg
ICAgcmV0dXJuIEludmFsaWQ7Cit9CisKK3Vuc2lnbmVkIFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6
OndpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJWaWRlb0ZyYW1lKQorICAgICAgICByZXR1
cm4gbV93ZWJWaWRlb0ZyYW1lLT53aWR0aCgpOworICAgIHJldHVybiAwOworfQorCit1bnNpZ25l
ZCBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpoZWlnaHQoKSBjb25zdAoreworICAgIGlmIChtX3dl
YlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYlZpZGVvRnJhbWUtPmhlaWdodCgpOwor
ICAgIHJldHVybiAwOworfQorCit1bnNpZ25lZCBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpwbGFu
ZXMoKSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBt
X3dlYlZpZGVvRnJhbWUtPnBsYW5lcygpOworICAgIHJldHVybiAwOworfQorCitpbnQgVmlkZW9G
cmFtZUNocm9taXVtSW1wbDo6c3RyaWRlKHVuc2lnbmVkIHBsYW5lKSBjb25zdAoreworICAgIGlm
IChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYlZpZGVvRnJhbWUtPnN0cmlk
ZShwbGFuZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IHZvaWQqIFZpZGVvRnJhbWVDaHJv
bWl1bUltcGw6OmRhdGEodW5zaWduZWQgcGxhbmUpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViVmlk
ZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlkZW9GcmFtZS0+ZGF0YShwbGFuZSk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmMyNDMxM2U4MWNm
NGYwN2E1YTY5YzBjM2Y3NTlhNmZiMjNiOTgwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgKQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVmlkZW9GcmFtZUNocm9taXVtSW1wbF9oCisjZGVmaW5lIFZpZGVvRnJhbWVDaHJvbWl1bUlt
cGxfaAorCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViVmlk
ZW9GcmFtZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKKy8vIEEgd3JhcHBlciBjbGFzcyBmb3IgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lLiBPYmpl
Y3RzIGNhbiBiZSBjcmVhdGVkIGluIFdlYktpdAorLy8gYW5kIHVzZWQgaW4gV2ViQ29yZSBiZWNh
dXNlIG9mIHRoZSBWaWRlb0ZyYW1lQ2hyb21pdW0gaW50ZXJmYWNlLgorY2xhc3MgVmlkZW9GcmFt
ZUNocm9taXVtSW1wbCA6IHB1YmxpYyBWaWRlb0ZyYW1lQ2hyb21pdW0geworcHVibGljOgorICAg
IC8vIENvbnZlcnRzIGEgV2ViQ29yZTo6VmlkZW9GcmFtZUNocm9taXVtIHRvIGEgV2ViS2l0OjpX
ZWJWaWRlb0ZyYW1lLgorICAgIHN0YXRpYyBXZWJWaWRlb0ZyYW1lKiB0b1dlYlZpZGVvRnJhbWUo
VmlkZW9GcmFtZUNocm9taXVtKik7CisgICAgLy8gQ3JlYXRlcyBhIFZpZGVvRnJhbWVDaHJvbWl1
bUltcGwgb2JqZWN0IHRvIHdyYXAgdGhlIGdpdmVuIFdlYlZpZGVvRnJhbWUuCisgICAgLy8gVGhl
IFZpZGVvRnJhbWVDaHJvbWl1bUltcGwgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIFdl
YlZpZGVvRnJhbWUKKyAgICAvLyBhbmQgc2hvdWxkIG5vdCBmcmVlIHRoZSBmcmFtZSdzIG1lbW9y
eS4KKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKFdlYlZpZGVvRnJhbWUqKTsKKyAgICB2aXJ0
dWFsIFN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBGb3JtYXQg
Zm9ybWF0KCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0OworICAg
IHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBw
bGFuZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludCBzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNv
bnN0OworICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgV2ViVmlkZW9GcmFtZSogbV93ZWJWaWRlb0ZyYW1lOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDhmMjEwYTBmM2JlNzcxYWQyYTcy
MzljYWNjZDk0ODQ4MjY2MWQwZjkuLmYwZWNlMGQ3NTIxYmQ2ZjlkMWQyMmFmMTUyOTBhNmQ2ZmY3
ODQ2MmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5jcHAKQEAgLTIyLDYgKzIyLDggQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0
b3IuaCIKICNlbmRpZgogCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCisjaW5jbHVk
ZSAiVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oIgogI2luY2x1ZGUgIldlYkNhbnZhcy5oIgogI2lu
Y2x1ZGUgIldlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgpAQCAtNDE2
LDYgKzQxOCwyOCBAQCBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6Om1vdmllTG9hZFR5cGUoKSBjb25zdAogICAgIHJldHVybiBNZWRpYVBsYXllcjo6
VW5rbm93bjsKIH0KIAorVmlkZW9GcmFtZUNocm9taXVtKiBXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OmdldEN1cnJlbnRGcmFtZSgpCit7CisgICAgVmlkZW9GcmFtZUNocm9taXVtKiB2aWRlb0Zy
YW1lID0gMDsKKyAgICBpZiAobV93ZWJNZWRpYVBsYXllci5nZXQoKSkgeworICAgICAgICBXZWJW
aWRlb0ZyYW1lKiB3ZWJraXRWaWRlb0ZyYW1lID0gbV93ZWJNZWRpYVBsYXllci0+Z2V0Q3VycmVu
dEZyYW1lKCk7CisgICAgICAgIGlmICh3ZWJraXRWaWRlb0ZyYW1lKQorICAgICAgICAgICAgdmlk
ZW9GcmFtZSA9IG5ldyBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKHdlYmtpdFZpZGVvRnJhbWUpOwor
ICAgIH0KKyAgICByZXR1cm4gdmlkZW9GcmFtZTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnB1dEN1cnJlbnRGcmFtZShWaWRlb0ZyYW1lQ2hyb21pdW0qIHZpZGVvRnJhbWUp
Cit7CisgICAgaWYgKHZpZGVvRnJhbWUpIHsKKyAgICAgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIu
Z2V0KCkpIHsKKyAgICAgICAgICAgIG1fd2ViTWVkaWFQbGF5ZXItPnB1dEN1cnJlbnRGcmFtZSgK
KyAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0b1dlYlZpZGVvRnJhbWUo
dmlkZW9GcmFtZSkpOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSB2aWRlb0ZyYW1lOworICAg
IH0KK30KKwogTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBXZWJNZWRpYVBsYXllckNsaWVu
dEltcGw6OmNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyKQogewogICAgIFdlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbCogY2xpZW50ID0gbmV3IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCgpOwpAQCAt
NDMzLDcgKzQ1Nyw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllCiAgICAgICAgIGZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KCk7CiAKICAgICBpZiAoY2xpZW50LT5tX3N1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZykK
LSAgICAgICAgY2xpZW50LT5tX3ZpZGVvTGF5ZXIgPSBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKKyAgICAgICAgY2xpZW50LT5tX3ZpZGVvTGF5ZXIgPSBWaWRlb0xheWVyQ2hyb21pdW06
OmNyZWF0ZSgwLCBjbGllbnQpOwogI2VuZGlmCiAKICAgICByZXR1cm4gY2xpZW50OwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5kZXggZGYxNzlh
ODU1NDA1NDY3NjBjMjgzMzM3YTY2ZDNkYTMxZDgyOTQ4Yi4uZTAxNDg3MWIzYmE0YzUyNTA2Y2Ji
NGViODZiYjIxODljN2ZlNjhkNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5oCkBAIC0zNCw2ICszNCw4IEBACiAjaWYgRU5BQkxFKFZJREVPKQog
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZUNo
cm9taXVtLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2Vi
TWVkaWFQbGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTQ0LDgg
KzQ2LDEwIEBAIGNsYXNzIFdlYk1lZGlhUGxheWVyOwogCiAvLyBUaGlzIGNsYXNzIHNlcnZlcyBh
cyBhIGJyaWRnZSBiZXR3ZWVuIFdlYkNvcmU6Ok1lZGlhUGxheWVyIGFuZAogLy8gV2ViS2l0OjpX
ZWJNZWRpYVBsYXllci4KLWNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCA6IHB1YmxpYyBX
ZWJNZWRpYVBsYXllckNsaWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVi
bGljIFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CitjbGFzcyBXZWJNZWRp
YVBsYXllckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViQ29yZTo6
VmlkZW9GcmFtZVByb3ZpZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJs
aWMgV2ViTWVkaWFQbGF5ZXJDbGllbnQgeworCiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNF
bmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0SXNFbmFibGVkKGJvb2wpOwpAQCAtMTEwLDYg
KzExNCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpN
b3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdDsKIAorICAgIC8vIFZpZGVvRnJhbWVQ
cm92aWRlciBtZXRob2RzOgorICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlkZW9GcmFtZUNocm9taXVt
KiBnZXRDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFdl
YkNvcmU6OlZpZGVvRnJhbWVDaHJvbWl1bSopOworCiBwcml2YXRlOgogICAgIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65512</attachid>
            <date>2010-08-25 18:25:39 -0700</date>
            <delta_ts>2010-09-15 09:37:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44539-20100825182538.patch</filename>
            <type>text/plain</type>
            <size>29948</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njk5ZjRlMGM2ZWFkMzFhNDg2YWNmZmJmNzhkODlhN2I3ZTllY2QxMC4uZDRmYTJhZTljZDliYzgw
ZGZhZDMzZTNlOGUwZDFkYmM1MjE0ODc3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wOC0yNCAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCisKKyAgICAgICAgQWRkaW5nIGEgbWVhbnMgb2YgY29tbXVuaWNhdGlvbiBiZXR3
ZWVuIFdlYktpdC9XZWJDb3JlIGFuZAorICAgICAgICBjaHJvbWl1bSBpbiBvcmRlciB0byBzaGFy
ZSB2aWRlbyBmcmFtZXMuIFRoaXMgYWRkcyB0aGUgbmVjZXNzYXJ5CisgICAgICAgIFdlYktpdC1z
aWRlIGNsYXNzZXMgYW5kIG1ldGhvZHMsIGJ1dCBkb2VzIG5vdCBhY3R1YWxseSB1c2UgdGhlbQor
ICAgICAgICB5ZXQgLSB0aGF0IHdpbGwgYmUgY29tbWl0dGVkIGluIGEgc2VwYXJhdGUgcGF0Y2gg
YWZ0ZXIgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgQ2hyb21pdW0gc2lkZSBpcyBjb21taXR0
ZWQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0
NTM5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBhcyB0aGVzZSBuZXcgY2xhc3Nlcy9BUElzIGFy
ZSBub3QgeWV0IHVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0ZyYW1lQ2hyb21pdW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWRlb0ZyYW1l
Q2hyb21pdW06Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9G
cmFtZVByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06
OlZpZGVvTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmg6CisKIDIwMTAtMDgtMjQgIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVD
aHJvbWl1bS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0ZyYW1l
Q2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmQ2NzdlNDkxNzhlMTUzNDIwMGRiMjE0NmMxMzdjNmQ1
YzU3ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0ZyYW1lQ2hyb21pdW0uaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWaWRlb0Zy
YW1lQ2hyb21pdW1faAorI2RlZmluZSBWaWRlb0ZyYW1lQ2hyb21pdW1faAorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIEEgY2xhc3MgdGhhdCByZXByZXNlbnRzIGEgdmlkZW8gZnJhbWUgaW4g
Y2hyb21pdW0uCitjbGFzcyBWaWRlb0ZyYW1lQ2hyb21pdW0geworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjTWF4UGxhbmVzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj
TnVtUkdCUGxhbmVzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjUkdCUGxhbmU7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNOdW1ZVVZQbGFuZXM7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNZUGxhbmU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNVUGxhbmU7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNWUGxhbmU7CisKKyAgICAvLyBUaGVzZSBlbnVtcyBtdXN0
IGJlIGtlcHQgaW4gc3luYyB3aXRoIFdlYktpdDo6V2ViVmlkZW9GcmFtZS4KKyAgICBlbnVtIEZv
cm1hdCB7CisgICAgICAgIEludmFsaWQsCisgICAgICAgIFJHQjU1NSwKKyAgICAgICAgUkdCNTY1
LAorICAgICAgICBSR0IyNCwKKyAgICAgICAgUkdCMzIsCisgICAgICAgIFJHQkEsCisgICAgICAg
IFlWMTIsCisgICAgICAgIFlWMTYsCisgICAgICAgIE5WMTIsCisgICAgICAgIEVtcHR5LAorICAg
ICAgICBBU0NJSSwKKyAgICB9OworCisgICAgZW51bSBTdXJmYWNlVHlwZSB7CisgICAgICAgIFR5
cGVTeXN0ZW1NZW1vcnksCisgICAgICAgIFR5cGVPTVhCdWZmZXJIZWFkLAorICAgICAgICBUeXBl
RUdMSW1hZ2UsCisgICAgICAgIFR5cGVNRkJ1ZmZlciwKKyAgICAgICAgVHlwZURpcmVjdDNEU3Vy
ZmFjZQorICAgIH07CisKKyAgICB2aXJ0dWFsIFN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgRm9ybWF0IGZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgaGVp
Z2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdW5zaWduZWQgcGxhbmVzKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgaW50IHN0cmlkZSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9GcmFtZVByb3ZpZGVyLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92aWRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYwYmFkMDgzMjZjMGIzYmZkY2E2YjVhZGYzNjVhZjMxZWExOWRjMTIKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvRnJhbWVQcm92
aWRlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZGVvRnJhbWVQcm92aWRlcl9oCisjZGVm
aW5lIFZpZGVvRnJhbWVQcm92aWRlcl9oCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWRlb0ZyYW1lUHJvdmlkZXIgewor
cHVibGljOgorICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBWaWRl
b0ZyYW1lQ2hyb21pdW0sIHdoaWNoIGlzCisgICAgLy8gdGhlIFdlYkNvcmUgd3JhcHBlciBmb3Ig
YSB2aWRlbyBmcmFtZSBpbiBDaHJvbWl1bS4gZ2V0Q3VycmVudEZyYW1lKCkKKyAgICAvLyBwbGFj
ZXMgYSBsb2NrIG9uIHRoZSBmcmFtZSBpbiBDaHJvbWl1bS4gQ2FsbHMgdG8gdGhpcyBtZXRob2Qg
c2hvdWxkCisgICAgLy8gYWx3YXlzIGJlIGZvbGxvd2VkIHdpdGggYSBjYWxsIHRvIHB1dEN1cnJl
bnRGcmFtZSgpLgorICAgIC8vIFRoZSBvd25lcnNoaXAgb2YgdGhlIG9iamVjdCBpcyBub3QgdHJh
bnNmZXJyZWQgdG8gdGhlIGNhbGxlciBhbmQKKyAgICAvLyB0aGUgY2FsbGVyIHNob3VsZCBub3Qg
ZnJlZSB0aGUgcmV0dXJuZWQgb2JqZWN0LgorICAgIHZpcnR1YWwgVmlkZW9GcmFtZUNocm9taXVt
KiBnZXRDdXJyZW50RnJhbWUoKSA9IDA7CisgICAgLy8gVGhpcyBmdW5jdGlvbiByZWxlYXNlcyB0
aGUgbG9jayBvbiB0aGUgdmlkZW8gZnJhbWUgaW4gY2hyb21pdW0uIEl0IHNob3VsZAorICAgIC8v
IGFsd2F5cyBiZSBjYWxsZWQgYWZ0ZXIgZ2V0Q3VycmVudEZyYW1lKCkuIEZyYW1lcyBwYXNzZWQg
aW50byB0aGlzIG1ldGhvZAorICAgIC8vIHNob3VsZCBubyBsb25nZXIgYmUgcmVmZXJlbmNlZCBh
ZnRlciB0aGUgY2FsbCBpcyBtYWRlLgorICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUo
VmlkZW9GcmFtZUNocm9taXVtKikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlYmI4YmNlZDFlMjY2NGQxZTk1NTUzYzJk
OTg2MjViNGY1NWFmYWJiLi43ZmY5OGI5M2ZkMDNhZGEyZGE2OGZjNGQxZjZlMjliNTc0MGZmNGJl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC00OCwxOCArNDgsMjAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9t
aXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKK1Bhc3NSZWZQdHI8Vmlk
ZW9MYXllckNocm9taXVtPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0xheWVy
Q2hyb21pdW0qIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb0xheWVyQ2hyb21pdW0ob3duZXIpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFZpZGVvTGF5ZXJDaHJvbWl1bShvd25lciwgcHJvdmlkZXIpKTsKIH0K
IAotVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNo
cm9taXVtKiBvd25lcikKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIsIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIp
CiAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShvd25lcikKICNpZiBQTEFURk9STShTS0lBKQog
ICAgICwgbV9jYW52YXMoMCkKICAgICAsIG1fc2tpYUNvbnRleHQoMCkKICNlbmRpZgogICAgICwg
bV9ncmFwaGljc0NvbnRleHQoMCkKKyAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGIwNjJlNjI4ZmRiOGE4MzY3NjM3NTc5NmJhMTI1MTBiNDYxZjQ3
ZGYuLjM1MDdjYjIwY2YxN2U3OTMzMTJkNmVlYjNlOTUzYjdmOGNlYmYyNTkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaApAQCAtMzUsMTggKzM1LDIwIEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogCiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJWaWRlb0Zy
YW1lUHJvdmlkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBIExheWVyIHRoYXQg
Y29udGFpbnMgYSBWaWRlbyBlbGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVi
bGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVy
ID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUo
R3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwogICAg
IHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbnRlbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9MYXllckNocm9t
aXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIFZpZGVvTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKICAg
ICB2b2lkIGNyZWF0ZVRleHR1cmVSZWN0KGNvbnN0IEludFNpemUmIHJlcXVpcmVkVGV4dHVyZVNp
emUsIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCk7CiAgICAg
dm9pZCB1cGRhdGVUZXh0dXJlUmVjdChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25l
ZCB0ZXh0dXJlSWQpOwogICAgIHZvaWQgdXBkYXRlQ29tcGxldGVkKCk7CkBAIC01Niw2ICs1OCw3
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFBsYXRmb3JtQ29udGV4dFNraWE+IG1fc2tpYUNvbnRl
eHQ7CiAjZW5kaWYKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBtX2dyYXBoaWNzQ29udGV4
dDsKKyAgICBPd25QdHI8VmlkZW9GcmFtZVByb3ZpZGVyPiBtX3Byb3ZpZGVyOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggMTBkODU5YmQxNzc0ZTkzZTNhZmI5MzFkOGNmNGIxNDYyZmVmNGY5MC4u
NThlYzQzZWQ1NzA2MWQwZDEzODU5ZDU0Y2EwOTQ3OGZhZGUxZThhMiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDgtMjQgIFZpY3RvcmlhIEtpcnN0ICA8dnJrQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgorCisgICAgICAgIEFkZGlu
ZyBhIHdheSB0byBjb21tdW5pY2F0ZSB2aWRlbyBmcmFtZXMgYmV0d2VlbiBDaHJvbWl1bSBhbmQg
V2ViS2l0LgorICAgICAgICBUaGUgV2ViS2l0IHNpZGUgYWN0cyBhcyBhIG1pZGRsZW1hbiBiZXR3
ZWVuIENocm9taXVtIGFuZCBXZWJDb3JlLgorICAgICAgICBUaGUgVmlkZW9GcmFtZUNocm9taXVt
SW1wbCBpcyBub3QgYmVpbmcgdXNlZCBieSBXZWJDb3JlIHlldCwgYXMgdGhlcmUKKyAgICAgICAg
c3RpbGwgbmVlZHMgdG8gYmUgYW4gaW1wbGVtZW50YXRpb24gb2YgV2ViVmlkZW9GcmFtZSBpbiBD
aHJvbWl1bQorICAgICAgICAtLSBjb21pbmcgc29vbiBpbiBhIHN1YnNlcXVlbnQgcGF0Y2guCisK
KyAgICAgICAgQVBJIGNoYW5nZXMgZm9yIFZpZGVvIEZyYW1lIHNoYXJpbmcgYmV0d2VlbiBXZWJL
aXQgYW5kIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NDUzOQorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXI6OmdldEN1
cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyOjpwdXRDdXJyZW50
RnJhbWUpOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWRlb0ZyYW1lLmg6IEFkZGVkLgorICAgICAg
ICAqIHNyYy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnRvV2ViVmlkZW9GcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OlZpZGVvRnJhbWVDaHJvbWl1bUltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjp0eXBlKToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6Zm9ybWF0KToKKyAgICAgICAgKFdlYktp
dDo6VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6d2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpWaWRl
b0ZyYW1lQ2hyb21pdW1JbXBsOjpoZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1l
Q2hyb21pdW1JbXBsOjpwbGFuZXMpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21p
dW1JbXBsOjpzdHJpZGUpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0ZyYW1lQ2hyb21pdW1JbXBs
OjpkYXRhKToKKyAgICAgICAgKiBzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpnZXRDdXJyZW50RnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnB1dEN1cnJlbnRGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDgtMjQgIEppYW4g
TGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKaW5kZXggNTY0YjlmOTgxNjEyMDdmOWQyN2I1OGE5NDZkYjEzMjI4
ODNmZGE5ZS4uOTQ0M2Q4ZWVhYWFkZTJmNWY0MzRmMjZhMGEwYzcwNTRlYjRiOTQ4OSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKQEAgLTM4Miw2ICszODIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFn
ZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNw
YWNlUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9UZW1wb3JhcnlHbHVlLmgnLAorICAg
ICAgICAgICAgICAgICdzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
QWNjZXNzaWJpbGl0eUNhY2hlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNj
ZXNzaWJpbGl0eUNhY2hlSW1wbC5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTWVkaWFQbGF5ZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5
ZXIuaAppbmRleCA2ZjUxMzQ1ZDA3NGVlZGQ3YzE5OWUxMGMzOGEzOTlmOWJkMGRhNTk1Li42Y2Vj
MGY1NDkwZDYxNGE3OGNlNDdkODhjYjU2ZjcwOGIzNGVjMzAxIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJNZWRpYVBsYXllci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJD
YW52YXMuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0ZyYW1l
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMjcsNiArMTI4LDE4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIE1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBXZWJWaWRlb0ZyYW1l
LCB3aGljaCBpcworICAgIC8vIGEgV2ViS2l0IHdyYXBwZXIgZm9yIGEgdmlkZW8gZnJhbWUgaW4g
Y2hyb21pdW0uIFRoaXMgcGxhY2VzIGEgbG9jaworICAgIC8vIG9uIHRoZSBmcmFtZSBpbiBjaHJv
bWl1bSwgYW5kIGNhbGxzIHRvIHRoaXMgbWV0aG9kIHNob3VsZCBhbHdheXMgYmUKKyAgICAvLyBm
b2xsb3dlZCB3aXRoIGEgY2FsbCB0byBwdXRDdXJyZW50RnJhbWUoKS4gVGhlIG93bmVyc2hpcCBv
ZiB0aGlzIG9iamVjdAorICAgIC8vIGlzIG5vdCB0cmFuc2ZlcnJlZCB0byB0aGUgY2FsbGVyLCBh
bmQgdGhlIGNhbGxlciBzaG91bGQgbm90IGZyZWUgdGhlCisgICAgLy8gcmV0dXJuZWQgb2JqZWN0
LgorICAgIHZpcnR1YWwgV2ViVmlkZW9GcmFtZSogZ2V0Q3VycmVudEZyYW1lKCkgeyByZXR1cm4g
MDsgfQorICAgIC8vIFRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgdGhlIGxvY2sgb24gdGhlIGN1cnJl
bnQgdmlkZW8gZnJhbWUgaW4gQ2hyb21pdW0uCisgICAgLy8gSXQgc2hvdWxkIGFsd2F5cyBiZSBj
YWxsZWQgYWZ0ZXIgZ2V0Q3VycmVudEZyYW1lKCkuIEZyYW1lIHBhc3NlZCB0byB0aGlzCisgICAg
Ly8gbWV0aG9kIHNob3VsZCBubyBsb25nZXIgYmUgcmVmZXJlbmNlZCBhZnRlciB0aGUgY2FsbCBp
cyBtYWRlLgorICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSop
IHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
VmlkZW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMzRmMmE0NGM4NTE5NGVjNzliZDE3ZTAwNmI0ZDMx
NWJiN2NjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZGVvRnJhbWUuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWRlb0ZyYW1lX2gKKyNkZWZp
bmUgV2ViVmlkZW9GcmFtZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBBIHByb3h5IHZp
ZGVvIGZyYW1lIGludGVyZmFjZSB0byBjb21tdW5pY2F0ZSBmcmFtZSBkYXRhIGJldHdlZW4gY2hy
b21pdW0KKy8vIGFuZCBXZWJLaXQuCitjbGFzcyBXZWJWaWRlb0ZyYW1lIHsKK3B1YmxpYzoKKyAg
ICBlbnVtIEZvcm1hdCB7CisgICAgICAgIEZvcm1hdEludmFsaWQsCisgICAgICAgIEZvcm1hdFJH
QjU1NSwKKyAgICAgICAgRm9ybWF0UkdCNTY1LAorICAgICAgICBGb3JtYXRSR0IyNCwKKyAgICAg
ICAgRm9ybWF0UkdCMzIsCisgICAgICAgIEZvcm1hdFJHQkEsCisgICAgICAgIEZvcm1hdFlWMTIs
CisgICAgICAgIEZvcm1hdFlWMTYsCisgICAgICAgIEZvcm1hdE5WMTIsCisgICAgICAgIEZvcm1h
dEVtcHR5LAorICAgICAgICBGb3JtYXRBU0NJSSwKKyAgICB9OworCisgICAgZW51bSBTdXJmYWNl
VHlwZSB7CisgICAgICAgIFN1cmZhY2VUeXBlU3lzdGVtTWVtb3J5LAorICAgICAgICBTdXJmYWNl
VHlwZU9NWEJ1ZmZlckhlYWQsCisgICAgICAgIFN1cmZhY2VUeXBlRUdMSW1hZ2UsCisgICAgICAg
IFN1cmZhY2VUeXBlTUZCdWZmZXIsCisgICAgICAgIFN1cmZhY2VUeXBlRGlyZWN0M0RTdXJmYWNl
CisgICAgfTsKKworICAgIHZpcnR1YWwgU3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBGb3JtYXQgZm9ybWF0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dW5zaWduZWQgd2lkdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoZWlnaHQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBwbGFuZXMoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBpbnQgc3RyaWRlKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBjb25zdCB2b2lkKiBkYXRhKHVuc2lnbmVkIHBsYW5lKSBjb25zdCA9IDA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCBiOTNkNGJiMjYzZWVjNGNiMDMyZDY5MjIzYzJhMGRm
NDAxYzgwOGE1Li5hMTE3ZmMyYTc3ZmRmNWJkZDc4MjZmNDdhMGE0MDViMTI5Yzk5M2U2IDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFR5
cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFt
ZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1
ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiV2ViQ2xpcGJvYXJkLmgi
CkBAIC02Miw2ICs2Myw3IEBACiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJX
ZWJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCisj
aW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KQEAg
LTMyNyw2ICszMjksMjQgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVBs
YXllcjo6VW5rbm93biwgTWVkaWFQbGF5ZXI6OlVua25vd24pOwogQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJNZWRpYVBsYXllcjo6RG93bmxvYWQsIE1lZGlhUGxheWVyOjpEb3dubG9h
ZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhUGxheWVyOjpTdG9yZWRT
dHJlYW0sIE1lZGlhUGxheWVyOjpTdG9yZWRTdHJlYW0pOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSwgTWVkaWFQbGF5ZXI6OkxpdmVTdHJl
YW0pOworCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkZvcm1h
dEludmFsaWQsIFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52YWxpZCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkZvcm1hdFJHQjU1NSwgVmlkZW9GcmFtZUNocm9t
aXVtOjpSR0I1NTUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1l
OjpGb3JtYXRSR0I1NjUsIFZpZGVvRnJhbWVDaHJvbWl1bTo6UkdCNTY1KTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6Rm9ybWF0UkdCMjQsIFZpZGVvRnJhbWVD
aHJvbWl1bTo6UkdCMjQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJWaWRlb0Zy
YW1lOjpGb3JtYXRSR0IzMiwgVmlkZW9GcmFtZUNocm9taXVtOjpSR0IzMik7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkZvcm1hdFJHQkEsIFZpZGVvRnJhbWVD
aHJvbWl1bTo6UkdCQSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJh
bWU6OkZvcm1hdFlWMTIsIFZpZGVvRnJhbWVDaHJvbWl1bTo6WVYxMik7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkZvcm1hdFlWMTYsIFZpZGVvRnJhbWVDaHJv
bWl1bTo6WVYxNik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6
OkZvcm1hdE5WMTIsIFZpZGVvRnJhbWVDaHJvbWl1bTo6TlYxMik7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OkZvcm1hdEVtcHR5LCBWaWRlb0ZyYW1lQ2hyb21p
dW06OkVtcHR5KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6
Rm9ybWF0QVNDSUksIFZpZGVvRnJhbWVDaHJvbWl1bTo6QVNDSUkpOworCitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYlZpZGVvRnJhbWU6OlN1cmZhY2VUeXBlU3lzdGVtTWVtb3J5LCBW
aWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVTeXN0ZW1NZW1vcnkpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlwZU9NWEJ1ZmZlckhlYWQsIFZpZGVv
RnJhbWVDaHJvbWl1bTo6VHlwZU9NWEJ1ZmZlckhlYWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJWaWRlb0ZyYW1lOjpTdXJmYWNlVHlwZUVHTEltYWdlLCBWaWRlb0ZyYW1lQ2hy
b21pdW06OlR5cGVFR0xJbWFnZSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlZp
ZGVvRnJhbWU6OlN1cmZhY2VUeXBlTUZCdWZmZXIsIFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZU1G
QnVmZmVyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlkZW9GcmFtZTo6U3Vy
ZmFjZVR5cGVEaXJlY3QzRFN1cmZhY2UsIFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZURpcmVjdDNE
U3VyZmFjZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpAQCAtMzYwLDUg
KzM4MCwzIEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVmlldzo6VXNlckNvbnRl
bnRJbmplY3RJblRvcEZyYW1lT25seSwgSW5qZWN0SW5UCiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYklEQktleTo6TnVsbFR5cGUsIElEQktleTo6TnVsbFR5cGUpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJJREJLZXk6OlN0cmluZ1R5cGUsIElEQktleTo6U3RyaW5n
VHlwZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklEQktleTo6TnVtYmVyVHlw
ZSwgSURCS2V5OjpOdW1iZXJUeXBlKTsKLQotCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9WaWRl
b0ZyYW1lQ2hyb21pdW1JbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjk4MzIwYTNjZTA1NzY1NWI2N2Nk
MGE0Yzc4YjFiZmI5YzFlODYzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9WaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsLmgiCisKKyNpbmNsdWRl
ICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJWaWRlb0ZyYW1lLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY29uc3QgdW5z
aWduZWQgY01heFBsYW5lcyA9IDM7Citjb25zdCB1bnNpZ25lZCBjTnVtUkdCUGxhbmVzID0gMTsK
K2NvbnN0IHVuc2lnbmVkIGNSR0JQbGFuZSA9IDA7Citjb25zdCB1bnNpZ25lZCBjTnVtWVVWUGxh
bmVzID0gMzsKK2NvbnN0IHVuc2lnbmVkIGNZUGxhbmUgPSAwOworY29uc3QgdW5zaWduZWQgY1VQ
bGFuZSA9IDE7Citjb25zdCB1bnNpZ25lZCBjVlBsYW5lID0gMjsKKworV2ViVmlkZW9GcmFtZSog
VmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dG9XZWJWaWRlb0ZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1
bSogdmlkZW9GcmFtZSkKK3sKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKiB3cmFwcGVkRnJh
bWUgPSBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsKj4odmlkZW9GcmFtZSk7Cisg
ICAgaWYgKHdyYXBwZWRGcmFtZSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZWRGcmFtZS0+bV93ZWJW
aWRlb0ZyYW1lOworICAgIHJldHVybiAwOworfQorCitWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpW
aWRlb0ZyYW1lQ2hyb21pdW1JbXBsKFdlYlZpZGVvRnJhbWUqIHdlYlZpZGVvRnJhbWUpCisgICAg
OiBtX3dlYlZpZGVvRnJhbWUod2ViVmlkZW9GcmFtZSkKK3sKK30KKworVmlkZW9GcmFtZUNocm9t
aXVtOjpTdXJmYWNlVHlwZSBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsOjpzdXJmYWNlVHlwZSgpIGNv
bnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFZpZGVvRnJhbWVDaHJvbWl1bTo6U3VyZmFjZVR5cGU+KG1fd2ViVmlkZW9GcmFtZS0+c3Vy
ZmFjZVR5cGUoKSk7CisgICAgcmV0dXJuIFR5cGVTeXN0ZW1NZW1vcnk7Cit9CisKK1ZpZGVvRnJh
bWVDaHJvbWl1bTo6Rm9ybWF0IFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OmZvcm1hdCgpIGNvbnN0
Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0PihtX3dlYlZpZGVvRnJhbWUtPmZvcm1hdCgpKTsK
KyAgICByZXR1cm4gSW52YWxpZDsKK30KKwordW5zaWduZWQgVmlkZW9GcmFtZUNocm9taXVtSW1w
bDo6d2lkdGgoKSBjb25zdAoreworICAgIGlmIChtX3dlYlZpZGVvRnJhbWUpCisgICAgICAgIHJl
dHVybiBtX3dlYlZpZGVvRnJhbWUtPndpZHRoKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2ln
bmVkIFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgaWYgKG1f
d2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlkZW9GcmFtZS0+aGVpZ2h0KCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIFZpZGVvRnJhbWVDaHJvbWl1bUltcGw6OnBs
YW5lcygpIGNvbnN0Cit7CisgICAgaWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJu
IG1fd2ViVmlkZW9GcmFtZS0+cGxhbmVzKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBWaWRl
b0ZyYW1lQ2hyb21pdW1JbXBsOjpzdHJpZGUodW5zaWduZWQgcGxhbmUpIGNvbnN0Cit7CisgICAg
aWYgKG1fd2ViVmlkZW9GcmFtZSkKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlkZW9GcmFtZS0+c3Ry
aWRlKHBsYW5lKTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3Qgdm9pZCogVmlkZW9GcmFtZUNo
cm9taXVtSW1wbDo6ZGF0YSh1bnNpZ25lZCBwbGFuZSkgY29uc3QKK3sKKyAgICBpZiAobV93ZWJW
aWRlb0ZyYW1lKQorICAgICAgICByZXR1cm4gbV93ZWJWaWRlb0ZyYW1lLT5kYXRhKHBsYW5lKTsK
KyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvVmlkZW9GcmFtZUNocm9taXVtSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZDQyNGM0NmE4
NzZhMTkzOTQ2MGJiZDQ5OWMxZDc4NzEwNWVjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaApAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsX2gKKyNkZWZpbmUgVmlkZW9GcmFtZUNocm9taXVt
SW1wbF9oCisKKyNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJW
aWRlb0ZyYW1lLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworLy8gQSB3cmFwcGVyIGNsYXNzIGZvciBXZWJLaXQ6OldlYlZpZGVvRnJhbWUuIE9i
amVjdHMgY2FuIGJlIGNyZWF0ZWQgaW4gV2ViS2l0CisvLyBhbmQgdXNlZCBpbiBXZWJDb3JlIGJl
Y2F1c2Ugb2YgdGhlIFZpZGVvRnJhbWVDaHJvbWl1bSBpbnRlcmZhY2UuCitjbGFzcyBWaWRlb0Zy
YW1lQ2hyb21pdW1JbXBsIDogcHVibGljIFZpZGVvRnJhbWVDaHJvbWl1bSB7CitwdWJsaWM6Cisg
ICAgLy8gQ29udmVydHMgYSBXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW0gdG8gYSBXZWJLaXQ6
OldlYlZpZGVvRnJhbWUuCisgICAgc3RhdGljIFdlYlZpZGVvRnJhbWUqIHRvV2ViVmlkZW9GcmFt
ZShWaWRlb0ZyYW1lQ2hyb21pdW0qKTsKKworICAgIC8vIENyZWF0ZXMgYSBWaWRlb0ZyYW1lQ2hy
b21pdW1JbXBsIG9iamVjdCB0byB3cmFwIHRoZSBnaXZlbiBXZWJWaWRlb0ZyYW1lLgorICAgIC8v
IFRoZSBWaWRlb0ZyYW1lQ2hyb21pdW1JbXBsIGRvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHRo
ZSBXZWJWaWRlb0ZyYW1lCisgICAgLy8gYW5kIHNob3VsZCBub3QgZnJlZSB0aGUgZnJhbWUncyBt
ZW1vcnkuCisgICAgVmlkZW9GcmFtZUNocm9taXVtSW1wbChXZWJWaWRlb0ZyYW1lKik7CisgICAg
dmlydHVhbCBTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgRm9y
bWF0IGZvcm1hdCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgd2lkdGgoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgcGxhbmVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgc3RyaWRlKHVuc2lnbmVkIHBsYW5l
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIGRhdGEodW5zaWduZWQgcGxhbmUpIGNv
bnN0OworCitwcml2YXRlOgorICAgIFdlYlZpZGVvRnJhbWUqIG1fd2ViVmlkZW9GcmFtZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCA4ZjIxMGEwZjNiZTc3MWFk
MmE3MjM5Y2FjY2Q5NDg0ODI2NjFkMGY5Li5mMGVjZTBkNzUyMWJkNmY5ZDFkMjJhZjE1MjkwYTZk
NmZmNzg0NjJhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNs
aWVudEltcGwuY3BwCkBAIC0yMiw2ICsyMiw4IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bUltcGwuaCIKICNpbmNsdWRlICJXZWJDYW52YXMuaCIK
ICNpbmNsdWRlICJXZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKQEAg
LTQxNiw2ICs0MTgsMjggQEAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjptb3ZpZUxvYWRUeXBlKCkgY29uc3QKICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OlVua25vd247CiB9CiAKK1ZpZGVvRnJhbWVDaHJvbWl1bSogV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpnZXRDdXJyZW50RnJhbWUoKQoreworICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogdmlk
ZW9GcmFtZSA9IDA7CisgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIuZ2V0KCkpIHsKKyAgICAgICAg
V2ViVmlkZW9GcmFtZSogd2Via2l0VmlkZW9GcmFtZSA9IG1fd2ViTWVkaWFQbGF5ZXItPmdldEN1
cnJlbnRGcmFtZSgpOworICAgICAgICBpZiAod2Via2l0VmlkZW9GcmFtZSkKKyAgICAgICAgICAg
IHZpZGVvRnJhbWUgPSBuZXcgVmlkZW9GcmFtZUNocm9taXVtSW1wbCh3ZWJraXRWaWRlb0ZyYW1l
KTsKKyAgICB9CisgICAgcmV0dXJuIHZpZGVvRnJhbWU7Cit9CisKK3ZvaWQgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpwdXRDdXJyZW50RnJhbWUoVmlkZW9GcmFtZUNocm9taXVtKiB2aWRlb0Zy
YW1lKQoreworICAgIGlmICh2aWRlb0ZyYW1lKSB7CisgICAgICAgIGlmIChtX3dlYk1lZGlhUGxh
eWVyLmdldCgpKSB7CisgICAgICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5wdXRDdXJyZW50RnJh
bWUoCisgICAgICAgICAgICAgICAgVmlkZW9GcmFtZUNocm9taXVtSW1wbDo6dG9XZWJWaWRlb0Zy
YW1lKHZpZGVvRnJhbWUpKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgdmlkZW9GcmFtZTsK
KyAgICB9Cit9CisKIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKIHsKICAgICBXZWJNZWRpYVBs
YXllckNsaWVudEltcGwqIGNsaWVudCA9IG5ldyBXZWJNZWRpYVBsYXllckNsaWVudEltcGwoKTsK
QEAgLTQzMyw3ICs0NTcsNyBAQCBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6Y3JlYXRlKE1lZGlhUGxheWVyKiBwbGF5ZQogICAgICAgICBmcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPmNvbXBvc2l0b3IoKS0+aGFzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZygpOwogCiAgICAgaWYgKGNsaWVudC0+bV9zdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmcpCi0gICAgICAgIGNsaWVudC0+bV92aWRlb0xheWVyID0gVmlkZW9MYXllckNocm9taXVtOjpj
cmVhdGUoMCk7CisgICAgICAgIGNsaWVudC0+bV92aWRlb0xheWVyID0gVmlkZW9MYXllckNocm9t
aXVtOjpjcmVhdGUoMCwgY2xpZW50KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGNsaWVudDsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IGRm
MTc5YTg1NTQwNTQ2NzYwYzI4MzMzN2E2NmQzZGEzMWQ4Mjk0OGIuLmUwMTQ4NzFiM2JhNGM1MjUw
NmNiYjRlYjg2YmIyMTg5YzdmZTY4ZDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtMzQsNiArMzQsOCBAQAogI2lmIEVOQUJMRShWSURF
TykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlZpZGVvRnJh
bWVDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWVQcm92aWRlci5oIgogI2luY2x1ZGUg
IldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC00
NCw4ICs0NiwxMCBAQCBjbGFzcyBXZWJNZWRpYVBsYXllcjsKIAogLy8gVGhpcyBjbGFzcyBzZXJ2
ZXMgYXMgYSBicmlkZ2UgYmV0d2VlbiBXZWJDb3JlOjpNZWRpYVBsYXllciBhbmQKIC8vIFdlYktp
dDo6V2ViTWVkaWFQbGF5ZXIuCi1jbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudEltcGwgOiBwdWJs
aWMgV2ViTWVkaWFQbGF5ZXJDbGllbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAs
IHB1YmxpYyBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgeworY2xhc3MgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYkNv
cmU6OlZpZGVvRnJhbWVQcm92aWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwg
cHVibGljIFdlYk1lZGlhUGxheWVyQ2xpZW50IHsKKwogcHVibGljOgogICAgIHN0YXRpYyBib29s
IGlzRW5hYmxlZCgpOwogICAgIHN0YXRpYyB2b2lkIHNldElzRW5hYmxlZChib29sKTsKQEAgLTEx
MCw2ICsxMTQsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpNZWRpYVBsYXll
cjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Q7CiAKKyAgICAvLyBWaWRlb0Zy
YW1lUHJvdmlkZXIgbWV0aG9kczoKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpZGVvRnJhbWVDaHJv
bWl1bSogZ2V0Q3VycmVudEZyYW1lKCk7CisgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFt
ZShXZWJDb3JlOjpWaWRlb0ZyYW1lQ2hyb21pdW0qKTsKKwogcHJpdmF0ZToKICAgICBXZWJNZWRp
YVBsYXllckNsaWVudEltcGwoKTsKIAo=
</data>
<flag name="review"
          id="54297"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>