<?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>226858</bug_id>
          
          <creation_ts>2021-06-09 16:31:30 -0700</creation_ts>
          <short_desc>[Live Text] Add a mechanism to regenerate text in an image element when it changes dimensions</short_desc>
          <delta_ts>2021-06-10 18:23:02 -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>Platform</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1768385</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-09 16:31:30 -0700</bug_when>
    <thetext>rdar://77522786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768441</commentid>
    <comment_count>1</comment_count>
      <attachid>431043</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-09 19:30:04 -0700</bug_when>
    <thetext>Created attachment 431043
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768452</commentid>
    <comment_count>2</comment_count>
      <attachid>431048</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-09 21:06:27 -0700</bug_when>
    <thetext>Created attachment 431048
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768582</commentid>
    <comment_count>3</comment_count>
      <attachid>431048</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-06-10 09:49:32 -0700</bug_when>
    <thetext>Comment on attachment 431048
For EWS

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

r=me, nice!

&gt; Source/WebCore/html/HTMLElement.cpp:1513
&gt; +    if (auto* page = document().page(); page &amp;&amp; cacheTextRecognitionResults == CacheTextRecognitionResults::Yes)

NIT: Seems a bit odd to me that we always fetch `page` but then only use it based on something completely unrelated to `page`.  I&apos;d maybe restructure this into two nested `if` so that if someone adds to this in the future they&apos;re less likely to miss it.

