<?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>154117</bug_id>
          
          <creation_ts>2016-02-11 10:43:50 -0800</creation_ts>
          <short_desc>Make MediaResourceLoader behave more like a CachedResourceLoader.</short_desc>
          <delta_ts>2016-02-12 10:13:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1163788</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-11 10:43:50 -0800</bug_when>
    <thetext>Make MediaResourceLoader behave more like a CachedResourceLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163794</commentid>
    <comment_count>1</comment_count>
      <attachid>271067</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-11 10:53:22 -0800</bug_when>
    <thetext>Created attachment 271067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163805</commentid>
    <comment_count>2</comment_count>
      <attachid>271067</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-11 11:44:44 -0800</bug_when>
    <thetext>Comment on attachment 271067
Patch

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

r=me

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:68
&gt; +    RefPtr&lt;MediaResource&gt; mediaResource = MediaResource::create(*this, resource);

MediaResource::create returns a Ref.  This should be Ref or auto.

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:74
&gt; +void MediaResourceLoader::removeResource(MediaResource* mediaResource)

I think the parameter should be a MediaResource&amp; to indicate that it cannot be null, even though we would be taking the address of it.

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:89
&gt; +    resource-&gt;addClient(this);

ASSERT(resource)

&gt; Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h:47
&gt; +    virtual void redirectReceived(PlatformMediaResource&amp;, ResourceRequest&amp;, const ResourceResponse&amp;) { }
&gt; +    virtual void dataSent(PlatformMediaResource&amp;, unsigned long long, unsigned long long) { }

These are added and unused.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:129
&gt;      RefPtr&lt;PlatformMediaResourceLoader&gt; loader;
&gt; +    RefPtr&lt;PlatformMediaResource&gt; resource;

This doesn&apos;t change existing behavior in the GStreamer code, but you might want to add a FIXME comment saying the media element should own the loader, which would make loading more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163824</commentid>
    <comment_count>3</comment_count>
      <attachid>271067</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-11 12:58:06 -0800</bug_when>
    <thetext>Comment on attachment 271067
Patch

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

&gt;&gt; Source/WebCore/loader/MediaResourceLoader.cpp:68
&gt;&gt; +    RefPtr&lt;MediaResource&gt; mediaResource = MediaResource::create(*this, resource);
&gt; 
&gt; MediaResource::create returns a Ref.  This should be Ref or auto.

Ok.

&gt;&gt; Source/WebCore/loader/MediaResourceLoader.cpp:74
&gt;&gt; +void MediaResourceLoader::removeResource(MediaResource* mediaResource)
&gt; 
&gt; I think the parameter should be a MediaResource&amp; to indicate that it cannot be null, even though we would be taking the address of it.

Ok.

&gt;&gt; Source/WebCore/loader/MediaResourceLoader.cpp:89
&gt;&gt; +    resource-&gt;addClient(this);
&gt; 
&gt; ASSERT(resource)

Ok.

&gt;&gt; Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h:47
&gt;&gt; +    virtual void dataSent(PlatformMediaResource&amp;, unsigned long long, unsigned long long) { }
&gt; 
&gt; These are added and unused.

I&apos;ll add implementations to MediaResource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163831</commentid>
    <comment_count>4</comment_count>
      <attachid>271076</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-11 13:05:29 -0800</bug_when>
    <thetext>Created attachment 271076
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163886</commentid>
    <comment_count>5</comment_count>
      <attachid>271076</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-11 14:34:37 -0800</bug_when>
    <thetext>Comment on attachment 271076
Patch for landing

Clearing flags on attachment: 271076

Committed r196442: &lt;http://trac.webkit.org/changeset/196442&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271067</attachid>
            <date>2016-02-11 10:53:22 -0800</date>
            <delta_ts>2016-02-11 11:44:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154117-20160211105301.patch</filename>
            <type>text/plain</type>
            <size>27707</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNiMzlhOTEzZDAxZjVh
