<?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>202608</bug_id>
          
          <creation_ts>2019-10-04 15:29:24 -0700</creation_ts>
          <short_desc>DOMCacheStorage should not prevent pages from entering the back/forward cache</short_desc>
          <delta_ts>2019-10-10 07:24:16 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>202590</dependson>
          <blocked>202293</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1577050</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-04 15:29:24 -0700</bug_when>
    <thetext>DOMCacheStorage should not prevent pages from entering the back/forward cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577057</commentid>
    <comment_count>1</comment_count>
      <attachid>380261</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-04 15:58:06 -0700</bug_when>
    <thetext>Created attachment 380261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577354</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-07 08:14:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/56036497&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577484</commentid>
    <comment_count>3</comment_count>
      <attachid>380355</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 13:46:09 -0700</bug_when>
    <thetext>Created attachment 380355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577821</commentid>
    <comment_count>4</comment_count>
      <attachid>380355</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-08 10:35:24 -0700</bug_when>
    <thetext>Comment on attachment 380355
Patch

Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578232</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-09 08:15:48 -0700</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578235</commentid>
    <comment_count>6</comment_count>
      <attachid>380355</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 08:25:10 -0700</bug_when>
    <thetext>Comment on attachment 380355
Patch

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

&gt; Source/WebCore/Modules/cache/DOMCacheStorage.cpp:223
&gt; +            });

Shouldn’t we create the cache at the time we execute the enquêtes task?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578247</commentid>
    <comment_count>7</comment_count>
      <attachid>380355</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-09 08:49:52 -0700</bug_when>
    <thetext>Comment on attachment 380355
Patch

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

&gt;&gt; Source/WebCore/Modules/cache/DOMCacheStorage.cpp:223
&gt;&gt; +            });
&gt; 
&gt; Shouldn’t we create the cache at the time we execute the enquêtes task?

enquêtes huh? :) How French.

I actually wasn&apos;t sure about the right time to append the cache to m_caches (assuming this is what you meant). I could do it in the lambda, or outside like I ended up doing.
It looks to me like the current code is unsafe when there are several parallel requests to doOpen() for the same name. You may end up creating the 2 DOMCache objects for the same name and have 2 caches for the same name in m_caches. Is that right or am I missing something?
The reason I appended the cache to m_caches synchronously rather than in the enqueued task was to not make this *race* worse. Also, while I see a good reason to resolve the promise in an async task, I did not see a need to delay the creation of the cache or adding it to m_caches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578329</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 12:09:32 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 380355 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380355&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/cache/DOMCacheStorage.cpp:223
&gt; &gt;&gt; +            });
&gt; &gt; 
&gt; &gt; Shouldn’t we create the cache at the time we execute the enquêtes task?
&gt; 
&gt; enquêtes huh? :) How French.

I did the enquete and the culprit....my phone autocompletion
enqueued -&gt; enquêtes!

On the other side, enquete -&gt; enquire...

&gt; I actually wasn&apos;t sure about the right time to append the cache to m_caches
&gt; (assuming this is what you meant). I could do it in the lambda, or outside
&gt; like I ended up doing.
&gt; It looks to me like the current code is unsafe when there are several
&gt; parallel requests to doOpen() for the same name. You may end up creating the
&gt; 2 DOMCache objects for the same name and have 2 caches for the same name in
&gt; m_caches. Is that right or am I missing something?
&gt; The reason I appended the cache to m_caches synchronously rather than in the
&gt; enqueued task was to not make this *race* worse. Also, while I see a good
&gt; reason to resolve the promise in an async task, I did not see a need to
&gt; delay the creation of the cache or adding it to m_caches.

Well, we could be suspended and DOMCache is an ActiveDOMObject.
Also, creating an object while we might never use it is not great.

I guess the alternative would be to not make DOMCache an ActiveDOMObject and instead have the CacheStorageConnection be an ActiveDOMObject (hence being owned by the Document). The CacheStorageConnection would then buffer all the callbacks if needed.
I guess we can do that if reducing the number of ActiveDOMObjects is motivating enough.

As of the race, if you call open with the same name, you will end up with two JSDOMCache pointing to the same request/response set.
I believe this is as per spec and the creation of the cache object is synchronous with the promise resolution.

We are doing some caching in DOMCacheStorage for skipping sending some IPC to network process. It should not (at least in theory) change the observable JS behaviour, except for getting faster promise resolutions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578335</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-09 12:20:15 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #8)
&gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; Comment on attachment 380355 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=380355&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/Modules/cache/DOMCacheStorage.cpp:223
&gt; &gt; &gt;&gt; +            });
&gt; &gt; &gt; 
&gt; &gt; &gt; Shouldn’t we create the cache at the time we execute the enquêtes task?
&gt; &gt; 
&gt; &gt; enquêtes huh? :) How French.
&gt; 
&gt; I did the enquete and the culprit....my phone autocompletion
&gt; enqueued -&gt; enquêtes!
&gt; 
&gt; On the other side, enquete -&gt; enquire...
&gt; 
&gt; &gt; I actually wasn&apos;t sure about the right time to append the cache to m_caches
&gt; &gt; (assuming this is what you meant). I could do it in the lambda, or outside
&gt; &gt; like I ended up doing.
&gt; &gt; It looks to me like the current code is unsafe when there are several
&gt; &gt; parallel requests to doOpen() for the same name. You may end up creating the
&gt; &gt; 2 DOMCache objects for the same name and have 2 caches for the same name in
&gt; &gt; m_caches. Is that right or am I missing something?
&gt; &gt; The reason I appended the cache to m_caches synchronously rather than in the
&gt; &gt; enqueued task was to not make this *race* worse. Also, while I see a good
&gt; &gt; reason to resolve the promise in an async task, I did not see a need to
&gt; &gt; delay the creation of the cache or adding it to m_caches.
&gt; 
&gt; Well, we could be suspended and DOMCache is an ActiveDOMObject.

I do not think this is an issue. AFAIK, it is perfectly fine to create ActiveDOMObjects while suspended, this is exactly why you must call suspendIfNeeded() on an ActiveDOMObject right after constructing. What&apos;s not allowed is constructing new ActiveDOMObject in the implementation of suspend() / resume().

&gt; Also, creating an object while we might never use it is not great.

Fair point.

&gt; I guess the alternative would be to not make DOMCache an ActiveDOMObject and
&gt; instead have the CacheStorageConnection be an ActiveDOMObject (hence being
&gt; owned by the Document). The CacheStorageConnection would then buffer all the
&gt; callbacks if needed.
&gt; I guess we can do that if reducing the number of ActiveDOMObjects is
&gt; motivating enough.
&gt; 
&gt; As of the race, if you call open with the same name, you will end up with
&gt; two JSDOMCache pointing to the same request/response set.
&gt; I believe this is as per spec and the creation of the cache object is
&gt; synchronous with the promise resolution.

Ok, as long as you&apos;re not concerned about the potential race, then I&apos;ll move the cache creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578338</commentid>
    <comment_count>10</comment_count>
      <attachid>380554</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-09 12:24:08 -0700</bug_when>
    <thetext>Created attachment 380554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578635</commentid>
    <comment_count>11</comment_count>
      <attachid>380554</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-10 07:24:15 -0700</bug_when>
    <thetext>Comment on attachment 380554
Patch

Clearing flags on attachment: 380554

Committed r250965: &lt;https://trac.webkit.org/changeset/250965&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578636</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-10 07:24:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380261</attachid>
            <date>2019-10-04 15:58:06 -0700</date>
            <delta_ts>2019-10-07 13:46:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202608-20191004155805.patch</filename>
            <type>text/plain</type>
            <size>15769</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFkMmRhZmZhYmRlOTQx
OWNkMTdhYmFhYzMwZjI5NDE3ZTVmMTYyZi4uMTFkOGY0YTQ2NDZkOTViNGY0NmZmZjgyMDE0NTI1
YmRjNjc1MjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTEwLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRE9NQ2FjaGVTdG9yYWdlIHNo
b3VsZCBub3QgcHJldmVudCBwYWdlcyBmcm9tIGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2Fj
aGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjYw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
RE9NQ2FjaGVTdG9yYWdlIGZ1bGx5IHN1c3BlbmRhYmxlIGJ5IHF1ZXVlaW5nIGFsbCBpdHMgYXN5
bmNocm9ub3VzIHByb21pc2UgcmVzb2x1dGlvbnMKKyAgICAgICAgdG8gYSBTdXNwZW5kYWJsZVRh
c2tRdWV1ZS4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gcHJvbWlzZXMgYXJlIHJlc29sdmVkIHdo
aWxlIHN1c3BlbmRlZAorICAgICAgICBpbiB0aGUgcGFnZSBjYWNoZS4KKworICAgICAgICBUZXN0
OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZXN0b3JhZ2UtcGVuZGlu
Zy1wcm9taXNlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6RE9NQ2FjaGVTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6ZG9TZXF1ZW50aWFsTWF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjptYXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6Omhhcyk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZVN0b3JhZ2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpkb09w
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpkb1JlbW92ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01DYWNoZVN0b3JhZ2U6OmtleXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9y
YWdlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oOgorCiAyMDE5LTEwLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2VydmljZVdvcmtlckNvbnRhaW5lciBz
aG91bGQgbmV2ZXIgcHJldmVudCBhIHBhZ2UgZnJvbSBlbnRlcmluZyB0aGUgYmFjay9mb3J3YXJk
IGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFn
ZS5jcHAKaW5kZXggMTU2NjJiMjQ5MDYwMmY4NzIyOWFmNDc2MzMxYzRhMmViZTQzOTllZi4uMWEz
N2ZjNTVhMmYzYTgwNTljYTEyMzY0MmUzNjViNjQwZGM0ZDEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzEsNyArMzEsNyBA
QAogI2luY2x1ZGUgIkpTRE9NQ2FjaGUuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0KKyNpbmNsdWRlICJTdXNwZW5k
YWJsZVRhc2tRdWV1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU7CkBAIC0zOSwxMCArMzksMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOwogRE9NQ2FjaGVTdG9yYWdlOjpET01DYWNoZVN0
b3JhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPENhY2hlU3RvcmFnZUNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkK
ICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV90YXNrUXVl
dWUoU3VzcGVuZGFibGVUYXNrUXVldWU6OmNyZWF0ZSgmY29udGV4dCkpCiB7CiAgICAgc3VzcGVu
ZElmTmVlZGVkKCk7CiB9CiAKK0RPTUNhY2hlU3RvcmFnZTo6fkRPTUNhY2hlU3RvcmFnZSgpID0g
ZGVmYXVsdDsKKwogT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBET01DYWNoZVN0b3JhZ2U6Om9yaWdp
bigpIGNvbnN0CiB7CiAgICAgYXV0byogb3JpZ2luID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
ID8gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsK
QEAgLTg2LDE3ICs4OSwxNyBAQCBzdGF0aWMgaW5saW5lIFJlZjxET01DYWNoZT4gY29weUNhY2hl
KGNvbnN0IFJlZjxET01DYWNoZT4mIGNhY2hlKQogdm9pZCBET01DYWNoZVN0b3JhZ2U6OmRvU2Vx
dWVudGlhbE1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRp
b25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIHN0
YXJ0U2VxdWVudGlhbE1hdGNoKFdURjo6bWFwKG1fY2FjaGVzLCBjb3B5Q2FjaGUpLCBXVEZNb3Zl
KGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRp
b25PcjxSZWZQdHI8RmV0Y2hSZXNwb25zZT4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKG1faXNTdG9wcGVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKCFyZXN1bHQucmV0dXJuVmFsdWUoKSkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHByb21pc2Ut
PnJlc29sdmU8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PigqcmVzdWx0LnJldHVyblZhbHVl
KCkpOworICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcmVzdWx0LnJldHVyblZhbHVl
KCkpIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+KCpyZXN1bHQucmV0dXJuVmFsdWUoKSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0xMDQsNyArMTA3LDkgQEAgdm9pZCBET01DYWNoZVN0
b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRp
b25zJiYgb3AKIHsKICAgICByZXRyaWV2ZUNhY2hlcyhbdGhpcywgaW5mbyA9IFdURk1vdmUoaW5m
byksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2Vw
dGlvbi52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52
YWx1ZSgpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RG
TW92ZShleGNlcHRpb24pKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTExNCw3ICsxMTksOSBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6bWF0
Y2goRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcAog
ICAgICAgICAgICAgICAgIG1fY2FjaGVzW3Bvc2l0aW9uXS0+bWF0Y2goV1RGTW92ZShpbmZvKSwg
V1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAg
ICAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Cisg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjUs
MTEgKzEzMiwxMyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6bWF0Y2goRE9NQ2FjaGU6OlJlcXVl
c3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcAogdm9pZCBET01DYWNoZVN0b3Jh
Z2U6Omhhcyhjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFu
PiYmIHByb21pc2UpCiB7CiAgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZd
KGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KSAhPSBub3RGb3Vu
ZCk7CisgICAgICAgIG1fdGFza1F1ZXVlLT5lbnF1ZXVlVGFzayhbdGhpcywgbmFtZSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICBw
cm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG1f
Y2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgp
ID09IG5hbWU7IH0pICE9IG5vdEZvdW5kKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAg
LTE4MCw3ICsxODksOSBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcm
IG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RAogewogICAgIHJldHJpZXZl
Q2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8
RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24p
IHsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIG1fdGFza1F1ZXVlLT5lbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9u
KSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBkb09wZW4obmFtZSwgV1RGTW92ZShwcm9taXNlKSk7CkBAIC0xOTEsMjMgKzIwMiwyNiBA
QCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6ZG9PcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJv
bWlzZURlZmVycmVkPElETEludGVyZmFjZQogewogICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hl
cy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9PSBu
YW1lOyB9KTsKICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgYXV0byYg
Y2FjaGUgPSBtX2NhY2hlc1twb3NpdGlvbl07Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShET01D
YWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IGNhY2hlLT5u
YW1lKCkgfSwgY2FjaGUtPmlkZW50aWZpZXIoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkpOwor
ICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBjYWNoZSA9IG1fY2FjaGVzW3Bvc2l0aW9uXS5jb3B5UmVmKCldKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBjYWNoZS0+bmFtZSgpIH0sIGNhY2hlLT5pZGVu
dGlmaWVyKCksIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpKTsKKyAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKm9yaWdpbigpLCBuYW1l
LCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0
eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVy
cm9yJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAg
ICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICBwcm9taXNl
LnJlamVjdChET01DYWNoZUVuZ2luZTo6Y29udmVydFRvRXhjZXB0aW9uQW5kTG9nKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgcmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCi0gICAg
ICAgICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgbmFtZSk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGNhY2hlID0gRE9NQ2Fj
aGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0sIHJl
c3VsdC52YWx1ZSgpLmlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAg
ICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgbV90YXNrUXVldWUtPmVu
cXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXJyb3IgPSByZXN1
bHQuZXJyb3IoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChE
T01DYWNoZUVuZ2luZTo6Y29udmVydFRvRXhjZXB0aW9uQW5kTG9nKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgZXJyb3IpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKKyAgICAgICAgICAg
ICAgICBsb2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG5hbWUpOworCisgICAgICAgICAgICBhdXRvIGNhY2hlID0gRE9NQ2FjaGU6OmNyZWF0ZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0sIHJlc3VsdC52YWx1ZSgpLmlk
ZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV90YXNrUXVl
dWUtPmVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgY2FjaGUgPSBjYWNo
ZS5jb3B5UmVmKCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KGNhY2hlKTsKLSAgICAgICAgICAgICAgICBtX2NhY2hlcy5hcHBlbmQoV1RGTW92ZShjYWNoZSkp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBtX2NhY2hlcy5h
cHBlbmQoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICB9CiAgICAgfSk7CiB9CkBAIC0yMTYsNyAr
MjMwLDkgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUs
IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYKIHsKICAgICByZXRyaWV2ZUNhY2hlcyhb
dGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2VwdGlv
bj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CisgICAg
ICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOworICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZG9S
ZW1vdmUobmFtZSwgV1RGTW92ZShwcm9taXNlKSk7CkBAIC0yMjcsMTIgKzI0MywxNCBAQCB2b2lk
IERPTUNhY2hlU3RvcmFnZTo6ZG9SZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMQm9vbGVhbgogewogICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5k
TWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9
KTsKICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNv
bHZlKGZhbHNlKTsKKyAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2
ZShmYWxzZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9j
b25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlz
LCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFr
ZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKKyAgICAgICAgbV90
YXNrUXVldWUtPmVucXVldWVUYXNrKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgcmVzdWx0XSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3Zh
bHVlKCkpCiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNv
bnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlc3VsdC5l
cnJvcigpKSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTI0MCwyMSArMjU4LDIzIEBAIHZvaWQg
RE9NQ2FjaGVTdG9yYWdlOjpkb1JlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VE
ZWZlcnJlZDxJRExCb29sZWFuCiAgICAgICAgICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0
ZW5jeUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbmFtZSk7CiAgICAgICAgICAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCEhcmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllcik7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgRE9NQ2Fj
aGVTdG9yYWdlOjprZXlzKEtleXNQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICByZXRyaWV2ZUNh
Y2hlcyhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2VwdGlv
bj4mJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVU
YXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92
ZShleGNlcHRpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoY29uc3QgYXV0byYgY2FjaGUpIHsK
LSAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOwotICAgICAgICB9KSk7CisgICAgICAg
ICAgICBwcm9taXNlLnJlc29sdmUoV1RGOjptYXAobV9jYWNoZXMsIFtdIChjb25zdCBhdXRvJiBj
YWNoZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOworICAgICAgICAg
ICAgfSkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIApAQCAtMjcwLDcgKzI5MCw3IEBAIGNv
bnN0IGNoYXIqIERPTUNhY2hlU3RvcmFnZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAK
IGJvb2wgRE9NQ2FjaGVTdG9yYWdlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVybiB0
cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCBhMGM0NjE4Y2M2NjI4M2I1YjI1ODRj
NjA2ZDA1NGJkZTMzYWM5NGI2Li45YjZkOWIxZDJlNWY1MWNhMjA0ZjhlYzZiNjY3YzQyYmJjMmY1
NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3Rv
cmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdl
LmgKQEAgLTMyLDkgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU3Vz
cGVuZGFibGVUYXNrUXVldWU7CisKIGNsYXNzIERPTUNhY2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZD
b3VudGVkPERPTUNhY2hlU3RvcmFnZT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8RE9NQ2FjaGVTdG9yYWdlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
bikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01DYWNoZVN0b3JhZ2UoY29udGV4dCwgV1RGTW92
ZShjb25uZWN0aW9uKSkpOyB9CisgICAgfkRPTUNhY2hlU3RvcmFnZSgpOwogCiAgICAgdXNpbmcg
S2V5c1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5n
Pj47CiAKQEAgLTYyLDYgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPERPTUNhY2hl
Pj4gbV9jYWNoZXM7CiAgICAgdWludDY0X3QgbV91cGRhdGVDb3VudGVyIHsgMCB9OwogICAgIFJl
ZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgVW5pcXVlUmVmPFN1
c3BlbmRhYmxlVGFza1F1ZXVlPiBtX3Rhc2tRdWV1ZTsKICAgICBib29sIG1faXNTdG9wcGVkIHsg
ZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NGEzNmZjZTI1MDcwOTM5NDRiNmYyZTU3Mzc3MmQyMWI4
NTM5MTNkLi5hZTY4NjA5ZWJhYmE5MTg2NzUwMWUzMzI2MDQ1OTMxODkzNjg4MmFkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTktMTAtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBET01DYWNoZVN0b3JhZ2Ugc2hvdWxkIG5vdCBwcmV2ZW50IHBhZ2VzIGZy
b20gZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGVzdG9yYWdl
LXBlbmRpbmctcHJvbWlzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5kaW5nLXByb21pc2Uu
aHRtbDogQWRkZWQuCisKIDIwMTktMTAtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIHNob3VsZCBuZXZlciBwcmV2ZW50
IGEgcGFnZSBmcm9tIGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3Rv
cmFnZS1wZW5kaW5nLXByb21pc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGVzdG9yYWdlLXBlbmRpbmctcHJvbWlzZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmMTIwZWVmNmExZjBhZmNkMTdkZjgyNjBlMmQ4MTMy
MzdkYTQwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5kaW5nLXByb21pc2UtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgYSBwYWdlIHdpdGggcGVuZGluZyBET01D
YWNoZVN0b3JhZ2UgYWN0aXZpdHkgZ29lcyBpbnRvIHRoZSBwYWdlIGNhY2hlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworcGFnZXNob3cgLSBub3QgZnJvbSBjYWNoZQorcGFnZWhp
ZGUgLSBlbnRlcmluZyBjYWNoZQorcGFnZXNob3cgLSBmcm9tIGNhY2hlCitQQVNTIFBhZ2Ugd2Fz
IHJlc3RvcmVkIGZyb20gUGFnZSBDYWNoZQorUEFTUyBPcGVuZWQgdGhlIGNhY2hlCitQQVNTICEh
cmVzdG9yZWRGcm9tUGFnZUNhY2hlIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZXN0b3JhZ2UtcGVuZGluZy1wcm9taXNl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21j
YWNoZXN0b3JhZ2UtcGVuZGluZy1wcm9taXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA1ZTVlMDkyMDUy
ZGRmNzNmZjRmZjAxNzVlOThlMWJkOTBhMmIxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5k
aW5nLXByb21pc2UuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIGVuYWJsZVBhZ2VDYWNoZT10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQg
YSBwYWdlIHdpdGggcGVuZGluZyBET01DYWNoZVN0b3JhZ2UgYWN0aXZpdHkgZ29lcyBpbnRvIHRo
ZSBwYWdlIGNhY2hlLicpOworanNUZXN0SXNBc3luYyA9IHRydWU7CitsZXQgcmVzdG9yZWRGcm9t
UGFnZUNhY2hlID0gZmFsc2U7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIs
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoInBhZ2VzaG93IC0gIiArIChldmVudC5wZXJz
aXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZnJvbSBjYWNoZSIpOworICAgIGlmIChldmVudC5wZXJz
aXN0ZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFnZSB3YXMgcmVzdG9yZWQgZnJvbSBQYWdl
IENhY2hlIik7CisgICAgICAgIHJlc3RvcmVkRnJvbVBhZ2VDYWNoZSA9IHRydWU7CisgICAgfQor
fSk7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgZGVidWcoInBhZ2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJu
b3QgIikgKyAiZW50ZXJpbmcgY2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJQYWdlIGZhaWxlZCB0byBlbnRlciB0aGUgUGFnZSBDYWNoZSIp
OworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisKKyAgICBjYWNoZXMub3BlbigndGVz
dCcpLnRoZW4oKCkgPT4geworICAgICAgIHRlc3RQYXNzZWQoIk9wZW5lZCB0aGUgY2FjaGUiKTsK
KyAgICAgICBzaG91bGRCZVRydWUoIiEhcmVzdG9yZWRGcm9tUGFnZUNhY2hlIik7CisgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgfSwgKCkgPT4geworICAgICAgIHRlc3RGYWlsZWQoIkZhaWxl
ZCB0byBvcGVuIHRoZSBjYWNoZSIpOworICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOwor
fSk7CisKK29ubG9hZCA9ICgpID0+IHsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg
dGVzdExpbmsuY2xpY2soKTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPGEgaWQ9InRlc3RM
aW5rIiBocmVmPSJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxwZXIuaHRtbCIgc3R5bGU9ImRpc3Bs
YXk6IG5vbmUiPkxpbms8L2E+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380355</attachid>
            <date>2019-10-07 13:46:09 -0700</date>
            <delta_ts>2019-10-09 12:24:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202608-20191007134608.patch</filename>
            <type>text/plain</type>
            <size>18054</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg1N2JiYzk1NzZmODM2