&gt; Source/WebCore/page/Page.cpp:3622
&gt; +    m_textRecognitionResultsByElement.removeAllMatching([&amp;](auto&amp; elementAndResult) {

NIT: Could this just be `[]` instead?

&gt; Source/WebCore/page/Page.cpp:3626
&gt; +    Vector&lt;std::pair&lt;Ref&lt;HTMLElement&gt;, TextRecognitionResult&gt;&gt; elementsToUpdate;

unused

&gt; Source/WebCore/page/Page.cpp:3627
&gt; +    for (auto&amp; [element, resultAndSize] : m_textRecognitionResultsByElement) {

NIT: this would probably be a little uglier, but I wonder if you could move this logic into `m_textRecognitionResultsByElement` so we don&apos;t have to iterate twice

&gt; Source/WebCore/page/Page.cpp:3660
&gt; +    m_textRecognitionResultsByElement.removeAllMatching([&amp;](auto&amp; elementAndResult) {

ditto (:3627)

&gt; Source/WebCore/page/Page.h:1193
&gt; +    Vector&lt;std::pair&lt;WeakPtr&lt;HTMLElement&gt;, std::pair&lt;TextRecognitionResult, IntSize&gt;&gt;&gt; m_textRecognitionResultsByElement;

NIT: Maybe add a FIXME comment to change this to a `WeakHashMap` when implemented?

&gt; LayoutTests/fast/images/text-recognition/image-overlay-size-change.html:48
&gt; +    await new Promise(resolve =&gt; shouldBecomeEqual(&quot;width&quot;, &quot;50&quot;, resolve));

FYI `shouldBecomeEqual` now supports returning a `Promise` after r278678 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768632</commentid>
    <comment_count>4</comment_count>
      <attachid>431048</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-10 11:39:21 -0700</bug_when>
    <thetext>Comment on attachment 431048
For EWS

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

Thanks for the review!

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:1513
&gt;&gt; +    if (auto* page = document().page(); page &amp;&amp; cacheTextRecognitionResults == CacheTextRecognitionResults::Yes)
&gt; 
&gt; NIT: Seems a bit odd to me that we always fetch `page` but then only use it based on something completely unrelated to `page`.  I&apos;d maybe restructure this into two nested `if` so that if someone adds to this in the future they&apos;re less likely to miss it.

That&apos;s a good point — changed this to wrap inside an `if (cacheTextRecognitionResults == CacheTextRecognitionResults::Yes)`.

&gt;&gt; Source/WebCore/page/Page.cpp:3622
&gt;&gt; +    m_textRecognitionResultsByElement.removeAllMatching([&amp;](auto&amp; elementAndResult) {
&gt; 
&gt; NIT: Could this just be `[]` instead?

👍🏻

&gt;&gt; Source/WebCore/page/Page.cpp:3626
&gt;&gt; +    Vector&lt;std::pair&lt;Ref&lt;HTMLElement&gt;, TextRecognitionResult&gt;&gt; elementsToUpdate;
&gt; 
&gt; unused

Whoops, good catch!

&gt;&gt; Source/WebCore/page/Page.cpp:3627
&gt;&gt; +    for (auto&amp; [element, resultAndSize] : m_textRecognitionResultsByElement) {
&gt; 
&gt; NIT: this would probably be a little uglier, but I wonder if you could move this logic into `m_textRecognitionResultsByElement` so we don&apos;t have to iterate twice

I&apos;ll leave it as-is for now; this is going to be removed once we use a weak hashmap anyways.

&gt;&gt; Source/WebCore/page/Page.cpp:3660
&gt;&gt; +    m_textRecognitionResultsByElement.removeAllMatching([&amp;](auto&amp; elementAndResult) {
&gt; 
&gt; ditto (:3627)

👍🏻

&gt;&gt; Source/WebCore/page/Page.h:1193
&gt;&gt; +    Vector&lt;std::pair&lt;WeakPtr&lt;HTMLElement&gt;, std::pair&lt;TextRecognitionResult, IntSize&gt;&gt;&gt; m_textRecognitionResultsByElement;
&gt; 
&gt; NIT: Maybe add a FIXME comment to change this to a `WeakHashMap` when implemented?

👍🏻

&gt;&gt; LayoutTests/fast/images/text-recognition/image-overlay-size-change.html:48
&gt;&gt; +    await new Promise(resolve =&gt; shouldBecomeEqual(&quot;width&quot;, &quot;50&quot;, resolve));
&gt; 
&gt; FYI `shouldBecomeEqual` now supports returning a `Promise` after r278678 :)

V. nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768693</commentid>
    <comment_count>5</comment_count>
      <attachid>431116</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-10 13:12:56 -0700</bug_when>
    <thetext>Created attachment 431116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768837</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-10 18:22:59 -0700</bug_when>
    <thetext>Committed r278747 (238708@main): &lt;https://commits.webkit.org/238708@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431116.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431043</attachid>
            <date>2021-06-09 19:30:04 -0700</date>
            <delta_ts>2021-06-09 21:06:24 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226858-20210609193003.patch</filename>
            <type>text/plain</type>
            <size>20103</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI2ZDJkMmIzOTQ1MmVl
YjBhNzI1NTMwNWY4YWM5YTU3ZjhkOWY1OS4uNDZmZDllOGI2YzUzODc0NjMxMWJlYTliM2ViODdi
ZDJiMGFmOTc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA2LTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byByZWdlbmVyYXRlIHRleHQgaW4gYW4gaW1hZ2UgZWxlbWVudCB3
aGVuIGl0IGNoYW5nZXMgZGltZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2ODU4CisgICAgICAgIHJkYXI6Ly83NzUyMjc4NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1c2ggYG1fZWxlbWVu
dHNXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0c2AgZnJvbSBXZWJQYWdlIGRvd24gdG8gUGFnZSwg
YW5kIGFkZGl0aW9uYWxseSBrZWVwIHRyYWNrIG9mIGEKKyAgICAgICAgVGV4dFJlY29nbml0aW9u
UmVzdWx0IHBlciBlbGVtZW50LCBhcyB3ZWxsIGFzIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50IGF0
IHRoZSB0aW1lIHdoZW4gd2UgbGFzdCBpbmplY3RlZCB0ZXh0CisgICAgICAgIHJlY29nbml0aW9u
IHJlc3VsdHMuIFVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHRlbGwgZWxlbWVudHMgdG8gdXBkYXRl
IHRoZWlyIE9DUiB0ZXh0IGNvbnRhaW5lcnMgaWYgdGhlaXIKKyAgICAgICAgZGltZW5pb25zIGhh
dmUgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB1cGRhdGUsIGFmdGVyIGZpbmlzaGluZyBhIHJlbmRl
cmluZyB1cGRhdGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlv
bi9pbWFnZS1vdmVybGF5LXNpemUtY2hhbmdlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0
UmVjb2duaXRpb25SZXN1bHQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgdG8gdGFrZSBhIGBj
b25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmYCBpbnN0ZWFkIG9mIGEgYFRleHRSZWNvZ25pdGlv
blJlc3VsdCYmYCwgc2luY2UgdGhpcyBtZXRob2QKKyAgICAgICAgZG9lc24ndCBhY3R1YWxseSB0
YWtlIG93bmVyc2hpcCBvZiB0aGUgVGV4dFJlY29nbml0aW9uUmVzdWx0LiBUaGlzIGFsbG93cyB1
cyB0byBhdm9pZCBleHBsaWNpdGx5IGNvcHlpbmcgYQorICAgICAgICBUZXh0UmVjb2duaXRpb25S
ZXN1bHQgd2hlbiBjYWxsaW5nIHRoaXMgbWV0aG9kIGZyb20gYFBhZ2U6OnVwZGF0ZUVsZW1lbnRz
V2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHNgLiBBbHNvLCBhZGQKKyAgICAgICAgYSBDYWNoZVRl
eHRSZWNvZ25pdGlvblJlc3VsdHMgZW51bSBmbGFnIGFzIGFuIGFyZ3VtZW50LCB0byBhdm9pZCBl
bnRlcmluZyBgUGFnZTo6Y2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRgCisgICAgICAgIGV2ZXJ5
IHRpbWUgd2UgdXBkYXRlIGEgcmVzaXplZCBlbGVtZW50IGluIGBQYWdlOjp1cGRhdGVFbGVtZW50
c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRzYDsgc2luY2Ugd2Uga25vdyB0aGF0CisgICAgICAg
IHRoZSBkaW1lbnNpb25zIGFyZSB0aGUgb25seSB0aGluZyB0aGF0IGNoYW5nZWQsIHdlIHNpbXBs
eSB1cGRhdGUgdGhlIGNhY2hlZCBkaW1lbnNpb25zLgorCisgICAgICAgIENhbGwgaW50byBgUGFn
ZTo6Y2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRgIHRvIHN0b3JlIHBlci1lbGVtZW50IFRleHRS
ZWNvZ25pdGlvblJlc3VsdHMgd2hlbiB3ZQorICAgICAgICBmaW5pc2ggaW5qZWN0aW5nIHRoZSBP
Q1IgdGV4dCBhbmQgZGF0YSBkZXRlY3RvcnMgaW50byB0aGUgaW1hZ2UgZWxlbWVudC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkQ29tbWl0TG9hZCk6CisKKyAgICAgICAgQ2xlYXIgb3V0
IGJvdGggYG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudGAgYW5kIGBtX2VsZW1lbnRz
V2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHNgLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpk
b0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKworICAgICAgICBBdCB0aGUgZW5kIG9mIGVhY2ggcmVu
ZGVyaW5nIHVwZGF0ZSwgZ28gdGhyb3VnaCBgbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25S
ZXN1bHRzYCBhbmQgY2hlY2sgaWYgYW55IG9mIHRoZQorICAgICAgICBlbGVtZW50cycgZGltZW5z
aW9ucyBoYXZlIGNoYW5nZWQ7IGlmIHNvLCB0ZWxsIHRob3NlIGVsZW1lbnRzIHRvIHJlLXVwZGF0
ZSB0aGVpciBPQ1IgdGV4dCBxdWFkcyBhbmQgZGF0YQorICAgICAgICBkZXRlY3RvcnMgaW4gdGhl
IFVBIHNoYWRvdyB0cmVlLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXNldFRleHRSZWNv
Z25pdGlvblJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlRWxlbWVudHNX
aXRoVGV4dFJlY29nbml0aW9uUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpoYXND
YWNoZWRUZXh0UmVjb2duaXRpb25SZXN1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6Y2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorCisgICAgICAgIEFkZCB0aGUgZWxlbWVu
dCB0byBgbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRzYCBhbmQgYG1fdGV4dFJl
Y29nbml0aW9uUmVzdWx0c0J5RWxlbWVudGAsIGFwcGVuZGluZyBhCisgICAgICAgIG5ldyBlbnRy
eSB0byBgbV90ZXh0UmVjb2duaXRpb25SZXN1bHRzQnlFbGVtZW50YCBvbmx5IGlmIG5lY2Vzc2Fy
eS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDIxLTA2LTA4ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSB1cHN0cmVh
bSBuZXcgZmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTFmZGRjZmE3YTgzMzg0OTkxOGI2OWEwYmRlMDYy
ZjUzM2IwNTlhMC4uOGFiMjIxOWQ3OGIwOWY5ZWIxZjkwMWEzZjZlZTlkYTI1M2MyOTY1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wNi0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbTGl2ZSBUZXh0XSBBZGQgYSBtZWNoYW5pc20g
dG8gcmVnZW5lcmF0ZSB0ZXh0IGluIGFuIGltYWdlIGVsZW1lbnQgd2hlbiBpdCBjaGFuZ2VzIGRp
bWVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjg1OAorICAgICAgICByZGFyOi8vNzc1MjI3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXNoIGBtX2VsZW1lbnRzV2l0aFRleHRSZWNvZ25p
dGlvblJlc3VsdHNgIGZyb20gYFdlYktpdDo6V2ViUGFnZWAgZG93biB0byBgV2ViQ29yZTo6UGFn
ZWAuIFNlZSBXZWJDb3JlCisgICAgICAgIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVx
dWVzdFRleHRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVdp
dGhUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisKIDIwMjEtMDYtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gU2FmYXJpIHRhYiBwaWxsIHNob3VsZCB0b2dnbGUgdmlz
aWJpbGl0eSB3aGVuIHRhcHBpbmcgb24gYXJ0aWNsZSB0ZXh0IG9uIGFkdmVudHVyZS5jb20KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNTI5NjZjNzg4NDdjM2Q5ODczOWJiZTU2
MDY4NjUxZGNiOGNjNzc0Yy4uYjYyNzc1YTMxNDhjZTU4NjE5ZDBiNTE4YjBjNThmYTg1M2UyNGZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTEzMzEsNyArMTMzMSw3IEBA
IGJvb2wgSFRNTEVsZW1lbnQ6OmlzSW1hZ2VPdmVybGF5VGV4dChjb25zdCBOb2RlJiBub2RlKQog
CiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCi12b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVX
aXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KFRleHRSZWNvZ25pdGlvblJlc3VsdCYmIHJlc3VsdCkK
K3ZvaWQgSFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
VGV4dFJlY29nbml0aW9uUmVzdWx0JiByZXN1bHQsIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0
cyBjYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHMpCiB7CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVt
ZW50PiBwcmV2aW91c0NvbnRhaW5lcjsKICAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gdXNlckFn
ZW50U2hhZG93Um9vdCgpOyBzaGFkb3dSb290ICYmIGhhc0ltYWdlT3ZlcmxheSgpKSB7CkBAIC0x
NTA5LDYgKzE1MDksOSBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4dFJlY29nbml0
aW9uUmVzdWx0KFRleHRSZWNvZ25pdGlvblJlc3VsdCYmIHJlc3VsdAogCiAgICAgaWYgKGF1dG8g
ZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSkpCiAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS5zY2hlZHVsZUN1cnNvclVwZGF0ZSgpOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsgcGFnZSAmJiBjYWNoZVRleHRSZWNvZ25pdGlvblJlc3Vs
dHMgPT0gQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpZZXMpCisgICAgICAgIHBhZ2UtPmNh
Y2hlVGV4dFJlY29nbml0aW9uUmVzdWx0KCp0aGlzLCBjb250YWluZXJTaXplLCByZXN1bHQpOwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCmluZGV4IDFhZTFmZDZlYzI2NTU0NWFhMTAxODk2ZDI3MDY3ZjYzNWMzYTAwMDUuLjYy
NTI3ZTcwMmNkNGI3NmJkYzY1NmI4Y2EyMzk5MzA4Y2JlNTE5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKQEAgLTEzOSw3ICsxMzksOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgaXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0IE5vZGUqKTsKIAogI2lmIEVO
QUJMRShJTUFHRV9BTkFMWVNJUykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhU
ZXh0UmVjb2duaXRpb25SZXN1bHQoVGV4dFJlY29nbml0aW9uUmVzdWx0JiYpOworICAgIGVudW0g
Y2xhc3MgQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29u
c3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiwgQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzID0g
Q2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpZZXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMzE4YWIxMzcxMmJmNjg1MjcxODEy
MjUwY2IyZDQ2NTQ1YzI5YzE3NS4uYmIwOTNjMjg3YWU5ZThmMDg2YmJiMDdiOTczNmY2NGE0Y2Mw
YjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMzYsNiArMTM2LDcgQEAKICNpbmNsdWRlICJT
dHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UmVjb2duaXRpb25SZXN1bHQuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRlci5o
IgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgpAQCAtMTI3NCw2ICsxMjc1LDEw
IEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCiAKICAgICByZXNldFNlZW5QbHVnaW5zKCk7
CiAgICAgcmVzZXRTZWVuTWVkaWFFbmdpbmVzKCk7CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlT
SVMpCisgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKQEAgLTE2NjEsNiArMTY2NiwxMCBAQCB2b2lkIFBhZ2U6
OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0pOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
SU1BR0VfQU5BTFlTSVMpCisgICAgdXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29nbml0aW9uUmVz
dWx0cygpOworI2VuZGlmCisKICAgICBwcmlvcml0aXplVmlzaWJsZVJlc291cmNlcygpOwogCiAg
ICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKQEAgLTM2MDMsNCArMzYxMiw2MiBAQCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywgUmVuZGVyaW5n
VXBkYXRlU3RlcCBzdGVwKQogICAgIHJldHVybiB0czsKIH0KIAorI2lmIEVOQUJMRShJTUFHRV9B
TkFMWVNJUykKKwordm9pZCBQYWdlOjp1cGRhdGVFbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25S
ZXN1bHRzKCkKK3sKKyAgICBpZiAobV90ZXh0UmVjb2duaXRpb25SZXN1bHRzQnlFbGVtZW50Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90ZXh0UmVjb2duaXRpb25SZXN1bHRz
QnlFbGVtZW50LnJlbW92ZUFsbE1hdGNoaW5nKFsmXShhdXRvJiBlbGVtZW50QW5kUmVzdWx0KSB7
CisgICAgICAgIHJldHVybiAhZWxlbWVudEFuZFJlc3VsdC5maXJzdDsKKyAgICB9KTsKKworICAg
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEhUTUxFbGVtZW50PiwgVGV4dFJlY29nbml0aW9uUmVzdWx0
Pj4gZWxlbWVudHNUb1VwZGF0ZTsKKyAgICBmb3IgKGF1dG8mIFtlbGVtZW50LCByZXN1bHRBbmRT
aXplXSA6IG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudCkgeworICAgICAgICBpZiAo
IWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzQ29ubmVjdGVkKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBhdXRvIHByb3RlY3RlZEVsZW1lbnQgPSBtYWtlUmVmKCplbGVtZW50KTsK
KyAgICAgICAgYXV0byYgW3Jlc3VsdCwgb2Zmc2V0U2l6ZV0gPSByZXN1bHRBbmRTaXplOworICAg
ICAgICBJbnRTaXplIG5ld09mZnNldFNpemUgeyBwcm90ZWN0ZWRFbGVtZW50LT5vZmZzZXRXaWR0
aCgpLCBwcm90ZWN0ZWRFbGVtZW50LT5vZmZzZXRIZWlnaHQoKSB9OworICAgICAgICBpZiAob2Zm
c2V0U2l6ZSA9PSBuZXdPZmZzZXRTaXplKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgb2Zmc2V0U2l6ZSA9IG5ld09mZnNldFNpemU7CisgICAgICAgIHByb3RlY3RlZEVsZW1lbnQt
PnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBIVE1MRWxlbWVudDo6Q2Fj
aGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpObyk7CisgICAgfQorfQorCitib29sIFBhZ2U6Omhh
c0NhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRz
LmNvbnRhaW5zKGVsZW1lbnQpOworfQorCit2b2lkIFBhZ2U6OmNhY2hlVGV4dFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRTaXplJiBvZmZzZXRT
aXplLCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBtX2VsZW1l
bnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMuYWRkKGVsZW1lbnQpOworCisgICAgYXV0byBp
bmRleCA9IG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudC5maW5kTWF0Y2hpbmcoWyZd
KGF1dG8mIGVsZW1lbnRBbmRSZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRBbmRSZXN1
bHQuZmlyc3QgPT0gJmVsZW1lbnQ7CisgICAgfSk7CisKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91
bmQpCisgICAgICAgIG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudC5hcHBlbmQoeyBt
YWtlV2Vha1B0cihlbGVtZW50KSwgeyByZXN1bHQsIG9mZnNldFNpemUgfSB9KTsKKyAgICBlbHNl
CisgICAgICAgIG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudFtpbmRleF0uc2Vjb25k
ID0geyByZXN1bHQsIG9mZnNldFNpemUgfTsKKworICAgIG1fdGV4dFJlY29nbml0aW9uUmVzdWx0
c0J5RWxlbWVudC5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYgZWxlbWVudEFuZFJlc3VsdCkg
eworICAgICAgICByZXR1cm4gIWVsZW1lbnRBbmRSZXN1bHQuZmlyc3Q7CisgICAgfSk7Cit9CisK
K3ZvaWQgUGFnZTo6cmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCkKK3sKKyAgICBtX3RleHRS
ZWNvZ25pdGlvblJlc3VsdHNCeUVsZW1lbnQuY2xlYXIoKTsKKyAgICBtX2VsZW1lbnRzV2l0aFRl
eHRSZWNvZ25pdGlvblJlc3VsdHMuY2xlYXIoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9BTkFMWVNJUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBi
NDMyNjQ1MjU5NDc2MzUyYzY1MjQ1ODUwZjM1ZWU5YzZlNzU4ZDFkLi41NWU5YjZkMDM0YzJiY2E2
YzdlY2NiYzEzOWQyOGY0NTYyYTU1NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTA3LDExICsxMDcs
MTMgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZvY3VzQ29udHJvbGxlcjsKIGNsYXNzIEZvcm1E
YXRhOwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI7
CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xh
c3MgSW50U2l6ZTsKIGNsYXNzIExpYldlYlJUQ1Byb3ZpZGVyOwogY2xhc3MgTG93UG93ZXJNb2Rl
Tm90aWZpZXI7CiBjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CkBAIC0xNTgsNiArMTYwLDcg
QEAgY2xhc3MgV2hlZWxFdmVudERlbHRhRmlsdGVyOwogY2xhc3MgV2hlZWxFdmVudFRlc3RNb25p
dG9yOwogCiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CitzdHJ1Y3QgVGV4dFJlY29nbml0aW9uUmVzdWx0
OwogCiB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogdXNpbmcgU2hhcmVkU3Ry
aW5nSGFzaCA9IHVpbnQzMl90OwpAQCAtODYwLDYgKzg2MywxMSBAQCBwdWJsaWM6CiAgICAgTG9h
ZFNjaGVkdWxpbmdNb2RlIGxvYWRTY2hlZHVsaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9h
ZFNjaGVkdWxpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNj
aGVkdWxpbmdNb2RlKTsKIAorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc0NhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxl
bWVudCYpIGNvbnN0OworICAgIHZvaWQgY2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
SFRNTEVsZW1lbnQmLCBjb25zdCBJbnRTaXplJiBvZmZzZXRTaXplLCBjb25zdCBUZXh0UmVjb2du
aXRpb25SZXN1bHQmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9u
IHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtOTA1LDYgKzkxMywxMSBA
QCBwcml2YXRlOgogCiAgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yJiBlbnN1cmVXaGVlbEV2ZW50
VGVzdE1vbml0b3IoKTsKIAorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICB2b2lkIHJl
c2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOworICAgIHZvaWQgdXBkYXRlRWxlbWVudHNXaXRo
VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOworI2VuZGlmCisKICAgICBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8Q2hyb21lPiBtX2Nocm9tZTsKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RHJhZ0Nh
cmV0Q29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCkBAIC0xMTc1LDYgKzExODgs
MTEgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGJvb2wgbV9odHRwc1VwZ3JhZGVFbmFibGVkIHsg
dHJ1ZSB9OwogICAgIG11dGFibGUgTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyIG1fbWVkaWFT
ZXNzaW9uR3JvdXBJZGVudGlmaWVyOworCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorICAg
IFZlY3RvcjxzdGQ6OnBhaXI8V2Vha1B0cjxIVE1MRWxlbWVudD4sIHN0ZDo6cGFpcjxUZXh0UmVj
b2duaXRpb25SZXN1bHQsIEludFNpemU+Pj4gbV90ZXh0UmVjb2duaXRpb25SZXN1bHRzQnlFbGVt
ZW50OworICAgIFdlYWtIYXNoU2V0PEhUTUxFbGVtZW50PiBtX2VsZW1lbnRzV2l0aFRleHRSZWNv
Z25pdGlvblJlc3VsdHM7CisjZW5kaWYKIH07CiAKIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdy
b3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggMWYyYWMzOWM2ZjE2YjI1NzU0NTIzYjJiYjBmODdkNmU3MDU5NDZhNy4uOTdmOTdhNjIwM2M2
MDY5YmRjNDkyMTUzZjAzZTM4YzE3NDExYmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI0Niw2ICsyNDYsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU3ViZnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRSZWNvZ25pdGlvblJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNsYXRpb25D
b250ZXh0TWVudUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KQEAgLTM2MCwx
MCArMzYxLDYgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMp
Ci0jaW5jbHVkZSA8V2ViQ29yZS9UZXh0UmVjb2duaXRpb25SZXN1bHQuaD4KLSNlbmRpZgotCiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yLmg+CkBAIC02Mjg3LDcgKzYyODQsNiBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbW1p
dExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKICAgICB9CiAgICAgbV9lbGVtZW50c1BlbmRpbmdUZXh0UmVjb2duaXRpb24uY2xlYXIoKTsK
LSAgICBtX2VsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMuY2xlYXIoKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTczOTMsMTEgKzcz
ODksMTEgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0VGV4dFJlY29nbml0aW9uKFdlYkNvcmU6OkVs
ZW1lbnQmIGVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChtX2VsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMuY29udGFpbnMo
ZWxlbWVudCkpIHsKKyAgICBhdXRvIGh0bWxFbGVtZW50ID0gbWFrZVJlZihkb3duY2FzdDxIVE1M
RWxlbWVudD4oZWxlbWVudCkpOworICAgIGlmIChjb3JlUGFnZSgpLT5oYXNDYWNoZWRUZXh0UmVj
b2duaXRpb25SZXN1bHQoaHRtbEVsZW1lbnQuZ2V0KCkpKSB7CiAgICAgICAgIGlmIChjb21wbGV0
aW9uKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKTsKICAg
ICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBpbWFnZU92ZXJsYXlIb3N0OwotICAgICAgICAgICAg
aWYgKGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MRWxlbWVudD4oZWxl
bWVudCkuaGFzSW1hZ2VPdmVybGF5KCkpCisgICAgICAgICAgICBpZiAoaHRtbEVsZW1lbnQtPmhh
c0ltYWdlT3ZlcmxheSgpKQogICAgICAgICAgICAgICAgIGltYWdlT3ZlcmxheUhvc3QgPSBtYWtl
UmVmUHRyKGVsZW1lbnQpOwogICAgICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGltYWdlT3Zl
cmxheUhvc3QpKTsKICAgICAgICAgfQpAQCAtNzQ2Myw4ICs3NDU5LDcgQEAgdm9pZCBXZWJQYWdl
OjpyZXF1ZXN0VGV4dFJlY29nbml0aW9uKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQsIENvbXBs
ZXRpb25IYW5kbGUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvJiBodG1sRWxl
bWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqcHJvdGVjdGVkRWxlbWVudCk7Ci0gICAgICAg
IGh0bWxFbGVtZW50LnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoV1RGTW92ZShyZXN1
bHQpKTsKLSAgICAgICAgcHJvdGVjdGVkUGFnZS0+bV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRp
b25SZXN1bHRzLmFkZChodG1sRWxlbWVudCk7CisgICAgICAgIGh0bWxFbGVtZW50LnVwZGF0ZVdp
dGhUZXh0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKIAogICAgICAgICBhdXRvIG1hdGNoSW5k
ZXggPSBwcm90ZWN0ZWRQYWdlLT5tX2VsZW1lbnRzUGVuZGluZ1RleHRSZWNvZ25pdGlvbi5maW5k
TWF0Y2hpbmcoWyZdIChhdXRvJiBlbGVtZW50QW5kQ29tcGxldGlvbkhhbmRsZXJzKSB7CiAgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudEFuZENvbXBsZXRpb25IYW5kbGVycy5maXJzdCA9PSAmaHRt
bEVsZW1lbnQ7CkBAIC03NDgxLDcgKzc0NzYsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RUZXh0
UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZQog
ICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1
bHQoVGV4dFJlY29nbml0aW9uUmVzdWx0JiYgcmVzdWx0LCBjb25zdCBFbGVtZW50Q29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBUZXh0UmVj
b2duaXRpb25SZXN1bHQmIHJlc3VsdCwgY29uc3QgRWxlbWVudENvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFRleHRSZWNv
Z25pdGlvblVwZGF0ZVJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBl
bGVtZW50VG9VcGRhdGUgPSBlbGVtZW50Rm9yQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIWlz
PEhUTUxFbGVtZW50PihlbGVtZW50VG9VcGRhdGUpKSB7CkBAIC03NDg5LDcgKzc0ODQsNyBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoVGV4dFJlY29nbml0
aW9uUmVzdWx0JiYgcmVzdWx0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZG93
bmNhc3Q8SFRNTEVsZW1lbnQ+KCplbGVtZW50VG9VcGRhdGUpLnVwZGF0ZVdpdGhUZXh0UmVjb2du
aXRpb25SZXN1bHQoV1RGTW92ZShyZXN1bHQpKTsKKyAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4o
KmVsZW1lbnRUb1VwZGF0ZSkudXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQp
OwogICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmV2ZW50
SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiks
IHsKICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LAogICAgICAgICBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDRmZThiNThkYTM3NTVjNWJlY2ZhMTBmOTI5ZjU1ZTQ3NzQ0NGJk
YjkuLjllZGJhN2FjOWZhMDdjNWNhZTZjYjQwZGRiODQ5MGQyZGNiMGUyMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI0NCw2ICsyNDQsNyBAQCBz
dHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKIHN0cnVjdCBSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1Jlc3VsdDsKIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIHN0cnVjdCBUZXh0Q2hl
Y2tpbmdSZXN1bHQ7CitzdHJ1Y3QgVGV4dFJlY29nbml0aW9uUmVzdWx0Owogc3RydWN0IFZpZXdw
b3J0QXJndW1lbnRzOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTE0MDUs
NyArMTQwNiw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAgICB2
b2lkIHJlcXVlc3RUZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+JiYpPiYmKTsKLSAgICB2b2lkIHVw
ZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVz
dWx0JiYsIGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgbG9jYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVGV4dFJlY29nbml0aW9u
VXBkYXRlUmVzdWx0KT4mJik7CisgICAgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVz
dWx0KGNvbnN0IFdlYkNvcmU6OlRleHRSZWNvZ25pdGlvblJlc3VsdCYsIGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0KT4mJik7CiAj
ZW5kaWYKIAogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJMRShDT05U
RVhUX01FTlVTKQpAQCAtMjM0OSw3ICsyMzUwLDYgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShJ
TUFHRV9BTkFMWVNJUykKICAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYWtQdHI8V2ViQ29yZTo6SFRN
TEVsZW1lbnQ+LCBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6
RWxlbWVudD4mJik+Pj4+IG1fZWxlbWVudHNQZW5kaW5nVGV4dFJlY29nbml0aW9uOwotICAgIFdl
YWtIYXNoU2V0PFdlYkNvcmU6OkhUTUxFbGVtZW50PiBtX2VsZW1lbnRzV2l0aFRleHRSZWNvZ25p
dGlvblJlc3VsdHM7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZDkwZmVmMzJlM2MyYWFkMzI1MzcxNGRjNTFiOTY2ZmEyNzk0MjliZS4uYTQy
ZDQxZDg0ZDhiYThmZmMxNzdiZDNmNDI3YTAwMzliN2Y3ZGZmMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTA2LTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtMaXZlIFRleHRdIEFkZCBhIG1lY2hhbmlzbSB0byByZWdlbmVyYXRlIHRleHQg
aW4gYW4gaW1hZ2UgZWxlbWVudCB3aGVuIGl0IGNoYW5nZXMgZGltZW5zaW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2ODU4CisgICAgICAgIHJk
YXI6Ly83NzUyMjc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LXNpemUt
Y2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvdGV4dC1y
ZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LXNpemUtY2hhbmdlLmh0bWw6IEFkZGVkLgorCiAyMDIx
LTA2LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1NdIFNhZmFyaSB0YWIgcGlsbCBzaG91bGQgdG9nZ2xlIHZpc2liaWxpdHkgd2hlbiB0YXBw
aW5nIG9uIGFydGljbGUgdGV4dCBvbiBhZHZlbnR1cmUuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktc2l6ZS1jaGFu
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlv
bi9pbWFnZS1vdmVybGF5LXNpemUtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzQ3
MmIxNzY5Mjg1YTFiYTg1M2Q0ZjcyMWUyZjg0ZmE1ZGY2NzUwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LXNp
emUtY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitQQVNTIHdpZHRoIGlzIDIw
MAorUEFTUyBoZWlnaHQgaXMgMjAwCitQQVNTIHdpZHRoIGJlY2FtZSA1MAorUEFTUyBoZWlnaHQg
aXMgNTAKK1BBU1Mgd2lkdGggYmVjYW1lIDIwMAorUEFTUyBoZWlnaHQgaXMgMjAwCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LXNp
emUtY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9u
L2ltYWdlLW92ZXJsYXktc2l6ZS1jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjNmZTcyNTVhMjQ1
ZGU0YTM2OGI3YmE5MWMxMzc4MjJlOTVlY2QyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlvbi9pbWFnZS1vdmVybGF5LXNpemUtY2hhbmdl
Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxp
bWcgc3JjPSIuLi9yZXNvdXJjZXMvZ3JlZW4tNDAweDQwMC5wbmciPjwvaW1nPgorPHNjcmlwdD4K
K2pzVGVzdElzQXN5bmMgPSB0cnVlOworbGV0IGltYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiaW1nIik7Cit3aWR0aCA9IDA7CitoZWlnaHQgPSAwOworCitmdW5jdGlvbiB1cGRhdGVJbWFn
ZU92ZXJsYXlUZXh0RGltZW5zaW9ucygpIHsKKyAgICBsZXQgdGV4dEJvdW5kaW5nUmVjdCA9IGlu
dGVybmFscy5zaGFkb3dSb290KGltYWdlKS5xdWVyeVNlbGVjdG9yKCIuaW1hZ2Utb3ZlcmxheS10
ZXh0IikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgd2lkdGggPSB0ZXh0Qm91bmRpbmdS
ZWN0LndpZHRoOworICAgIGhlaWdodCA9IHRleHRCb3VuZGluZ1JlY3QuaGVpZ2h0OworfQorCith
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTA7ICsraSkgeworICAgICAgICBpbnRlcm5hbHMuaW5zdGFsbEltYWdlT3ZlcmxheShp
bWFnZSwgWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRvcExlZnQgOiBuZXcgRE9N
UG9pbnRSZWFkT25seSgwLjUsIDAuNSksCisgICAgICAgICAgICAgICAgdG9wUmlnaHQgOiBuZXcg
RE9NUG9pbnRSZWFkT25seSgxLCAwLjUpLAorICAgICAgICAgICAgICAgIGJvdHRvbVJpZ2h0IDog
bmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMSksCisgICAgICAgICAgICAgICAgYm90dG9tTGVmdCA6
IG5ldyBET01Qb2ludFJlYWRPbmx5KDAuNSwgMSksCisgICAgICAgICAgICAgICAgY2hpbGRyZW46
IFsKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA6
ICJIZWxsbyIsCisgICAgICAgICAgICAgICAgICAgICAgICB0b3BMZWZ0IDogbmV3IERPTVBvaW50
UmVhZE9ubHkoMC41LCAwLjUpLAorICAgICAgICAgICAgICAgICAgICAgICAgdG9wUmlnaHQgOiBu
ZXcgRE9NUG9pbnRSZWFkT25seSgxLCAwLjUpLAorICAgICAgICAgICAgICAgICAgICAgICAgYm90
dG9tUmlnaHQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgxLCAxKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJvdHRvbUxlZnQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgwLjUsIDEpLAorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgXSk7CisgICAgfQorCisgICAgdXBkYXRlSW1hZ2VPdmVybGF5VGV4dERpbWVuc2lvbnMoKTsK
KworICAgIHNob3VsZEJlKCJ3aWR0aCIsICIyMDAiKTsKKyAgICBzaG91bGRCZSgiaGVpZ2h0Iiwg
IjIwMCIpOworCisgICAgaW1hZ2Uuc3R5bGUud2lkdGggPSAiMTAwcHgiOworICAgIHNldEludGVy
dmFsKHVwZGF0ZUltYWdlT3ZlcmxheVRleHREaW1lbnNpb25zLCAxMCk7CisKKyAgICBhd2FpdCBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHNob3VsZEJlY29tZUVxdWFsKCJ3aWR0aCIsICI1MCIsIHJl
c29sdmUpKTsKKyAgICBzaG91bGRCZSgiaGVpZ2h0IiwgIjUwIik7CisKKyAgICBpbWFnZS5zdHls
ZS53aWR0aCA9ICIiOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2hvdWxkQmVj
b21lRXF1YWwoIndpZHRoIiwgIjIwMCIsIHJlc29sdmUpKTsKKyAgICBzaG91bGRCZSgiaGVpZ2h0
IiwgIjIwMCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431048</attachid>
            <date>2021-06-09 21:06:27 -0700</date>
            <delta_ts>2021-06-10 13:12:54 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226858-20210609210626.patch</filename>
            <type>text/plain</type>
            <size>19544</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI2ZDJkMmIzOTQ1MmVl
YjBhNzI1NTMwNWY4YWM5YTU3ZjhkOWY1OS4uNDZmZDllOGI2YzUzODc0NjMxMWJlYTliM2ViODdi
ZDJiMGFmOTc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA2LTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byByZWdlbmVyYXRlIHRleHQgaW4gYW4gaW1hZ2UgZWxlbWVudCB3
aGVuIGl0IGNoYW5nZXMgZGltZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2ODU4CisgICAgICAgIHJkYXI6Ly83NzUyMjc4NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1c2ggYG1fZWxlbWVu
dHNXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0c2AgZnJvbSBXZWJQYWdlIGRvd24gdG8gUGFnZSwg
YW5kIGFkZGl0aW9uYWxseSBrZWVwIHRyYWNrIG9mIGEKKyAgICAgICAgVGV4dFJlY29nbml0aW9u
UmVzdWx0IHBlciBlbGVtZW50LCBhcyB3ZWxsIGFzIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50IGF0
IHRoZSB0aW1lIHdoZW4gd2UgbGFzdCBpbmplY3RlZCB0ZXh0CisgICAgICAgIHJlY29nbml0aW9u
IHJlc3VsdHMuIFVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHRlbGwgZWxlbWVudHMgdG8gdXBkYXRl
IHRoZWlyIE9DUiB0ZXh0IGNvbnRhaW5lcnMgaWYgdGhlaXIKKyAgICAgICAgZGltZW5pb25zIGhh
dmUgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB1cGRhdGUsIGFmdGVyIGZpbmlzaGluZyBhIHJlbmRl
cmluZyB1cGRhdGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvdGV4dC1yZWNvZ25pdGlv
bi9pbWFnZS1vdmVybGF5LXNpemUtY2hhbmdlLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0
UmVjb2duaXRpb25SZXN1bHQpOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgdG8gdGFrZSBhIGBj
b25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmYCBpbnN0ZWFkIG9mIGEgYFRleHRSZWNvZ25pdGlv
blJlc3VsdCYmYCwgc2luY2UgdGhpcyBtZXRob2QKKyAgICAgICAgZG9lc24ndCBhY3R1YWxseSB0
YWtlIG93bmVyc2hpcCBvZiB0aGUgVGV4dFJlY29nbml0aW9uUmVzdWx0LiBUaGlzIGFsbG93cyB1
cyB0byBhdm9pZCBleHBsaWNpdGx5IGNvcHlpbmcgYQorICAgICAgICBUZXh0UmVjb2duaXRpb25S
ZXN1bHQgd2hlbiBjYWxsaW5nIHRoaXMgbWV0aG9kIGZyb20gYFBhZ2U6OnVwZGF0ZUVsZW1lbnRz
V2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHNgLiBBbHNvLCBhZGQKKyAgICAgICAgYSBDYWNoZVRl
eHRSZWNvZ25pdGlvblJlc3VsdHMgZW51bSBmbGFnIGFzIGFuIGFyZ3VtZW50LCB0byBhdm9pZCBl
bnRlcmluZyBgUGFnZTo6Y2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRgCisgICAgICAgIGV2ZXJ5
IHRpbWUgd2UgdXBkYXRlIGEgcmVzaXplZCBlbGVtZW50IGluIGBQYWdlOjp1cGRhdGVFbGVtZW50
c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRzYDsgc2luY2Ugd2Uga25vdyB0aGF0CisgICAgICAg
IHRoZSBkaW1lbnNpb25zIGFyZSB0aGUgb25seSB0aGluZyB0aGF0IGNoYW5nZWQsIHdlIHNpbXBs
eSB1cGRhdGUgdGhlIGNhY2hlZCBkaW1lbnNpb25zLgorCisgICAgICAgIENhbGwgaW50byBgUGFn
ZTo6Y2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRgIHRvIHN0b3JlIHBlci1lbGVtZW50IFRleHRS
ZWNvZ25pdGlvblJlc3VsdHMgd2hlbiB3ZQorICAgICAgICBmaW5pc2ggaW5qZWN0aW5nIHRoZSBP
Q1IgdGV4dCBhbmQgZGF0YSBkZXRlY3RvcnMgaW50byB0aGUgaW1hZ2UgZWxlbWVudC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkQ29tbWl0TG9hZCk6CisKKyAgICAgICAgQ2xlYXIgb3V0
IGJvdGggYG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudGAgYW5kIGBtX2VsZW1lbnRz
V2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHNgLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpk
b0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKworICAgICAgICBBdCB0aGUgZW5kIG9mIGVhY2ggcmVu
ZGVyaW5nIHVwZGF0ZSwgZ28gdGhyb3VnaCBgbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25S
ZXN1bHRzYCBhbmQgY2hlY2sgaWYgYW55IG9mIHRoZQorICAgICAgICBlbGVtZW50cycgZGltZW5z
aW9ucyBoYXZlIGNoYW5nZWQ7IGlmIHNvLCB0ZWxsIHRob3NlIGVsZW1lbnRzIHRvIHJlLXVwZGF0
ZSB0aGVpciBPQ1IgdGV4dCBxdWFkcyBhbmQgZGF0YQorICAgICAgICBkZXRlY3RvcnMgaW4gdGhl
IFVBIHNoYWRvdyB0cmVlLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXNldFRleHRSZWNv
Z25pdGlvblJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlRWxlbWVudHNX
aXRoVGV4dFJlY29nbml0aW9uUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpoYXND
YWNoZWRUZXh0UmVjb2duaXRpb25SZXN1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6Y2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorCisgICAgICAgIEFkZCB0aGUgZWxlbWVu
dCB0byBgbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRzYCBhbmQgYG1fdGV4dFJl
Y29nbml0aW9uUmVzdWx0c0J5RWxlbWVudGAsIGFwcGVuZGluZyBhCisgICAgICAgIG5ldyBlbnRy
eSB0byBgbV90ZXh0UmVjb2duaXRpb25SZXN1bHRzQnlFbGVtZW50YCBvbmx5IGlmIG5lY2Vzc2Fy
eS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDIxLTA2LTA4ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSB1cHN0cmVh
bSBuZXcgZmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTFmZGRjZmE3YTgzMzg0OTkxOGI2OWEwYmRlMDYy
ZjUzM2IwNTlhMC4uOGFiMjIxOWQ3OGIwOWY5ZWIxZjkwMWEzZjZlZTlkYTI1M2MyOTY1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wNi0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbTGl2ZSBUZXh0XSBBZGQgYSBtZWNoYW5pc20g
dG8gcmVnZW5lcmF0ZSB0ZXh0IGluIGFuIGltYWdlIGVsZW1lbnQgd2hlbiBpdCBjaGFuZ2VzIGRp
bWVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjg1OAorICAgICAgICByZGFyOi8vNzc1MjI3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQdXNoIGBtX2VsZW1lbnRzV2l0aFRleHRSZWNvZ25p
dGlvblJlc3VsdHNgIGZyb20gYFdlYktpdDo6V2ViUGFnZWAgZG93biB0byBgV2ViQ29yZTo6UGFn
ZWAuIFNlZSBXZWJDb3JlCisgICAgICAgIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVx
dWVzdFRleHRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVdp
dGhUZXh0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisKIDIwMjEtMDYtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gU2FmYXJpIHRhYiBwaWxsIHNob3VsZCB0b2dnbGUgdmlz
aWJpbGl0eSB3aGVuIHRhcHBpbmcgb24gYXJ0aWNsZSB0ZXh0IG9uIGFkdmVudHVyZS5jb20KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggNTI5NjZjNzg4NDdjM2Q5ODczOWJiZTU2
MDY4NjUxZGNiOGNjNzc0Yy4uYjYyNzc1YTMxNDhjZTU4NjE5ZDBiNTE4YjBjNThmYTg1M2UyNGZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTEzMzEsNyArMTMzMSw3IEBA
IGJvb2wgSFRNTEVsZW1lbnQ6OmlzSW1hZ2VPdmVybGF5VGV4dChjb25zdCBOb2RlJiBub2RlKQog
CiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCi12b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVX
aXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KFRleHRSZWNvZ25pdGlvblJlc3VsdCYmIHJlc3VsdCkK
K3ZvaWQgSFRNTEVsZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
VGV4dFJlY29nbml0aW9uUmVzdWx0JiByZXN1bHQsIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0
cyBjYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdHMpCiB7CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVt
ZW50PiBwcmV2aW91c0NvbnRhaW5lcjsKICAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gdXNlckFn
ZW50U2hhZG93Um9vdCgpOyBzaGFkb3dSb290ICYmIGhhc0ltYWdlT3ZlcmxheSgpKSB7CkBAIC0x
NTA5LDYgKzE1MDksOSBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4dFJlY29nbml0
aW9uUmVzdWx0KFRleHRSZWNvZ25pdGlvblJlc3VsdCYmIHJlc3VsdAogCiAgICAgaWYgKGF1dG8g
ZnJhbWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50KCkuZnJhbWUoKSkpCiAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS5zY2hlZHVsZUN1cnNvclVwZGF0ZSgpOworCisgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsgcGFnZSAmJiBjYWNoZVRleHRSZWNvZ25pdGlvblJlc3Vs
dHMgPT0gQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpZZXMpCisgICAgICAgIHBhZ2UtPmNh
Y2hlVGV4dFJlY29nbml0aW9uUmVzdWx0KCp0aGlzLCBjb250YWluZXJTaXplLCByZXN1bHQpOwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCmluZGV4IDFhZTFmZDZlYzI2NTU0NWFhMTAxODk2ZDI3MDY3ZjYzNWMzYTAwMDUuLjYy
NTI3ZTcwMmNkNGI3NmJkYzY1NmI4Y2EyMzk5MzA4Y2JlNTE5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKQEAgLTEzOSw3ICsxMzksOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgaXNJbWFnZU92ZXJsYXlUZXh0KGNvbnN0IE5vZGUqKTsKIAogI2lmIEVO
QUJMRShJTUFHRV9BTkFMWVNJUykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhU
ZXh0UmVjb2duaXRpb25SZXN1bHQoVGV4dFJlY29nbml0aW9uUmVzdWx0JiYpOworICAgIGVudW0g
Y2xhc3MgQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29u
c3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiwgQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzID0g
Q2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpZZXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMzE4YWIxMzcxMmJmNjg1MjcxODEy
MjUwY2IyZDQ2NTQ1YzI5YzE3NS4uYmIwOTNjMjg3YWU5ZThmMDg2YmJiMDdiOTczNmY2NGE0Y2Mw
YjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMzYsNiArMTM2LDcgQEAKICNpbmNsdWRlICJT
dHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJUZXh0UmVjb2duaXRpb25SZXN1bHQuaCIKICNpbmNsdWRl
ICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRlci5o
IgogI2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgpAQCAtMTI3NCw2ICsxMjc1LDEw
IEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCiAKICAgICByZXNldFNlZW5QbHVnaW5zKCk7
CiAgICAgcmVzZXRTZWVuTWVkaWFFbmdpbmVzKCk7CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlT
SVMpCisgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBQYWdlOjpkaWRGaW5pc2hMb2FkKCkKQEAgLTE2NjEsNiArMTY2NiwxMCBAQCB2b2lkIFBhZ2U6
OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0pOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
SU1BR0VfQU5BTFlTSVMpCisgICAgdXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29nbml0aW9uUmVz
dWx0cygpOworI2VuZGlmCisKICAgICBwcmlvcml0aXplVmlzaWJsZVJlc291cmNlcygpOwogCiAg
ICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKQEAgLTM2MDMsNCArMzYxMiw2MiBAQCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywgUmVuZGVyaW5n
VXBkYXRlU3RlcCBzdGVwKQogICAgIHJldHVybiB0czsKIH0KIAorI2lmIEVOQUJMRShJTUFHRV9B
TkFMWVNJUykKKwordm9pZCBQYWdlOjp1cGRhdGVFbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25S
ZXN1bHRzKCkKK3sKKyAgICBpZiAobV90ZXh0UmVjb2duaXRpb25SZXN1bHRzQnlFbGVtZW50Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90ZXh0UmVjb2duaXRpb25SZXN1bHRz
QnlFbGVtZW50LnJlbW92ZUFsbE1hdGNoaW5nKFsmXShhdXRvJiBlbGVtZW50QW5kUmVzdWx0KSB7
CisgICAgICAgIHJldHVybiAhZWxlbWVudEFuZFJlc3VsdC5maXJzdDsKKyAgICB9KTsKKworICAg
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEhUTUxFbGVtZW50PiwgVGV4dFJlY29nbml0aW9uUmVzdWx0
Pj4gZWxlbWVudHNUb1VwZGF0ZTsKKyAgICBmb3IgKGF1dG8mIFtlbGVtZW50LCByZXN1bHRBbmRT
aXplXSA6IG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudCkgeworICAgICAgICBpZiAo
IWVsZW1lbnQgfHwgIWVsZW1lbnQtPmlzQ29ubmVjdGVkKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBhdXRvIHByb3RlY3RlZEVsZW1lbnQgPSBtYWtlUmVmKCplbGVtZW50KTsK
KyAgICAgICAgYXV0byYgW3Jlc3VsdCwgb2Zmc2V0U2l6ZV0gPSByZXN1bHRBbmRTaXplOworICAg
ICAgICBJbnRTaXplIG5ld09mZnNldFNpemUgeyBwcm90ZWN0ZWRFbGVtZW50LT5vZmZzZXRXaWR0
aCgpLCBwcm90ZWN0ZWRFbGVtZW50LT5vZmZzZXRIZWlnaHQoKSB9OworICAgICAgICBpZiAob2Zm
c2V0U2l6ZSA9PSBuZXdPZmZzZXRTaXplKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgb2Zmc2V0U2l6ZSA9IG5ld09mZnNldFNpemU7CisgICAgICAgIHByb3RlY3RlZEVsZW1lbnQt
PnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0LCBIVE1MRWxlbWVudDo6Q2Fj
aGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpObyk7CisgICAgfQorfQorCitib29sIFBhZ2U6Omhh
c0NhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRz
LmNvbnRhaW5zKGVsZW1lbnQpOworfQorCit2b2lkIFBhZ2U6OmNhY2hlVGV4dFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRTaXplJiBvZmZzZXRT
aXplLCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBtX2VsZW1l
bnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMuYWRkKGVsZW1lbnQpOworCisgICAgYXV0byBp
bmRleCA9IG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudC5maW5kTWF0Y2hpbmcoWyZd
KGF1dG8mIGVsZW1lbnRBbmRSZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRBbmRSZXN1
bHQuZmlyc3QgPT0gJmVsZW1lbnQ7CisgICAgfSk7CisKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91
bmQpCisgICAgICAgIG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudC5hcHBlbmQoeyBt
YWtlV2Vha1B0cihlbGVtZW50KSwgeyByZXN1bHQsIG9mZnNldFNpemUgfSB9KTsKKyAgICBlbHNl
CisgICAgICAgIG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudFtpbmRleF0uc2Vjb25k
ID0geyByZXN1bHQsIG9mZnNldFNpemUgfTsKKworICAgIG1fdGV4dFJlY29nbml0aW9uUmVzdWx0
c0J5RWxlbWVudC5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0byYgZWxlbWVudEFuZFJlc3VsdCkg
eworICAgICAgICByZXR1cm4gIWVsZW1lbnRBbmRSZXN1bHQuZmlyc3Q7CisgICAgfSk7Cit9CisK
K3ZvaWQgUGFnZTo6cmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCkKK3sKKyAgICBtX3RleHRS
ZWNvZ25pdGlvblJlc3VsdHNCeUVsZW1lbnQuY2xlYXIoKTsKKyAgICBtX2VsZW1lbnRzV2l0aFRl
eHRSZWNvZ25pdGlvblJlc3VsdHMuY2xlYXIoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9BTkFMWVNJUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBi
NDMyNjQ1MjU5NDc2MzUyYzY1MjQ1ODUwZjM1ZWU5YzZlNzU4ZDFkLi41NWU5YjZkMDM0YzJiY2E2
YzdlY2NiYzEzOWQyOGY0NTYyYTU1NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTA3LDExICsxMDcs
MTMgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZvY3VzQ29udHJvbGxlcjsKIGNsYXNzIEZvcm1E
YXRhOwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI7
CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xh
c3MgSW50U2l6ZTsKIGNsYXNzIExpYldlYlJUQ1Byb3ZpZGVyOwogY2xhc3MgTG93UG93ZXJNb2Rl
Tm90aWZpZXI7CiBjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CkBAIC0xNTgsNiArMTYwLDcg
QEAgY2xhc3MgV2hlZWxFdmVudERlbHRhRmlsdGVyOwogY2xhc3MgV2hlZWxFdmVudFRlc3RNb25p
dG9yOwogCiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CitzdHJ1Y3QgVGV4dFJlY29nbml0aW9uUmVzdWx0
OwogCiB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogdXNpbmcgU2hhcmVkU3Ry
aW5nSGFzaCA9IHVpbnQzMl90OwpAQCAtODYwLDYgKzg2MywxMSBAQCBwdWJsaWM6CiAgICAgTG9h
ZFNjaGVkdWxpbmdNb2RlIGxvYWRTY2hlZHVsaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9h
ZFNjaGVkdWxpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNj
aGVkdWxpbmdNb2RlKTsKIAorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc0NhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxl
bWVudCYpIGNvbnN0OworICAgIHZvaWQgY2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
SFRNTEVsZW1lbnQmLCBjb25zdCBJbnRTaXplJiBvZmZzZXRTaXplLCBjb25zdCBUZXh0UmVjb2du
aXRpb25SZXN1bHQmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9u
IHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtOTA1LDYgKzkxMywxMSBA
QCBwcml2YXRlOgogCiAgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yJiBlbnN1cmVXaGVlbEV2ZW50
VGVzdE1vbml0b3IoKTsKIAorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICB2b2lkIHJl
c2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOworICAgIHZvaWQgdXBkYXRlRWxlbWVudHNXaXRo
VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOworI2VuZGlmCisKICAgICBjb25zdCBzdGQ6OnVuaXF1
ZV9wdHI8Q2hyb21lPiBtX2Nocm9tZTsKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RHJhZ0Nh
cmV0Q29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCkBAIC0xMTc1LDYgKzExODgs
MTEgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGJvb2wgbV9odHRwc1VwZ3JhZGVFbmFibGVkIHsg
dHJ1ZSB9OwogICAgIG11dGFibGUgTWVkaWFTZXNzaW9uR3JvdXBJZGVudGlmaWVyIG1fbWVkaWFT
ZXNzaW9uR3JvdXBJZGVudGlmaWVyOworCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorICAg
IFZlY3RvcjxzdGQ6OnBhaXI8V2Vha1B0cjxIVE1MRWxlbWVudD4sIHN0ZDo6cGFpcjxUZXh0UmVj
b2duaXRpb25SZXN1bHQsIEludFNpemU+Pj4gbV90ZXh0UmVjb2duaXRpb25SZXN1bHRzQnlFbGVt
ZW50OworICAgIFdlYWtIYXNoU2V0PEhUTUxFbGVtZW50PiBtX2VsZW1lbnRzV2l0aFRleHRSZWNv
Z25pdGlvblJlc3VsdHM7CisjZW5kaWYKIH07CiAKIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdy
b3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggMWYyYWMzOWM2ZjE2YjI1NzU0NTIzYjJiYjBmODdkNmU3MDU5NDZhNy4uMWNmM2U4ZDg2NzY2
YmE3OWYxNDllODRhNDQ2NjIzNDdkZWM0OTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYyODcsNyArNjI4Nyw2IEBAIHZvaWQgV2ViUGFn
ZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwogICAgIH0KICAgICBtX2VsZW1lbnRzUGVuZGluZ1RleHRSZWNvZ25pdGlv
bi5jbGVhcigpOwotICAgIG1fZWxlbWVudHNXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0cy5jbGVh
cigpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAt
NzM5MywxMSArNzM5MiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RUZXh0UmVjb2duaXRpb24o
V2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKG1fZWxlbWVudHNXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0
cy5jb250YWlucyhlbGVtZW50KSkgeworICAgIGF1dG8gaHRtbEVsZW1lbnQgPSBtYWtlUmVmKGRv
d25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7CisgICAgaWYgKGNvcmVQYWdlKCktPmhhc0Nh
Y2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdChodG1sRWxlbWVudC5nZXQoKSkpIHsKICAgICAgICAg
aWYgKGNvbXBsZXRpb24pIHsKLSAgICAgICAgICAgIEFTU0VSVChpczxIVE1MRWxlbWVudD4oZWxl
bWVudCkpOwogICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGltYWdlT3ZlcmxheUhvc3Q7Ci0g
ICAgICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxF
bGVtZW50PihlbGVtZW50KS5oYXNJbWFnZU92ZXJsYXkoKSkKKyAgICAgICAgICAgIGlmIChodG1s
RWxlbWVudC0+aGFzSW1hZ2VPdmVybGF5KCkpCiAgICAgICAgICAgICAgICAgaW1hZ2VPdmVybGF5
SG9zdCA9IG1ha2VSZWZQdHIoZWxlbWVudCk7CiAgICAgICAgICAgICBjb21wbGV0aW9uKFdURk1v
dmUoaW1hZ2VPdmVybGF5SG9zdCkpOwogICAgICAgICB9CkBAIC03NDYzLDggKzc0NjIsNyBAQCB2
b2lkIFdlYlBhZ2U6OnJlcXVlc3RUZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYgZWxl
bWVudCwgQ29tcGxldGlvbkhhbmRsZQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1
dG8mIGh0bWxFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpwcm90ZWN0ZWRFbGVtZW50
KTsKLSAgICAgICAgaHRtbEVsZW1lbnQudXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChX
VEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICBwcm90ZWN0ZWRQYWdlLT5tX2VsZW1lbnRzV2l0aFRl
eHRSZWNvZ25pdGlvblJlc3VsdHMuYWRkKGh0bWxFbGVtZW50KTsKKyAgICAgICAgaHRtbEVsZW1l
bnQudXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChyZXN1bHQpOwogCiAgICAgICAgIGF1
dG8gbWF0Y2hJbmRleCA9IHByb3RlY3RlZFBhZ2UtPm1fZWxlbWVudHNQZW5kaW5nVGV4dFJlY29n
bml0aW9uLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIGVsZW1lbnRBbmRDb21wbGV0aW9uSGFuZGxl
cnMpIHsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50QW5kQ29tcGxldGlvbkhhbmRsZXJzLmZp
cnN0ID09ICZodG1sRWxlbWVudDsKQEAgLTc0ODEsNyArNzQ3OSw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVxdWVzdFRleHRSZWNvZ25pdGlvbihXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50LCBDb21wbGV0
aW9uSGFuZGxlCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlV2l0aFRleHRSZWNv
Z25pdGlvblJlc3VsdChUZXh0UmVjb2duaXRpb25SZXN1bHQmJiByZXN1bHQsIGNvbnN0IEVsZW1l
bnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYWdlOjp1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KGNv
bnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYgcmVzdWx0LCBjb25zdCBFbGVtZW50Q29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBhdXRvIGVsZW1lbnRUb1VwZGF0ZSA9IGVsZW1lbnRGb3JDb250ZXh0KGNvbnRleHQpOwog
ICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnRUb1VwZGF0ZSkpIHsKQEAgLTc0ODksNyAr
NzQ4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChU
ZXh0UmVjb2duaXRpb25SZXN1bHQmJiByZXN1bHQsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4oKmVsZW1lbnRUb1VwZGF0ZSkudXBkYXRlV2l0
aFRleHRSZWNvZ25pdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdCkpOworICAgIGRvd25jYXN0PEhU
TUxFbGVtZW50PigqZWxlbWVudFRvVXBkYXRlKS51cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVz
dWx0KHJlc3VsdCk7CiAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQocm91bmRlZEludFBvaW50
KGxvY2F0aW9uKSwgewogICAgICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksCiAg
ICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNGZlOGI1OGRhMzc1NWM1YmVjZmExMGY5Mjlm
NTVlNDc3NDQ0YmRiOS4uOWVkYmE3YWM5ZmEwN2M1Y2FlNmNiNDBkZGI4NDkwZDJkY2IwZTIwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjQ0LDYg
KzI0NCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvOwogc3RydWN0IFJlcXVlc3RT
dG9yYWdlQWNjZXNzUmVzdWx0Owogc3RydWN0IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzOwogc3Ry
dWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKK3N0cnVjdCBUZXh0UmVjb2duaXRpb25SZXN1bHQ7CiBz
dHJ1Y3QgVmlld3BvcnRBcmd1bWVudHM7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQpAQCAtMTQwNSw3ICsxNDA2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZ
U0lTKQogICAgIHZvaWQgcmVxdWVzdFRleHRSZWNvZ25pdGlvbihXZWJDb3JlOjpFbGVtZW50Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4mJik+JiYpOwot
ICAgIHZvaWQgdXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChXZWJDb3JlOjpUZXh0UmVj
b2duaXRpb25SZXN1bHQmJiwgY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiBsb2NhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChUZXh0
UmVjb2duaXRpb25VcGRhdGVSZXN1bHQpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVj
b2duaXRpb25SZXN1bHQoY29uc3QgV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0JiwgY29u
c3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBs
b2NhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1
bHQpPiYmKTsKICNlbmRpZgogCiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykgJiYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMzQ5LDcgKzIzNTAsNiBAQCBwcml2YXRlOgogCiAj
aWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2Vha1B0cjxX
ZWJDb3JlOjpIVE1MRWxlbWVudD4sIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpFbGVtZW50PiYmKT4+Pj4gbV9lbGVtZW50c1BlbmRpbmdUZXh0UmVjb2duaXRp
b247Ci0gICAgV2Vha0hhc2hTZXQ8V2ViQ29yZTo6SFRNTEVsZW1lbnQ+IG1fZWxlbWVudHNXaXRo
VGV4dFJlY29nbml0aW9uUmVzdWx0czsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOTBmZWYzMmUzYzJhYWQzMjUzNzE0ZGM1MWI5NjZmYTI3
OTQyOWJlLi5hNDJkNDFkODRkOGJhOGZmYzE3N2JkM2Y0MjdhMDAzOWI3ZjdkZmYxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0xpdmUgVGV4dF0gQWRkIGEgbWVjaGFuaXNtIHRvIHJlZ2Vu
ZXJhdGUgdGV4dCBpbiBhbiBpbWFnZSBlbGVtZW50IHdoZW4gaXQgY2hhbmdlcyBkaW1lbnNpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY4NTgK
KyAgICAgICAgcmRhcjovLzc3NTIyNzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92
ZXJsYXktc2l6ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktc2l6ZS1jaGFuZ2UuaHRtbDogQWRk
ZWQuCisKIDIwMjEtMDYtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gU2FmYXJpIHRhYiBwaWxsIHNob3VsZCB0b2dnbGUgdmlzaWJpbGl0
eSB3aGVuIHRhcHBpbmcgb24gYXJ0aWNsZSB0ZXh0IG9uIGFkdmVudHVyZS5jb20KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3Zlcmxh
eS1zaXplLWNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0
LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktc2l6ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmEzNDcyYjE3NjkyODVhMWJhODUzZDRmNzIxZTJmODRmYTVkZjY3NTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdl
LW92ZXJsYXktc2l6ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1BBU1Mg
d2lkdGggaXMgMjAwCitQQVNTIGhlaWdodCBpcyAyMDAKK1BBU1Mgd2lkdGggYmVjYW1lIDUwCitQ
QVNTIGhlaWdodCBpcyA1MAorUEFTUyB3aWR0aCBiZWNhbWUgMjAwCitQQVNTIGhlaWdodCBpcyAy
MDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdl
LW92ZXJsYXktc2l6ZS1jaGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQt
cmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1zaXplLWNoYW5nZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVi
M2ZlNzI1NWEyNDVkZTRhMzY4YjdiYTkxYzEzNzgyMmU5NWVjZDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXkt
c2l6ZS1jaGFuZ2UuaHRtbApAQCAtMCwwICsxLDU5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
Kzxib2R5PgorPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9ncmVlbi00MDB4NDAwLnBuZyI+PC9pbWc+
Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CitsZXQgaW1hZ2UgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJpbWciKTsKK3dpZHRoID0gMDsKK2hlaWdodCA9IDA7CisKK2Z1bmN0aW9u
IHVwZGF0ZUltYWdlT3ZlcmxheVRleHREaW1lbnNpb25zKCkgeworICAgIGxldCB0ZXh0Qm91bmRp
bmdSZWN0ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2UpLnF1ZXJ5U2VsZWN0b3IoIi5pbWFn
ZS1vdmVybGF5LXRleHQiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICB3aWR0aCA9IHRl
eHRCb3VuZGluZ1JlY3Qud2lkdGg7CisgICAgaGVpZ2h0ID0gdGV4dEJvdW5kaW5nUmVjdC5oZWln
aHQ7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIGludGVybmFscy5pbnN0YWxsSW1h
Z2VPdmVybGF5KGltYWdlLCBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdG9wTGVm
dCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAuNSwgMC41KSwKKyAgICAgICAgICAgICAgICB0b3BS
aWdodCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDEsIDAuNSksCisgICAgICAgICAgICAgICAgYm90
dG9tUmlnaHQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgxLCAxKSwKKyAgICAgICAgICAgICAgICBi
b3R0b21MZWZ0IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMC41LCAxKSwKKyAgICAgICAgICAgICAg
ICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0IDogIkhlbGxvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvcExlZnQgOiBu
ZXcgRE9NUG9pbnRSZWFkT25seSgwLjUsIDAuNSksCisgICAgICAgICAgICAgICAgICAgICAgICB0
b3BSaWdodCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDEsIDAuNSksCisgICAgICAgICAgICAgICAg
ICAgICAgICBib3R0b21SaWdodCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDEsIDEpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAuNSwg
MSksCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgfQorICAgICAgICBdKTsKKyAgICB9CisKKyAgICB1cGRhdGVJbWFnZU92ZXJsYXlUZXh0RGlt
ZW5zaW9ucygpOworCisgICAgc2hvdWxkQmUoIndpZHRoIiwgIjIwMCIpOworICAgIHNob3VsZEJl
KCJoZWlnaHQiLCAiMjAwIik7CisKKyAgICBpbWFnZS5zdHlsZS53aWR0aCA9ICIxMDBweCI7Cisg
ICAgc2V0SW50ZXJ2YWwodXBkYXRlSW1hZ2VPdmVybGF5VGV4dERpbWVuc2lvbnMsIDEwKTsKKwor
ICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2hvdWxkQmVjb21lRXF1YWwoIndpZHRo
IiwgIjUwIiwgcmVzb2x2ZSkpOworICAgIHNob3VsZEJlKCJoZWlnaHQiLCAiNTAiKTsKKworICAg
IGltYWdlLnN0eWxlLndpZHRoID0gIiI7CisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiBzaG91bGRCZWNvbWVFcXVhbCgid2lkdGgiLCAiMjAwIiwgcmVzb2x2ZSkpOworICAgIHNob3Vs
ZEJlKCJoZWlnaHQiLCAiMjAwIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431116</attachid>
            <date>2021-06-10 13:12:56 -0700</date>
            <delta_ts>2021-06-10 18:23:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226858-20210610131255.patch</filename>
            <type>text/plain</type>
            <size>19499</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE3NmQ0NGJlZDAwYmRm
NDI2MDA0NmE2ZDE3ZTBkNDVkNDRmY2UzNy4uOTUxZDU1ZjhlNTRkNzQwMmJiZDI5ZmNlOWU4MDU3
MTAwZjQ0YjJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA2LTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtMaXZlIFRleHRd
IEFkZCBhIG1lY2hhbmlzbSB0byByZWdlbmVyYXRlIHRleHQgaW4gYW4gaW1hZ2UgZWxlbWVudCB3
aGVuIGl0IGNoYW5nZXMgZGltZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2ODU4CisgICAgICAgIHJkYXI6Ly83NzUyMjc4NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBQdXNoIGBtX2VsZW1lbnRz
V2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHNgIGZyb20gV2ViUGFnZSBkb3duIHRvIFBhZ2UsIGFu
ZCBhZGRpdGlvbmFsbHkga2VlcCB0cmFjayBvZiBhCisgICAgICAgIFRleHRSZWNvZ25pdGlvblJl
c3VsdCBwZXIgZWxlbWVudCwgYXMgd2VsbCBhcyB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudCBhdCB0
aGUgdGltZSB3aGVuIHdlIGxhc3QgaW5qZWN0ZWQgdGV4dAorICAgICAgICByZWNvZ25pdGlvbiBy
ZXN1bHRzLiBVc2UgdGhpcyBpbmZvcm1hdGlvbiB0byB0ZWxsIGVsZW1lbnRzIHRvIHVwZGF0ZSB0
aGVpciBPQ1IgdGV4dCBjb250YWluZXJzIGlmIHRoZWlyCisgICAgICAgIGRpbWVuaW9ucyBoYXZl
IGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdXBkYXRlLCBhZnRlciBmaW5pc2hpbmcgYSByZW5kZXJp
bmcgdXBkYXRlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24v
aW1hZ2Utb3ZlcmxheS1zaXplLWNoYW5nZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4dFJl
Y29nbml0aW9uUmVzdWx0KToKKworICAgICAgICBSZWZhY3RvciB0aGlzIHRvIHRha2UgYSBgY29u
c3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JmAgaW5zdGVhZCBvZiBhIGBUZXh0UmVjb2duaXRpb25S
ZXN1bHQmJmAsIHNpbmNlIHRoaXMgbWV0aG9kCisgICAgICAgIGRvZXNuJ3QgYWN0dWFsbHkgdGFr
ZSBvd25lcnNoaXAgb2YgdGhlIFRleHRSZWNvZ25pdGlvblJlc3VsdC4gVGhpcyBhbGxvd3MgdXMg
dG8gYXZvaWQgZXhwbGljaXRseSBjb3B5aW5nIGEKKyAgICAgICAgVGV4dFJlY29nbml0aW9uUmVz
dWx0IHdoZW4gY2FsbGluZyB0aGlzIG1ldGhvZCBmcm9tIGBQYWdlOjp1cGRhdGVFbGVtZW50c1dp
dGhUZXh0UmVjb2duaXRpb25SZXN1bHRzYC4gQWxzbywgYWRkCisgICAgICAgIGEgQ2FjaGVUZXh0
UmVjb2duaXRpb25SZXN1bHRzIGVudW0gZmxhZyBhcyBhbiBhcmd1bWVudCwgdG8gYXZvaWQgZW50
ZXJpbmcgYFBhZ2U6OmNhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0YAorICAgICAgICBldmVyeSB0
aW1lIHdlIHVwZGF0ZSBhIHJlc2l6ZWQgZWxlbWVudCBpbiBgUGFnZTo6dXBkYXRlRWxlbWVudHNX
aXRoVGV4dFJlY29nbml0aW9uUmVzdWx0c2A7IHNpbmNlIHdlIGtub3cgdGhhdAorICAgICAgICB0
aGUgZGltZW5zaW9ucyBhcmUgdGhlIG9ubHkgdGhpbmcgdGhhdCBjaGFuZ2VkLCB3ZSBzaW1wbHkg
dXBkYXRlIHRoZSBjYWNoZWQgZGltZW5zaW9ucy4KKworICAgICAgICBDYWxsIGludG8gYFBhZ2U6
OmNhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0YCB0byBzdG9yZSBwZXItZWxlbWVudCBUZXh0UmVj
b2duaXRpb25SZXN1bHRzIHdoZW4gd2UKKyAgICAgICAgZmluaXNoIGluamVjdGluZyB0aGUgT0NS
IHRleHQgYW5kIGRhdGEgZGV0ZWN0b3JzIGludG8gdGhlIGltYWdlIGVsZW1lbnQuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OmRpZENvbW1pdExvYWQpOgorCisgICAgICAgIENsZWFyIG91dCBi
b3RoIGBtX3RleHRSZWNvZ25pdGlvblJlc3VsdHNCeUVsZW1lbnRgIGFuZCBgbV9lbGVtZW50c1dp
dGhUZXh0UmVjb2duaXRpb25SZXN1bHRzYC4KKworICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZG9B
ZnRlclVwZGF0ZVJlbmRlcmluZyk6CisKKyAgICAgICAgQXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRl
cmluZyB1cGRhdGUsIGdvIHRocm91Z2ggYG1fZWxlbWVudHNXaXRoVGV4dFJlY29nbml0aW9uUmVz
dWx0c2AgYW5kIGNoZWNrIGlmIGFueSBvZiB0aGUKKyAgICAgICAgZWxlbWVudHMnIGRpbWVuc2lv
bnMgaGF2ZSBjaGFuZ2VkOyBpZiBzbywgdGVsbCB0aG9zZSBlbGVtZW50cyB0byByZS11cGRhdGUg
dGhlaXIgT0NSIHRleHQgcXVhZHMgYW5kIGRhdGEKKyAgICAgICAgZGV0ZWN0b3JzIGluIHRoZSBV
QSBzaGFkb3cgdHJlZS4KKworICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVzZXRUZXh0UmVjb2du
aXRpb25SZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZUVsZW1lbnRzV2l0
aFRleHRSZWNvZ25pdGlvblJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aGFzQ2Fj
aGVkVGV4dFJlY29nbml0aW9uUmVzdWx0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OmNhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0KToKKworICAgICAgICBBZGQgdGhlIGVsZW1lbnQg
dG8gYG1fZWxlbWVudHNXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0c2AgYW5kIGBtX3RleHRSZWNv
Z25pdGlvblJlc3VsdHNCeUVsZW1lbnRgLCBhcHBlbmRpbmcgYQorICAgICAgICBuZXcgZW50cnkg
dG8gYG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudGAgb25seSBpZiBuZWNlc3Nhcnku
CisKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAyMS0wNi0xMCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ291bnRRdWV1aW5nU3RyYXRlZ3kuY29uc3Ry
dWN0b3IgbWlzc2VzIGNoZWNraW5nIHRoZSB0eXBlIG9mIGluaXQgcGFyYW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MmQ2ODFkZTNjZjIxOTY1YjVhMzg3ZmQwZmY0MWNmODlmOTg0ZGU4My4uZGQ2YTk5NzU2Mzg4ZTEz
YTQ5YjUxOGZhMGY0NDdjMmNkMDQ5OGYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAy
MS0wNi0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBbTGl2ZSBUZXh0XSBBZGQgYSBtZWNoYW5pc20gdG8gcmVnZW5lcmF0ZSB0ZXh0IGluIGFuIGlt
YWdlIGVsZW1lbnQgd2hlbiBpdCBjaGFuZ2VzIGRpbWVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjg1OAorICAgICAgICByZGFyOi8vNzc1
MjI3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgUHVz
aCBgbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRzYCBmcm9tIGBXZWJLaXQ6Oldl
YlBhZ2VgIGRvd24gdG8gYFdlYkNvcmU6OlBhZ2VgLiBTZWUgV2ViQ29yZQorICAgICAgICBDaGFu
Z2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RUZXh0UmVjb2duaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDIxLTA2LTEwICBBZHJp
YW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVu
aWZpZWQgYnVpbGQgZml4ZXMsIGVhcmx5IE1heSAyMDIxIGVkaXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKaW5kZXggYjg0YTAxYWU2ZGFmYTdlNTYyNTBlMmE5ZGQzZmFjYzI3MmE2
Y2M3Yy4uYzUzMGE1NDg5MTVjYjVmOWYzZTQxM2Y2Y2Y1MDIxNmU3YzA5ZjI4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTEzMzEsNyArMTMzMSw3IEBAIGJvb2wgSFRNTEVs
ZW1lbnQ6OmlzSW1hZ2VPdmVybGF5VGV4dChjb25zdCBOb2RlJiBub2RlKQogCiAjaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTKQogCi12b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVXaXRoVGV4dFJlY29n
bml0aW9uUmVzdWx0KFRleHRSZWNvZ25pdGlvblJlc3VsdCYmIHJlc3VsdCkKK3ZvaWQgSFRNTEVs
ZW1lbnQ6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgVGV4dFJlY29nbml0
aW9uUmVzdWx0JiByZXN1bHQsIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0cyBjYWNoZVRleHRS
ZWNvZ25pdGlvblJlc3VsdHMpCiB7CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBwcmV2aW91
c0NvbnRhaW5lcjsKICAgICBpZiAoYXV0byBzaGFkb3dSb290ID0gdXNlckFnZW50U2hhZG93Um9v
dCgpOyBzaGFkb3dSb290ICYmIGhhc0ltYWdlT3ZlcmxheSgpKSB7CkBAIC0xNTA5LDYgKzE1MDks
MTEgQEAgdm9pZCBIVE1MRWxlbWVudDo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChU
ZXh0UmVjb2duaXRpb25SZXN1bHQmJiByZXN1bHQKIAogICAgIGlmIChhdXRvIGZyYW1lID0gbWFr
ZVJlZlB0cihkb2N1bWVudCgpLmZyYW1lKCkpKQogICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuc2NoZWR1bGVDdXJzb3JVcGRhdGUoKTsKKworICAgIGlmIChjYWNoZVRleHRSZWNvZ25pdGlv
blJlc3VsdHMgPT0gQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRzOjpZZXMpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgICAgIHBhZ2UtPmNh
Y2hlVGV4dFJlY29nbml0aW9uUmVzdWx0KCp0aGlzLCBjb250YWluZXJTaXplLCByZXN1bHQpOwor
ICAgIH0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaAppbmRleCAxYWUxZmQ2ZWMyNjU1NDVhYTEwMTg5NmQyNzA2N2Y2MzVjM2Ew
MDA1Li42MjUyN2U3MDJjZDRiNzZiZGM2NTZiOGNhMjM5OTMwOGNiZTUxOWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMzksNyArMTM5LDggQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzSW1hZ2VPdmVybGF5VGV4dChjb25zdCBOb2RlKik7CiAK
ICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KFRleHRSZWNvZ25pdGlvblJlc3VsdCYmKTsKKyAg
ICBlbnVtIGNsYXNzIENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0cyA6IGJvb2wgeyBObywgWWVz
IH07CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVz
dWx0KGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYsIENhY2hlVGV4dFJlY29nbml0aW9uUmVz
dWx0cyA9IENhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0czo6WWVzKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDMxOGFiMTM3MTJiZjY4
NTI3MTgxMjI1MGNiMmQ0NjU0NWMyOWMxNzUuLjE3MTI3NTlmNjNjMjZlZGYxNDUyMTcyYTg5MWEz
ZDJlYTAzNDBiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTM2LDYgKzEzNiw3IEBACiAjaW5j
bHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uUmVzdWx0LmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50UHJv
dmlkZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKQEAgLTEyNzQsNiAr
MTI3NSwxMCBAQCB2b2lkIFBhZ2U6OmRpZENvbW1pdExvYWQoKQogCiAgICAgcmVzZXRTZWVuUGx1
Z2lucygpOwogICAgIHJlc2V0U2Vlbk1lZGlhRW5naW5lcygpOworCisjaWYgRU5BQkxFKElNQUdF
X0FOQUxZU0lTKQorICAgIHJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0cygpOworI2VuZGlmCiB9
CiAKIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgpCkBAIC0xNjYxLDYgKzE2NjYsMTAgQEAgdm9p
ZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKElNQUdFX0FOQUxZU0lTKQorICAgIHVwZGF0ZUVsZW1lbnRzV2l0aFRleHRSZWNvZ25p
dGlvblJlc3VsdHMoKTsKKyNlbmRpZgorCiAgICAgcHJpb3JpdGl6ZVZpc2libGVSZXNvdXJjZXMo
KTsKIAogICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShS
ZW5kZXJpbmdVcGRhdGVTdGVwOjpFdmVudFJlZ2lvblVwZGF0ZSk7CkBAIC0zNjAzLDQgKzM2MTIs
NjEgQEAgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYgdHMsIFJl
bmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCkKICAgICByZXR1cm4gdHM7CiB9CiAKKyNpZiBFTkFCTEUo
SU1BR0VfQU5BTFlTSVMpCisKK3ZvaWQgUGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29n
bml0aW9uUmVzdWx0cygpCit7CisgICAgaWYgKG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxl
bWVudC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGV4dFJlY29nbml0aW9u
UmVzdWx0c0J5RWxlbWVudC5yZW1vdmVBbGxNYXRjaGluZyhbXShhdXRvJiBlbGVtZW50QW5kUmVz
dWx0KSB7CisgICAgICAgIHJldHVybiAhZWxlbWVudEFuZFJlc3VsdC5maXJzdDsKKyAgICB9KTsK
KworICAgIGZvciAoYXV0byYgW2VsZW1lbnQsIHJlc3VsdEFuZFNpemVdIDogbV90ZXh0UmVjb2du
aXRpb25SZXN1bHRzQnlFbGVtZW50KSB7CisgICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVu
dC0+aXNDb25uZWN0ZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8g
cHJvdGVjdGVkRWxlbWVudCA9IG1ha2VSZWYoKmVsZW1lbnQpOworICAgICAgICBhdXRvJiBbcmVz
dWx0LCBvZmZzZXRTaXplXSA9IHJlc3VsdEFuZFNpemU7CisgICAgICAgIEludFNpemUgbmV3T2Zm
c2V0U2l6ZSB7IHByb3RlY3RlZEVsZW1lbnQtPm9mZnNldFdpZHRoKCksIHByb3RlY3RlZEVsZW1l
bnQtPm9mZnNldEhlaWdodCgpIH07CisgICAgICAgIGlmIChvZmZzZXRTaXplID09IG5ld09mZnNl
dFNpemUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBvZmZzZXRTaXplID0gbmV3
T2Zmc2V0U2l6ZTsKKyAgICAgICAgcHJvdGVjdGVkRWxlbWVudC0+dXBkYXRlV2l0aFRleHRSZWNv
Z25pdGlvblJlc3VsdChyZXN1bHQsIEhUTUxFbGVtZW50OjpDYWNoZVRleHRSZWNvZ25pdGlvblJl
c3VsdHM6Ok5vKTsKKyAgICB9Cit9CisKK2Jvb2wgUGFnZTo6aGFzQ2FjaGVkVGV4dFJlY29nbml0
aW9uUmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIHJldHVy
biBtX2VsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMuY29udGFpbnMoZWxlbWVudCk7
Cit9CisKK3ZvaWQgUGFnZTo6Y2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgSFRNTEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludFNpemUmIG9mZnNldFNpemUsIGNvbnN0IFRleHRSZWNv
Z25pdGlvblJlc3VsdCYgcmVzdWx0KQoreworICAgIG1fZWxlbWVudHNXaXRoVGV4dFJlY29nbml0
aW9uUmVzdWx0cy5hZGQoZWxlbWVudCk7CisKKyAgICBhdXRvIGluZGV4ID0gbV90ZXh0UmVjb2du
aXRpb25SZXN1bHRzQnlFbGVtZW50LmZpbmRNYXRjaGluZyhbJl0oYXV0byYgZWxlbWVudEFuZFJl
c3VsdCkgeworICAgICAgICByZXR1cm4gZWxlbWVudEFuZFJlc3VsdC5maXJzdCA9PSAmZWxlbWVu
dDsKKyAgICB9KTsKKworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgbV90ZXh0
UmVjb2duaXRpb25SZXN1bHRzQnlFbGVtZW50LmFwcGVuZCh7IG1ha2VXZWFrUHRyKGVsZW1lbnQp
LCB7IHJlc3VsdCwgb2Zmc2V0U2l6ZSB9IH0pOworICAgIGVsc2UKKyAgICAgICAgbV90ZXh0UmVj
b2duaXRpb25SZXN1bHRzQnlFbGVtZW50W2luZGV4XS5zZWNvbmQgPSB7IHJlc3VsdCwgb2Zmc2V0
U2l6ZSB9OworCisgICAgbV90ZXh0UmVjb2duaXRpb25SZXN1bHRzQnlFbGVtZW50LnJlbW92ZUFs
bE1hdGNoaW5nKFtdKGF1dG8mIGVsZW1lbnRBbmRSZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuICFl
bGVtZW50QW5kUmVzdWx0LmZpcnN0OworICAgIH0pOworfQorCit2b2lkIFBhZ2U6OnJlc2V0VGV4
dFJlY29nbml0aW9uUmVzdWx0cygpCit7CisgICAgbV90ZXh0UmVjb2duaXRpb25SZXN1bHRzQnlF
bGVtZW50LmNsZWFyKCk7CisgICAgbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRz
LmNsZWFyKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYjQzMjY0NTI1OTQ3NjM1MmM2NTI0
NTg1MGYzNWVlOWM2ZTc1OGQxZC4uYmQwMzZhMmZkNWQ3NDBmMTFhMjE2Zjk2OGZlN2Q1ZDNhMDIz
ZGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTEwNywxMSArMTA3LDEzIEBAIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBGb2N1c0NvbnRyb2xsZXI7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZyYW1lOwor
Y2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSGlzdG9y
eUl0ZW07CiBjbGFzcyBJbWFnZU92ZXJsYXlDb250cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yQ2xp
ZW50OwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKK2NsYXNzIEludFNpemU7CiBjbGFzcyBM
aWJXZWJSVENQcm92aWRlcjsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgTWVk
aWFDYW5TdGFydExpc3RlbmVyOwpAQCAtMTU4LDYgKzE2MCw3IEBAIGNsYXNzIFdoZWVsRXZlbnRE
ZWx0YUZpbHRlcjsKIGNsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjsKIAogc3RydWN0IFNpbXBs
ZVJhbmdlOworc3RydWN0IFRleHRSZWNvZ25pdGlvblJlc3VsdDsKIAogdXNpbmcgUGxhdGZvcm1E
aXNwbGF5SUQgPSB1aW50MzJfdDsKIHVzaW5nIFNoYXJlZFN0cmluZ0hhc2ggPSB1aW50MzJfdDsK
QEAgLTg2MCw2ICs4NjMsMTEgQEAgcHVibGljOgogICAgIExvYWRTY2hlZHVsaW5nTW9kZSBsb2Fk
U2NoZWR1bGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRTY2hlZHVsaW5nTW9kZTsgfQog
ICAgIHZvaWQgc2V0TG9hZFNjaGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZSk7CiAKKyNp
ZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNDYWNo
ZWRUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmKSBjb25zdDsKKyAgICB2
b2lkIGNhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JiwgY29uc3Qg
SW50U2l6ZSYgb2Zmc2V0U2l6ZSwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0Jik7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgTmF2aWdhdGlvbiB7CiAgICAgICAgIFJlZ2lzdHJh
YmxlRG9tYWluIGRvbWFpbjsKQEAgLTkwNSw2ICs5MTMsMTEgQEAgcHJpdmF0ZToKIAogICAgIFdo
ZWVsRXZlbnRUZXN0TW9uaXRvciYgZW5zdXJlV2hlZWxFdmVudFRlc3RNb25pdG9yKCk7CiAKKyNp
ZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCisgICAgdm9pZCByZXNldFRleHRSZWNvZ25pdGlvblJl
c3VsdHMoKTsKKyAgICB2b2lkIHVwZGF0ZUVsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3Vs
dHMoKTsKKyNlbmRpZgorCiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENocm9tZT4gbV9jaHJv
bWU7CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1fZHJh
Z0NhcmV0Q29udHJvbGxlcjsKIApAQCAtMTE3NSw2ICsxMTg4LDEyIEBAIHByaXZhdGU6CiAKICAg
ICBjb25zdCBib29sIG1faHR0cHNVcGdyYWRlRW5hYmxlZCB7IHRydWUgfTsKICAgICBtdXRhYmxl
IE1lZGlhU2Vzc2lvbkdyb3VwSWRlbnRpZmllciBtX21lZGlhU2Vzc2lvbkdyb3VwSWRlbnRpZmll
cjsKKworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICAvLyBGSVhNRTogVGhlc2Ugc2hv
dWxkIGJlIHJlZmFjdG9yZWQgdG8gdXNlIGEgd2VhayBoYXNoIG1hcCBvZiBIVE1MRWxlbWVudCB0
byBzdGQ6OnBhaXI8VGV4dFJlY29nbml0aW9uUmVzdWx0LCBJbnRTaXplPi4KKyAgICBWZWN0b3I8
c3RkOjpwYWlyPFdlYWtQdHI8SFRNTEVsZW1lbnQ+LCBzdGQ6OnBhaXI8VGV4dFJlY29nbml0aW9u
UmVzdWx0LCBJbnRTaXplPj4+IG1fdGV4dFJlY29nbml0aW9uUmVzdWx0c0J5RWxlbWVudDsKKyAg
ICBXZWFrSGFzaFNldDxIVE1MRWxlbWVudD4gbV9lbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25S
ZXN1bHRzOworI2VuZGlmCiB9OwogCiBpbmxpbmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFmMmFj
MzljNmYxNmIyNTc1NDUyM2IyYmIwZjg3ZDZlNzA1OTQ2YTcuLjFjZjNlOGQ4Njc2NmJhNzlmMTQ5
ZTg0YTQ0NjYyMzQ3ZGVjNDk2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC02Mjg3LDcgKzYyODcsNiBAQCB2b2lkIFdlYlBhZ2U6OmRpZENv
bW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKICAgICB9CiAgICAgbV9lbGVtZW50c1BlbmRpbmdUZXh0UmVjb2duaXRpb24uY2xlYXIo
KTsKLSAgICBtX2VsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMuY2xlYXIoKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTczOTMsMTEg
KzczOTIsMTEgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0VGV4dFJlY29nbml0aW9uKFdlYkNvcmU6
OkVsZW1lbnQmIGVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX2VsZW1lbnRzV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMuY29udGFp
bnMoZWxlbWVudCkpIHsKKyAgICBhdXRvIGh0bWxFbGVtZW50ID0gbWFrZVJlZihkb3duY2FzdDxI
VE1MRWxlbWVudD4oZWxlbWVudCkpOworICAgIGlmIChjb3JlUGFnZSgpLT5oYXNDYWNoZWRUZXh0
UmVjb2duaXRpb25SZXN1bHQoaHRtbEVsZW1lbnQuZ2V0KCkpKSB7CiAgICAgICAgIGlmIChjb21w
bGV0aW9uKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKTsK
ICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBpbWFnZU92ZXJsYXlIb3N0OwotICAgICAgICAg
ICAgaWYgKGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MRWxlbWVudD4o
ZWxlbWVudCkuaGFzSW1hZ2VPdmVybGF5KCkpCisgICAgICAgICAgICBpZiAoaHRtbEVsZW1lbnQt
Pmhhc0ltYWdlT3ZlcmxheSgpKQogICAgICAgICAgICAgICAgIGltYWdlT3ZlcmxheUhvc3QgPSBt
YWtlUmVmUHRyKGVsZW1lbnQpOwogICAgICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGltYWdl
T3ZlcmxheUhvc3QpKTsKICAgICAgICAgfQpAQCAtNzQ2Myw4ICs3NDYyLDcgQEAgdm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0VGV4dFJlY29nbml0aW9uKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQsIENv
bXBsZXRpb25IYW5kbGUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvJiBodG1s
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqcHJvdGVjdGVkRWxlbWVudCk7Ci0gICAg
ICAgIGh0bWxFbGVtZW50LnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoV1RGTW92ZShy
ZXN1bHQpKTsKLSAgICAgICAgcHJvdGVjdGVkUGFnZS0+bV9lbGVtZW50c1dpdGhUZXh0UmVjb2du
aXRpb25SZXN1bHRzLmFkZChodG1sRWxlbWVudCk7CisgICAgICAgIGh0bWxFbGVtZW50LnVwZGF0
ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQocmVzdWx0KTsKIAogICAgICAgICBhdXRvIG1hdGNo
SW5kZXggPSBwcm90ZWN0ZWRQYWdlLT5tX2VsZW1lbnRzUGVuZGluZ1RleHRSZWNvZ25pdGlvbi5m
aW5kTWF0Y2hpbmcoWyZdIChhdXRvJiBlbGVtZW50QW5kQ29tcGxldGlvbkhhbmRsZXJzKSB7CiAg
ICAgICAgICAgICByZXR1cm4gZWxlbWVudEFuZENvbXBsZXRpb25IYW5kbGVycy5maXJzdCA9PSAm
aHRtbEVsZW1lbnQ7CkBAIC03NDgxLDcgKzc0NzksNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RU
ZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgQ29tcGxldGlvbkhhbmRs
ZQogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25S
ZXN1bHQoVGV4dFJlY29nbml0aW9uUmVzdWx0JiYgcmVzdWx0LCBjb25zdCBFbGVtZW50Q29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFnZTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBUZXh0
UmVjb2duaXRpb25SZXN1bHQmIHJlc3VsdCwgY29uc3QgRWxlbWVudENvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFRleHRS
ZWNvZ25pdGlvblVwZGF0ZVJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0
byBlbGVtZW50VG9VcGRhdGUgPSBlbGVtZW50Rm9yQ29udGV4dChjb250ZXh0KTsKICAgICBpZiAo
IWlzPEhUTUxFbGVtZW50PihlbGVtZW50VG9VcGRhdGUpKSB7CkBAIC03NDg5LDcgKzc0ODcsNyBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoVGV4dFJlY29n
bml0aW9uUmVzdWx0JiYgcmVzdWx0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
ZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCplbGVtZW50VG9VcGRhdGUpLnVwZGF0ZVdpdGhUZXh0UmVj
b2duaXRpb25SZXN1bHQoV1RGTW92ZShyZXN1bHQpKTsKKyAgICBkb3duY2FzdDxIVE1MRWxlbWVu
dD4oKmVsZW1lbnRUb1VwZGF0ZSkudXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChyZXN1
bHQpOwogICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmV2
ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHJvdW5kZWRJbnRQb2ludChsb2NhdGlv
biksIHsKICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LAogICAgICAgICBI
aXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDRmZThiNThkYTM3NTVjNWJlY2ZhMTBmOTI5ZjU1ZTQ3NzQ0
NGJkYjkuLjllZGJhN2FjOWZhMDdjNWNhZTZjYjQwZGRiODQ5MGQyZGNiMGUyMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTI0NCw2ICsyNDQsNyBA
QCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbzsKIHN0cnVjdCBSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1Jlc3VsdDsKIHN0cnVjdCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVyczsKIHN0cnVjdCBUZXh0
Q2hlY2tpbmdSZXN1bHQ7CitzdHJ1Y3QgVGV4dFJlY29nbml0aW9uUmVzdWx0Owogc3RydWN0IFZp
ZXdwb3J0QXJndW1lbnRzOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTE0
MDUsNyArMTQwNiw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAg
ICB2b2lkIHJlcXVlc3RUZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+JiYpPiYmKTsKLSAgICB2b2lk
IHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9u
UmVzdWx0JiYsIGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgbG9jYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVGV4dFJlY29nbml0
aW9uVXBkYXRlUmVzdWx0KT4mJik7CisgICAgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9u
UmVzdWx0KGNvbnN0IFdlYkNvcmU6OlRleHRSZWNvZ25pdGlvblJlc3VsdCYsIGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0KT4mJik7
CiAjZW5kaWYKIAogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJMRShD
T05URVhUX01FTlVTKQpAQCAtMjM0OSw3ICsyMzUwLDYgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShJTUFHRV9BTkFMWVNJUykKICAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYWtQdHI8V2ViQ29yZTo6
SFRNTEVsZW1lbnQ+LCBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29y
ZTo6RWxlbWVudD4mJik+Pj4+IG1fZWxlbWVudHNQZW5kaW5nVGV4dFJlY29nbml0aW9uOwotICAg
IFdlYWtIYXNoU2V0PFdlYkNvcmU6OkhUTUxFbGVtZW50PiBtX2VsZW1lbnRzV2l0aFRleHRSZWNv
Z25pdGlvblJlc3VsdHM7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJYUikgJiYgUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTBlZmY5MDc3ZGQ0MjBhOTQzZGJhNWRhMTEzMmI3MDc5MmRhYzM3Ni4u
OWQzZWY2ZjUzNThlMzQyZjFlMTE4OTYzNDliYjU2ZWU2YzYxNmIxMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA2LTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIFtMaXZlIFRleHRdIEFkZCBhIG1lY2hhbmlzbSB0byByZWdlbmVyYXRlIHRl
eHQgaW4gYW4gaW1hZ2UgZWxlbWVudCB3aGVuIGl0IGNoYW5nZXMgZGltZW5zaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2ODU4CisgICAgICAg
IHJkYXI6Ly83NzUyMjc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKwor
ICAgICAgICAqIGZhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1zaXpl
LWNoYW5nZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3RleHQt
cmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1zaXplLWNoYW5nZS5odG1sOiBBZGRlZC4KKwogMjAy
MS0wNi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ291
bnRRdWV1aW5nU3RyYXRlZ3kuY29uc3RydWN0b3IgbWlzc2VzIGNoZWNraW5nIHRoZSB0eXBlIG9m
IGluaXQgcGFyYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVj
b2duaXRpb24vaW1hZ2Utb3ZlcmxheS1zaXplLWNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktc2l6ZS1jaGFu
Z2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNDcyYjE3NjkyODVhMWJhODUzZDRmNzIxZTJm
ODRmYTVkZjY3NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90
ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktc2l6ZS1jaGFuZ2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTAgQEAKK1BBU1Mgd2lkdGggaXMgMjAwCitQQVNTIGhlaWdodCBpcyAyMDAKK1BB
U1Mgd2lkdGggYmVjYW1lIDUwCitQQVNTIGhlaWdodCBpcyA1MAorUEFTUyB3aWR0aCBiZWNhbWUg
MjAwCitQQVNTIGhlaWdodCBpcyAyMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90
ZXh0LXJlY29nbml0aW9uL2ltYWdlLW92ZXJsYXktc2l6ZS1jaGFuZ2UuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL3RleHQtcmVjb2duaXRpb24vaW1hZ2Utb3ZlcmxheS1zaXplLWNoYW5n
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmEzZTQ0NTJjM2Y4YWFmZjNhYjFhMjYyYTk1NTBkODYzOTJhMmUx
ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy90ZXh0LXJlY29n
bml0aW9uL2ltYWdlLW92ZXJsYXktc2l6ZS1jaGFuZ2UuaHRtbApAQCAtMCwwICsxLDU5IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWkt
aGVscGVyLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9ncmVl
bi00MDB4NDAwLnBuZyI+PC9pbWc+Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7Cits
ZXQgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsKK3dpZHRoID0gMDsKK2hl
aWdodCA9IDA7CisKK2Z1bmN0aW9uIHVwZGF0ZUltYWdlT3ZlcmxheVRleHREaW1lbnNpb25zKCkg
eworICAgIGxldCB0ZXh0Qm91bmRpbmdSZWN0ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoaW1hZ2Up
LnF1ZXJ5U2VsZWN0b3IoIi5pbWFnZS1vdmVybGF5LXRleHQiKS5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKTsKKyAgICB3aWR0aCA9IHRleHRCb3VuZGluZ1JlY3Qud2lkdGg7CisgICAgaGVpZ2h0ID0g
dGV4dEJvdW5kaW5nUmVjdC5oZWlnaHQ7Cit9CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBh
c3luYyAoKSA9PiB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAg
IGludGVybmFscy5pbnN0YWxsSW1hZ2VPdmVybGF5KGltYWdlLCBbCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdG9wTGVmdCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAuNSwgMC41KSwK
KyAgICAgICAgICAgICAgICB0b3BSaWdodCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDEsIDAuNSks
CisgICAgICAgICAgICAgICAgYm90dG9tUmlnaHQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgxLCAx
KSwKKyAgICAgICAgICAgICAgICBib3R0b21MZWZ0IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMC41
LCAxKSwKKyAgICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0IDogIkhlbGxvIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRvcExlZnQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgwLjUsIDAuNSksCisgICAg
ICAgICAgICAgICAgICAgICAgICB0b3BSaWdodCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDEsIDAu
NSksCisgICAgICAgICAgICAgICAgICAgICAgICBib3R0b21SaWdodCA6IG5ldyBET01Qb2ludFJl
YWRPbmx5KDEsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdCA6IG5ldyBE
T01Qb2ludFJlYWRPbmx5KDAuNSwgMSksCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgfQorICAgICAgICBdKTsKKyAgICB9CisKKyAgICB1cGRh
dGVJbWFnZU92ZXJsYXlUZXh0RGltZW5zaW9ucygpOworCisgICAgc2hvdWxkQmUoIndpZHRoIiwg
IjIwMCIpOworICAgIHNob3VsZEJlKCJoZWlnaHQiLCAiMjAwIik7CisKKyAgICBpbWFnZS5zdHls
ZS53aWR0aCA9ICIxMDBweCI7CisgICAgc2V0SW50ZXJ2YWwodXBkYXRlSW1hZ2VPdmVybGF5VGV4
dERpbWVuc2lvbnMsIDEwKTsKKworICAgIGF3YWl0IHNob3VsZEJlY29tZUVxdWFsKCJ3aWR0aCIs
ICI1MCIpOworICAgIHNob3VsZEJlKCJoZWlnaHQiLCAiNTAiKTsKKworICAgIGltYWdlLnN0eWxl
LndpZHRoID0gIiI7CisgICAgYXdhaXQgc2hvdWxkQmVjb21lRXF1YWwoIndpZHRoIiwgIjIwMCIp
OworICAgIHNob3VsZEJlKCJoZWlnaHQiLCAiMjAwIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>