<?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>30379</bug_id>
          
          <creation_ts>2009-10-14 22:59:56 -0700</creation_ts>
          <short_desc>Factor ResourceLoadNotifier out of FrameLoader</short_desc>
          <delta_ts>2009-10-15 23:09:17 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>154720</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-14 22:59:56 -0700</bug_when>
    <thetext>As discussed on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154721</commentid>
    <comment_count>1</comment_count>
      <attachid>41210</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-14 23:01:36 -0700</bug_when>
    <thetext>Created attachment 41210
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154722</commentid>
    <comment_count>2</comment_count>
      <attachid>41211</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-14 23:04:07 -0700</bug_when>
    <thetext>Created attachment 41211
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154809</commentid>
    <comment_count>3</comment_count>
      <attachid>41211</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-15 09:23:51 -0700</bug_when>
    <thetext>Comment on attachment 41211
Patch v1

&gt;  void FrameLoader::sendRemainingDelegateMessages(unsigned long identifier, const ResourceResponse&amp; response, int length, const ResourceError&amp; error)

I&apos;m surprised you left this function in FrameLoader. Seems to me it belongs in ResourceLoadNotifier, although you might have to add a document loader argument.

&gt; @@ -3526,11 +3487,11 @@ void FrameLoader::requestFromDelegate(ResourceRequest&amp; request, unsigned long&amp; i

This function also seems to belong in ResourceLoadNotifier. I didn&apos;t look closely at other functions outside the patch.

&gt; +void ResourceLoadNotifier::assignIdentifierToInitialRequest(unsigned long identifier, const ResourceRequest&amp; clientRequest)
&gt; +{
&gt; +    dispatchAssignIdentifierToInitialRequest(identifier, activeDocumentLoader(), clientRequest);
&gt; +}

We may want to consider passing the document loader here instead of having the notifier get the active document loader.

&gt; +void ResourceLoadNotifier::didReceiveResponse(ResourceLoader* loader, const ResourceResponse&amp; r)
&gt; +{
&gt; +    activeDocumentLoader()-&gt;addResponse(r);
&gt; +
&gt; +    if (Page* page = m_frame-&gt;page())
&gt; +        page-&gt;progress()-&gt;incrementProgress(loader-&gt;identifier(), r);
&gt; +
&gt; +    dispatchDidReceiveResponse(loader-&gt;documentLoader(), loader-&gt;identifier(), r);
&gt; +}

Here too, and then we could eliminate the activeDocumentLoader() function.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155009</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-15 22:05:38 -0700</bug_when>
    <thetext>Those are all good points.  If you don&apos;t mind, I&apos;d like to handle them in a follow-up patch though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155016</commentid>
    <comment_count>5</comment_count>
      <attachid>41211</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-15 22:20:13 -0700</bug_when>
    <thetext>Comment on attachment 41211
Patch v1

Rejecting patch 41211 from commit-queue.

Patch https://bugs.webkit.org/attachment.cgi?id=41211 from bug 30379 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155019</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-15 22:32:34 -0700</bug_when>
    <thetext>Committed r49671: &lt;http://trac.webkit.org/changeset/49671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155021</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-10-15 23:03:10 -0700</bug_when>
    <thetext>Please note for the future, that the style guidelines where recently updated and the contents inside a namespace in a header should no longer be indented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155022</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-15 23:09:17 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Please note for the future, that the style guidelines where recently updated
&gt; and the contents inside a namespace in a header should no longer be indented.

Praise be to the style guide!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41210</attachid>
            <date>2009-10-14 23:01:36 -0700</date>
            <delta_ts>2009-10-14 23:02:45 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30379-20091014230135.patch</filename>
            <type>text/plain</type>
            <size>41976</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzJhZTMzNS4uM2EyMGQ0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAwOS0xMC0xNSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZhY3RvciBSZXNvdXJjZUxvYWROb3RpZmllciBvdXQgb2YgRnJhbWVMb2Fk
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzc5
CisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBoYXZlIHZpcnR1YWxseSBubyBpbnRlcmFjdGlvbiB3
aXRoIHRoZSByZXN0IG9mCisgICAgICAgIEZyYW1lTG9hZGVyLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNl
cy5ia2w6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJh
bWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFm
dGVyV2lsbFN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZp
ZXI6OlJlc291cmNlTG9hZE5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE5vdGlmaWVyOjphY3RpdmVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OndpbGxTZW5kUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmFpbFRvTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkTG9hZFJlc291
cmNlQnlYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNo
QXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpub3RpZmllcik6CisgICAgICAg
ICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
UmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkRXJyb3IpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OlJlc291cmNlTG9hZE5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjph
c3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGYWlsVG9Mb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaEFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRO
b3RpZmllcjo6YWN0aXZlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZ09uZVBhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSk6CisKIDIwMDktMTAtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDM0ODA3NTQuLmVjMTA5
OTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTI2MSw2ICsxMjYxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmggXAogCVdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBcCisJV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIFwKKwlXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5oIFwKIAlXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgXAog
CVdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggXAogCVdlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyQ2xpZW50LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNjllOTk1Li4wZmFjNTFjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTY0Nyw2ICsxNjQ3LDggQEAKICAgICAgICAgICAgICdsb2FkZXIvUmVxdWVzdC5oJywKICAgICAg
ICAgICAgICdsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaCcsCisgICAgICAgICAgICAnbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgnLAog
ICAgICAgICAgICAgJ2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAnLAogICAgICAgICAgICAg
J2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5YmMzZGM3Li42NmJlMTg5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTExMjIsNiAr
MTEyMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAg
XAogICAgIGxvYWRlci9SZXF1ZXN0LmNwcCBcCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cCBcCisgICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBcCiAgICAgbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL1RleHREb2N1bWVudC5jcHAgXAogICAg
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCBmMzRmYTUzLi43YmZmOGQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTE3NTQ1LDYgKzE3NTQ1LDE0IEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRO
b3RpZmllci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2FkTm90aWZpZXIuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjZlxSZXNvdXJj
ZUxvYWRlckNGTmV0LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNmOGM5MDYuLmI2YTk2
NzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzU3
LDYgKzIzNTcsOCBAQAogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5
OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3
QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNw
cCAqLzsgfTsKIAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc2MTA3
RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTc5NDAxMDMxMDg2RUUzMjAwREM1MjVGIC8qIFJl
c291cmNlTG9hZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3OTQwMTAxMTA4NkVFMzIwMERDNTI1RiAvKiBSZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAgKi87IH07CisJCTk3OTQwMTA0MTA4NkVFMzIwMERDNTI1RiAvKiBSZXNvdXJjZUxv
YWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTc5NDAxMDIxMDg2RUUzMjAwREM1MjVGIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc5RjQzRDMx
MDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAv
KiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi87IH07CiAJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgz
QiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTdEQ0UyMDExMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMUZGMTA4MDdDNzUw
MDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5jcHAgKi87IH07CkBAIC03NTY3LDYgKzc1Njks
OCBAQAogCQk5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNo
ZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hl
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIw
MEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBvbGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDAx
MDExMDg2RUUzMjAwREM1MjVGIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDAxMDIxMDg2RUUzMjAwREM1MjVGIC8qIFJl
c291cmNlTG9hZE5vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
c291cmNlTG9hZE5vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0
M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVj
dFNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWRpcmVjdFNj
aGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RDRTFGRjEwODA3Qzc1
MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ2NTYsNiArMTQ2NjAsOCBAQAogCQkJCUJDQjE2QzE2MDk3OUMzQkQwMDQ2
Nzc0MSAvKiBSZXF1ZXN0LmggKi8sCiAJCQkJOTNFMjI3REUwQUY1ODlBRDAwRDQ4MzI0IC8qIFJl
c291cmNlTG9hZGVyLmNwcCAqLywKIAkJCQk2NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVz
b3VyY2VMb2FkZXIuaCAqLywKKwkJCQk5Nzk0MDEwMTEwODZFRTMyMDBEQzUyNUYgLyogUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuY3BwICovLAorCQkJCTk3OTQwMTAyMTA4NkVFMzIwMERDNTI1RiAvKiBS
ZXNvdXJjZUxvYWROb3RpZmllci5oICovLAogCQkJCTkzRTIyN0RGMEFGNTg5QUQwMEQ0ODMyNCAv
KiBTdWJyZXNvdXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3MzAwQURCQTVERTAwQTQ1NTRE
IC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMUEzMTc4OTIwQjIwQTgxNjAwMzE2OTg3
IC8qIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0xODAzNCw2ICsxODA0MCw3IEBA
CiAJCQkJOTdEQ0UyMDIxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0QyMEY2MzEwN0Y0MDY5MDBBODAzOTIgLyogSlNDYW52YXNBY3Rp
dmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QyMEY2RDEwN0Y0MzhCMDBBODAzOTIgLyog
Q2FudmFzQWN0aXZlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTc5NDAxMDQxMDg2RUUzMjAw
REM1MjVGIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMTY1
LDYgKzIwMTcyLDcgQEAKIAkJCQk5N0RDRTIwMTEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEMjBGNjIxMDdGNDA2OTAwQTgwMzky
IC8qIEpTQ2FudmFzQWN0aXZlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTIyNzNBMzEw
ODNCM0IxMDBFRTVDODQgLyogSlNDYW52YXNBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5Nzk0MDEwMzEwODZFRTMyMDBEQzUyNUYgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBi
L1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IDQ4NTE3ODQuLmM1NzkwODQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNv
dXJjZXMuYmtsCkBAIC03MzMsNiArNzMzLDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0
IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBsb2FkZXIvUmVkaXJl
Y3RTY2hlZHVsZXIuY3BwCiAgICAgICAgIGxvYWRlci9SZXF1ZXN0LmNwcAogICAgICAgICBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisgICAgICAgIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmll
ci5jcHAKICAgICAgICAgbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAogICAgICAgICBsb2Fk
ZXIvVGV4dERvY3VtZW50LmNwcAogICAgICAgICBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA5MGMyMmI2Li5jMjhiMmViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTAyLDcg
KzQ1MDIsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9IHRo
aXMtPmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBmcmFt
ZUxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKLSAgICAgICAgZnJhbWVMb2FkZXItPmRpZExvYWRS
ZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKKyAgICAg
ICAgZnJhbWVMb2FkZXItPm5vdGlmaWVyKCktPmRpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVl
c3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAppbmRleCBjMTgyOGNiLi5iMDRlZmE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0x
NjgsNiArMTY4LDcgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lKiBmcmFtZSwgRnJh
bWVMb2FkZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1f
cG9saWN5Q2hlY2tlcihmcmFtZSkKICAgICAsIG1faGlzdG9yeShmcmFtZSkKKyAgICAsIG1fbm90
aWZlcihmcmFtZSkKICAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZUNvbW1pdHRlZFBhZ2UpCiAgICAg
LCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGVTdGFuZGFyZCkKICAgICAsIG1fZGVsZWdhdGVJc0hh
bmRsaW5nUHJvdmlzaW9uYWxMb2FkRXJyb3IoZmFsc2UpCkBAIC0yOTM2LDcgKzI5MzcsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKIAogICAg
IGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIGlkZW50aWZpZXIg
PSBwYWdlLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgICAgIGRp
c3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIt
Pm9yaWdpbmFsUmVxdWVzdCgpKTsKKyAgICAgICAgbm90aWZpZXIoKS0+ZGlzcGF0Y2hBc3NpZ25J
ZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIuZ2V0KCksIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1
ZXN0KCkpOwogICAgIH0KIAogICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5z
dGFydExvYWRpbmdNYWluUmVzb3VyY2UoaWRlbnRpZmllcikpCkBAIC0zMjU2LDQ0ICszMjU3LDU4
IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXI6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjbGllbnRSZXF1ZXN0
KQorUmVzb3VyY2VMb2FkTm90aWZpZXI6OlJlc291cmNlTG9hZE5vdGlmaWVyKEZyYW1lKiBmcmFt
ZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK0RvY3VtZW50TG9hZGVyKiBSZXNvdXJj
ZUxvYWROb3RpZmllcjo6YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX2ZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKK30KKwordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNsaWVudFJlcXVl
c3QpCiB7Ci0gICAgcmV0dXJuIGRpc3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVl
c3QoaWRlbnRpZmllciwgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgY2xpZW50UmVxdWVzdCk7Cisg
ICAgZGlzcGF0Y2hBc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBh
Y3RpdmVEb2N1bWVudExvYWRlcigpLCBjbGllbnRSZXF1ZXN0KTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVx
dWVzdCYgY2xpZW50UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZUxvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmIGNsaWVudFJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7Ci0gICAgYXBwbHlVc2VyQWdlbnQo
Y2xpZW50UmVxdWVzdCk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmFwcGx5VXNlckFnZW50KGNs
aWVudFJlcXVlc3QpOworCiAgICAgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QobG9hZGVyLT5kb2N1
bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgY2xpZW50UmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQordm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCiB7CiAgICAgYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+YWRkUmVzcG9uc2Uocik7Ci0gICAgCisKICAgICBpZiAoUGFnZSogcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS0+aW5jcmVtZW50UHJvZ3Jl
c3MobG9hZGVyLT5pZGVudGlmaWVyKCksIHIpOworCiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVz
cG9uc2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgcik7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkK
K3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVy
KiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZl
ZCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcGFn
ZS0+cHJvZ3Jlc3MoKS0+aW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRh
dGEsIGxlbmd0aCk7CisKICAgICBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRl
ci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGxlbmd0aFJlY2VpdmVk
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OmRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkp
CiAgICAgICAgIHBhZ2UtPnByb2dyZXNzKCktPmNvbXBsZXRlUHJvZ3Jlc3MobG9hZGVyLT5pZGVu
dGlmaWVyKCkpOworCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKLSAgICAgICAgbV9jbGllbnQt
PmRpc3BhdGNoRGlkRmFpbExvYWRpbmcobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXIt
PmlkZW50aWZpZXIoKSwgZXJyb3IpOworICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPmRpc3BhdGNoRGlkRmFpbExvYWRpbmcobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2Fk
ZXItPmlkZW50aWZpZXIoKSwgZXJyb3IpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaWRMb2Fk
UmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpk
aWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpCiB7Ci0gICAgbV9jbGllbnQtPmRpc3Bh
dGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBzb3VyY2VTdHJp
bmcpOworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CiB9CiAKIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgRnJhbWVMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdCgpIGNvbnN0
CkBAIC0zNTA4LDEzICszNTIzLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFm
dGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzCiB2b2lkIEZy
YW1lTG9hZGVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBpbnQgbGVuZ3RoLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsgICAgCiAgICAgaWYgKCFyZXNwb25zZS5pc051
bGwoKSkKLSAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobV9kb2N1bWVudExvYWRl
ci5nZXQoKSwgaWRlbnRpZmllciwgcmVzcG9uc2UpOworICAgICAgICBub3RpZmllcigpLT5kaXNw
YXRjaERpZFJlY2VpdmVSZXNwb25zZShtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAgICAgCiAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNo
RGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmll
ciwgbGVuZ3RoKTsKKyAgICAgICAgbm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVu
dExlbmd0aChtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBsZW5ndGgpOwogICAg
IAogICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
aW5nKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIpOworICAgICAgICBub3RpZmll
cigpLT5kaXNwYXRjaERpZEZpbmlzaExvYWRpbmcobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRl
bnRpZmllcik7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGYWlsTG9h
ZGluZyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBlcnJvcik7CiB9CkBAIC0z
NTI2LDExICszNTQxLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25lZCBsb25nJiBpCiAgICAgaWRlbnRpZmll
ciA9IDA7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAg
aWRlbnRpZmllciA9IHBhZ2UtPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsK
LSAgICAgICAgZGlzcGF0Y2hBc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlm
aWVyLCBtX2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXF1ZXN0KTsKKyAgICAgICAgbm90aWZpZXIo
KS0+ZGlzcGF0Y2hBc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBt
X2RvY3VtZW50TG9hZGVyLmdldCgpLCByZXF1ZXN0KTsKICAgICB9CiAKICAgICBSZXNvdXJjZVJl
cXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0KTsKLSAgICBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCht
X2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlKCkpOworICAgIG5vdGlmaWVyKCktPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIFJlc291cmNlUmVzcG9u
c2UoKSk7CiAKICAgICBpZiAobmV3UmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgZXJyb3IgPSBj
YW5jZWxsZWRFcnJvcihyZXF1ZXN0KTsKQEAgLTM4NTgsNyArMzg3Myw3IEBAIFJlc291cmNlRXJy
b3IgRnJhbWVMb2FkZXI6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zCiAgICAgcmV0dXJuIG1fY2xpZW50LT5maWxlRG9lc05vdEV4aXN0RXJyb3Io
cmVzcG9uc2UpOyAgICAKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkRmluaXNoTG9hZChSZXNv
dXJjZUxvYWRlciogbG9hZGVyKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNo
TG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyKQogeyAgICAKICAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS0+Y29tcGxldGVQcm9n
cmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSk7CkBAIC0zODcwLDE0ICszODg1LDE0IEBAIGJvb2wg
RnJhbWVMb2FkZXI6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlTG9hZGVyKiBs
b2FkZXIpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShs
b2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpKTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjdXJyZW50V2Vi
Q2hhbGxlbmdlKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjdXJyZW50V2ViQ2hhbGxlbmdlKQogewotICAgIG1fY2xpZW50LT5kaXNw
YXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShsb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBjdXJyZW50V2ViQ2hhbGxlbmdlKTsKKyAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGN1cnJlbnRXZWJDaGFsbGVuZ2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaWRDYW5j
ZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY3VycmVudFdlYkNoYWxsZW5nZSkKK3ZvaWQgUmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjdXJyZW50V2Vi
Q2hhbGxlbmdlKQogewotICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCksIGN1cnJlbnRXZWJDaGFsbGVuZ2UpOworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShsb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBjdXJyZW50V2ViQ2hhbGxlbmdlKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAg
LTM5ODUsOSArNDAwMCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpCiAjZW5kaWYKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hBc3NpZ25JZGVudGlm
aWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgUmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3Qo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9jbGllbnQtPmFzc2lnbklkZW50aWZp
ZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7CisgICAgbV9m
cmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dChpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKQEAgLTM5OTUsMTYgKzQwMTAs
MTYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hBc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWYKICNlbmRpZgogfQogCi12b2lkIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIFN0cmluZ0ltcGwqIG9sZFJl
cXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKTsKLSAgICBtX2RvY3VtZW50
TG9hZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlcXVlc3QudXJsKCkpOworICAgIG1fZnJh
bWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJl
cXVlc3QudXJsKCkpOwogCi0gICAgbV9jbGllbnQtPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGxv
YWRlciwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgbV9mcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChsb2FkZXIsIGlk
ZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgLy8gSWYgdGhlIFVS
TCBjaGFuZ2VkLCB0aGVuIHdlIHdhbnQgdG8gcHV0IHRoYXQgbmV3IFVSTCBpbiB0aGUgImRpZCB0
ZWxsIGNsaWVudCIgc2V0IHRvby4KICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgb2xkUmVx
dWVzdFVSTCAhPSByZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSkKLSAgICAgICAgbV9kb2N1
bWVudExvYWRlci0+ZGlkVGVsbENsaWVudEFib3V0TG9hZChyZXF1ZXN0LnVybCgpKTsKKyAgICAg
ICAgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmRpZFRlbGxDbGllbnRBYm91
dExvYWQocmVxdWVzdC51cmwoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQpAQCAtNDAxMiw5ICs0MDI3LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgdW5zaWduZWQgbG9uZwogI2VuZGlmCiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKK3ZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikK
IHsKLSAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVu
dGlmaWVyLCByKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKGxvYWRlciwgaWRlbnRpZmllciwgcik7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQpAQCAtNDAyMiw5
ICs0MDM3LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG8KICNlbmRpZgogfQogCi12b2lkIEZy
YW1lTG9hZGVyOjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoKQog
ewotICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwg
aWRlbnRpZmllciwgbGVuZ3RoKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRp
c3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBsZW5ndGgp
OwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKSkKQEAgLTQwMzIsOSArNDA0Nyw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNo
RGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduCiAj
ZW5kaWYKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiB7Ci0gICAgbV9jbGllbnQtPmRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhsb2FkZXIsIGlkZW50aWZpZXIpOworICAgIG1fZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKGxvYWRlciwgaWRl
bnRpZmllcik7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggNzUwMTdkNC4uZTBjOGE4YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUG9saWN5Q2Fs
bGJhY2suaCIKICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUmVkaXJlY3RT
Y2hlZHVsZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWROb3RpZmllci5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlICJUaW1lci5oIgpAQCAtOTEsNiArOTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgUG9saWN5Q2hlY2tlciogcG9saWN5Q2hlY2tlcigpIGNvbnN0IHsgcmV0dXJuICZtX3Bv
bGljeUNoZWNrZXI7IH0KICAgICAgICAgSGlzdG9yeUNvbnRyb2xsZXIqIGhpc3RvcnkoKSBjb25z
dCB7IHJldHVybiAmbV9oaXN0b3J5OyB9CisgICAgICAgIFJlc291cmNlTG9hZE5vdGlmaWVyKiBu
b3RpZmllcigpIGNvbnN0IHsgcmV0dXJuICZtX25vdGlmZXI7IH0KIAogICAgICAgICAvLyBGSVhN
RTogVGhpcyBpcyBub3QgY29vbCwgcGVvcGxlLiBUaGVyZSBhcmUgdG9vIG1hbnkgZGlmZmVyZW50
IGZ1bmN0aW9ucyB0aGF0IGFsbCBzdGFydCBsb2Fkcy4KICAgICAgICAgLy8gV2Ugc2hvdWxkIGFp
bSB0byBjb25zb2xpZGF0ZSB0aGVzZSBpbnRvIGEgc21hbGxlciBzZXQgb2YgZnVuY3Rpb25zLCBh
bmQgdHJ5IHRvIHJldXNlIG1vcmUgb2YKQEAgLTE0MSwxNiArMTQzLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBzdGF0aWMgZG91YmxlIHRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkKCk7
CiAKICAgICAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUxvYWRl
ciopOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgICAgIHZv
aWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGludCBsZW5ndGhSZWNl
aXZlZCk7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciopOwotICAg
ICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJik7Ci0gICAgICAgIHZvaWQgZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsK
ICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QoKSBjb25zdDsK
ICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCgpIGNvbnN0Owog
ICAgICAgICB2b2lkIHJlY2VpdmVkTWFpblJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYsIGJvb2wgaXNDb21wbGV0ZSk7CkBAIC0zOTcsMTEgKzM4OSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgYm9vbCBzaG91bGRSZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERv
Y3VtZW50TG9hZGVyKik7CiAKICAgICAgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsK
LSAgICAgICAgdm9pZCBkaXNwYXRjaEFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKLSAgICAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgICAgIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBpbnQgbGVuZ3RoKTsKLSAgICAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogCiAgICAgICAg
IHZvaWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciosIEZyYW1lTG9hZFR5
cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7IC8vIENhbGxzIGNvbnRpbnVlTG9hZEFmdGVyTmF2
aWdhdGlvblBvbGljeQogICAgICAgICB2b2lkIGxvYWQoRG9jdW1lbnRMb2FkZXIqKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxs
cyBsb2FkV2l0aERvY3VtZW50TG9hZGVyICAgCkBAIC00NDcsNiArNDM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIG11dGFibGUgUG9saWN5Q2hlY2tlciBtX3BvbGljeUNoZWNr
ZXI7CiAgICAgICAgIG11dGFibGUgSGlzdG9yeUNvbnRyb2xsZXIgbV9oaXN0b3J5OworICAgICAg
ICBtdXRhYmxlIFJlc291cmNlTG9hZE5vdGlmaWVyIG1fbm90aWZlcjsKIAogICAgICAgICBGcmFt
ZVN0YXRlIG1fc3RhdGU7CiAgICAgICAgIEZyYW1lTG9hZFR5cGUgbV9sb2FkVHlwZTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xv
YWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU3YmRiY2IuLmMzN2RhZWYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29y
ZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE1h
aW5SZXNvdXJjZUxvYWRlcjo6cmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIAogICAgIGlmICghY2FuY2VsbGVkKCkpIHsKICAgICAgICAgQVNTRVJUKCFyZWFjaGVkVGVy
bWluYWxTdGF0ZSgpKTsKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkRmFpbFRvTG9hZCh0aGlz
LCBlcnJvcik7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZhaWxUb0xv
YWQodGhpcywgZXJyb3IpOwogICAgICAgICAKICAgICAgICAgcmVsZWFzZVJlc291cmNlcygpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2Q1MWQxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCkBAIC0wLDAgKzEsMTczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRO
b3RpZmllci5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVzb3VyY2VMb2FkTm90aWZpZXI6OlJlc291
cmNlTG9hZE5vdGlmaWVyKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9
CisKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgY3VycmVudFdlYkNoYWxsZW5nZSkKK3sKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGN1cnJlbnRXZWJDaGFsbGVu
Z2UpOworfQorCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY3VycmVudFdlYkNoYWxsZW5nZSkKK3sKKyAgICBtX2ZyYW1lLT5sb2FkZXIo
KS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgY3VycmVudFdlYkNo
YWxsZW5nZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklkZW50aWZp
ZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBjbGllbnRSZXF1ZXN0KQoreworICAgIGRpc3BhdGNoQXNzaWduSWRlbnRpZmll
clRvSW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgY2xp
ZW50UmVxdWVzdCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmIGNsaWVudFJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgbV9m
cmFtZS0+bG9hZGVyKCktPmFwcGx5VXNlckFnZW50KGNsaWVudFJlcXVlc3QpOworCisgICAgZGlz
cGF0Y2hXaWxsU2VuZFJlcXVlc3QobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlk
ZW50aWZpZXIoKSwgY2xpZW50UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Cit9CisKK3ZvaWQg
UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQoreworICAgIGFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPmFkZFJlc3BvbnNlKHIpOworCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnByb2dyZXNzKCktPmluY3JlbWVudFByb2dyZXNzKGxv
YWRlci0+aWRlbnRpZmllcigpLCByKTsKKworICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIpOworfQor
Cit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRl
ciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2
ZWQpCit7CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBh
Z2UtPnByb2dyZXNzKCktPmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBk
YXRhLCBsZW5ndGgpOworCisgICAgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBsZW5ndGhSZWNlaXZl
ZCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZpbmlzaExvYWQoUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlcikKK3sgICAgCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCkpCisgICAgICAgIHBhZ2UtPnByb2dyZXNzKCktPmNvbXBsZXRlUHJvZ3Jlc3MobG9hZGVy
LT5pZGVudGlmaWVyKCkpOworICAgIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpKTsKK30KKwordm9pZCBSZXNvdXJj
ZUxvYWROb3RpZmllcjo6ZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS0+Y29tcGxldGVQcm9ncmVzcyhsb2Fk
ZXItPmlkZW50aWZpZXIoKSk7CisKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkRmFpbExvYWRpbmcobG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgZXJyb3IpOworfQorCit2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJp
bmcpCit7CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZExvYWRS
ZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKK30KKwor
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hBc3NpZ25JZGVudGlmaWVyVG9Jbml0
aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZp
ZXIsIGxvYWRlciwgcmVxdWVzdCk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXIs
IHJlcXVlc3QpOworI2VuZGlmCit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3Bh
dGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKQoreworICAgIFN0cmluZ0ltcGwqIG9sZFJlcXVlc3RVUkwg
PSByZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+ZGlkVGVsbENsaWVudEFib3V0TG9hZChyZXF1ZXN0LnVybCgpKTsK
KworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVl
c3QobG9hZGVyLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKworICAg
IC8vIElmIHRoZSBVUkwgY2hhbmdlZCwgdGhlbiB3ZSB3YW50IHRvIHB1dCB0aGF0IG5ldyBVUkwg
aW4gdGhlICJkaWQgdGVsbCBjbGllbnQiIHNldCB0b28uCisgICAgaWYgKCFyZXF1ZXN0LmlzTnVs
bCgpICYmIG9sZFJlcXVlc3RVUkwgIT0gcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpCisg
ICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50
QWJvdXRMb2FkKHJlcXVlc3QudXJsKCkpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBp
ZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT53aWxsU2VuZFJlcXVlc3QobG9hZGVyLCBpZGVudGlmaWVyLCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKTsKKyNlbmRpZgorfQorCit2b2lkIFJlc291cmNlTG9hZE5vdGlm
aWVyOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCit7Cisg
ICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVSZXNwb25z
ZShsb2FkZXIsIGlkZW50aWZpZXIsIHIpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBp
ZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5kaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByKTsK
KyNlbmRpZgorfQorCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgaW50IGxlbmd0aCkKK3sKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkt
PmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBsZW5n
dGgpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRSZWNl
aXZlQ29udGVudExlbmd0aChsb2FkZXIsIGlkZW50aWZpZXIsIGxlbmd0aCk7CisjZW5kaWYKK30K
Kwordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBt
X2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhsb2Fk
ZXIsIGlkZW50aWZpZXIpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5kaWRGaW5pc2hMb2FkaW5nKGxvYWRlciwgaWRlbnRpZmllcik7CisjZW5kaWYKK30KKwor
RG9jdW1lbnRMb2FkZXIqIFJlc291cmNlTG9hZE5vdGlmaWVyOjphY3RpdmVEb2N1bWVudExvYWRl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVu
dExvYWRlcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzQx
MTcxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0
cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VMb2FkTm90aWZpZXJf
aAorI2RlZmluZSBSZXNvdXJjZUxvYWROb3RpZmllcl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U7CisgICAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CisgICAgY2xhc3MgRnJhbWU7
CisgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKKyAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKKyAg
ICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKKyAg
ICBjbGFzcyBTY3JpcHRTdHJpbmc7CisKKyAgICBjbGFzcyBSZXNvdXJjZUxvYWROb3RpZmllciA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBSZXNvdXJjZUxvYWRO
b3RpZmllcihGcmFtZSopOworCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KTsKKyAgICAgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisKKyAgICAgICAgdm9p
ZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGludCBsZW5n
dGhSZWNlaXZlZCk7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciop
OworICAgICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CisgICAgICAgIHZvaWQgZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3Ry
aW5nKTsKKworICAgICAgICB2b2lkIGRpc3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworICAgICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgICAgICB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGludCBsZW5ndGgpOworICAgICAgICB2b2lkIGRpc3BhdGNoRGlkRmlu
aXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBpbmxpbmUgRG9jdW1lbnRMb2FkZXIqIGFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCkgY29uc3Q7CisKKyAgICAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VMb2FkTm90aWZpZXJf
aApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVlN2RlYTkuLjU1ZDI0M2EgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIwMywxMCArMjAzLDEwIEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzCiAgICAgaWYgKG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykgewogICAg
ICAgICBpZiAoIW1faWRlbnRpZmllcikgewogICAgICAgICAgICAgbV9pZGVudGlmaWVyID0gbV9m
cmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAg
ICAgICAgICBmcmFtZUxvYWRlcigpLT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCht
X2lkZW50aWZpZXIsIHJlcXVlc3QpOworICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS0+YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyLCByZXF1
ZXN0KTsKICAgICAgICAgfQogCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPndpbGxTZW5kUmVxdWVz
dCh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOwogICAgIH0KICAgICAKICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwpAQCAtMjMwLDcg
KzIzMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByKQogICAgICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lm
TmVlZGVkKCk7CiAgICAgICAgIAogICAgIGlmIChtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Mp
Ci0gICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBtX3Jlc3Bv
bnNlKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHRoaXMsIG1fcmVzcG9uc2UpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBsb25nIGxvbmcgbGVuZ3RoUmVj
ZWl2ZWQsIGJvb2wgYWxsQXRPbmNlKQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcg
bG9uZyBsZW5nCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0
d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENv
dWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX3NlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0
aFJlY2VpdmVkKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZFJlY2Vp
dmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGhSZWNlaXZl
ZCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nT25lUGFydCgpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2NhbGxlZERpZEZpbmlzaExvYWQgPSB0cnVlOwogICAgIGlmIChtX3NlbmRSZXNvdXJjZUxv
YWRDYWxsYmFja3MpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZEZpbmlzaExvYWQodGhpcyk7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZpbmlzaExvYWQodGhpcyk7
CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICAgICAgZGF0YS0+cmVtb3ZlR2VuZXJhdGVk
RmlsZXNJZk5lZWRlZCgpOwogCiAgICAgaWYgKG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyAm
JiAhbV9jYWxsZWREaWRGaW5pc2hMb2FkKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRGYWls
VG9Mb2FkKHRoaXMsIGVycm9yKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+
ZGlkRmFpbFRvTG9hZCh0aGlzLCBlcnJvcik7CiAKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiB9
CkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgICAgICBtX2hhbmRsZSA9IDA7CiAgICAgfQogICAg
IGlmIChtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgJiYgIW1fY2FsbGVkRGlkRmluaXNoTG9h
ZCkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkRmFpbFRvTG9hZCh0aGlzLCBlcnJvcik7Cisg
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZhaWxUb0xvYWQodGhpcywgZXJy
b3IpOwogCiAgICAgcmVsZWFzZVJlc291cmNlcygpOwogfQpAQCAtNDMzLDcgKzQzMyw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdh
dGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8g
YW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9m
IHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHByb3Rl
Y3Rvcih0aGlzKTsKLSAgICBmcmFtZUxvYWRlcigpLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKKyAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKIH0K
IAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKQEAgLTQ0MSw3ICs0NDEs
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZQogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlz
IGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwog
ICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhh
bXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVy
PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKKyAgICBmcmFtZUxvYWRlcigpLT5ub3Rp
ZmllcigpLT5kaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2Up
OwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41211</attachid>
            <date>2009-10-14 23:04:07 -0700</date>
            <delta_ts>2009-10-15 22:20:13 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30379-20091014230405.patch</filename>
            <type>text/plain</type>
            <size>39048</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzJhZTMzNS4uM2EyMGQ0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAwOS0xMC0xNSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZhY3RvciBSZXNvdXJjZUxvYWROb3RpZmllciBvdXQgb2YgRnJhbWVMb2Fk
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzc5
CisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBoYXZlIHZpcnR1YWxseSBubyBpbnRlcmFjdGlvbiB3
aXRoIHRoZSByZXN0IG9mCisgICAgICAgIEZyYW1lTG9hZGVyLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNl
cy5ia2w6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJh
bWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFm
dGVyV2lsbFN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZp
ZXI6OlJlc291cmNlTG9hZE5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE5vdGlmaWVyOjphY3RpdmVEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OndpbGxTZW5kUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmFpbFRvTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkTG9hZFJlc291
cmNlQnlYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNo
QXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3RpZmll
cjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpub3RpZmllcik6CisgICAgICAg
ICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
UmVzb3VyY2VMb2FkZXI6OnJlY2VpdmVkRXJyb3IpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OlJlc291cmNlTG9hZE5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjph
c3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWROb3RpZmllcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRGYWlsVG9Mb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaEFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRO
b3RpZmllcjo6YWN0aXZlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZ09uZVBhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSk6CisKIDIwMDktMTAtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDM0ODA3NTQuLmVjMTA5
OTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTI2MSw2ICsxMjYxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2xvYWRlci9SZXF1ZXN0LmggXAogCVdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBcCisJV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIFwKKwlXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5oIFwKIAlXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgXAog
CVdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggXAogCVdlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyQ2xpZW50LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNjllOTk1Li4wZmFjNTFjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTY0Nyw2ICsxNjQ3LDggQEAKICAgICAgICAgICAgICdsb2FkZXIvUmVxdWVzdC5oJywKICAgICAg
ICAgICAgICdsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaCcsCisgICAgICAgICAgICAnbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgnLAog
ICAgICAgICAgICAgJ2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAnLAogICAgICAgICAgICAg
J2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5YmMzZGM3Li42NmJlMTg5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTExMjIsNiAr
MTEyMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAg
XAogICAgIGxvYWRlci9SZXF1ZXN0LmNwcCBcCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cCBcCisgICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBcCiAgICAgbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL1RleHREb2N1bWVudC5jcHAgXAogICAg
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCBmMzRmYTUzLi43YmZmOGQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTE3NTQ1LDYgKzE3NTQ1LDE0IEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRO
b3RpZmllci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2FkTm90aWZpZXIuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxjZlxSZXNvdXJj
ZUxvYWRlckNGTmV0LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNmOGM5MDYuLmI2YTk2
NzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzU3
LDYgKzIzNTcsOCBAQAogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5
OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3
QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNw
cCAqLzsgfTsKIAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc2MTA3
RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTc5NDAxMDMxMDg2RUUzMjAwREM1MjVGIC8qIFJl
c291cmNlTG9hZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3OTQwMTAxMTA4NkVFMzIwMERDNTI1RiAvKiBSZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAgKi87IH07CisJCTk3OTQwMTA0MTA4NkVFMzIwMERDNTI1RiAvKiBSZXNvdXJjZUxv
YWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTc5NDAxMDIxMDg2RUUzMjAwREM1MjVGIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc5RjQzRDMx
MDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAv
KiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi87IH07CiAJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgz
QiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTdEQ0UyMDExMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RENFMUZGMTA4MDdDNzUw
MDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5jcHAgKi87IH07CkBAIC03NTY3LDYgKzc1Njks
OCBAQAogCQk5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNo
ZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hl
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIw
MEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBvbGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDAx
MDExMDg2RUUzMjAwREM1MjVGIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc5NDAxMDIxMDg2RUUzMjAwREM1MjVGIC8qIFJl
c291cmNlTG9hZE5vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
c291cmNlTG9hZE5vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0
M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVj
dFNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWRpcmVjdFNj
aGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0RDRTFGRjEwODA3Qzc1
MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSGlzdG9yeUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ2NTYsNiArMTQ2NjAsOCBAQAogCQkJCUJDQjE2QzE2MDk3OUMzQkQwMDQ2
Nzc0MSAvKiBSZXF1ZXN0LmggKi8sCiAJCQkJOTNFMjI3REUwQUY1ODlBRDAwRDQ4MzI0IC8qIFJl
c291cmNlTG9hZGVyLmNwcCAqLywKIAkJCQk2NTZEMzcyNzBBREJBNURFMDBBNDU1NEQgLyogUmVz
b3VyY2VMb2FkZXIuaCAqLywKKwkJCQk5Nzk0MDEwMTEwODZFRTMyMDBEQzUyNUYgLyogUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuY3BwICovLAorCQkJCTk3OTQwMTAyMTA4NkVFMzIwMERDNTI1RiAvKiBS
ZXNvdXJjZUxvYWROb3RpZmllci5oICovLAogCQkJCTkzRTIyN0RGMEFGNTg5QUQwMEQ0ODMyNCAv
KiBTdWJyZXNvdXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3MzAwQURCQTVERTAwQTQ1NTRE
IC8qIFN1YnJlc291cmNlTG9hZGVyLmggKi8sCiAJCQkJMUEzMTc4OTIwQjIwQTgxNjAwMzE2OTg3
IC8qIFN1YnJlc291cmNlTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0xODAzNCw2ICsxODA0MCw3IEBA
CiAJCQkJOTdEQ0UyMDIxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBN0QyMEY2MzEwN0Y0MDY5MDBBODAzOTIgLyogSlNDYW52YXNBY3Rp
dmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QyMEY2RDEwN0Y0MzhCMDBBODAzOTIgLyog
Q2FudmFzQWN0aXZlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTc5NDAxMDQxMDg2RUUzMjAw
REM1MjVGIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMTY1
LDYgKzIwMTcyLDcgQEAKIAkJCQk5N0RDRTIwMTEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEMjBGNjIxMDdGNDA2OTAwQTgwMzky
IC8qIEpTQ2FudmFzQWN0aXZlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTIyNzNBMzEw
ODNCM0IxMDBFRTVDODQgLyogSlNDYW52YXNBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5Nzk0MDEwMzEwODZFRTMyMDBEQzUyNUYgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBi
L1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IDQ4NTE3ODQuLmM1NzkwODQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNv
dXJjZXMuYmtsCkBAIC03MzMsNiArNzMzLDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0
IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBsb2FkZXIvUmVkaXJl
Y3RTY2hlZHVsZXIuY3BwCiAgICAgICAgIGxvYWRlci9SZXF1ZXN0LmNwcAogICAgICAgICBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisgICAgICAgIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmll
ci5jcHAKICAgICAgICAgbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAogICAgICAgICBsb2Fk
ZXIvVGV4dERvY3VtZW50LmNwcAogICAgICAgICBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA5MGMyMmI2Li5jMjhiMmViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTAyLDcg
KzQ1MDIsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9IHRo
aXMtPmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBmcmFt
ZUxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKTsKLSAgICAgICAgZnJhbWVMb2FkZXItPmRpZExvYWRS
ZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKKyAgICAg
ICAgZnJhbWVMb2FkZXItPm5vdGlmaWVyKCktPmRpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVl
c3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAppbmRleCBjMTgyOGNiLi5hYjJmYjM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0x
NjgsNiArMTY4LDcgQEAgRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lKiBmcmFtZSwgRnJh
bWVMb2FkZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1f
cG9saWN5Q2hlY2tlcihmcmFtZSkKICAgICAsIG1faGlzdG9yeShmcmFtZSkKKyAgICAsIG1fbm90
aWZlcihmcmFtZSkKICAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZUNvbW1pdHRlZFBhZ2UpCiAgICAg
LCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGVTdGFuZGFyZCkKICAgICAsIG1fZGVsZWdhdGVJc0hh
bmRsaW5nUHJvdmlzaW9uYWxMb2FkRXJyb3IoZmFsc2UpCkBAIC0yOTM2LDcgKzI5MzcsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKIAogICAg
IGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIGlkZW50aWZpZXIg
PSBwYWdlLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgICAgIGRp
c3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLmdldCgpLCBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIt
Pm9yaWdpbmFsUmVxdWVzdCgpKTsKKyAgICAgICAgbm90aWZpZXIoKS0+ZGlzcGF0Y2hBc3NpZ25J
ZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIuZ2V0KCksIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1
ZXN0KCkpOwogICAgIH0KIAogICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5z
dGFydExvYWRpbmdNYWluUmVzb3VyY2UoaWRlbnRpZmllcikpCkBAIC0zMjU2LDQ2ICszMjU3LDYg
QEAgdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXUKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAot
dm9pZCBGcmFtZUxvYWRlcjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNsaWVudFJlcXVlc3Qp
Ci17Ci0gICAgcmV0dXJuIGRpc3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3Qo
aWRlbnRpZmllciwgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgY2xpZW50UmVxdWVzdCk7Ci19Ci0K
LXZvaWQgRnJhbWVMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBSZXNvdXJjZVJlcXVlc3QmIGNsaWVudFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCi17Ci0gICAgYXBwbHlVc2VyQWdlbnQoY2xpZW50UmVxdWVzdCk7
Ci0gICAgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBs
b2FkZXItPmlkZW50aWZpZXIoKSwgY2xpZW50UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci19
Ci0KLXZvaWQgRnJhbWVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQotewotICAgIGFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPmFkZFJlc3BvbnNlKHIpOwotICAgIAotICAgIGlmIChQYWdlKiBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5wcm9ncmVzcygpLT5pbmNyZW1lbnRQcm9ncmVz
cyhsb2FkZXItPmlkZW50aWZpZXIoKSwgcik7Ci0gICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgcik7Ci19
Ci0KLXZvaWQgRnJhbWVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkKLXsK
LSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+cHJv
Z3Jlc3MoKS0+aW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGRhdGEsIGxl
bmd0aCk7Ci0gICAgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBsZW5ndGhSZWNlaXZlZCk7Ci19Ci0K
LXZvaWQgRnJhbWVMb2FkZXI6OmRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPnByb2dyZXNzKCktPmNvbXBsZXRlUHJvZ3Jlc3Mo
bG9hZGVyLT5pZGVudGlmaWVyKCkpOwotICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCi0gICAgICAg
IG1fY2xpZW50LT5kaXNwYXRjaERpZEZhaWxMb2FkaW5nKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIGVycm9yKTsKLX0KLQotdm9pZCBGcmFtZUxvYWRlcjo6
ZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQotewotICAgIG1fY2xpZW50LT5kaXNw
YXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVlc3QoaWRlbnRpZmllciwgc291cmNlU3Ry
aW5nKTsKLX0KLQogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBGcmFtZUxvYWRlcjo6b3JpZ2luYWxS
ZXF1ZXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+b3Jp
Z2luYWxSZXF1ZXN0Q29weSgpOwpAQCAtMzUwOCwxMyArMzQ2OSwxMyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlcwogdm9pZCBGcmFtZUxvYWRlcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2Fn
ZXModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgaW50IGxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7ICAgIAogICAg
IGlmICghcmVzcG9uc2UuaXNOdWxsKCkpCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAg
ICAgbm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobV9kb2N1bWVudExvYWRl
ci5nZXQoKSwgaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIAogICAgIGlmIChsZW5ndGggPiAw
KQotICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKG1fZG9jdW1lbnRMb2Fk
ZXIuZ2V0KCksIGlkZW50aWZpZXIsIGxlbmd0aCk7CisgICAgICAgIG5vdGlmaWVyKCktPmRpc3Bh
dGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRp
ZmllciwgbGVuZ3RoKTsKICAgICAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIGRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgbm90aWZpZXIoKS0+ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQt
PmRpc3BhdGNoRGlkRmFpbExvYWRpbmcobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmll
ciwgZXJyb3IpOwogfQpAQCAtMzUyNiwxMSArMzQ4NywxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpy
ZXF1ZXN0RnJvbURlbGVnYXRlKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdW5zaWduZWQgbG9u
ZyYgaQogICAgIGlkZW50aWZpZXIgPSAwOwogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpKSB7CiAgICAgICAgIGlkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVzcygpLT5jcmVhdGVV
bmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgICAgIGRpc3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5p
dGlhbFJlcXVlc3QoaWRlbnRpZmllciwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVxdWVzdCk7
CisgICAgICAgIG5vdGlmaWVyKCktPmRpc3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJl
cXVlc3QoaWRlbnRpZmllciwgbV9kb2N1bWVudExvYWRlci5nZXQoKSwgcmVxdWVzdCk7CiAgICAg
fQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QocmVxdWVzdCk7Ci0gICAgZGlzcGF0
Y2hXaWxsU2VuZFJlcXVlc3QobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgbmV3
UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICBub3RpZmllcigpLT5kaXNwYXRjaFdp
bGxTZW5kUmVxdWVzdChtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCiAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkp
CiAgICAgICAgIGVycm9yID0gY2FuY2VsbGVkRXJyb3IocmVxdWVzdCk7CkBAIC0zODU4LDI4ICsz
ODE5LDExIEBAIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXI6OmZpbGVEb2VzTm90RXhpc3RFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zCiAgICAgcmV0dXJuIG1fY2xpZW50LT5m
aWxlRG9lc05vdEV4aXN0RXJyb3IocmVzcG9uc2UpOyAgICAKIH0KIAotdm9pZCBGcmFtZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyKQoteyAgICAKLSAgICBpZiAo
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS0+
Y29tcGxldGVQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSk7Ci0gICAgZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVy
KCkpOwotfQotCiBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShS
ZXNvdXJjZUxvYWRlciogbG9hZGVyKQogewogICAgIHJldHVybiBtX2NsaWVudC0+c2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50
aWZpZXIoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY3VycmVudFdlYkNoYWxsZW5nZSkKLXsKLSAgICBtX2NsaWVudC0+ZGlzcGF0Y2hE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LCBsb2FkZXItPmlkZW50aWZpZXIoKSwgY3VycmVudFdlYkNoYWxsZW5nZSk7Ci19Ci0KLXZvaWQg
RnJhbWVMb2FkZXI6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlTG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjdXJyZW50V2ViQ2hh
bGxlbmdlKQotewotICAgIG1fY2xpZW50LT5kaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCks
IGN1cnJlbnRXZWJDaGFsbGVuZ2UpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRp
dGxlKTsKQEAgLTM5ODUsNjMgKzM5MjksNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERp
ZENvbW1pdExvYWQoKQogI2VuZGlmCiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoQXNz
aWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17
Ci0gICAgbV9jbGllbnQtPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZp
ZXIsIGxvYWRlciwgcmVxdWVzdCk7Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXIs
IHJlcXVlc3QpOwotI2VuZGlmCi19Ci0KLXZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoV2lsbFNl
bmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKQotewotICAgIFN0cmluZ0ltcGwqIG9sZFJlcXVlc3RVUkwgPSByZXF1ZXN0
LnVybCgpLnN0cmluZygpLmltcGwoKTsKLSAgICBtX2RvY3VtZW50TG9hZGVyLT5kaWRUZWxsQ2xp
ZW50QWJvdXRMb2FkKHJlcXVlc3QudXJsKCkpOwotCi0gICAgbV9jbGllbnQtPmRpc3BhdGNoV2ls
bFNlbmRSZXF1ZXN0KGxvYWRlciwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSk7Ci0KLSAgICAvLyBJZiB0aGUgVVJMIGNoYW5nZWQsIHRoZW4gd2Ugd2FudCB0byBwdXQgdGhh
dCBuZXcgVVJMIGluIHRoZSAiZGlkIHRlbGwgY2xpZW50IiBzZXQgdG9vLgotICAgIGlmICghcmVx
dWVzdC5pc051bGwoKSAmJiBvbGRSZXF1ZXN0VVJMICE9IHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
aW1wbCgpKQotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2Fk
KHJlcXVlc3QudXJsKCkpOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT53aWxsU2VuZFJlcXVlc3QobG9hZGVyLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKLSNlbmRpZgotfQotCi12b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCi17Ci0gICAgbV9jbGllbnQtPmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlciwgaWRlbnRpZmllciwgcik7Ci0KLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAg
ICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpZFJlY2VpdmVSZXNwb25zZShsb2Fk
ZXIsIGlkZW50aWZpZXIsIHIpOwotI2VuZGlmCi19Ci0KLXZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoKQotewotICAgIG1fY2xpZW50LT5kaXNwYXRj
aERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgbGVuZ3RoKTsKLQot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpCi0gICAgICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBsZW5ndGgpOwotI2VuZGlmCi19Ci0KLXZvaWQg
RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9h
ZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCi17Ci0gICAgbV9jbGllbnQtPmRpc3BhdGNo
RGlkRmluaXNoTG9hZGluZyhsb2FkZXIsIGlkZW50aWZpZXIpOwotCi0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRGaW5pc2hMb2FkaW5nKGxvYWRlciwgaWRlbnRp
Zmllcik7Ci0jZW5kaWYKLX0KLQogdm9pZCBGcmFtZUxvYWRlcjo6dGVsbENsaWVudEFib3V0UGFz
dE1lbW9yeUNhY2hlTG9hZHMoKQogewogICAgIEFTU0VSVChtX2ZyYW1lLT5wYWdlKCkpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggNzUwMTdkNC4uZTBjOGE4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUG9saWN5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJQ
b2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUmVkaXJlY3RTY2hlZHVsZXIuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZUxvYWROb3RpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtOTEs
NiArOTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUG9saWN5Q2hlY2tlciog
cG9saWN5Q2hlY2tlcigpIGNvbnN0IHsgcmV0dXJuICZtX3BvbGljeUNoZWNrZXI7IH0KICAgICAg
ICAgSGlzdG9yeUNvbnRyb2xsZXIqIGhpc3RvcnkoKSBjb25zdCB7IHJldHVybiAmbV9oaXN0b3J5
OyB9CisgICAgICAgIFJlc291cmNlTG9hZE5vdGlmaWVyKiBub3RpZmllcigpIGNvbnN0IHsgcmV0
dXJuICZtX25vdGlmZXI7IH0KIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29vbCwg
cGVvcGxlLiBUaGVyZSBhcmUgdG9vIG1hbnkgZGlmZmVyZW50IGZ1bmN0aW9ucyB0aGF0IGFsbCBz
dGFydCBsb2Fkcy4KICAgICAgICAgLy8gV2Ugc2hvdWxkIGFpbSB0byBjb25zb2xpZGF0ZSB0aGVz
ZSBpbnRvIGEgc21hbGxlciBzZXQgb2YgZnVuY3Rpb25zLCBhbmQgdHJ5IHRvIHJldXNlIG1vcmUg
b2YKQEAgLTE0MSwxNiArMTQzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0
aWMgZG91YmxlIHRpbWVPZkxhc3RDb21wbGV0ZWRMb2FkKCk7CiAKICAgICAgICAgYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUxvYWRlciopOwotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgICAgIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwotICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRl
ciosIGNvbnN0IGNoYXIqLCBpbnQsIGludCBsZW5ndGhSZWNlaXZlZCk7Ci0gICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciopOwotICAgICAgICB2b2lkIGRpZEZhaWxUb0xv
YWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgICAgIHZvaWQg
ZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QoKSBjb25zdDsKICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCgpIGNvbnN0OwogICAgICAgICB2b2lkIHJlY2VpdmVk
TWFpblJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYsIGJvb2wgaXNDb21wbGV0ZSk7
CkBAIC0zOTcsMTEgKzM4OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBz
aG91bGRSZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKik7CiAKICAg
ICAgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKLSAgICAgICAgdm9pZCBkaXNwYXRj
aEFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICAgICAgdm9p
ZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSk7Ci0gICAgICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Uo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3Ro
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoKTsK
LSAgICAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogCiAgICAgICAgIHZvaWQgbG9hZFdpdGhEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciosIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPik7IC8vIENhbGxzIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeQogICAgICAg
ICB2b2lkIGxvYWQoRG9jdW1lbnRMb2FkZXIqKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxscyBsb2FkV2l0aERvY3VtZW50TG9h
ZGVyICAgCkBAIC00NDcsNiArNDM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IG11dGFibGUgUG9saWN5Q2hlY2tlciBtX3BvbGljeUNoZWNrZXI7CiAgICAgICAgIG11dGFibGUg
SGlzdG9yeUNvbnRyb2xsZXIgbV9oaXN0b3J5OworICAgICAgICBtdXRhYmxlIFJlc291cmNlTG9h
ZE5vdGlmaWVyIG1fbm90aWZlcjsKIAogICAgICAgICBGcmFtZVN0YXRlIG1fc3RhdGU7CiAgICAg
ICAgIEZyYW1lTG9hZFR5cGUgbV9sb2FkVHlwZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGU3YmRiY2IuLmMzN2RhZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNl
TG9hZGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6cmVj
ZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogICAgIGlmICghY2FuY2Vs
bGVkKCkpIHsKICAgICAgICAgQVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKTsKLSAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+ZGlkRmFpbFRvTG9hZCh0aGlzLCBlcnJvcik7CisgICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZEZhaWxUb0xvYWQodGhpcywgZXJyb3IpOwogICAg
ICAgICAKICAgICAgICAgcmVsZWFzZVJlc291cmNlcygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yY2Q1MWQxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
Tm90aWZpZXIuY3BwCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWROb3RpZmllci5oIgorCisjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVzb3VyY2VMb2FkTm90aWZpZXI6OlJlc291cmNlTG9hZE5vdGlmaWVyKEZyYW1l
KiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUxvYWRl
ciogbG9hZGVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY3VycmVudFdlYkNoYWxs
ZW5nZSkKK3sKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9h
ZGVyLT5pZGVudGlmaWVyKCksIGN1cnJlbnRXZWJDaGFsbGVuZ2UpOworfQorCit2b2lkIFJlc291
cmNlTG9hZE5vdGlmaWVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUxvYWRlciogbG9hZGVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY3VycmVudFdl
YkNoYWxsZW5nZSkKK3sKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNo
RGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LCBsb2FkZXItPmlkZW50aWZpZXIoKSwgY3VycmVudFdlYkNoYWxsZW5nZSk7Cit9CisKK3ZvaWQg
UmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjbGllbnRSZXF1
ZXN0KQoreworICAgIGRpc3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoaWRl
bnRpZmllciwgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgY2xpZW50UmVxdWVzdCk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciog
bG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmIGNsaWVudFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmFwcGx5
VXNlckFnZW50KGNsaWVudFJlcXVlc3QpOworCisgICAgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3Qo
bG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgY2xpZW50UmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByKQoreworICAgIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmFkZFJlc3BvbnNl
KHIpOworCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBh
Z2UtPnByb2dyZXNzKCktPmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBy
KTsKKworICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKSwgbG9hZGVyLT5pZGVudGlmaWVyKCksIHIpOworfQorCit2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPnByb2dyZXNzKCktPmluY3Jl
bWVudFByb2dyZXNzKGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBsZW5ndGgpOworCisgICAg
ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2FkZXItPmRvY3VtZW50TG9hZGVyKCks
IGxvYWRlci0+aWRlbnRpZmllcigpLCBsZW5ndGhSZWNlaXZlZCk7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKK3sg
ICAgCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHBhZ2Ut
PnByb2dyZXNzKCktPmNvbXBsZXRlUHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCkpOworICAg
IGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhsb2FkZXItPmRvY3VtZW50TG9hZGVyKCksIGxvYWRl
ci0+aWRlbnRpZmllcigpKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmFp
bFRvTG9hZChSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcGFn
ZS0+cHJvZ3Jlc3MoKS0+Y29tcGxldGVQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSk7CisK
KyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPmRpc3BhdGNoRGlkRmFpbExvYWRpbmcobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBs
b2FkZXItPmlkZW50aWZpZXIoKSwgZXJyb3IpOworfQorCit2b2lkIFJlc291cmNlTG9hZE5vdGlm
aWVyOjpkaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpCit7CisgICAgbV9mcmFtZS0+
bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZExvYWRSZXNvdXJjZUJ5WE1MSHR0cFJlcXVl
c3QoaWRlbnRpZmllciwgc291cmNlU3RyaW5nKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlzcGF0Y2hBc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3sKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIGxvYWRlciwgcmVxdWVzdCk7
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpKQorICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmlkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QpOworI2VuZGlmCit9
CisKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KQoreworICAgIFN0cmluZ0ltcGwqIG9sZFJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLmltcGwoKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+ZGlk
VGVsbENsaWVudEFib3V0TG9hZChyZXF1ZXN0LnVybCgpKTsKKworICAgIG1fZnJhbWUtPmxvYWRl
cigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QobG9hZGVyLCBpZGVudGlmaWVy
LCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKworICAgIC8vIElmIHRoZSBVUkwgY2hhbmdl
ZCwgdGhlbiB3ZSB3YW50IHRvIHB1dCB0aGF0IG5ldyBVUkwgaW4gdGhlICJkaWQgdGVsbCBjbGll
bnQiIHNldCB0b28uCisgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIG9sZFJlcXVlc3RVUkwg
IT0gcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpCisgICAgICAgIG1fZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlcXVlc3QudXJs
KCkpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT53aWxsU2Vu
ZFJlcXVlc3QobG9hZGVyLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
KyNlbmRpZgorfQorCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHIpCit7CisgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIsIGlkZW50aWZpZXIs
IHIpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRSZWNl
aXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByKTsKKyNlbmRpZgorfQorCit2b2lkIFJl
c291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0aCkK
K3sKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgobG9hZGVyLCBpZGVudGlmaWVyLCBsZW5ndGgpOworCisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAg
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2Fk
ZXIsIGlkZW50aWZpZXIsIGxlbmd0aCk7CisjZW5kaWYKK30KKwordm9pZCBSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50KCktPmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhsb2FkZXIsIGlkZW50aWZpZXIpOworCisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkKKyAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaWRGaW5pc2hMb2FkaW5n
KGxvYWRlciwgaWRlbnRpZmllcik7CisjZW5kaWYKK30KKworRG9jdW1lbnRMb2FkZXIqIFJlc291
cmNlTG9hZE5vdGlmaWVyOjphY3RpdmVEb2N1bWVudExvYWRlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5oIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzQxMTcxCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtMCwwICsxLDc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUmVzb3VyY2VMb2FkTm90aWZpZXJfaAorI2RlZmluZSBSZXNvdXJjZUxv
YWROb3RpZmllcl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CisgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgUmVzb3VyY2VF
cnJvcjsKKyAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKKyAgICBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOworICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKKyAgICBjbGFzcyBTY3JpcHRTdHJpbmc7
CisKKyAgICBjbGFzcyBSZXNvdXJjZUxvYWROb3RpZmllciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CisgICAgcHVibGljOgorICAgICAgICBSZXNvdXJjZUxvYWROb3RpZmllcihGcmFtZSopOworCisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlTG9h
ZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyAgICAgICAgdm9pZCBkaWRD
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJik7CisKKyAgICAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9J
bml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOworICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUxvYWRlciosIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
OworICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQsIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAg
IHZvaWQgZGlkRmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciopOworICAgICAgICB2b2lkIGRpZEZh
aWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgICAg
IHZvaWQgZGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKKworICAgICAgICB2b2lk
IGRpc3BhdGNoQXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAg
ICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBs
ZW5ndGgpOworICAgICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBpbmxpbmUgRG9jdW1lbnRMb2FkZXIqIGFjdGl2ZURvY3VtZW50TG9hZGVyKCkgY29uc3Q7CisK
KyAgICAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gUmVzb3VyY2VMb2FkTm90aWZpZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGVlN2RlYTkuLjU1ZDI0M2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTIwMywxMCArMjAzLDEwIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgaWYg
KG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykgewogICAgICAgICBpZiAoIW1faWRlbnRpZmll
cikgewogICAgICAgICAgICAgbV9pZGVudGlmaWVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVz
cygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgICAgICAgICBmcmFtZUxvYWRlcigp
LT5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXIsIHJlcXVlc3Qp
OworICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+YXNzaWduSWRlbnRpZmll
clRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyLCByZXF1ZXN0KTsKICAgICAgICAgfQogCi0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCByZWRp
cmVjdFJlc3BvbnNlKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+d2lsbFNl
bmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIH0KICAgICAK
ICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQog
ICAgICAgICBkYXRhLT5yZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCk7CiAgICAgICAgIAog
ICAgIGlmIChtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpCi0gICAgICAgIGZyYW1lTG9hZGVy
KCktPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCBtX3Jlc3BvbnNlKTsKKyAgICAgICAgZnJhbWVM
b2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRoaXMsIG1fcmVzcG9uc2Up
OwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoLCBsb25nIGxvbmcgbGVuZ3RoUmVjZWl2ZWQsIGJvb2wgYWxsQXRPbmNl
KQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBsZW5nCiAgICAgLy8gSG93
ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMg
d29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGgg
YSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Mg
JiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkUmVjZWl2ZURhdGEodGhpcywg
ZGF0YSwgbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aFJlY2VpdmVkKSk7CisgICAgICAg
IGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCktPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGRhdGEsIGxl
bmd0aCwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGhSZWNlaXZlZCkpOwogfQogCiB2b2lkIFJlc291
cmNlTG9hZGVyOjp3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nT25lUGFydCgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NhbGxlZERpZEZpbmlzaExv
YWQgPSB0cnVlOwogICAgIGlmIChtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpCi0gICAgICAg
IGZyYW1lTG9hZGVyKCktPmRpZEZpbmlzaExvYWQodGhpcyk7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCktPmRpZEZpbmlzaExvYWQodGhpcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zMDEsNyArMzAx
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICAgICAgZGF0YS0+cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwogCiAg
ICAgaWYgKG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyAmJiAhbV9jYWxsZWREaWRGaW5pc2hM
b2FkKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRGYWlsVG9Mb2FkKHRoaXMsIGVycm9yKTsK
KyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlkRmFpbFRvTG9hZCh0aGlzLCBl
cnJvcik7CiAKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiB9CkBAIC0zMzAsNyArMzMwLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogICAgICAgICBtX2hhbmRsZSA9IDA7CiAgICAgfQogICAgIGlmIChtX3NlbmRSZXNvdXJjZUxv
YWRDYWxsYmFja3MgJiYgIW1fY2FsbGVkRGlkRmluaXNoTG9hZCkKLSAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+ZGlkRmFpbFRvTG9hZCh0aGlzLCBlcnJvcik7CisgICAgICAgIGZyYW1lTG9hZGVyKCkt
Pm5vdGlmaWVyKCktPmRpZEZhaWxUb0xvYWQodGhpcywgZXJyb3IpOwogCiAgICAgcmVsZWFzZVJl
c291cmNlcygpOwogfQpAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
CiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBh
ZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBv
c3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIx
Ni4KICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBmcmFt
ZUxvYWRlcigpLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxl
bmdlKTsKKyAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSkKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZQogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5j
ZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1
ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFy
IDMyNjYyMTYuCiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0b3IodGhpcyk7Ci0g
ICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywg
Y2hhbGxlbmdlKTsKKyAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLT5kaWRDYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOwogfQogCiB2b2lkIFJlc291cmNl
TG9hZGVyOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYp
</data>
<flag name="review"
          id="22551"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="22619"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>