ZGY4OTVmMzdlYzNjODA1MjJlNDhjNzU1MS4uZDE3NWU0MjQ4ZDc0NTk4MWU3MjRhMmU2ZGZlZTQw
Y2NlYjZjODEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTEwLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRE9NQ2FjaGVTdG9yYWdlIHNo
b3VsZCBub3QgcHJldmVudCBwYWdlcyBmcm9tIGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2Fj
aGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjYw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
RE9NQ2FjaGVTdG9yYWdlIGZ1bGx5IHN1c3BlbmRhYmxlIGJ5IHF1ZXVlaW5nIGFsbCBpdHMgYXN5
bmNocm9ub3VzIHByb21pc2UgcmVzb2x1dGlvbnMKKyAgICAgICAgdG8gYSBTdXNwZW5kYWJsZVRh
c2tRdWV1ZS4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gcHJvbWlzZXMgYXJlIHJlc29sdmVkIHdo
aWxlIHN1c3BlbmRlZAorICAgICAgICBpbiB0aGUgcGFnZSBjYWNoZS4KKworICAgICAgICBUZXN0
OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZXN0b3JhZ2UtcGVuZGlu
Zy1wcm9taXNlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6RE9NQ2FjaGVTdG9yYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6ZG9TZXF1ZW50aWFsTWF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjptYXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6Omhhcyk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZVN0b3JhZ2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpkb09w
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpkb1JlbW92ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01DYWNoZVN0b3JhZ2U6OmtleXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9y
YWdlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oOgorCiAyMDE5LTEwLTA3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NQ2FjaGUgc2hvdWxkIG5vdCBwcmV2
ZW50IHBhZ2VzIGZyb20gZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBjYWNoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGVkZjE2
OWQ4NjUyNDVkZTU3OTc5Yzc3ODAxMTcyNmQ3NTVhNjA4NDQuLjk4YzdmODIxYTgwOWQ3MWI3NTM4
YTIyMWVmNTBiZjkzMjY2N2M3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJKU0RP
TUNhY2hlLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotCisjaW5jbHVkZSAiU3VzcGVuZGFibGVUYXNrUXVldWUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOwpAQCAtMzksMTAgKzM5LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTsKIERPTUNhY2hlU3RvcmFnZTo6RE9NQ2FjaGVTdG9yYWdlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24pCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2Nvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fdGFza1F1ZXVlKFN1c3BlbmRhYmxlVGFz
a1F1ZXVlOjpjcmVhdGUoJmNvbnRleHQpKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQog
CitET01DYWNoZVN0b3JhZ2U6On5ET01DYWNoZVN0b3JhZ2UoKSA9IGRlZmF1bHQ7CisKIE9wdGlv
bmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAogewogICAg
IGF1dG8qIG9yaWdpbiA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CkBAIC04NiwxNyArODksMTcg
QEAgc3RhdGljIGlubGluZSBSZWY8RE9NQ2FjaGU+IGNvcHlDYWNoZShjb25zdCBSZWY8RE9NQ2Fj
aGU+JiBjYWNoZSkKIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpkb1NlcXVlbnRpYWxNYXRjaChET01D
YWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBzdGFydFNlcXVlbnRpYWxNYXRj
aChXVEY6Om1hcChtX2NhY2hlcywgY29weUNhY2hlKSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZShv
cHRpb25zKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgIGlmIChtX2lzU3RvcHBlZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICghcmVzdWx0LnJldHVyblZhbHVlKCkpIHsKLSAgICAgICAgICAgIHBy
b21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxGZXRjaFJlc3BvbnNlPj4oKnJlc3VsdC5y
ZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAg
ICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5y
ZXR1cm5WYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb21pc2Ut
PnJlc29sdmU8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PigqcmVzdWx0LnJldHVyblZhbHVl
KCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIApAQCAtMTA0LDcgKzEwNyw5IEBAIHZvaWQg
RE9NQ2FjaGVTdG9yYWdlOjptYXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNo
ZVF1ZXJ5T3B0aW9ucyYmIG9wCiB7CiAgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIGluZm8gPSBX
VEZNb3ZlKGluZm8pLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewog
ICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RG
TW92ZShleGNlcHRpb24udmFsdWUoKSkpOworICAgICAgICAgICAgbV90YXNrUXVldWUtPmVucXVl
dWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShl
eGNlcHRpb24udmFsdWUoKSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTQsNyArMTE5LDkgQEAgdm9pZCBET01DYWNoZVN0
b3JhZ2U6Om1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRp
b25zJiYgb3AKICAgICAgICAgICAgICAgICBtX2NhY2hlc1twb3NpdGlvbl0tPm1hdGNoKFdURk1v
dmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByb21pc2UtPnJlc29s
dmUoKTsKKyAgICAgICAgICAgIG1fdGFza1F1ZXVlLT5lbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtMTI1LDExICsxMzIsMTMgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNh
Y2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3AKIHZvaWQgRE9N
Q2FjaGVTdG9yYWdlOjpoYXMoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMQm9vbGVhbj4mJiBwcm9taXNlKQogewogICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1l
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2Vw
dGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHBy
b21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBwcm9taXNlLnJlc29sdmUobV9jYWNoZXMuZmluZE1h
dGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSkg
IT0gbm90Rm91bmQpOworICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3RoaXMsIG5h
bWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2Vw
dGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb21pc2Uu
cmVzb2x2ZShtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0
ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KSAhPSBub3RGb3VuZCk7CisgICAgICAgIH0pOwogICAgIH0p
OwogfQogCkBAIC0xODAsNyArMTg5LDkgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om9wZW4oY29u
c3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEQKIHsKICAg
ICByZXRyaWV2ZUNhY2hlcyhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
KE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAo
ZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlv
bi52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1
ZSgpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3Zl
KGV4Y2VwdGlvbikpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgZG9PcGVuKG5hbWUsIFdURk1vdmUocHJvbWlzZSkpOwpAQCAtMTkxLDIz
ICsyMDIsMjYgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OmRvT3Blbihjb25zdCBTdHJpbmcmIG5h
bWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2UKIHsKICAgICBhdXRvIHBvc2l0aW9u
ID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5u
YW1lKCkgPT0gbmFtZTsgfSk7CiAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAg
ICAgIGF1dG8mIGNhY2hlID0gbV9jYWNoZXNbcG9zaXRpb25dOwotICAgICAgICBwcm9taXNlLnJl
c29sdmUoRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcg
eyBjYWNoZS0+bmFtZSgpIH0sIGNhY2hlLT5pZGVudGlmaWVyKCksIG1fY29ubmVjdGlvbi5jb3B5
UmVmKCkpKTsKKyAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgY2FjaGUgPSBtX2NhY2hlc1twb3NpdGlvbl0uY29weVJlZigp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKERPTUNhY2hlOjpjcmVh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgY2FjaGUtPm5hbWUoKSB9LCBj
YWNoZS0+aWRlbnRpZmllcigpLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKSk7CisgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCpvcmln
aW4oKSwgbmFtZSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwZW5k
aW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oY29uc3QgQ2FjaGVJZGVu
dGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX2lzU3RvcHBl
ZCkgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNvbnZlcnRUb0V4Y2VwdGlvbkFuZExv
ZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVy
cm9yKQotICAgICAgICAgICAgICAgICAgICBsb2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUpOwotCi0gICAgICAgICAgICAgICAgYXV0byBjYWNo
ZSA9IERPTUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsg
bmFtZSB9LCByZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigp
KTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgIG1fdGFz
a1F1ZXVlLT5lbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGVy
cm9yID0gcmVzdWx0LmVycm9yKCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGVycm9yKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCisg
ICAgICAgICAgICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBuYW1lKTsKKworICAgICAgICAgICAgYXV0byBjYWNoZSA9IERPTUNhY2hlOjpj
cmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgbmFtZSB9LCByZXN1bHQu
dmFsdWUoKS5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAgICAg
IG1fdGFza1F1ZXVlLT5lbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGNh
Y2hlID0gY2FjaGUuY29weVJlZigpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIHByb21p
c2UucmVzb2x2ZShjYWNoZSk7Ci0gICAgICAgICAgICAgICAgbV9jYWNoZXMuYXBwZW5kKFdURk1v
dmUoY2FjaGUpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
bV9jYWNoZXMuYXBwZW5kKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgfQogICAgIH0pOwogfQpA
QCAtMjE2LDcgKzIzMCw5IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mCiB7CiAgICAgcmV0cmll
dmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2VwdGlv
bikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUo
KSkpOworICAgICAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFtwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRp
b24pKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGRvUmVtb3ZlKG5hbWUsIFdURk1vdmUocHJvbWlzZSkpOwpAQCAtMjI3LDEyICsyNDMs
MTQgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OmRvUmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSwg
RE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4KIHsKICAgICBhdXRvIHBvc2l0aW9uID0gbV9j
YWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkg
PT0gbmFtZTsgfSk7CiAgICAgaWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIHBy
b21pc2UucmVzb2x2ZShmYWxzZSk7CisgICAgICAgIG1fdGFza1F1ZXVlLT5lbnF1ZXVlVGFzayhb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm9t
aXNlLnJlc29sdmUoZmFsc2UpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXS0+aWRlbnRpZmll
cigpLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShjb25zdCBDYWNoZUlkZW50aWZpZXJP
ckVycm9yJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Cisg
ICAgICAgIG1fdGFza1F1ZXVlLT5lbnF1ZXVlVGFzayhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHJlc3VsdF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghcmVz
dWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hl
RW5naW5lOjpjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2coc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCByZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0yNDAsMjEgKzI1OCwy
MyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6ZG9SZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbgogICAgICAgICAgICAgICAgICAgICBsb2dDb25z
b2xlUGVyc2lzdGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUpOwogICAg
ICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSghIXJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIp
OwogICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCiB2
b2lkIERPTUNhY2hlU3RvcmFnZTo6a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAg
cmV0cmlldmVDYWNoZXMoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGV4Y2VwdGlv
bikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUo
KSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIG1fdGFza1F1ZXVl
LT5lbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlv
biA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChleGNl
cHRpb24pIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlv
bi52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogCi0g
ICAgICAgIHByb21pc2UucmVzb2x2ZShXVEY6Om1hcChtX2NhY2hlcywgW10gKGNvbnN0IGF1dG8m
IGNhY2hlKSB7Ci0gICAgICAgICAgICByZXR1cm4gY2FjaGUtPm5hbWUoKTsKLSAgICAgICAgfSkp
OworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoY29u
c3QgYXV0byYgY2FjaGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGUtPm5hbWUoKTsK
KyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTI3MCw3ICsy
OTAsNyBAQCBjb25zdCBjaGFyKiBET01DYWNoZVN0b3JhZ2U6OmFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdAogCiBib29sIERPTUNhY2hlU3RvcmFnZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3Vz
cGVuc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgKaW5kZXggYTBjNDYxOGNjNjYy
ODNiNWIyNTg0YzYwNmQwNTRiZGUzM2FjOTRiNi4uOWI2ZDliMWQyZTVmNTFjYTIwNGY4ZWM2YjY2
N2M0MmJiYzJmNTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlU3RvcmFnZS5oCkBAIC0zMiw5ICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIFN1c3BlbmRhYmxlVGFza1F1ZXVlOworCiBjbGFzcyBET01DYWNoZVN0b3JhZ2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxET01DYWNoZVN0b3JhZ2U+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERPTUNhY2hlU3RvcmFnZT4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NQ2FjaGVTdG9yYWdlKGNvbnRl
eHQsIFdURk1vdmUoY29ubmVjdGlvbikpKTsgfQorICAgIH5ET01DYWNoZVN0b3JhZ2UoKTsKIAog
ICAgIHVzaW5nIEtleXNQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElE
TERPTVN0cmluZz4+OwogCkBAIC02Miw2ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJl
ZjxET01DYWNoZT4+IG1fY2FjaGVzOwogICAgIHVpbnQ2NF90IG1fdXBkYXRlQ291bnRlciB7IDAg
fTsKICAgICBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFVu
aXF1ZVJlZjxTdXNwZW5kYWJsZVRhc2tRdWV1ZT4gbV90YXNrUXVldWU7CiAgICAgYm9vbCBtX2lz
U3RvcHBlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDZmNzc4MDY1NGYwYmExZDFmZDcxYjQ1
YjRlODkwOThjN2EzNzA1Yi4uY2M5NzcwMzA2Y2MxZTFlNjJmNTk5ZmE1MzU2MzFmYjNhMWIwMDM5
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTEwLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgRE9NQ2FjaGVTdG9yYWdlIHNob3VsZCBub3QgcHJldmVu
dCBwYWdlcyBmcm9tIGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjYwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3Zl
cmFnZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNh
Y2hlc3RvcmFnZS1wZW5kaW5nLXByb21pc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZXN0b3JhZ2UtcGVuZGlu
Zy1wcm9taXNlLmh0bWw6IEFkZGVkLgorCiAyMDE5LTEwLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgRE9NQ2FjaGUgc2hvdWxkIG5vdCBwcmV2ZW50IHBhZ2Vz
IGZyb20gZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBjYWNoZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGVzdG9yYWdlLXBl
bmRpbmctcHJvbWlzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZXN0b3JhZ2UtcGVuZGluZy1wcm9taXNlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iN2YxMjBlZWY2YTFmMGFmY2QxN2RmODI2MGUyZDgxMzIzN2RhNDBj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bh
Z2UtY2FjaGUtZG9tY2FjaGVzdG9yYWdlLXBlbmRpbmctcHJvbWlzZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCBhIHBhZ2Ugd2l0aCBwZW5kaW5nIERPTUNhY2hlU3Rv
cmFnZSBhY3Rpdml0eSBnb2VzIGludG8gdGhlIHBhZ2UgY2FjaGUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitwYWdlc2hvdyAtIG5vdCBmcm9tIGNhY2hlCitwYWdlaGlkZSAtIGVu
dGVyaW5nIGNhY2hlCitwYWdlc2hvdyAtIGZyb20gY2FjaGUKK1BBU1MgUGFnZSB3YXMgcmVzdG9y
ZWQgZnJvbSBQYWdlIENhY2hlCitQQVNTIE9wZW5lZCB0aGUgY2FjaGUKK1BBU1MgISFyZXN0b3Jl
ZEZyb21QYWdlQ2FjaGUgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5kaW5nLXByb21pc2UuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3Rv
cmFnZS1wZW5kaW5nLXByb21pc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDVlNWUwOTIwNTJkZGY3M2Zm
NGZmMDE3NWU5OGUxYmQ5MGEyYjEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGVzdG9yYWdlLXBlbmRpbmctcHJv
bWlzZS5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5h
YmxlUGFnZUNhY2hlPXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBhIHBhZ2Ug
d2l0aCBwZW5kaW5nIERPTUNhY2hlU3RvcmFnZSBhY3Rpdml0eSBnb2VzIGludG8gdGhlIHBhZ2Ug
Y2FjaGUuJyk7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2xldCByZXN0b3JlZEZyb21QYWdlQ2Fj
aGUgPSBmYWxzZTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93IiwgZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICBkZWJ1ZygicGFnZXNob3cgLSAiICsgKGV2ZW50LnBlcnNpc3RlZCA/
ICIiIDogIm5vdCAiKSArICJmcm9tIGNhY2hlIik7CisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkg
eworICAgICAgICB0ZXN0UGFzc2VkKCJQYWdlIHdhcyByZXN0b3JlZCBmcm9tIFBhZ2UgQ2FjaGUi
KTsKKyAgICAgICAgcmVzdG9yZWRGcm9tUGFnZUNhY2hlID0gdHJ1ZTsKKyAgICB9Cit9KTsKKwor
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBkZWJ1ZygicGFnZWhpZGUgLSAiICsgKGV2ZW50LnBlcnNpc3RlZCA/ICIiIDogIm5vdCAiKSAr
ICJlbnRlcmluZyBjYWNoZSIpOworICAgIGlmICghZXZlbnQucGVyc2lzdGVkKSB7CisgICAgICAg
IHRlc3RGYWlsZWQoIlBhZ2UgZmFpbGVkIHRvIGVudGVyIHRoZSBQYWdlIENhY2hlIik7CisgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIGNhY2hlcy5vcGVuKCd0ZXN0JykudGhl
bigoKSA9PiB7CisgICAgICAgdGVzdFBhc3NlZCgiT3BlbmVkIHRoZSBjYWNoZSIpOworICAgICAg
IHNob3VsZEJlVHJ1ZSgiISFyZXN0b3JlZEZyb21QYWdlQ2FjaGUiKTsKKyAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICB9LCAoKSA9PiB7CisgICAgICAgdGVzdEZhaWxlZCgiRmFpbGVkIHRvIG9w
ZW4gdGhlIGNhY2hlIik7CisgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSk7Cit9KTsKKwor
b25sb2FkID0gKCkgPT4geworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICB0ZXN0TGlu
ay5jbGljaygpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8YSBpZD0idGVzdExpbmsiIGhy
ZWY9InJlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1sIiBzdHlsZT0iZGlzcGxheTogbm9u
ZSI+TGluazwvYT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1NTcwNDJhNTc1NjgxOTdhMDFhMWM4YmRlZjJl
ODMwNDQ2NTZmMDkxLi5iNDg1NDdiN2E1Y2FjNjcwNTE0YzNjOTFlODNlNWQ3NzgzZjVhYWRkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
Miw2ICsxMiw3IEBAIGh0dHAvd3B0L3NlcnZpY2Utd29ya2VycyBbIFNraXAgXQogaHR0cC93cHQv
Y2FjaGUtc3RvcmFnZSBbIFNraXAgXQogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlIFsgU2tpcCBd
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZS1wZW5kaW5nLXByb21p
c2UuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2Fj
aGVzdG9yYWdlLXBlbmRpbmctcHJvbWlzZS5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L2Rlc3RpbmF0aW9uIFsgU2tpcCBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Nyb3NzLW9yaWdpbi1yZXNvdXJj
ZS1wb2xpY3kgWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGYzZjhiOGE3MTQ5ZTE5ZjQ3ZWJlMWJhY2E1Zjc5MTJiYjVmMjJh
NmMuLjhiYzkyOTEwZDFmOGM1OTU1MTI2ZGQ5ZGY1YWZlMzZjZjRiM2VkMjIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI2OCw2ICsyNjgs
NyBAQCBodHRwL3dwdC9sb2FkaW5nL3JlZGlyZWN0LWhlYWRlcnMuaHRtbCBbIFNraXAgXQogaHR0
cC90ZXN0cy9hcHBjYWNoZS9tYWluLXJlc291cmNlLXJlZGlyZWN0LXdpdGgtc3cuaHRtbCBbIFNr
aXAgXQogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlIFsgU2tpcCBdCiBodHRwL3Rlc3RzL25hdmln
YXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZS1wZW5kaW5nLXByb21pc2UuaHRtbCBbIFNraXAgXQor
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGVzdG9yYWdlLXBlbmRpbmct
cHJvbWlzZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2Nvb2tpZXMvc2FtZS1zaXRlL2ZldGNo
LWluLWNyb3NzLW9yaWdpbi1zZXJ2aWNlLXdvcmtlci5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3Rz
L2Nvb2tpZXMvc2FtZS1zaXRlL2ZldGNoLWluLXNhbWUtb3JpZ2luLXNlcnZpY2Utd29ya2VyLmh0
bWwgWyBTa2lwIF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggM2Q1MWYzZmY1ZDI0NmVmM2U2MmNm
MTllZmI2ZGIyMTllMTM1NDMyNy4uYWFlMmNiNTYzYTM4OWMzNWVjYzVmM2EwYTY3OTM1YThkZjY4
ZDc5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM3
OTksNiArMzc5OSw3IEBAIHdlYmtpdC5vcmcvYi85MzU4OSBzdmcvZG9tL1NWR1NjcmlwdEVsZW1l
bnQvc2NyaXB0LWNoYW5nZS1leHRlcm5hbFJlc291cmNlc1JlcXVpCiBodHRwL3Rlc3RzL2FwcGNh
Y2hlL21haW4tcmVzb3VyY2UtcmVkaXJlY3Qtd2l0aC1zdy5odG1sIFsgU2tpcCBdCiBodHRwL3Rl
c3RzL2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNh
Y2hlLWRvbWNhY2hlLXBlbmRpbmctcHJvbWlzZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL25h
dmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZXN0b3JhZ2UtcGVuZGluZy1wcm9taXNlLmh0bWwg
WyBTa2lwIF0KIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtcmVzcG9uc2Ut
c2VydmljZS13b3JrZXIuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Ug
WyBTa2lwIF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380554</attachid>
            <date>2019-10-09 12:24:08 -0700</date>
            <delta_ts>2019-10-10 07:24:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202608-20191009122406.patch</filename>
            <type>text/plain</type>
            <size>18082</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ3NzczMTg2OWY1MjBm