MjVkYzYwOTQ3ZDQyNDI5ODY3ZmE4ZTIzOS4uMzNlZGQwODc1Nzc0ZDZiMzY3NDFjZTk5Y2Q4MzQ1
MWQ3YTNiNWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE2LTAyLTExICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTWVkaWFSZXNvdXJj
ZUxvYWRlciBiZWhhdmUgbW9yZSBsaWtlIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZWRpYVJlc291cmNlTG9h
ZGVyIGN1cnJlbnRseSBjYW4gb25seSBoYW5kbGUgYSBzaW5nbGUgcmVxdWVzdCBhdCBhIHRpbWUu
IFNwbGl0IHRoZSBjbGFzcworICAgICAgICBpbnRvIHR3bywgTWVkaWFSZXNvdXJjZUxvYWRlciBh
bmQgTWVkaWFSZXNvdXJjZSwgZWZmZWN0aXZlbHkgd3JhcHBpbmcgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIKKyAgICAgICAgYW5kIENhY2hlZFJhd1Jlc291cmNlIHJlc3BlY3RpdmVseS4gV2l0aCB0aGlz
IGRldmlzaW9uLCB0aGUgc2FtZSBsb2FkZXIgY2FuIGJlIHVzZWQgdG8gaXNzdWUKKyAgICAgICAg
bXVsdGlwbGUgc2ltdWx0YW5lb3VzIHJlc291cmNlIHJlcXVlc3RzLgorCisgICAgICAgIFRoaXMg
bmVjZXNzZWNpdGF0ZXMgc3BsaXR0aW5nIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSBpbnRvIHR3byBj
bGFzc2VzIGFzIHdlbGwuICBUbyBzaW1wbGlmeQorICAgICAgICB0aGUgSFRNTE1lZGlhRWxlbWVu
dCwgTWVkaWFQbGF5ZXIsIGFuZCBNZWRpYVBsYXllckNsaWVudCBBUElzLCBkbyBub3QgcmVxdWly
ZSBhIGNsaWVudAorICAgICAgICBvYmplY3Qgd2hlbiBjcmVhdGluZyB0aGUgbG9hZGVyOyBpbnN0
ZWFkLCB0aGUgY2xpZW50IGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSB0aGUgcmVzb3VyY2UuCisgICAg
ICAgIFRoaXMgYWxzbyBtYXRjaGVzIHRoZSBDYWNoZWRSYXdSZXNvdXJjZSBBUEkuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcik6IFJlbW92ZSB0aGUg
Y2xpZW50IHBhcmFtZXRlci4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlc291cmNlTG9hZGVyOjpNZWRpYVJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6On5NZWRpYVJlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6IFJlbmFt
ZWQgZnJvbSBzdGFydCgpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6
cmVtb3ZlUmVzb3VyY2UpOiBSZW1vdmUgcmVzb3VyY2UgZnJvbSBsaXZlIHJlc291cmNlIGxpc3Qu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpjcmVhdGUpOiBVdGlsaXR5IGZhY3Rv
cnkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpNZWRpYVJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6On5NZWRpYVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6OnN0b3ApOiBNb3ZlZCBmcm9tIE1lZGlhUmVzb3VyY2VM
b2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpzZXREZWZlcnNMb2FkaW5n
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2Vp
dmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlz
aGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpnZXRPckNyZWF0
ZVJlYWRCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6flBsYXRmb3JtTWVk
aWFSZXNvdXJjZUNsaWVudCk6IFJlbmFtZWQgZnJvbSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXJDbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6
OnJlc3BvbnNlUmVjZWl2ZWQpOiBDbGllbnQgbWV0aG9kcyBub3cgdGFrZSBhIHJlZmVyZW5jZSB0
byB0aGUgcmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VD
bGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6ZGF0YVNlbnQpOiBEaXR0by4gCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50OjphY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUNsaWVudDo6bG9hZEZhaWxlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlQ2xpZW50Ojpsb2FkRmluaXNoZWQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVm
ZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UpOiAKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZTo6flBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSk6IAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlOjpzZXRDbGllbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjU3RhcnQpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjTmVlZERhdGEpOgorICAgICAgICAod2ViS2l0V2ViU3JjRW5vdWdoRGF0YSk6Cisg
ICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVm
ZmVyKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJl
Y2VpdmVkKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6bG9hZEZhaWxlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
bG9hZEZpbmlzaGVkKToKKwogMjAxNi0wMS0yNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbRU1FXVtNYWNdIE1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCkgZmFp
bHMgd2l0aCBpbml0RGF0YSBjb250YWluaW5nIGEgY29udGVudElkIHdob3NlIGxlbmd0aCBpcyA+
IDEvMiB0aGUgaW5pdERhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBkNzE3MDg4NTliNzk0Y2IxZjhjYjU0MDljOGExNGY0OTg3MTc4YTI4Li5mNjljNjQ2
MjgzYWRiNTE3MzI4OGRlYjk1MjFlNDk5Y2UyMjA0ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYxMzAsOSArNjEzMCw5IEBAIENhY2hlZFJlc291cmNl
TG9hZGVyKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVy
KCkKICAgICByZXR1cm4gJmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAot
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCitSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyPiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9h
ZGVyKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJlc291cmNlTG9hZGVyKGRv
Y3VtZW50KCksIGZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpLCBX
VEZNb3ZlKGNsaWVudCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJlc291cmNl
TG9hZGVyKGRvY3VtZW50KCksIGZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjcm9zc29yaWdp
bkF0dHIpKSk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRX
YWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IGMxMWQzNWFlMTJiNGZjYjI5NDQ1Y2RiYmFjMzMxYWM2M2JhODkyOWUuLmQ2MWRm
NzU5NGViYzc3M2E0ZDI3NzZjNzU2YzRhNWNlOGIyNmI2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC01OTUsNyArNTk1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI+IG1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudD4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJj
ZUxvYWRlcigpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdyYXBo
aWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVkYjFl
YjU4NDViNzBmZWFmMzM3OWNjYWJiYzZlMGI3YzI0NTNlOTUuLjc0NWQ1OWE4MTQ3ZGZhMmJlZjk1
YzRjMzBlNWYzMGMwNjJmMmU1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
ZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM4LDI0ICszOCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU1lZGlhUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQotICAgIDogUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyKFdURk1vdmUoY2xpZW50KSkKLSAgICAsIG1fZG9jdW1lbnQo
ZG9jdW1lbnQpCitNZWRpYVJlc291cmNlTG9hZGVyOjpNZWRpYVJlc291cmNlTG9hZGVyKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCisgICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQogICAgICwgbV9jcm9zc09yaWdpbk1vZGUoY3Jvc3NPcmlnaW5Nb2Rl
KQotICAgICwgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKGZhbHNlKQogewogfQogCiBNZWRp
YVJlc291cmNlTG9hZGVyOjp+TWVkaWFSZXNvdXJjZUxvYWRlcigpCiB7Ci0gICAgc3RvcCgpOwor
ICAgIEFTU0VSVChtX3Jlc291cmNlcy5pc0VtcHR5KCkpOwogfQogCi1ib29sIE1lZGlhUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZE9wdGlv
bnMgb3B0aW9ucykKK1JlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IE1lZGlhUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExv
YWRPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2UpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgYnVmZmVyaW5nUG9saWN5ID0gb3B0
aW9ucyAmIExvYWRPcHRpb246OkJ1ZmZlckRhdGEgPyBXZWJDb3JlOjpCdWZmZXJEYXRhIDogV2Vi
Q29yZTo6RG9Ob3RCdWZmZXJEYXRhOwogICAgIFJlcXVlc3RPcmlnaW5Qb2xpY3kgY29yc1BvbGlj
eSA9ICFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSA/IFBvdGVudGlhbGx5Q3Jvc3NPcmlnaW5F
bmFibGVkIDogVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGU7CiAgICAgU3RvcmVk
Q3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IG1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fY3Jvc3NPcmlnaW5Nb2RlLCAidXNl
LWNyZWRlbnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzOwpAQCAtNjYsMTcgKzYxLDQxIEBAIGJvb2wgTWVkaWFSZXNvdXJjZUxvYWRl
cjo6c3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkT3B0aW9ucyBvcHRp
CiAgICAgaWYgKCFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKICAgICAgICAgdXBkYXRlUmVx
dWVzdEZvckFjY2Vzc0NvbnRyb2woY2FjaGVSZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3Qo
KSwgbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBhbGxvd0NyZWRlbnRpYWxzKTsKIAotICAg
IG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IGZhbHNlOworICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXNvdXJjZSA9IG1fZG9jdW1lbnQuY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoY2FjaGVSZXF1ZXN0KTsKKyAgICBpZiAo
IXJlc291cmNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fcmVzb3VyY2UgPSBt
X2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNlKGNhY2hl
UmVxdWVzdCk7Ci0gICAgaWYgKCFtX3Jlc291cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IG1lZGlhUmVzb3VyY2UgPSBNZWRpYVJlc291cmNlOjpj
cmVhdGUoKnRoaXMsIHJlc291cmNlKTsKKyAgICBtX3Jlc291cmNlcy5hZGQobWVkaWFSZXNvdXJj
ZS5nZXQoKSk7CisKKyAgICByZXR1cm4gbWVkaWFSZXNvdXJjZTsKK30KKwordm9pZCBNZWRpYVJl
c291cmNlTG9hZGVyOjpyZW1vdmVSZXNvdXJjZShNZWRpYVJlc291cmNlKiBtZWRpYVJlc291cmNl
KQoreworICAgIEFTU0VSVChtX3Jlc291cmNlcy5jb250YWlucyhtZWRpYVJlc291cmNlKSk7Cisg
ICAgbV9yZXNvdXJjZXMucmVtb3ZlKG1lZGlhUmVzb3VyY2UpOworfQogCi0gICAgbV9yZXNvdXJj
ZS0+YWRkQ2xpZW50KHRoaXMpOwotICAgIHJldHVybiB0cnVlOworUmVmPE1lZGlhUmVzb3VyY2U+
IE1lZGlhUmVzb3VyY2U6OmNyZWF0ZShNZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXNvdXJjZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJlc291cmNlKGxvYWRlciwgcmVzb3VyY2UpKTsKIH0KIAot
dm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpzdG9wKCkKK01lZGlhUmVzb3VyY2U6Ok1lZGlhUmVz
b3VyY2UoTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcmVzb3VyY2UpCisgICAgOiBtX2xvYWRlcihsb2FkZXIpCisgICAg
LCBtX3Jlc291cmNlKHJlc291cmNlKQoreworICAgIHJlc291cmNlLT5hZGRDbGllbnQodGhpcyk7
Cit9CisKK01lZGlhUmVzb3VyY2U6On5NZWRpYVJlc291cmNlKCkKK3sKKyAgICBzdG9wKCk7Cisg
ICAgbV9sb2FkZXItPnJlbW92ZVJlc291cmNlKHRoaXMpOworfQorCit2b2lkIE1lZGlhUmVzb3Vy
Y2U6OnN0b3AoKQogewogICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODUsNTUgKzEwNCw2MCBAQCB2b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnN0b3AoKQogICAgIG1f
cmVzb3VyY2UgPSBudWxscHRyOwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnNldERl
ZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnNMb2FkaW5nKQordm9pZCBNZWRpYVJlc291cmNlOjpzZXRE
ZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzTG9hZGluZykKIHsKICAgICBpZiAobV9yZXNvdXJjZSkK
ICAgICAgICAgbV9yZXNvdXJjZS0+c2V0RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKTsKIH0K
IAotdm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIE1l
ZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAotICAgIFJlZlB0cjxNZWRpYVJlc291
cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotICAgIGlmICghbV9jcm9zc09yaWdpbk1vZGUuaXNO
dWxsKCkgJiYgIXJlc291cmNlLT5wYXNzZXNTYW1lT3JpZ2luUG9saWN5Q2hlY2soKm1fZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dCh0aGlzKTsKKyAgICBpZiAoIW1fbG9hZGVyLT5jcm9zc09yaWdpbk1vZGUoKS5pc051bGwoKSAm
JiAhcmVzb3VyY2UtPnBhc3Nlc1NhbWVPcmlnaW5Qb2xpY3lDaGVjaygqbV9sb2FkZXItPmRvY3Vt
ZW50KCkuc2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJj
ZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7
Ci0gICAgICAgIG1fZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKKyAgICAg
ICAgbV9sb2FkZXItPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKICAg
ICAgICAgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0gZmFsc2U7Ci0gICAgICAgIG1fY2xp
ZW50LT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsK
KyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAgICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZCgqdGhpcywgUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXNwb25zZS51cmwoKSwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpKTsKICAgICAgICAg
c3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kaWRQYXNzQWNjZXNzQ29u
dHJvbENoZWNrID0gIW1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpOwotICAgIG1fY2xpZW50LT5y
ZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKKyAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hl
Y2sgPSAhbV9sb2FkZXItPmNyb3NzT3JpZ2luTW9kZSgpLmlzTnVsbCgpOworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQoKnRoaXMsIHJlc3BvbnNl
KTsKIH0KIAotdm9pZCBNZWRpYVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29u
c3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJj
ZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKLSAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKGRhdGEs
IGRhdGFMZW5ndGgpOworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOwor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywg
ZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBNZWRpYVJlc291cmNlOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKHJl
c291cmNlID09IG1fcmVzb3VyY2UpOwogCi0gICAgUmVmUHRyPE1lZGlhUmVzb3VyY2VMb2FkZXI+
IHByb3RlY3QodGhpcyk7Ci0gICAgaWYgKHJlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgp
KQotICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZChyZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigp
KTsKLSAgICBlbHNlCi0gICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKTsKKyAgICBSZWZQ
dHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBpZiAobV9jbGllbnQpIHsKKyAg
ICAgICAgaWYgKHJlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQorICAgICAgICAgICAg
bV9jbGllbnQtPmxvYWRGYWlsZWQoKnRoaXMsIHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVkKCp0aGlzKTsK
KyAgICB9CiAgICAgc3RvcCgpOwogfQogCiAjaWYgVVNFKFNPVVApCi1jaGFyKiBNZWRpYVJlc291
cmNlTG9hZGVyOjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKQorY2hhciogTWVkaWFS
ZXNvdXJjZTo6Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwg
c2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICByZXR1cm4gbV9j
bGllbnQtPmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihyZXF1ZXN0ZWRTaXplLCBhY3R1YWxTaXplKTsK
KyAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKCp0
aGlzLCByZXF1ZXN0ZWRTaXplLCBhY3R1YWxTaXplKSA6IG51bGxwdHI7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggMzFiNGRi
ODY2NjYzYjk4NmY1YzExNzcxYWEzMTlkODYzYjEwOTM3MS4uYjVlMDVjMzY5MmFiMjE1MDk3ZDA3
ZmI3ZjFmZmVlMmVmOGVkMzI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5oCkBAIC0zMCwzNSArMzAsNTUgQEAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIE1lZGlhUmVzb3VyY2U7CiAKLWNsYXNzIE1lZGlhUmVzb3VyY2VM
b2FkZXIgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLCBDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudCB7CitjbGFzcyBNZWRpYVJlc291cmNlTG9hZGVyIGZpbmFsIDogcHVi
bGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciB7CiBwdWJsaWM6Ci0gICAgTWVkaWFSZXNv
dXJjZUxvYWRlcihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50Pik7Ci0gICAgdmly
dHVhbCB+TWVkaWFSZXNvdXJjZUxvYWRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVz
b3VyY2VMb2FkZXIoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+TWVkaWFSZXNvdXJjZUxvYWRlcigpOwogCi0gICAg
dmlydHVhbCBib29sIHN0YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRPcHRpb25zKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBk
aWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kaWRQ
YXNzQWNjZXNzQ29udHJvbENoZWNrOyB9CisgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZT4gcmVxdWVzdFJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRPcHRpb25zKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZVJlc291cmNlKE1lZGlhUmVzb3VyY2UqKTsKKworICAg
IERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KKyAgICBjb25zdCBT
dHJpbmcmIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2Rl
OyB9CisKK3ByaXZhdGU6CisgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CisgICAgU3RyaW5nIG1f
Y3Jvc3NPcmlnaW5Nb2RlOworICAgIEhhc2hTZXQ8TWVkaWFSZXNvdXJjZSo+IG1fcmVzb3VyY2Vz
OworfTsKKworY2xhc3MgTWVkaWFSZXNvdXJjZSA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UsIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE1l
ZGlhUmVzb3VyY2U+IGNyZWF0ZShNZWRpYVJlc291cmNlTG9hZGVyJiwgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KTsKKyAgICB2aXJ0dWFsIH5NZWRpYVJlc291cmNlKCk7
CisKKyAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBk
aWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kaWRQ
YXNzQWNjZXNzQ29udHJvbENoZWNrOyB9CiAKICAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVudAot
ICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBj
b25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKikgb3ZlcnJpZGU7CiAjaWYgVVNFKFNPVVApCi0gICAgdmlydHVhbCBjaGFyKiBn
ZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgLypyZXF1ZXN0ZWRT
aXplKi8sIHNpemVfdCYgLyphY3R1YWxTaXplKi8pIG92ZXJyaWRlOworICAgIGNoYXIqIGdldE9y
Q3JlYXRlUmVhZEJ1ZmZlcihDYWNoZWRSZXNvdXJjZSosIHNpemVfdCAvKnJlcXVlc3RlZFNpemUq
Lywgc2l6ZV90JiAvKmFjdHVhbFNpemUqLykgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToK
LSAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBTdHJpbmcgbV9jcm9zc09yaWdpbk1vZGU7
Ci0gICAgYm9vbCBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2s7CisgICAgTWVkaWFSZXNvdXJj
ZShNZWRpYVJlc291cmNlTG9hZGVyJiwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+KTsKKyAgICBSZWY8TWVkaWFSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgYm9v
bCBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgeyBmYWxzZSB9OwogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDVmMTZm
NDQ0YzQ3MDU1NjA2OThhOTliNGYzNWJmNTE2NjM4NjNhMTMuLjk5YjlkNWNhZGU3M2UwYzFmYWQw
OWE3N2NmNWY2ZGIyOThjMzdhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEyMzcsOSArMTIzNyw5IEBAIENhY2hlZFJlc291
cmNlTG9hZGVyKiBNZWRpYVBsYXllcjo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogICAgIHJldHVy
biBtX2NsaWVudC5tZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlUmVz
b3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNs
aWVudD4gY2xpZW50KQorUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IE1l
ZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcigpCiB7Ci0gICAgcmV0dXJuIG1fY2xpZW50
Lm1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoV1RGTW92ZShjbGllbnQpKTsKKyAgICBy
ZXR1cm4gbV9jbGllbnQubWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpOwogfQogCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggNzMyMTZjOTg5OTcxZmI2MDMwNjhmN2I1NjY5ZDljMDEz
YzQ2YmZjZS4uMmZhYWExOTFkMGJlNmY5OTU2YWE1ZmYzODFkYTkxMDQzOTc1ZGFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0yMzgs
NyArMjM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2Vk
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklz
TG9vcGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBDYWNoZWRSZXNv
dXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIDA7
IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IG1lZGlh
UGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlckNsaWVudD4pIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IG1lZGlhUGxheWVyQ3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBib29sIGRvZXNIYXZl
QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIEF0b21pY1N0cmluZyogPSAwKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtNTQ2LDcgKzU0
Niw3IEBAIHB1YmxpYzoKICAgICBsb25nIHBsYXRmb3JtRXJyb3JDb2RlKCkgY29uc3Q7CiAKICAg
ICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBQYXNz
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VMb2FkZXIo
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudD4pOworICAg
IFBhc3NSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBjcmVhdGVSZXNvdXJjZUxv
YWRlcigpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHZvaWQgYWRkQXVkaW9UcmFj
ayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDU4ZmVjNGU2ZDRkYzgzMzkyZWU5MTI5MzVmMzI3ODc0ZmMyNGMwNDYuLmMwODIw
NDNlN2U0OGIyMWM5ZTRlNWVhYzFiMWVhNjg3NDMxZDg5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCkBAIC0zMywyMSArMzMsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAotY2xhc3MgUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50IHsKK2NsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+UGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB+UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFy
KiwgaW50KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25z
dCBSZXNvdXJjZUVycm9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IGNoYXIqLCBpbnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpIHsgfQogI2lmIFVTRShTT1VQKQotICAgIHZpcnR1YWwg
Y2hhciogZ2V0T3JDcmVhdGVSZWFkQnVmZmVyKHNpemVfdCAvKnJlcXVlc3RlZFNpemUqLywgc2l6
ZV90JiAvKmFjdHVhbFNpemUqLykgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyAgICB2aXJ0dWFsIGNo
YXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBzaXplX3Qg
LypyZXF1ZXN0ZWRTaXplKi8sIHNpemVfdCYgLyphY3R1YWxTaXplKi8pIHsgcmV0dXJuIG51bGxw
dHI7IH07CiAjZW5kaWYKIH07CiAKQEAgLTYxLDE4ICs2NCwyNSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoKSB7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBzdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkT3B0aW9ucykgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRPcHRpb25zKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAg
ICBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoKSB7IH0KK307CisKK2NsYXNzIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSgp
IHsgfQorICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFSZXNvdXJjZSgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9v
bCkgeyB9CiAgICAgdmlydHVhbCBib29sIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXJDbGllbnQ+IGNsaWVudCkKLSAgICAgICAgOiBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkp
Ci0gICAgewotICAgIH0KKyAgICB2b2lkIHNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlQ2xpZW50PiYmIGNsaWVudCkgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xp
ZW50KTsgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ckNsaWVudD4gbV9jbGllbnQ7Citwcm90ZWN0ZWQ6CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUNsaWVudD4gbV9jbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4
IGRhMzE2Yjc0NzE2NWJhNmEwZWJmYTI3NzU3Y2E4NWRlMWU2NmY0NTkuLmNmYjM4YjcxZDI4YTdj
ZGJmZmE3YzgwNmY3MDNjMDExOWYyNzQyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MiwyMiArNjIsMjIgQEAgY2xhc3MgU3RyZWFtaW5nQ2xp
ZW50IHsKICAgICAgICAgR3N0RWxlbWVudCogbV9zcmM7CiB9OwogCi1jbGFzcyBDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXJDbGllbnQsIHB1YmxpYyBTdHJlYW1pbmdDbGllbnQgeworY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xp
ZW50LCBwdWJsaWMgU3RyZWFtaW5nQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
YWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCk7CiAgICAgcHVibGljOgogICAgICAgICBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudChXZWJLaXRXZWJTcmMqKTsKICAgICAgICAgdmlydHVh
bCB+Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudCB2aXJ0dWFsIG1ldGhvZHMu
CisgICAgICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMu
CiAjaWYgVVNFKFNPVVApCi0gICAgICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVSZWFkQnVm
ZmVyKHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUpIG92ZXJyaWRlOwor
ICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBvdmVy
cmlkZTsKICNlbmRpZgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkYXRh
UmVjZWl2ZWQoY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoKSBvdmVycmlkZTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBp
bnQpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQg
bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpIG92ZXJyaWRlOwogfTsKIAogY2xh
c3MgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVD
bGllbnQsIHB1YmxpYyBTdHJlYW1pbmdDbGllbnQgewpAQCAtMTI2LDYgKzEyNiw3IEBAIHN0cnVj
dCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXIqIHBsYXll
cjsKIAogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGxvYWRlcjsKKyAg
ICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKICAgICBSZXNvdXJjZUhh
bmRsZVN0cmVhbWluZ0NsaWVudCogY2xpZW50OwogCiAgICAgYm9vbCBkaWRQYXNzQWNjZXNzQ29u
dHJvbENoZWNrOwpAQCAtNTc3LDEzICs1NzgsMTcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3Jj
U3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAKICAgICBib29sIGxvYWRGYWlsZWQgPSB0cnVlOwog
ICAgIGlmIChwcml2LT5wbGF5ZXIgJiYgIXByaXYtPmxvYWRlcikKLSAgICAgICAgcHJpdi0+bG9h
ZGVyID0gcHJpdi0+cGxheWVyLT5jcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVl
PENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50PihzcmMpKTsKKyAgICAgICAgcHJpdi0+bG9h
ZGVyID0gcHJpdi0+cGxheWVyLT5jcmVhdGVSZXNvdXJjZUxvYWRlcigpOwogCiAgICAgaWYgKHBy
aXYtPmxvYWRlcikgewogICAgICAgICBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRP
cHRpb25zIGxvYWRPcHRpb25zID0gMDsKICAgICAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9j
b2xJcygiYmxvYiIpKQogICAgICAgICAgICAgbG9hZE9wdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpCdWZmZXJEYXRhOwotICAgICAgICBsb2FkRmFpbGVk
ID0gIXByaXYtPmxvYWRlci0+c3RhcnQocmVxdWVzdCwgbG9hZE9wdGlvbnMpOworICAgICAgICBw
cml2LT5yZXNvdXJjZSA9IHByaXYtPmxvYWRlci0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3QsIGxv
YWRPcHRpb25zKTsKKyAgICAgICAgbG9hZEZhaWxlZCA9ICFwcml2LT5yZXNvdXJjZTsKKworICAg
ICAgICBpZiAocHJpdi0+cmVzb3VyY2UpCisgICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHNy
YykpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHByaXYtPmNsaWVudCA9IG5ldyBSZXNvdXJjZUhh
bmRsZVN0cmVhbWluZ0NsaWVudChzcmMsIHJlcXVlc3QpOwogICAgICAgICBsb2FkRmFpbGVkID0g
cHJpdi0+Y2xpZW50LT5sb2FkRmFpbGVkKCk7CkBAIC01OTYsNiArNjAxLDcgQEAgc3RhdGljIHZv
aWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgICAgICAgICBwcml2
LT5jbGllbnQgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIHByaXYtPmxvYWRlciA9IG51
bGxwdHI7CisgICAgICAgIHByaXYtPnJlc291cmNlID0gbnVsbHB0cjsKICAgICAgICAgbG9ja2Vy
LnVubG9jaygpOwogICAgICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYyk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTc4Myw4ICs3ODksOCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNOZWVkRGF0YShX
ZWJLaXRXZWJTcmMqIHNyYykKIAogICAgIGlmIChwcml2LT5jbGllbnQpCiAgICAgICAgIHByaXYt
PmNsaWVudC0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7Ci0gICAgaWYgKHByaXYtPmxvYWRlcikK
LSAgICAgICAgcHJpdi0+bG9hZGVyLT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsKKyAgICBpZiAo
cHJpdi0+cmVzb3VyY2UpCisgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXREZWZlcnNMb2FkaW5n
KGZhbHNlKTsKIH0KIAogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YShXZWJLaXRX
ZWJTcmMqIHNyYykKQEAgLTgwMiw4ICs4MDgsOCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNF
bm91Z2hEYXRhKFdlYktpdFdlYlNyYyogc3JjKQogCiAgICAgaWYgKHByaXYtPmNsaWVudCkKICAg
ICAgICAgcHJpdi0+Y2xpZW50LT5zZXREZWZlcnNMb2FkaW5nKHRydWUpOwotICAgIGlmIChwcml2
LT5sb2FkZXIpCi0gICAgICAgIHByaXYtPmxvYWRlci0+c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsK
KyAgICBpZiAocHJpdi0+cmVzb3VyY2UpCisgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXREZWZl
cnNMb2FkaW5nKHRydWUpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZWVrKFdlYktp
dFdlYlNyYyogc3JjKQpAQCAtMTAwMiwyNSArMTAwOCwyNSBAQCBDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6fkNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KCkKIH0KIAogI2lmIFVT
RShTT1VQKQotY2hhciogQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmdldE9yQ3JlYXRl
UmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKQorY2hh
ciogQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1
YWxTaXplKQogewogICAgIHJldHVybiBjcmVhdGVSZWFkQnVmZmVyKHJlcXVlc3RlZFNpemUsIGFj
dHVhbFNpemUpOwogfQogI2VuZGlmCiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2
b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYyktPnBy
aXY7Ci0gICAgcHJpdi0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IHByaXYtPmxvYWRlci0+
ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpOworICAgIHByaXYtPmRpZFBhc3NBY2Nlc3NDb250
cm9sQ2hlY2sgPSBwcml2LT5yZXNvdXJjZS0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaygpOwog
ICAgIGhhbmRsZVJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQog
ewogICAgIGhhbmRsZURhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRf
V0VCX1NSQyhtX3NyYyk7CiAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgUkVB
RCwgKCIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSksIChu
dWxscHRyKSk7CkBAIC0xMDI4LDcgKzEwMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvcgog
ICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgV2ViS2l0V2ViU3Jj
KiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYyk7CiAKQEAgLTEwNDAsNyArMTA0Niw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWlsZWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiAgICAgZ3N0X2FwcF9zcmNfZW5kX29mX3N0cmVhbShzcmMtPnByaXYt
PmFwcHNyYyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
aW5pc2hlZCgpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmluaXNo
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJikKIHsKICAgICBoYW5kbGVOb3RpZnlGaW5pc2hlZCgp
OwogfQo=
</data>
<flag name="review"
          id="295907"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271076</attachid>
            <date>2016-02-11 13:05:29 -0800</date>
            <delta_ts>2016-02-11 14:34:37 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154117-20160211130508.patch</filename>
            <type>text/plain</type>
            <size>28665</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNiMzlhOTEzZDAxZjVh
MjVkYzYwOTQ3ZDQyNDI5ODY3ZmE4ZTIzOS4uZTI0NzU1MDA5ODdhNmRiNGE4NGM1MGQ3NTk4ZTQy
Zjg0MjZlZjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE2LTAyLTExICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgTWVkaWFSZXNvdXJj
ZUxvYWRlciBiZWhhdmUgbW9yZSBsaWtlIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQxMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE1lZGlhUmVzb3VyY2VM
b2FkZXIgY3VycmVudGx5IGNhbiBvbmx5IGhhbmRsZSBhIHNpbmdsZSByZXF1ZXN0IGF0IGEgdGlt
ZS4gU3BsaXQgdGhlIGNsYXNzCisgICAgICAgIGludG8gdHdvLCBNZWRpYVJlc291cmNlTG9hZGVy
IGFuZCBNZWRpYVJlc291cmNlLCBlZmZlY3RpdmVseSB3cmFwcGluZyBDYWNoZWRSZXNvdXJjZUxv
YWRlcgorICAgICAgICBhbmQgQ2FjaGVkUmF3UmVzb3VyY2UgcmVzcGVjdGl2ZWx5LiBXaXRoIHRo
aXMgZGV2aXNpb24sIHRoZSBzYW1lIGxvYWRlciBjYW4gYmUgdXNlZCB0byBpc3N1ZQorICAgICAg
ICBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVzb3VyY2UgcmVxdWVzdHMuCisKKyAgICAgICAgVGhp
cyBuZWNlc3NlY2l0YXRlcyBzcGxpdHRpbmcgUGxhdGZvcm1NZWRpYVJlc291cmNlIGludG8gdHdv
IGNsYXNzZXMgYXMgd2VsbC4gIFRvIHNpbXBsaWZ5CisgICAgICAgIHRoZSBIVE1MTWVkaWFFbGVt
ZW50LCBNZWRpYVBsYXllciwgYW5kIE1lZGlhUGxheWVyQ2xpZW50IEFQSXMsIGRvIG5vdCByZXF1
aXJlIGEgY2xpZW50CisgICAgICAgIG9iamVjdCB3aGVuIGNyZWF0aW5nIHRoZSBsb2FkZXI7IGlu
c3RlYWQsIHRoZSBjbGllbnQgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIHRoZSByZXNvdXJjZS4KKyAg
ICAgICAgVGhpcyBhbHNvIG1hdGNoZXMgdGhlIENhY2hlZFJhd1Jlc291cmNlIEFQSS4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKTogUmVtb3ZlIHRo
ZSBjbGllbnQgcGFyYW1ldGVyLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6fk1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKTogUmVu
YW1lZCBmcm9tIHN0YXJ0KCkuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVy
OjpyZW1vdmVSZXNvdXJjZSk6IFJlbW92ZSByZXNvdXJjZSBmcm9tIGxpdmUgcmVzb3VyY2UgbGlz
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmNyZWF0ZSk6IFV0aWxpdHkgZmFj
dG9yeS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6Ok1lZGlhUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6fk1lZGlhUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZTo6c3RvcCk6IE1vdmVkIGZyb20gTWVkaWFSZXNvdXJj
ZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6OnNldERlZmVyc0xvYWRp
bmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVj
ZWl2ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6OnJlZGlyZWN0
UmVjZWl2ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmRhdGFT
ZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2
ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlz
aGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlOjpnZXRPckNyZWF0
ZVJlYWRCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6flBsYXRmb3JtTWVk
aWFSZXNvdXJjZUNsaWVudCk6IFJlbmFtZWQgZnJvbSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXJDbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6
OnJlc3BvbnNlUmVjZWl2ZWQpOiBDbGllbnQgbWV0aG9kcyBub3cgdGFrZSBhIHJlZmVyZW5jZSB0
byB0aGUgcmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VD
bGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6ZGF0YVNlbnQpOiBEaXR0by4gCisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50OjphY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUNsaWVudDo6bG9hZEZhaWxlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlQ2xpZW50Ojpsb2FkRmluaXNoZWQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVm
ZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UpOiAKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZTo6flBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSk6IAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlOjpzZXRDbGllbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjU3RhcnQpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjTmVlZERhdGEpOgorICAgICAgICAod2ViS2l0V2ViU3JjRW5vdWdoRGF0YSk6Cisg
ICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6Z2V0T3JDcmVhdGVSZWFkQnVm
ZmVyKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJl
Y2VpdmVkKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6bG9hZEZhaWxlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
bG9hZEZpbmlzaGVkKToKKwogMjAxNi0wMS0yNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbRU1FXVtNYWNdIE1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCkgZmFp
bHMgd2l0aCBpbml0RGF0YSBjb250YWluaW5nIGEgY29udGVudElkIHdob3NlIGxlbmd0aCBpcyA+
IDEvMiB0aGUgaW5pdERhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBkNzE3MDg4NTliNzk0Y2IxZjhjYjU0MDljOGExNGY0OTg3MTc4YTI4Li5mNjljNjQ2
MjgzYWRiNTE3MzI4OGRlYjk1MjFlNDk5Y2UyMjA0ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYxMzAsOSArNjEzMCw5IEBAIENhY2hlZFJlc291cmNl
TG9hZGVyKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVy
KCkKICAgICByZXR1cm4gJmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAot
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCitSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyPiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9h
ZGVyKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJlc291cmNlTG9hZGVyKGRv
Y3VtZW50KCksIGZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpLCBX
VEZNb3ZlKGNsaWVudCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVJlc291cmNl
TG9hZGVyKGRvY3VtZW50KCksIGZhc3RHZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjcm9zc29yaWdp
bkF0dHIpKSk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRX
YWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IGMxMWQzNWFlMTJiNGZjYjI5NDQ1Y2RiYmFjMzMxYWM2M2JhODkyOWUuLmQ2MWRm
NzU5NGViYzc3M2E0ZDI3NzZjNzU2YzRhNWNlOGIyNmI2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC01OTUsNyArNTk1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBtZWRpYVBsYXllcklzTG9vcGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI+IG1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudD4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJj
ZUxvYWRlcigpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQogICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdyYXBo
aWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVkYjFl
YjU4NDViNzBmZWFmMzM3OWNjYWJiYzZlMGI3YzI0NTNlOTUuLjY2ZTkxYThjZDM2OTA5ODdhYWFh
YmMxNGJiZjJiODk1NmVmYTJlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
ZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM4LDI0ICszOCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU1lZGlhUmVzb3VyY2VMb2FkZXI6Ok1lZGlhUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudD4gY2xpZW50KQotICAgIDogUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyKFdURk1vdmUoY2xpZW50KSkKLSAgICAsIG1fZG9jdW1lbnQo
ZG9jdW1lbnQpCitNZWRpYVJlc291cmNlTG9hZGVyOjpNZWRpYVJlc291cmNlTG9hZGVyKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCisgICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQogICAgICwgbV9jcm9zc09yaWdpbk1vZGUoY3Jvc3NPcmlnaW5Nb2Rl
KQotICAgICwgbV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKGZhbHNlKQogewogfQogCiBNZWRp
YVJlc291cmNlTG9hZGVyOjp+TWVkaWFSZXNvdXJjZUxvYWRlcigpCiB7Ci0gICAgc3RvcCgpOwor
ICAgIEFTU0VSVChtX3Jlc291cmNlcy5pc0VtcHR5KCkpOwogfQogCi1ib29sIE1lZGlhUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZE9wdGlv
bnMgb3B0aW9ucykKK1JlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IE1lZGlhUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExv
YWRPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2UpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgYnVmZmVyaW5nUG9saWN5ID0gb3B0
aW9ucyAmIExvYWRPcHRpb246OkJ1ZmZlckRhdGEgPyBXZWJDb3JlOjpCdWZmZXJEYXRhIDogV2Vi
Q29yZTo6RG9Ob3RCdWZmZXJEYXRhOwogICAgIFJlcXVlc3RPcmlnaW5Qb2xpY3kgY29yc1BvbGlj
eSA9ICFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSA/IFBvdGVudGlhbGx5Q3Jvc3NPcmlnaW5F
bmFibGVkIDogVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGU7CiAgICAgU3RvcmVk
Q3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IG1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fY3Jvc3NPcmlnaW5Nb2RlLCAidXNl
LWNyZWRlbnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzOwpAQCAtNjYsMTcgKzYxLDQyIEBAIGJvb2wgTWVkaWFSZXNvdXJjZUxvYWRl
cjo6c3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkT3B0aW9ucyBvcHRp
CiAgICAgaWYgKCFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKICAgICAgICAgdXBkYXRlUmVx
dWVzdEZvckFjY2Vzc0NvbnRyb2woY2FjaGVSZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3Qo
KSwgbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBhbGxvd0NyZWRlbnRpYWxzKTsKIAotICAg
IG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9IGZhbHNlOworICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiByZXNvdXJjZSA9IG1fZG9jdW1lbnQuY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5yZXF1ZXN0UmF3UmVzb3VyY2UoY2FjaGVSZXF1ZXN0KTsKKyAgICBpZiAo
IXJlc291cmNlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fcmVzb3VyY2UgPSBt
X2RvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdFJhd1Jlc291cmNlKGNhY2hl
UmVxdWVzdCk7Ci0gICAgaWYgKCFtX3Jlc291cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgUmVmPE1lZGlhUmVzb3VyY2U+IG1lZGlhUmVzb3VyY2UgPSBNZWRpYVJlc291cmNlOjpjcmVh
dGUoKnRoaXMsIHJlc291cmNlKTsKKyAgICBtX3Jlc291cmNlcy5hZGQobWVkaWFSZXNvdXJjZS5w
dHIoKSk7CisKKyAgICByZXR1cm4gV1RGTW92ZShtZWRpYVJlc291cmNlKTsKK30KKwordm9pZCBN
ZWRpYVJlc291cmNlTG9hZGVyOjpyZW1vdmVSZXNvdXJjZShNZWRpYVJlc291cmNlJiBtZWRpYVJl
c291cmNlKQoreworICAgIEFTU0VSVChtX3Jlc291cmNlcy5jb250YWlucygmbWVkaWFSZXNvdXJj
ZSkpOworICAgIG1fcmVzb3VyY2VzLnJlbW92ZSgmbWVkaWFSZXNvdXJjZSk7Cit9CisKK1JlZjxN
ZWRpYVJlc291cmNlPiBNZWRpYVJlc291cmNlOjpjcmVhdGUoTWVkaWFSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcmVzb3VyY2Up
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFSZXNvdXJjZShsb2FkZXIsIHJlc291
cmNlKSk7Cit9CisKK01lZGlhUmVzb3VyY2U6Ok1lZGlhUmVzb3VyY2UoTWVkaWFSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcmVz
b3VyY2UpCisgICAgOiBtX2xvYWRlcihsb2FkZXIpCisgICAgLCBtX3Jlc291cmNlKHJlc291cmNl
KQoreworICAgIEFTU0VSVChyZXNvdXJjZSk7CisgICAgcmVzb3VyY2UtPmFkZENsaWVudCh0aGlz
KTsKK30KIAotICAgIG1fcmVzb3VyY2UtPmFkZENsaWVudCh0aGlzKTsKLSAgICByZXR1cm4gdHJ1
ZTsKK01lZGlhUmVzb3VyY2U6On5NZWRpYVJlc291cmNlKCkKK3sKKyAgICBzdG9wKCk7CisgICAg
bV9sb2FkZXItPnJlbW92ZVJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBNZWRpYVJlc291cmNl
TG9hZGVyOjpzdG9wKCkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6c3RvcCgpCiB7CiAgICAgaWYgKCFt
X3Jlc291cmNlKQogICAgICAgICByZXR1cm47CkBAIC04NSw1NSArMTA1LDc4IEBAIHZvaWQgTWVk
aWFSZXNvdXJjZUxvYWRlcjo6c3RvcCgpCiAgICAgbV9yZXNvdXJjZSA9IG51bGxwdHI7CiB9CiAK
LXZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVyc0xv
YWRpbmcpCit2b2lkIE1lZGlhUmVzb3VyY2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnNM
b2FkaW5nKQogewogICAgIGlmIChtX3Jlc291cmNlKQogICAgICAgICBtX3Jlc291cmNlLT5zZXRE
ZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVz
b3VyY2UpOwogCi0gICAgUmVmUHRyPE1lZGlhUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7
Ci0gICAgaWYgKCFtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSAmJiAhcmVzb3VyY2UtPnBhc3Nl
c1NhbWVPcmlnaW5Qb2xpY3lDaGVjaygqbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSkgewor
ICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIGlmICghbV9sb2Fk
ZXItPmNyb3NzT3JpZ2luTW9kZSgpLmlzTnVsbCgpICYmICFyZXNvdXJjZS0+cGFzc2VzU2FtZU9y
aWdpblBvbGljeUNoZWNrKCptX2xvYWRlci0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKSkg
ewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBjb25zb2xlTWVz
c2FnZSgiQ3Jvc3Mtb3JpZ2luIG1lZGlhIHJlc291cmNlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9y
aWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKTsKLSAgICAgICAgbV9kb2N1bWVudC5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOworICAgICAgICBtX2xvYWRlci0+ZG9jdW1lbnQoKS5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpF
cnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICBtX2RpZFBhc3NBY2Nlc3NDb250
cm9sQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgbV9jbGllbnQtPmFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNl
LnVybCgpLCBjb25zb2xlTWVzc2FnZS5nZXQoKSkpOworICAgICAgICBpZiAobV9jbGllbnQpCisg
ICAgICAgICAgICBtX2NsaWVudC0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKCp0aGlzLCBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBj
b25zb2xlTWVzc2FnZS5nZXQoKSkpOwogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX2RpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSAhbV9jcm9zc09yaWdp
bk1vZGUuaXNOdWxsKCk7Ci0gICAgbV9jbGllbnQtPnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2Up
OworICAgIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayA9ICFtX2xvYWRlci0+Y3Jvc3NPcmln
aW5Nb2RlKCkuaXNOdWxsKCk7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
cmVzcG9uc2VSZWNlaXZlZCgqdGhpcywgcmVzcG9uc2UpOworfQorCit2b2lkIE1lZGlhUmVzb3Vy
Y2U6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOworCisgICAg
UmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+cmVkaXJlY3RSZWNlaXZlZCgqdGhpcywgcmVxdWVzdCwgcmVzcG9u
c2UpOwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9p
ZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNv
dXJjZSk7CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsK
LSAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIFJlZlB0
cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2Vu
dCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlKQordm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
KworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxl
bmd0aCk7Cit9CisKK3ZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlKQogewogICAgIEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
IAotICAgIFJlZlB0cjxNZWRpYVJlc291cmNlTG9hZGVyPiBwcm90ZWN0KHRoaXMpOwotICAgIGlm
IChyZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkKLSAgICAgICAgbV9jbGllbnQtPmxv
YWRGYWlsZWQocmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7Ci0gICAgZWxzZQotICAgICAgICBt
X2NsaWVudC0+bG9hZEZpbmlzaGVkKCk7CisgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3Rl
Y3QodGhpcyk7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGlmIChyZXNvdXJjZS0+bG9h
ZEZhaWxlZE9yQ2FuY2VsZWQoKSkKKyAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0
aGlzLCByZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcyk7CisgICAgfQogICAgIHN0b3AoKTsKIH0K
IAogI2lmIFVTRShTT1VQKQotY2hhciogTWVkaWFSZXNvdXJjZUxvYWRlcjo6Z2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgc2l6ZV90IHJlcXVlc3RlZFNpemUs
IHNpemVfdCYgYWN0dWFsU2l6ZSkKK2NoYXIqIE1lZGlhUmVzb3VyY2U6OmdldE9yQ3JlYXRlUmVh
ZEJ1ZmZlcihDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIHNpemVfdCByZXF1ZXN0ZWRTaXplLCBz
aXplX3QmIGFjdHVhbFNpemUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgcmV0dXJuIG1fY2xpZW50LT5nZXRPckNyZWF0ZVJlYWRC
dWZmZXIocmVxdWVzdGVkU2l6ZSwgYWN0dWFsU2l6ZSk7CisgICAgcmV0dXJuIG1fY2xpZW50ID8g
bV9jbGllbnQtPmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcigqdGhpcywgcmVxdWVzdGVkU2l6ZSwgYWN0
dWFsU2l6ZSkgOiBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDMxYjRkYjg2NjY2M2I5ODZmNWMxMTc3MWFhMzE5
ZDg2M2IxMDkzNzEuLjg3MmUzZjIxNmZjZGIxM2ViZTExOThiYzZiYjFkNTU5MjMxZmFmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtMzAsMzUg
KzMwLDU3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBNZWRp
YVJlc291cmNlOwogCi1jbGFzcyBNZWRpYVJlc291cmNlTG9hZGVyIGZpbmFsIDogcHVibGljIFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgeworY2xh
c3MgTWVkaWFSZXNvdXJjZUxvYWRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXIgewogcHVibGljOgotICAgIE1lZGlhUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQmLCBj
b25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlckNsaWVudD4pOwotICAgIHZpcnR1YWwgfk1lZGlhUmVzb3VyY2VMb2Fk
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVJlc291cmNlTG9hZGVyKERvY3VtZW50Jiwg
Y29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfk1lZGlhUmVzb3VyY2VMb2FkZXIoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdGFydChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkT3B0aW9ucykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHN0b3AoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhi
b29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVj
aygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsg
fQorICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkT3B0aW9ucykgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1v
dmVSZXNvdXJjZShNZWRpYVJlc291cmNlJik7CisKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7
IHJldHVybiBtX2RvY3VtZW50OyB9CisgICAgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQorCitwcml2YXRlOgorICAgIERv
Y3VtZW50JiBtX2RvY3VtZW50OworICAgIFN0cmluZyBtX2Nyb3NzT3JpZ2luTW9kZTsKKyAgICBI
YXNoU2V0PE1lZGlhUmVzb3VyY2UqPiBtX3Jlc291cmNlczsKK307CisKK2NsYXNzIE1lZGlhUmVz
b3VyY2UgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlLCBDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYVJlc291cmNlPiBjcmVhdGUoTWVk
aWFSZXNvdXJjZUxvYWRlciYsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
Pik7CisgICAgdmlydHVhbCB+TWVkaWFSZXNvdXJjZSgpOworCisgICAgLy8gUGxhdGZvcm1NZWRp
YVJlc291cmNlCisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXREZWZlcnNM
b2FkaW5nKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVj
aygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsg
fQogCiAgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29u
c3QgY2hhciosIGludCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFTZW50KENhY2hl
ZFJlc291cmNlKiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJy
aWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhcios
IGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSop
IG92ZXJyaWRlOwogI2lmIFVTRShTT1VQKQotICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKENhY2hlZFJlc291cmNlKiwgc2l6ZV90IC8qcmVxdWVzdGVkU2l6ZSovLCBzaXpl
X3QmIC8qYWN0dWFsU2l6ZSovKSBvdmVycmlkZTsKKyAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRC
dWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8sIHNpemVfdCYg
LyphY3R1YWxTaXplKi8pIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgRG9jdW1l
bnQmIG1fZG9jdW1lbnQ7Ci0gICAgU3RyaW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOwotICAgIGJvb2wg
bV9kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrOworICAgIE1lZGlhUmVzb3VyY2UoTWVkaWFSZXNv
dXJjZUxvYWRlciYsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPik7Cisg
ICAgUmVmPE1lZGlhUmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgIGJvb2wgbV9kaWRQYXNz
QWNjZXNzQ29udHJvbENoZWNrIHsgZmFsc2UgfTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA1ZjE2ZjQ0NGM0NzA1NTYw
Njk4YTk5YjRmMzViZjUxNjYzODYzYTEzLi45OWI5ZDVjYWRlNzNlMGMxZmFkMDlhNzdjZjVmNmRi
Mjk4YzM3YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCkBAIC0xMjM3LDkgKzEyMzcsOSBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlciog
TWVkaWFQbGF5ZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKCkKICAgICByZXR1cm4gbV9jbGllbnQu
bWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVJlc291cmNlTG9hZGVy
KHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+IGNsaWVu
dCkKK1Bhc3NSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBNZWRpYVBsYXllcjo6
Y3JlYXRlUmVzb3VyY2VMb2FkZXIoKQogewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVBsYXll
ckNyZWF0ZVJlc291cmNlTG9hZGVyKFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIG1fY2xp
ZW50Lm1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoKTsKIH0KIAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCmluZGV4IDczMjE2Yzk4OTk3MWZiNjAzMDY4ZjdiNTY2OWQ5YzAxM2M0NmJmY2UuLjJm
YWFhMTkxZDBiZTZmOTk1NmFhNWZmMzgxZGE5MTA0Mzk3NWRhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMjM4LDcgKzIzOCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0xvb3BpbmcoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IG1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiAwOyB9Ci0gICAgdmly
dHVhbCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0
ZVJlc291cmNlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXJDbGllbnQ+KSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgYm9vbCBkb2VzSGF2ZUF0dHJpYnV0ZShj
b25zdCBBdG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcqID0gMCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTU0Niw3ICs1NDYsNyBAQCBwdWJs
aWM6CiAgICAgbG9uZyBwbGF0Zm9ybUVycm9yQ29kZSgpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgUGFzc1JlZlB0cjxQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZVJlc291cmNlTG9hZGVyKHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+KTsKKyAgICBQYXNzUmVmUHRy
PFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gY3JlYXRlUmVzb3VyY2VMb2FkZXIoKTsKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0
cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1
OGZlYzRlNmQ0ZGM4MzM5MmVlOTEyOTM1ZjMyNzg3NGZjMjRjMDQ2Li5jMDgyMDQzZTdlNDhiMjFj
OWU0ZTVlYWMxYjFlYTY4NzQzMWQ4OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApA
QCAtMzMsMjEgKzMzLDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUGxhdGZv
cm1NZWRpYVJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKLWNsYXNzIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlckNsaWVudCB7CitjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgewog
cHVibGljOgotICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlckNsaWVudCgp
IHsgfQorICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCgpIHsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIGludCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJj
ZUVycm9yJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBj
aGFyKiwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmKSB7IH0KICNpZiBVU0UoU09VUCkKLSAgICB2aXJ0dWFsIGNoYXIqIGdldE9y
Q3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgLypyZXF1ZXN0ZWRTaXplKi8sIHNpemVfdCYgLyphY3R1
YWxTaXplKi8pIHsgcmV0dXJuIG51bGxwdHI7IH07CisgICAgdmlydHVhbCBjaGFyKiBnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgc2l6ZV90IC8qcmVxdWVzdGVk
U2l6ZSovLCBzaXplX3QmIC8qYWN0dWFsU2l6ZSovKSB7IHJldHVybiBudWxscHRyOyB9OwogI2Vu
ZGlmCiB9OwogCkBAIC02MSwxOCArNjQsMjUgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZE9wdGlvbnMpID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBMb2FkT3B0aW9ucykgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyKCkgeyB9Cit9OworCitjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UoKSB7IH0KKyAgICB2
aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhUmVzb3VyY2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50
PiBjbGllbnQpCi0gICAgICAgIDogbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQotICAgIHsKLSAg
ICB9CisgICAgdm9pZCBzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUNsaWVudD4mJiBjbGllbnQpIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+IG1f
Y2xpZW50OworcHJvdGVjdGVkOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VDbGllbnQ+IG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBkYTMxNmI3NDcx
NjViYTZhMGViZmEyNzc1N2NhODVkZTFlNjZmNDU5Li5jZmIzOGI3MWQyOGE3Y2RiZmZhN2M4MDZm
NzAzYzAxMTlmMjc0MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNjIsMjIgKzYyLDIyIEBAIGNsYXNzIFN0cmVhbWluZ0NsaWVudCB7CiAgICAg
ICAgIEdzdEVsZW1lbnQqIG1fc3JjOwogfTsKIAotY2xhc3MgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50
LCBwdWJsaWMgU3RyZWFtaW5nQ2xpZW50IHsKK2NsYXNzIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50IGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCwgcHVibGlj
IFN0cmVhbWluZ0NsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQpOwogICAgIHB1YmxpYzoKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQoV2ViS2l0V2ViU3JjKik7CiAgICAgICAgIHZpcnR1YWwgfkNhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50KCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICAvLyBQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQgdmlydHVhbCBtZXRob2RzLgorICAgICAgICAv
LyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogI2lmIFVTRShT
T1VQKQotICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3Qg
cmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
c2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkgb3ZlcnJpZGU7CiAjZW5k
aWYKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKGNv
bnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKCkgb3ZlcnJpZGU7CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFJlc291cmNl
SGFuZGxlU3RyZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50LCBwdWJs
aWMgU3RyZWFtaW5nQ2xpZW50IHsKQEAgLTEyNiw2ICsxMjYsNyBAQCBzdHJ1Y3QgX1dlYktpdFdl
YlNyY1ByaXZhdGUgewogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBwbGF5ZXI7CiAKICAgICBS
ZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBsb2FkZXI7CisgICAgUmVmUHRyPFBs
YXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CiAgICAgUmVzb3VyY2VIYW5kbGVTdHJlYW1p
bmdDbGllbnQqIGNsaWVudDsKIAogICAgIGJvb2wgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsK
QEAgLTU3NywxMyArNTc4LDE3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktp
dFdlYlNyYyogc3JjKQogCiAgICAgYm9vbCBsb2FkRmFpbGVkID0gdHJ1ZTsKICAgICBpZiAocHJp
di0+cGxheWVyICYmICFwcml2LT5sb2FkZXIpCi0gICAgICAgIHByaXYtPmxvYWRlciA9IHByaXYt
PnBsYXllci0+Y3JlYXRlUmVzb3VyY2VMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudD4oc3JjKSk7CisgICAgICAgIHByaXYtPmxvYWRlciA9IHByaXYt
PnBsYXllci0+Y3JlYXRlUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIGlmIChwcml2LT5sb2FkZXIp
IHsKICAgICAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBsb2Fk
T3B0aW9ucyA9IDA7CiAgICAgICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImJsb2Ii
KSkKICAgICAgICAgICAgIGxvYWRPcHRpb25zIHw9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
cjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0YTsKLSAgICAgICAgbG9hZEZhaWxlZCA9ICFwcml2LT5s
b2FkZXItPnN0YXJ0KHJlcXVlc3QsIGxvYWRPcHRpb25zKTsKKyAgICAgICAgcHJpdi0+cmVzb3Vy
Y2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0LCBsb2FkT3B0aW9ucyk7
CisgICAgICAgIGxvYWRGYWlsZWQgPSAhcHJpdi0+cmVzb3VyY2U7CisKKyAgICAgICAgaWYgKHBy
aXYtPnJlc291cmNlKQorICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50PihzcmMpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBwcml2LT5jbGllbnQgPSBuZXcgUmVzb3VyY2VIYW5kbGVTdHJlYW1p
bmdDbGllbnQoc3JjLCByZXF1ZXN0KTsKICAgICAgICAgbG9hZEZhaWxlZCA9IHByaXYtPmNsaWVu
dC0+bG9hZEZhaWxlZCgpOwpAQCAtNTk2LDYgKzYwMSw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdl
YlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogICAgICAgICAgICAgcHJpdi0+Y2xpZW50ID0g
bnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBwcml2LT5sb2FkZXIgPSBudWxscHRyOworICAg
ICAgICBwcml2LT5yZXNvdXJjZSA9IG51bGxwdHI7CiAgICAgICAgIGxvY2tlci51bmxvY2soKTsK
ICAgICAgICAgd2ViS2l0V2ViU3JjU3RvcChzcmMpOwogICAgICAgICByZXR1cm47CkBAIC03ODMs
OCArNzg5LDggQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTmVlZERhdGEoV2ViS2l0V2ViU3Jj
KiBzcmMpCiAKICAgICBpZiAocHJpdi0+Y2xpZW50KQogICAgICAgICBwcml2LT5jbGllbnQtPnNl
dERlZmVyc0xvYWRpbmcoZmFsc2UpOwotICAgIGlmIChwcml2LT5sb2FkZXIpCi0gICAgICAgIHBy
aXYtPmxvYWRlci0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CisgICAgaWYgKHByaXYtPnJlc291
cmNlKQorICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CiB9
CiAKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Vub3VnaERhdGEoV2ViS2l0V2ViU3JjKiBzcmMp
CkBAIC04MDIsOCArODA4LDggQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRW5vdWdoRGF0YShX
ZWJLaXRXZWJTcmMqIHNyYykKIAogICAgIGlmIChwcml2LT5jbGllbnQpCiAgICAgICAgIHByaXYt
PmNsaWVudC0+c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsKLSAgICBpZiAocHJpdi0+bG9hZGVyKQot
ICAgICAgICBwcml2LT5sb2FkZXItPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CisgICAgaWYgKHBy
aXYtPnJlc291cmNlKQorICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0RGVmZXJzTG9hZGluZyh0
cnVlKTsKIH0KIAogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2VlayhXZWJLaXRXZWJTcmMqIHNy
YykKQEAgLTEwMDIsMjUgKzEwMDgsMjUgQEAgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
On5DYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCgpCiB9CiAKICNpZiBVU0UoU09VUCkKLWNo
YXIqIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIo
c2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKK2NoYXIqIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50OjpnZXRPckNyZWF0ZVJlYWRCdWZmZXIoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkKIHsK
ICAgICByZXR1cm4gY3JlYXRlUmVhZEJ1ZmZlcihyZXF1ZXN0ZWRTaXplLCBhY3R1YWxTaXplKTsK
IH0KICNlbmRpZgogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBDYWNoZWRS
ZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBXZWJLaXRX
ZWJTcmNQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9TUkMobV9zcmMpLT5wcml2OwotICAgIHBy
aXYtPmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2sgPSBwcml2LT5sb2FkZXItPmRpZFBhc3NBY2Nl
c3NDb250cm9sQ2hlY2soKTsKKyAgICBwcml2LT5kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrID0g
cHJpdi0+cmVzb3VyY2UtPmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2soKTsKICAgICBoYW5kbGVS
ZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBoYW5k
bGVEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudDo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6YWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9z
cmMpOwogICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgUkVTT1VSQ0UsIFJFQUQsICgiJXMiLCBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpLCAobnVsbHB0cikpOwpA
QCAtMTAyOCw3ICsxMDM0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3IKICAgICB3ZWJLaXRX
ZWJTcmNTdG9wKHNyYyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VC
S0lUX1dFQl9TUkMobV9zcmMpOwogCkBAIC0xMDQwLDcgKzEwNDYsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogICAgIGdzdF9hcHBfc3JjX2VuZF9vZl9zdHJlYW0oc3JjLT5wcml2LT5hcHBzcmMpOwog
fQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmluaXNoZWQoKQor
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYpCiB7CiAgICAgaGFuZGxlTm90aWZ5RmluaXNoZWQoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>