ZjFhMDZiNjJiZDYyZDlkMDdkMGY1OWIxYS4uNWU3MmRjYzNlZjk2ZTY2MGRjYmQzZDExMmY1N2E1
YTdhZDgxZDM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRE9NQ2FjaGVTdG9yYWdlIHNo
b3VsZCBub3QgcHJldmVudCBwYWdlcyBmcm9tIGVudGVyaW5nIHRoZSBiYWNrL2ZvcndhcmQgY2Fj
aGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjYw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTWFrZSBE
T01DYWNoZVN0b3JhZ2UgZnVsbHkgc3VzcGVuZGFibGUgYnkgcXVldWVpbmcgYWxsIGl0cyBhc3lu
Y2hyb25vdXMgcHJvbWlzZSByZXNvbHV0aW9ucworICAgICAgICB0byBhIFN1c3BlbmRhYmxlVGFz
a1F1ZXVlLiBUaGlzIG1ha2VzIHN1cmUgdGhhdCBubyBwcm9taXNlcyBhcmUgcmVzb2x2ZWQgd2hp
bGUgc3VzcGVuZGVkCisgICAgICAgIGluIHRoZSBwYWdlIGNhY2hlLgorCisgICAgICAgIFRlc3Q6
IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5kaW5n
LXByb21pc2UuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpET01DYWNoZVN0b3JhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpkb1NlcXVlbnRpYWxNYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6Om1hdGNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6aGFzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
U3RvcmFnZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6OmRvT3Bl
bik6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6OnJlbW92ZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6OmRvUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlU3RvcmFnZTo6a2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3Jh
Z2U6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmg6CisKIDIwMTktMTAtMDkgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgV0syIF0gTGF5b3V0
IFRlc3QgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNldHRpbmdzLmh0bWwg
aXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWRmMTY5ZDg2NTI0NWRlNTc5NzljNzc4MDExNzI2ZDc1
NWE2MDg0NC4uY2MyODlhNmZlM2YwY2NjNWU0NTFlODUwNjAzOGVmZjM0MTRiNmVlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAt
MzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkpTRE9NQ2FjaGUuaCIKICNpbmNsdWRlICJKU0ZldGNo
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0KKyNpbmNs
dWRlICJTdXNwZW5kYWJsZVRhc2tRdWV1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU7CkBAIC0zOSwxMCArMzksMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOwogRE9NQ2FjaGVTdG9yYWdl
OjpET01DYWNoZVN0b3JhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmY29udGV4dCkKICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAg
ICwgbV90YXNrUXVldWUoU3VzcGVuZGFibGVUYXNrUXVldWU6OmNyZWF0ZSgmY29udGV4dCkpCiB7
CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKK0RPTUNhY2hlU3RvcmFnZTo6fkRPTUNhY2hl
U3RvcmFnZSgpID0gZGVmYXVsdDsKKwogT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBET01DYWNoZVN0
b3JhZ2U6Om9yaWdpbigpIGNvbnN0CiB7CiAgICAgYXV0byogb3JpZ2luID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID8gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigp
IDogbnVsbHB0cjsKQEAgLTg2LDE3ICs4OSwxNyBAQCBzdGF0aWMgaW5saW5lIFJlZjxET01DYWNo
ZT4gY29weUNhY2hlKGNvbnN0IFJlZjxET01DYWNoZT4mIGNhY2hlKQogdm9pZCBET01DYWNoZVN0
b3JhZ2U6OmRvU2VxdWVudGlhbE1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENh
Y2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQogewogICAgIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFdURjo6bWFwKG1fY2FjaGVzLCBjb3B5Q2Fj
aGUpLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcGVuZGluZ0FjdGl2
aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKG1faXNTdG9wcGVkKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
Ci0gICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFyZXN1bHQucmV0
dXJuVmFsdWUoKSkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPEZldGNoUmVzcG9uc2U+PigqcmVzdWx0LnJldHVyblZhbHVlKCkpOworICAgICAgICBtX3Rh
c2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQg
PSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICghcmVzdWx0LnJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RmV0Y2hS
ZXNwb25zZT4+KCpyZXN1bHQucmV0dXJuVmFsdWUoKSk7CisgICAgICAgIH0pOwogICAgIH0pOwog
fQogCkBAIC0xMDQsNyArMTA3LDkgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om1hdGNoKERPTUNh
Y2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3AKIHsKICAgICBy
ZXRyaWV2ZUNhY2hlcyhbdGhpcywgaW5mbyA9IFdURk1vdmUoaW5mbyksIG9wdGlvbnMgPSBXVEZN
b3ZlKG9wdGlvbnMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0
aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsK
KyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEx
NCw3ICsxMTksOSBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6bWF0Y2goRE9NQ2FjaGU6OlJlcXVl
c3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcAogICAgICAgICAgICAgICAgIG1f
Y2FjaGVzW3Bvc2l0aW9uXS0+bWF0Y2goV1RGTW92ZShpbmZvKSwgV1RGTW92ZShvcHRpb25zKSwg
V1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICAgICAgbV90YXNrUXVl
dWUtPmVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjUsMTEgKzEzMiwxMyBAQCB2b2lk
IERPTUNhY2hlU3RvcmFnZTo6bWF0Y2goRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2Fj
aGVRdWVyeU9wdGlvbnMmJiBvcAogdm9pZCBET01DYWNoZVN0b3JhZ2U6Omhhcyhjb25zdCBTdHJp
bmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCiB7CiAg
ICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KGV4Y2VwdGlvbikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRp
b24udmFsdWUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHBy
b21pc2UucmVzb2x2ZShtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KSAhPSBub3RGb3VuZCk7CisgICAgICAgIG1fdGFz
a1F1ZXVlLT5lbnF1ZXVlVGFzayhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZN
b3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG1fY2FjaGVzLmZpbmRNYXRjaGlu
ZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pICE9IG5v
dEZvdW5kKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTE4MCw3ICsxODksOSBAQCB2
b2lkIERPTUNhY2hlU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VE
ZWZlcnJlZDxJRExJbnRlcmZhY2U8RAogewogICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1l
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2Vw
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIHBy
b21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1f
dGFza1F1ZXVlLT5lbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2Vw
dGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBkb09wZW4obmFtZSwg
V1RGTW92ZShwcm9taXNlKSk7CkBAIC0xOTEsMjMgKzIwMiwyNiBAQCB2b2lkIERPTUNhY2hlU3Rv
cmFnZTo6ZG9PcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElETElu
dGVyZmFjZQogewogICAgIGF1dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZd
KGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KTsKICAgICBpZiAo
cG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgYXV0byYgY2FjaGUgPSBtX2NhY2hlc1tw
b3NpdGlvbl07Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShET01DYWNoZTo6Y3JlYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IGNhY2hlLT5uYW1lKCkgfSwgY2FjaGUtPmlk
ZW50aWZpZXIoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkpOworICAgICAgICBtX3Rhc2tRdWV1
ZS0+ZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBjYWNoZSA9
IG1fY2FjaGVzW3Bvc2l0aW9uXS5jb3B5UmVmKCldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBw
cm9taXNlLnJlc29sdmUoRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBTdHJpbmcgeyBjYWNoZS0+bmFtZSgpIH0sIGNhY2hlLT5pZGVudGlmaWVyKCksIG1fY29ubmVj
dGlvbi5jb3B5UmVmKCkpKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKm9yaWdpbigpLCBuYW1lLCBbdGhpcywgbmFtZSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFi
bGUgewotICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVu
Z2luZTo6Y29udmVydFRvRXhjZXB0aW9uQW5kTG9nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
cmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdlRXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIGxv
Z0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbmFtZSk7
Ci0KLSAgICAgICAgICAgICAgICBhdXRvIGNhY2hlID0gRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0sIHJlc3VsdC52YWx1ZSgpLmlkZW50
aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBpZiAoIXJlc3VsdC5oYXNf
dmFsdWUoKSkgeworICAgICAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFt0aGlzLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXJyb3IgPSByZXN1bHQuZXJyb3IoKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6Y29u
dmVydFRvRXhjZXB0aW9uQW5kTG9nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3IpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHJlc3Vs
dC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKKyAgICAgICAgICAgICAgICBsb2dDb25zb2xlUGVy
c2lzdGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUpOworCisgICAgICAg
ICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gcmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllcl0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNhY2hlID0gRE9NQ2FjaGU6OmNyZWF0ZSgq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0sIGlkZW50aWZpZXIsIG1f
Y29ubmVjdGlvbi5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShj
YWNoZSk7CiAgICAgICAgICAgICAgICAgbV9jYWNoZXMuYXBwZW5kKFdURk1vdmUoY2FjaGUpKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfSk7CiB9CkBA
IC0yMTYsNyArMjMwLDkgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJp
bmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYKIHsKICAgICByZXRyaWV2
ZUNhY2hlcyhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFs
PEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgp
KSk7CisgICAgICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlv
bikpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgZG9SZW1vdmUobmFtZSwgV1RGTW92ZShwcm9taXNlKSk7CkBAIC0yMjcsMTIgKzI0Mywx
NCBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6ZG9SZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbgogewogICAgIGF1dG8gcG9zaXRpb24gPSBtX2Nh
Y2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9
PSBuYW1lOyB9KTsKICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpIHsKLSAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKGZhbHNlKTsKKyAgICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb21p
c2UucmVzb2x2ZShmYWxzZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVy
KCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2
aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKGNvbnN0IENhY2hlSWRlbnRpZmllck9y
RXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKKyAg
ICAgICAgbV90YXNrUXVldWUtPmVucXVldWVUYXNrKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcmVzdWx0XSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFyZXN1
bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVF
bmdpbmU6OmNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTI0MCwyMSArMjU4LDIz
IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpkb1JlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERP
TVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuCiAgICAgICAgICAgICAgICAgICAgIGxvZ0NvbnNv
bGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbmFtZSk7CiAgICAg
ICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCEhcmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllcik7
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgRE9NQ2FjaGVTdG9yYWdlOjprZXlzKEtleXNQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBy
ZXRyaWV2ZUNhY2hlcyhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFs
PEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgp
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgbV90YXNrUXVldWUt
PmVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9u
ID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikgeworICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9u
LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoY29uc3QgYXV0byYg
Y2FjaGUpIHsKLSAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOwotICAgICAgICB9KSk7
CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGOjptYXAobV9jYWNoZXMsIFtdIChjb25z
dCBhdXRvJiBjYWNoZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOwor
ICAgICAgICAgICAgfSkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIApAQCAtMjcwLDcgKzI5
MCw3IEBAIGNvbnN0IGNoYXIqIERPTUNhY2hlU3RvcmFnZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgp
IGNvbnN0CiAKIGJvb2wgRE9NQ2FjaGVTdG9yYWdlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAg
IHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCBhMGM0NjE4Y2M2NjI4
M2I1YjI1ODRjNjA2ZDA1NGJkZTMzYWM5NGI2Li45YjZkOWIxZDJlNWY1MWNhMjA0ZjhlYzZiNjY3
YzQyYmJjMmY1NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVTdG9yYWdlLmgKQEAgLTMyLDkgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgU3VzcGVuZGFibGVUYXNrUXVldWU7CisKIGNsYXNzIERPTUNhY2hlU3RvcmFnZSA6IHB1
YmxpYyBSZWZDb3VudGVkPERPTUNhY2hlU3RvcmFnZT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RE9NQ2FjaGVTdG9yYWdlPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01DYWNoZVN0b3JhZ2UoY29udGV4
dCwgV1RGTW92ZShjb25uZWN0aW9uKSkpOyB9CisgICAgfkRPTUNhY2hlU3RvcmFnZSgpOwogCiAg
ICAgdXNpbmcgS2V5c1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURM
RE9NU3RyaW5nPj47CiAKQEAgLTYyLDYgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVm
PERPTUNhY2hlPj4gbV9jYWNoZXM7CiAgICAgdWludDY0X3QgbV91cGRhdGVDb3VudGVyIHsgMCB9
OwogICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgVW5p
cXVlUmVmPFN1c3BlbmRhYmxlVGFza1F1ZXVlPiBtX3Rhc2tRdWV1ZTsKICAgICBib29sIG1faXNT
dG9wcGVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZGJlY2Q1YTUwODExYjkyZTUyMGEzZTM2
MWMxOTY3NmE4ZjkyMzVhLi5hYmZhZDMxZTdlNzI0MjYzZjEzOGU5OTE3MWY3ZDMwNTczZTdjY2Zk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTAtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBET01DYWNoZVN0b3JhZ2Ugc2hvdWxkIG5vdCBwcmV2ZW50
IHBhZ2VzIGZyb20gZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBjYWNoZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjA4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJh
Z2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNo
ZXN0b3JhZ2UtcGVuZGluZy1wcm9taXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGVzdG9yYWdlLXBlbmRpbmct
cHJvbWlzZS5odG1sOiBBZGRlZC4KKwogMjAxOS0xMC0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hYyBXSzIgXSBMYXlvdXQgVGVzdCBmYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U2V0dGluZ3MuaHRtbCBpcyBhIGZsYWt5
IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9w
YWdlLWNhY2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5kaW5nLXByb21pc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGVzdG9y
YWdlLXBlbmRpbmctcHJvbWlzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmMTIwZWVmNmEx
ZjBhZmNkMTdkZjgyNjBlMmQ4MTMyMzdkYTQwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5k
aW5nLXByb21pc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgYSBw
YWdlIHdpdGggcGVuZGluZyBET01DYWNoZVN0b3JhZ2UgYWN0aXZpdHkgZ29lcyBpbnRvIHRoZSBw
YWdlIGNhY2hlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcGFnZXNob3cgLSBu
b3QgZnJvbSBjYWNoZQorcGFnZWhpZGUgLSBlbnRlcmluZyBjYWNoZQorcGFnZXNob3cgLSBmcm9t
IGNhY2hlCitQQVNTIFBhZ2Ugd2FzIHJlc3RvcmVkIGZyb20gUGFnZSBDYWNoZQorUEFTUyBPcGVu
ZWQgdGhlIGNhY2hlCitQQVNTICEhcmVzdG9yZWRGcm9tUGFnZUNhY2hlIGlzIHRydWUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZXN0
b3JhZ2UtcGVuZGluZy1wcm9taXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZXN0b3JhZ2UtcGVuZGluZy1wcm9taXNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDA1ZTVlMDkyMDUyZGRmNzNmZjRmZjAxNzVlOThlMWJkOTBhMmIxMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hl
LWRvbWNhY2hlc3RvcmFnZS1wZW5kaW5nLXByb21pc2UuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZVBhZ2VDYWNoZT10cnVlIF0gLS0+Cis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ1Rlc3RzIHRoYXQgYSBwYWdlIHdpdGggcGVuZGluZyBET01DYWNoZVN0b3JhZ2Ug
YWN0aXZpdHkgZ29lcyBpbnRvIHRoZSBwYWdlIGNhY2hlLicpOworanNUZXN0SXNBc3luYyA9IHRy
dWU7CitsZXQgcmVzdG9yZWRGcm9tUGFnZUNhY2hlID0gZmFsc2U7CisKK3dpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJwYWdlc2hvdyIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoInBhZ2Vz
aG93IC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZnJvbSBjYWNoZSIp
OworICAgIGlmIChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUGFnZSB3
YXMgcmVzdG9yZWQgZnJvbSBQYWdlIENhY2hlIik7CisgICAgICAgIHJlc3RvcmVkRnJvbVBhZ2VD
YWNoZSA9IHRydWU7CisgICAgfQorfSk7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdl
aGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVidWcoInBhZ2VoaWRlIC0gIiArIChldmVu
dC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZW50ZXJpbmcgY2FjaGUiKTsKKyAgICBpZiAo
IWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJQYWdlIGZhaWxlZCB0byBl
bnRlciB0aGUgUGFnZSBDYWNoZSIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisK
KyAgICBjYWNoZXMub3BlbigndGVzdCcpLnRoZW4oKCkgPT4geworICAgICAgIHRlc3RQYXNzZWQo
Ik9wZW5lZCB0aGUgY2FjaGUiKTsKKyAgICAgICBzaG91bGRCZVRydWUoIiEhcmVzdG9yZWRGcm9t
UGFnZUNhY2hlIik7CisgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgKCkgPT4geworICAg
ICAgIHRlc3RGYWlsZWQoIkZhaWxlZCB0byBvcGVuIHRoZSBjYWNoZSIpOworICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0pOworfSk7CisKK29ubG9hZCA9ICgpID0+IHsKKyAgICBzZXRUaW1l
b3V0KCgpID0+IHsKKyAgICAgICAgdGVzdExpbmsuY2xpY2soKTsKKyAgICB9LCAwKTsKK30KKzwv
c2NyaXB0PgorPGEgaWQ9InRlc3RMaW5rIiBocmVmPSJyZXNvdXJjZXMvcGFnZS1jYWNoZS1oZWxw
ZXIuaHRtbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPkxpbms8L2E+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MDZlZDc0YTdkZDIxYWU4MGViY2ZiM2IwNmRjNTgxNzllZTUxYzI5OC4uNDE1YWZiNjY4YTY0NmU2
MDNiNmI3M2I5MjVhNDU2MTNlODllOGMyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTIsNiArMTIsNyBAQCBodHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMgWyBTa2lwIF0KIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UgWyBTa2lwIF0KIGh0dHAv
dGVzdHMvY2FjaGUtc3RvcmFnZSBbIFNraXAgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2Ut
Y2FjaGUtZG9tY2FjaGUtcGVuZGluZy1wcm9taXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9wYWdlLWNhY2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5kaW5nLXByb21pc2UuaHRt
bCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVx
dWVzdC9kZXN0aW5hdGlvbiBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9jcm9zcy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5IFsgU2tpcCBdCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjN2IxMzE4Yzky
ZTYxOWI5NjAyYmM3YmRiMzhjMWE1YTU2NjdlZjYyLi5hMzQ1ZGIzZjVkNGRhMjIxYmYwNjk1NzI1
NWFiNzFlNjY0ZWVlYjI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCkBAIC0yNzIsNiArMjcyLDcgQEAgaHR0cC93cHQvbG9hZGluZy9yZWRpcmVj
dC1oZWFkZXJzLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvYXBwY2FjaGUvbWFpbi1yZXNvdXJj
ZS1yZWRpcmVjdC13aXRoLXN3Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvY2FjaGUtc3RvcmFn
ZSBbIFNraXAgXQogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGUtcGVu
ZGluZy1wcm9taXNlLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNh
Y2hlLWRvbWNhY2hlc3RvcmFnZS1wZW5kaW5nLXByb21pc2UuaHRtbCBbIFNraXAgXQogaHR0cC90
ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9mZXRjaC1pbi1jcm9zcy1vcmlnaW4tc2VydmljZS13b3Jr
ZXIuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9jb29raWVzL3NhbWUtc2l0ZS9mZXRjaC1pbi1z
YW1lLW9yaWdpbi1zZXJ2aWNlLXdvcmtlci5odG1sIFsgU2tpcCBdCiBodHRwL3dwdC9jYWNoZS1z
dG9yYWdlIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDJlODE2NDFhNmVhZGVjYjI3NDhiMmY1YjEzMWZjZDBmMDlmNjQ0MzYuLjhlMzc4NjUw
ZTUxZDUxM2M0Mzc3NWE1NTBmMmViZDBjNDFkY2FkOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNzk5LDYgKzM3OTksNyBAQCB3ZWJraXQub3JnL2Iv
OTM1ODkgc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1jaGFuZ2UtZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aQogaHR0cC90ZXN0cy9hcHBjYWNoZS9tYWluLXJlc291cmNlLXJlZGlyZWN0LXdp
dGgtc3cuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9jYWNoZS1zdG9yYWdlIFsgU2tpcCBdCiBo
dHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1kb21jYWNoZS1wZW5kaW5nLXByb21pc2Uu
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZG9tY2FjaGVz
dG9yYWdlLXBlbmRpbmctcHJvbWlzZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLXNlcnZpY2Utd29ya2VyLmh0bWwgWyBTa2lwIF0K
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlIFsgU2tpcCBdCiBodHRwL3dwdC9jYWNoZS1zdG9y
YWdlIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>