<?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>26364</bug_id>
          
          <creation_ts>2009-06-12 17:58:34 -0700</creation_ts>
          <short_desc>Search can find text that&apos;s hidden by overflow:hidden</short_desc>
          <delta_ts>2009-06-19 12:46:32 -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>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>finnur.webkit</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>125583</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-12 17:58:34 -0700</bug_when>
    <thetext>The site may be gone by the time you see this, but at http://developer.apple.com/wwdc/sessions/ if you search for &quot;AppKit&quot; you&apos;ll find something invisible. It&apos;s part of a hidden description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125584</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-12 17:59:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/6952081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125620</commentid>
    <comment_count>2</comment_count>
      <attachid>31236</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-13 07:55:01 -0700</bug_when>
    <thetext>Created attachment 31236
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125636</commentid>
    <comment_count>3</comment_count>
      <attachid>31236</attachid>
    <who name="">mitz</who>
    <bug_when>2009-06-13 10:23:11 -0700</bug_when>
    <thetext>Comment on attachment 31236
patch

&gt; +static inline bool fullyClipsContents(Node* node)
&gt; +{
&gt; +    RenderObject* renderer = node-&gt;renderer();
&gt; +    if (!renderer || !renderer-&gt;isBox())
&gt; +        return false;
&gt; +    RenderStyle* style = renderer-&gt;style();
&gt; +    if (style-&gt;overflowX() == OVISIBLE || style-&gt;overflowY() == OVISIBLE)
&gt; +        return false;
&gt; +    return toRenderBox(renderer)-&gt;size().isEmpty();
&gt; +}

I know that the change log says &quot;We can add other cases here later&quot;, but why not handle cases like &quot;overflow-x: hidden; width: 0;&quot; and &quot;overflow-y: hidden; height: 0;&quot; now?

&gt; +    // Push true if this node full clips its contents, or if a parent already has fully

Typo: &quot;full clips&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125786</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-14 11:18:36 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I know that the change log says &quot;We can add other cases here later&quot;, but why
&gt; not handle cases like &quot;overflow-x: hidden; width: 0;&quot; and &quot;overflow-y: hidden;
&gt; height: 0;&quot; now?

I tested those cases in the snippet editor, and in both cases no text was visible. That is also the rule the text iterator implements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125788</commentid>
    <comment_count>5</comment_count>
      <attachid>31236</attachid>
    <who name="">mitz</who>
    <bug_when>2009-06-14 11:22:41 -0700</bug_when>
    <thetext>Comment on attachment 31236
patch

(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; I know that the change log says &quot;We can add other cases here later&quot;, but why
&gt; &gt; not handle cases like &quot;overflow-x: hidden; width: 0;&quot; and &quot;overflow-y: hidden;
&gt; &gt; height: 0;&quot; now?
&gt; 
&gt; I tested those cases in the snippet editor, and in both cases no text was
&gt; visible. That is also the rule the text iterator implements.

Oh, I see: setting overflow-x to hidden sets overflow-y to something other than visible, so
+    if (style-&gt;overflowX() == OVISIBLE || style-&gt;overflowY() == OVISIBLE)
covers this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125830</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-14 15:08:15 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Oh, I see: setting overflow-x to hidden sets overflow-y to something other than
&gt; visible, so
&gt; +    if (style-&gt;overflowX() == OVISIBLE || style-&gt;overflowY() == OVISIBLE)
&gt; covers this case.

I guess that || should really be an &amp;&amp; -- I&apos;ll test to make sure that works and land it that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125868</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-14 20:10:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/44674</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126609</commentid>
    <comment_count>8</comment_count>
    <who name="Finnur Thorarinsson">finnur.webkit</who>
    <bug_when>2009-06-17 17:16:59 -0700</bug_when>
    <thetext>Darin, I think we may have a problem with this patch...

See: http://code.google.com/p/chromium/issues/detail?id=14491</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126625</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-17 17:56:53 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Darin, I think we may have a problem with this patch.
&gt; 
&gt; See: http://code.google.com/p/chromium/issues/detail?id=14491

I&apos;d be happy to help fix it. If you can come up with a test case, feel free to put the bug in bugs.webkit.org and assign it to hem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126999</commentid>
    <comment_count>10</comment_count>
    <who name="Finnur Thorarinsson">finnur.webkit</who>
    <bug_when>2009-06-19 12:46:32 -0700</bug_when>
    <thetext>Filed: https://bugs.webkit.org/show_bug.cgi?id=26557
If you need anything more, don&apos;t hesitate to contact me. </thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31236</attachid>
            <date>2009-06-13 07:55:01 -0700</date>
            <delta_ts>2009-06-14 11:22:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>HiddenTextPatch.txt</filename>
            <type>text/plain</type>
            <size>31834</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDY0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMDktMDYtMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
NjM2NDogU2VhcmNoIGNhbiBmaW5kIHRleHQgdGhhdCdzIGhpZGRlbiBieSBvdmVyZmxvdzpoaWRk
ZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzY0
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTUyMDgxPgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
dGV4dC9maW5kLWhpZGRlbi10ZXh0Lmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdFN0YWNrOjpCaXRTdGFjayk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Qml0U3RhY2s6OnB1c2gpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkJpdFN0YWNrOjpwb3ApOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdFN0YWNrOjp0
b3ApOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdFN0YWNrOjpzaXplKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpwYXJlbnRPclNoYWRvd1BhcmVudCk6IEFkZGVkLiBIZWxwZXIgZnVu
Y3Rpb24gZm9yIHdhbGtpbmcgdXAKKyAgICAgICAgdGhlIHBhcmVudCBub2RlIGNoYWluLCBjcm9z
c2luZyBzaGFkb3cgdHJlZSBib3VuZGFyaWVzLgorICAgICAgICAoV2ViQ29yZTo6ZGVwdGhDcm9z
c2luZ1NoYWRvd0JvdW5kYXJpZXMpOiBBZGRlZCBmb3IgdXNlIGluIGFzc2VydGlvbnMuCisgICAg
ICAgIENvdW50cyB0aGUgZGVwdGggb2YgYSBub2RlIHVzaW5nIHRoZSBwYXJlbnRPclNoYWRvd1Bh
cmVudCBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmZ1bGx5Q2xpcHNDb250ZW50cyk6IEFk
ZGVkLiBSZXR1cm5zIHRydWUgZm9yIGFuIGVsZW1lbnQgdGhhdAorICAgICAgICBmdWxseSBjbGlw
cyBpdHMgY29udGVudHMsIGN1cnJlbnRseSBkZWZpbmVkIGFzIGEgYm94IHRoYXQgaGFzIHplcm8g
d2lkdGgKKyAgICAgICAgb3IgaGVpZ2h0IGFuZCBoaWRlcyBvdmVyZmxvdy4gV2UgY2FuIGFkZCBv
dGhlciBjYXNlcyBoZXJlIGxhdGVyLgorICAgICAgICAoV2ViQ29yZTo6aWdub3Jlc0NvbnRhaW5l
ckNsaXApOiBBZGRlZC4gUmV0dXJucyB0cnVlIGZvciBhbiBlbGVtZW50IHRoYXQKKyAgICAgICAg
aWdub3JlcyBpdHMgY29udGFpbmVyIGNsaXAsIGN1cnJlbnRseSBkZWZpbmVkIGFzIGFuIGVsZW1l
bnQgd2l0aCBhYnNvbHV0ZQorICAgICAgICBvciBmaXhlZCBwb3NpdGlvbmluZy4KKyAgICAgICAg
KFdlYkNvcmU6OnB1c2hGdWxseUNsaXBwZWRTdGF0ZSk6IEFkZGVkLiBQdXNoZXMgYSBiaXQgb24g
dGhlIHN0YWNrIGluZGljYXRpbmcKKyAgICAgICAgaWYgdGhlIG5vZGUgaW4gcXVlc3Rpb24gZnVs
bHkgY2xpcHMgaXRzIGNvbnRlbnRzLgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBGdWxseUNsaXBw
ZWRTdGFjayk6IEFkZGVkLiBQdXNoZXMgYSBiaXQgZm9yIGVhY2ggYW5jZXN0b3Igb2YKKyAgICAg
ICAgYSBub2RlLiBVc2VkIHdoZW4gY3JlYXRpbmcgYW4gaXRlcmF0b3IuCisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6IFJlbW92ZWQgY29kZSB0byBpbml0aWFs
aXplCisgICAgICAgIG1faW5TaGFkb3dDb250ZW50LiBDYWxsIHNldFVwRnVsbHlDbGlwcGVkU3Rh
Y2suCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOiBVc2UgcGFyZW50
T3JTaGFkb3dQYXJlbnQuIENhbGwgcG9wIHdoZW4gbW92aW5nCisgICAgICAgIHVwIHRvIGEgcGFy
ZW50IG5vZGUsIGFuZCBhbHNvIG9uZSBleHRyYSB0aW1lIHdoZW4gbW92aW5nIHRvIGEgc2libGlu
ZyBub2RlLgorICAgICAgICBDYWxsIHB1c2hGdWxseUNsaXBwZWRTdGF0ZSB3aGVuIG1vdmluZyB0
byBhIGNoaWxkIG5vZGUsIG9yIHdoZW4gbW92aW5nIHRvIGEKKyAgICAgICAgc2libGluZyBub2Rl
IGFmdGVyIHRoZSBhZm9yZW1lbnRpb25lZCBjYWxsIHRvIHBvcC4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOiBSZXR1cm4gZWFybHkgaWYgdGhlIG5vZGUg
aXMgZnVsbHkgY2xpcHBlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxl
UmVwbGFjZWRFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFj
a3dhcmRzVGV4dEl0ZXJhdG9yOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKToKKyAg
ICAgICAgQ2FsbCBzZXRVcEZ1bGx5Q2xpcHBlZFN0YWNrLgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSk6IFNhbWUgY2hhbmdlcyBhcwor
ICAgICAgICBUZXh0SXRlcmF0b3I6OmFkdmFuY2UgYWJvdmUuCisKKyAgICAgICAgKiBlZGl0aW5n
L1RleHRJdGVyYXRvci5oOiBBZGRlZCBCaXRTdGFjayBjbGFzcyBhbmQgYWRkZWQgbV9mdWxseUNs
aXBwZWRTdGFjayB0byBib3RoCisgICAgICAgIFRleHRJdGVyYXRvciBhbmQgU2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvci4gUmVtb3ZlZCB1bm5lZWRlZCBtX2luU2hhZG93Q29udGVudC4K
KwogMjAwOS0wNi0xMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
CShyZXZpc2lvbiA0NDY0OSkKKysrIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywxMTUgQEAgcHJpdmF0ZToKIAogLy8gLS0tLS0tLS0K
IAorQml0U3RhY2s6OkJpdFN0YWNrKCkKKyAgICA6IG1fc2l6ZSgwKQoreworfQorCit2b2lkIEJp
dFN0YWNrOjpwdXNoKGJvb2wgYml0KQoreworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9zaXplIC8g
MHgyMDsKKyAgICB1bnNpZ25lZCBzaGlmdCA9IG1fc2l6ZSAmIDB4MUY7CisgICAgaWYgKCFzaGlm
dCAmJiBpbmRleCA9PSBtX3dvcmRzLnNpemUoKSkKKyAgICAgICAgbV93b3Jkcy5ncm93KGluZGV4
ICsgMSk7CisgICAgdW5zaWduZWQmIHdvcmQgPSBtX3dvcmRzW2luZGV4XTsKKyAgICB1bnNpZ25l
ZCBtYXNrID0gMVUgPDwgc2hpZnQ7CisgICAgaWYgKGJpdCkKKyAgICAgICAgd29yZCB8PSBtYXNr
OworICAgIGVsc2UKKyAgICAgICAgd29yZCAmPSB+bWFzazsKKyAgICArK21fc2l6ZTsKK30KKwor
dm9pZCBCaXRTdGFjazo6cG9wKCkKK3sKKyAgICBpZiAobV9zaXplKQorICAgICAgICAtLW1fc2l6
ZTsKK30KKworYm9vbCBCaXRTdGFjazo6dG9wKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2l6ZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHNoaWZ0ID0gKG1fc2l6ZSAtIDEp
ICYgMHgxRjsKKyAgICByZXR1cm4gbV93b3Jkcy5sYXN0KCkgJiAoMVUgPDwgc2hpZnQpOworfQor
Cit1bnNpZ25lZCBCaXRTdGFjazo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsK
K30KKworLy8gLS0tLS0tLS0KKworc3RhdGljIGlubGluZSBOb2RlKiBwYXJlbnRPclNoYWRvd1Bh
cmVudChOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRO
b2RlKCkpCisgICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgcmV0dXJuIG5vZGUtPnNoYWRvd1Bh
cmVudE5vZGUoKTsKK30KKworI2lmbmRlZiBOREVCVUcKKworc3RhdGljIHVuc2lnbmVkIGRlcHRo
Q3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKE5vZGUqIG5vZGUpCit7CisgICAgdW5zaWduZWQgZGVw
dGggPSAxOworICAgIGZvciAoTm9kZSogcGFyZW50ID0gcGFyZW50T3JTaGFkb3dQYXJlbnQobm9k
ZSk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50T3JTaGFkb3dQYXJlbnQocGFyZW50KSkKKyAgICAg
ICAgKytkZXB0aDsKKyAgICByZXR1cm4gZGVwdGg7Cit9CisKKyNlbmRpZgorCitzdGF0aWMgaW5s
aW5lIGJvb2wgZnVsbHlDbGlwc0NvbnRlbnRzKE5vZGUqIG5vZGUpCit7CisgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAh
cmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBSZW5kZXJTdHls
ZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKKyAgICBpZiAoc3R5bGUtPm92ZXJmbG93WCgp
ID09IE9WSVNJQkxFIHx8IHN0eWxlLT5vdmVyZmxvd1koKSA9PSBPVklTSUJMRSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0b1JlbmRlckJveChyZW5kZXJlciktPnNpemUoKS5p
c0VtcHR5KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpZ25vcmVzQ29udGFpbmVyQ2xpcChO
b2RlKiBub2RlKQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIgfHwgcmVuZGVyZXItPmlzVGV4dCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgRVBvc2l0aW9uIHBvc2l0aW9uID0gcmVuZGVyZXItPnN0eWxlKCkt
PnBvc2l0aW9uKCk7CisgICAgcmV0dXJuIHBvc2l0aW9uID09IEFic29sdXRlUG9zaXRpb24gfHwg
cG9zaXRpb24gPT0gRml4ZWRQb3NpdGlvbjsKK30KKworc3RhdGljIHZvaWQgcHVzaEZ1bGx5Q2xp
cHBlZFN0YXRlKEJpdFN0YWNrJiBzdGFjaywgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoc3Rh
Y2suc2l6ZSgpICsgMSA9PSBkZXB0aENyb3NzaW5nU2hhZG93Qm91bmRhcmllcyhub2RlKSk7CisK
KyAgICAvLyBQdXNoIHRydWUgaWYgdGhpcyBub2RlIGZ1bGwgY2xpcHMgaXRzIGNvbnRlbnRzLCBv
ciBpZiBhIHBhcmVudCBhbHJlYWR5IGhhcyBmdWxseQorICAgIC8vIGNsaXBwZWQgYW5kIHRoaXMg
aXMgbm90IGEgbm9kZSB0aGF0IGlnbm9yZXMgaXRzIGNvbnRhaW5lcidzIGNsaXAuCisgICAgc3Rh
Y2sucHVzaChmdWxseUNsaXBzQ29udGVudHMobm9kZSkgfHwgc3RhY2sudG9wKCkgJiYgIWlnbm9y
ZXNDb250YWluZXJDbGlwKG5vZGUpKTsKKworICAgIEFTU0VSVChzdGFjay5zaXplKCkgPT0gZGVw
dGhDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMobm9kZSkpOworfQorCitzdGF0aWMgdm9pZCBzZXRV
cEZ1bGx5Q2xpcHBlZFN0YWNrKEJpdFN0YWNrJiBzdGFjaywgTm9kZSogbm9kZSkKK3sKKyAgICAv
LyBQdXQgdGhlIG5vZGVzIGluIGEgdmVjdG9yIHNvIHdlIGNhbiBpdGVyYXRlIGluIHJldmVyc2Ug
b3JkZXIuCisgICAgVmVjdG9yPE5vZGUqLCAxMDA+IGFuY2VzdHJ5OworICAgIGZvciAoTm9kZSog
cGFyZW50ID0gcGFyZW50T3JTaGFkb3dQYXJlbnQobm9kZSk7IHBhcmVudDsgcGFyZW50ID0gcGFy
ZW50T3JTaGFkb3dQYXJlbnQocGFyZW50KSkKKyAgICAgICAgYW5jZXN0cnkuYXBwZW5kKHBhcmVu
dCk7CisKKyAgICAvLyBDYWxsIHB1c2hGdWxseUNsaXBwZWRTdGF0ZSBvbiBlYWNoIG5vZGUgc3Rh
cnRpbmcgd2l0aCB0aGUgZWFybGllc3QgYW5jZXN0b3IuCisgICAgc2l6ZV90IHNpemUgPSBhbmNl
c3RyeS5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAg
ICAgIHB1c2hGdWxseUNsaXBwZWRTdGF0ZShzdGFjaywgYW5jZXN0cnlbc2l6ZSAtIGkgLSAxXSk7
CisgICAgcHVzaEZ1bGx5Q2xpcHBlZFN0YXRlKHN0YWNrLCBub2RlKTsKKworICAgIEFTU0VSVChz
dGFjay5zaXplKCkgPT0gZGVwdGhDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMobm9kZSkpOworfQor
CisvLyAtLS0tLS0tLQorCiBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcigpCiAgICAgOiBtX3N0
YXJ0Q29udGFpbmVyKDApCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KDApCkBAIC0xMTIsOCArMjIxLDcg
QEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoKQogfQogCiBUZXh0SXRlcmF0b3I6OlRleHRJ
dGVyYXRvcihjb25zdCBSYW5nZSogciwgYm9vbCBlbWl0Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zLCBib29sIGVudGVyVGV4dENvbnRyb2xzKSAKLSAgICA6IG1faW5TaGFkb3dD
b250ZW50KGZhbHNlKQotICAgICwgbV9zdGFydENvbnRhaW5lcigwKSAKKyAgICA6IG1fc3RhcnRD
b250YWluZXIoMCkgCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KDApCiAgICAgLCBtX2VuZENvbnRhaW5l
cigwKQogICAgICwgbV9lbmRPZmZzZXQoMCkKQEAgLTE0NCwxNyArMjUyLDExIEBAIFRleHRJdGVy
YXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiAKICAgICBtX2VuZENvbnRhaW5lciA9IGVu
ZENvbnRhaW5lcjsKICAgICBtX2VuZE9mZnNldCA9IGVuZE9mZnNldDsKIAotICAgIGZvciAoTm9k
ZSogbiA9IHN0YXJ0Q29udGFpbmVyOyBuOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAg
IGlmIChuLT5pc1NoYWRvd05vZGUoKSkgewotICAgICAgICAgICAgbV9pblNoYWRvd0NvbnRlbnQg
PSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBz
ZXQgdXAgdGhlIGN1cnJlbnQgbm9kZSBmb3IgcHJvY2Vzc2luZwogICAgIG1fbm9kZSA9IHItPmZp
cnN0Tm9kZSgpOwotICAgIGlmIChtX25vZGUgPT0gMCkKKyAgICBpZiAoIW1fbm9kZSkKICAgICAg
ICAgcmV0dXJuOworICAgIHNldFVwRnVsbHlDbGlwcGVkU3RhY2sobV9mdWxseUNsaXBwZWRTdGFj
aywgbV9ub2RlKTsKICAgICBtX29mZnNldCA9IG1fbm9kZSA9PSBtX3N0YXJ0Q29udGFpbmVyID8g
bV9zdGFydE9mZnNldCA6IDA7CiAgICAgbV9oYW5kbGVkTm9kZSA9IGZhbHNlOwogICAgIG1faGFu
ZGxlZENoaWxkcmVuID0gZmFsc2U7CkBAIC0yMTksNyArMzIxLDcgQEAgdm9pZCBUZXh0SXRlcmF0
b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOworICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOwogICAgICAg
ICBpZiAoIXJlbmRlcmVyKSB7CiAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gdHJ1ZTsKICAg
ICAgICAgICAgIG1faGFuZGxlZENoaWxkcmVuID0gdHJ1ZTsKQEAgLTI0MSwyNyArMzQzLDIwIEBA
IHZvaWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKIAogICAgICAgICAvLyBmaW5kIGEgbmV3IGN1
cnJlbnQgbm9kZSB0byBoYW5kbGUgaW4gZGVwdGgtZmlyc3QgbWFubmVyLAogICAgICAgICAvLyBj
YWxsaW5nIGV4aXROb2RlKCkgYXMgd2UgY29tZSBiYWNrIHRocnUgYSBwYXJlbnQgbm9kZQotICAg
ICAgICBOb2RlICpuZXh0ID0gbV9oYW5kbGVkQ2hpbGRyZW4gPyAwIDogbV9ub2RlLT5maXJzdENo
aWxkKCk7CisgICAgICAgIE5vZGUqIG5leHQgPSBtX2hhbmRsZWRDaGlsZHJlbiA/IDAgOiBtX25v
ZGUtPmZpcnN0Q2hpbGQoKTsKICAgICAgICAgbV9vZmZzZXQgPSAwOwogICAgICAgICBpZiAoIW5l
eHQpIHsKICAgICAgICAgICAgIG5leHQgPSBtX25vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgICAg
ICAgICBpZiAoIW5leHQpIHsKICAgICAgICAgICAgICAgICBib29sIHBhc3RFbmQgPSBtX25vZGUt
PnRyYXZlcnNlTmV4dE5vZGUoKSA9PSBtX3Bhc3RFbmROb2RlOwotICAgICAgICAgICAgICAgIE5v
ZGUqIHBhcmVudE5vZGUgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIXBhcmVudE5vZGUgJiYgbV9pblNoYWRvd0NvbnRlbnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbV9pblNoYWRvd0NvbnRlbnQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50
Tm9kZSA9IG1fbm9kZS0+c2hhZG93UGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gcGFyZW50T3JTaGFkb3dQYXJlbnQobV9u
b2RlKTsKICAgICAgICAgICAgICAgICB3aGlsZSAoIW5leHQgJiYgcGFyZW50Tm9kZSkgewogICAg
ICAgICAgICAgICAgICAgICBpZiAoKHBhc3RFbmQgJiYgcGFyZW50Tm9kZSA9PSBtX2VuZENvbnRh
aW5lcikgfHwgbV9lbmRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKHBhcmVudE5vZGUpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICBib29sIGhh
dmVSZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAgbV9u
b2RlID0gcGFyZW50Tm9kZTsKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG1fbm9k
ZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudE5vZGUgJiYg
bV9pblNoYWRvd0NvbnRlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1faW5TaGFkb3dD
b250ZW50ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0gbV9u
b2RlLT5zaGFkb3dQYXJlbnROb2RlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcGFyZW50Tm9kZSA9IHBhcmVudE9yU2hhZG93UGFyZW50KG1fbm9kZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChoYXZlUmVuZGVyZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGl0
Tm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpIHsKQEAgLTI3
MiwxMCArMzY3LDEzIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgICAg
ICAgICAgICAgbmV4dCA9IG1fbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2Z1bGx5Q2xpcHBlZFN0YWNrLnBvcCgpOyAg
ICAgICAgICAgIAogICAgICAgICB9CiAKICAgICAgICAgLy8gc2V0IHRoZSBuZXcgY3VycmVudCBu
b2RlCiAgICAgICAgIG1fbm9kZSA9IG5leHQ7CisgICAgICAgIGlmIChtX25vZGUpCisgICAgICAg
ICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9mdWxseUNsaXBwZWRTdGFjaywgbV9ub2RlKTsK
ICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGZhbHNlOwogICAgICAgICBtX2hhbmRsZWRDaGlsZHJl
biA9IGZhbHNlOwogCkBAIC0yODUsMTMgKzM4MywxNiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2
YW5jZSgpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJveFN0YXJ0KGNv
bnN0IElubGluZVRleHRCb3ggKmZpcnN0LCBjb25zdCBJbmxpbmVUZXh0Qm94ICpzZWNvbmQpCitz
dGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJveFN0YXJ0KGNvbnN0IElubGluZVRleHRCb3gqIGZp
cnN0LCBjb25zdCBJbmxpbmVUZXh0Qm94KiBzZWNvbmQpCiB7CiAgICAgcmV0dXJuIGZpcnN0LT5z
dGFydCgpIDwgc2Vjb25kLT5zdGFydCgpOwogfQogCiBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxl
VGV4dE5vZGUoKQogeworICAgIGlmIChtX2Z1bGx5Q2xpcHBlZFN0YWNrLnRvcCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBSZW5kZXJUZXh0KiByZW5kZXJlciA9IHRvUmVuZGVyVGV4
dChtX25vZGUtPnJlbmRlcmVyKCkpOwogICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyNSw3ICs0MjYs
NyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgIC8vIFVzZWQgd2hl
biB0ZXh0IGJveGVzIGFyZSBvdXQgb2Ygb3JkZXIgKEhlYnJldy9BcmFiaWMgdy8gZW1iZWRlZCBM
VFIgdGV4dCkKICAgICBpZiAocmVuZGVyZXItPmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpIHsKICAg
ICAgICAgbV9zb3J0ZWRUZXh0Qm94ZXMuY2xlYXIoKTsKLSAgICAgICAgZm9yIChJbmxpbmVUZXh0
Qm94ICogdGV4dEJveCA9IHJlbmRlcmVyLT5maXJzdFRleHRCb3goKTsgdGV4dEJveDsgdGV4dEJv
eCA9IHRleHRCb3gtPm5leHRUZXh0Qm94KCkpIHsKKyAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94
KiB0ZXh0Qm94ID0gcmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOyB0ZXh0Qm94OyB0ZXh0Qm94ID0g
dGV4dEJveC0+bmV4dFRleHRCb3goKSkgewogICAgICAgICAgICAgbV9zb3J0ZWRUZXh0Qm94ZXMu
YXBwZW5kKHRleHRCb3gpOwogICAgICAgICB9CiAgICAgICAgIHN0ZDo6c29ydChtX3NvcnRlZFRl
eHRCb3hlcy5iZWdpbigpLCBtX3NvcnRlZFRleHRCb3hlcy5lbmQoKSwgY29tcGFyZUJveFN0YXJ0
KTsgCkBAIC0zMzksNyArNDQwLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KCkKIAogdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQogeyAgICAKLSAgICBSZW5k
ZXJUZXh0ICpyZW5kZXJlciA9IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkpOworICAg
IFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVuZGVyZXIoKSk7
CiAgICAgU3RyaW5nIHN0ciA9IHJlbmRlcmVyLT50ZXh0KCk7CiAgICAgaW50IHN0YXJ0ID0gbV9v
ZmZzZXQ7CiAgICAgaW50IGVuZCA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gbV9lbmRP
ZmZzZXQgOiBJTlRfTUFYOwpAQCAtMzQ4LDcgKzQ0OSw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpo
YW5kbGVUZXh0Qm94KCkKICAgICAgICAgaW50IHJ1blN0YXJ0ID0gbWF4KHRleHRCb3hTdGFydCwg
c3RhcnQpOwogCiAgICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0
YXJ0IG9mIHRoaXMgcnVuLgotICAgICAgICBJbmxpbmVUZXh0Qm94ICpmaXJzdFRleHRCb3ggPSBy
ZW5kZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJveGVzWzBdIDog
cmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOworICAgICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRl
eHRCb3ggPSByZW5kZXJlci0+Y29udGFpbnNSZXZlcnNlZFRleHQoKSA/IG1fc29ydGVkVGV4dEJv
eGVzWzBdIDogcmVuZGVyZXItPmZpcnN0VGV4dEJveCgpOwogICAgICAgICBib29sIG5lZWRTcGFj
ZSA9IG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UKICAgICAgICAgICAgIHx8
IChtX3RleHRCb3ggPT0gZmlyc3RUZXh0Qm94ICYmIHRleHRCb3hTdGFydCA9PSBydW5TdGFydCAm
JiBydW5TdGFydCA+IDApOwogICAgICAgICBpZiAobmVlZFNwYWNlICYmICFpc0NvbGxhcHNpYmxl
V2hpdGVzcGFjZShtX2xhc3RDaGFyYWN0ZXIpICYmIG1fbGFzdENoYXJhY3RlcikgewpAQCAtMzY1
LDcgKzQ2Niw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAg
aW50IHJ1bkVuZCA9IG1pbih0ZXh0Qm94RW5kLCBlbmQpOwogICAgICAgICAKICAgICAgICAgLy8g
RGV0ZXJtaW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2lsbCBiZSwgYnV0IGRvbid0IGFkdmFu
Y2UgeWV0Ci0gICAgICAgIElubGluZVRleHRCb3ggKm5leHRUZXh0Qm94ID0gMDsKKyAgICAgICAg
SW5saW5lVGV4dEJveCogbmV4dFRleHRCb3ggPSAwOwogICAgICAgICBpZiAocmVuZGVyZXItPmNv
bnRhaW5zUmV2ZXJzZWRUZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChtX3NvcnRlZFRleHRCb3hl
c1Bvc2l0aW9uICsgMSA8IG1fc29ydGVkVGV4dEJveGVzLnNpemUoKSkKICAgICAgICAgICAgICAg
ICBuZXh0VGV4dEJveCA9IG1fc29ydGVkVGV4dEJveGVzW21fc29ydGVkVGV4dEJveGVzUG9zaXRp
b24gKyAxXTsKQEAgLTQxMSw2ICs1MTIsOSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dEJveCgpCiAKIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogewor
ICAgIGlmIChtX2Z1bGx5Q2xpcHBlZFN0YWNrLnRvcCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOwogICAg
IGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTQyMiw4ICs1MjYsOCBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFu
ZGxlUmVwbGFjZWRFbGVtZW50CiAKICAgICBpZiAobV9lbnRlclRleHRDb250cm9scyAmJiByZW5k
ZXJlci0+aXNUZXh0Q29udHJvbCgpKSB7CiAgICAgICAgIG1fbm9kZSA9IHRvUmVuZGVyVGV4dENv
bnRyb2wocmVuZGVyZXIpLT5pbm5lclRleHRFbGVtZW50KCk7CisgICAgICAgIHB1c2hGdWxseUNs
aXBwZWRTdGF0ZShtX2Z1bGx5Q2xpcHBlZFN0YWNrLCBtX25vZGUpOwogICAgICAgICBtX29mZnNl
dCA9IDA7Ci0gICAgICAgIG1faW5TaGFkb3dDb250ZW50ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtNjk4LDcgKzgwMiw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpl
eGl0Tm9kZSgpCiAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyAnLCBiYXNlTm9kZS0+cGFyZW50Tm9k
ZSgpLCBiYXNlTm9kZSwgMSwgMSk7CiB9CiAKLXZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFj
dGVyKFVDaGFyIGMsIE5vZGUgKnRleHROb2RlLCBOb2RlICpvZmZzZXRCYXNlTm9kZSwgaW50IHRl
eHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCit2b2lkIFRleHRJdGVyYXRvcjo6ZW1p
dENoYXJhY3RlcihVQ2hhciBjLCBOb2RlKiB0ZXh0Tm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUs
IGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KQogewogICAgIG1faGF2ZUVt
aXR0ZWQgPSB0cnVlOwogICAgIApAQCAtNzc4LDcgKzg4Miw3IEBAIFNpbXBsaWZpZWRCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWYKIHsKIH0KIAotU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcihjb25zdCBSYW5nZSAqcikK
K1NpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIpCiB7CiAgICAgbV9wb3NpdGlvbk5vZGUgPSAwOwogCkBA
IC04MDYsNiArOTEwLDcgQEAgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxp
ZgogICAgIH0KIAogICAgIG1fbm9kZSA9IGVuZE5vZGU7CisgICAgc2V0VXBGdWxseUNsaXBwZWRT
dGFjayhtX2Z1bGx5Q2xpcHBlZFN0YWNrLCBtX25vZGUpOyAgICAKICAgICBtX29mZnNldCA9IGVu
ZE9mZnNldDsKICAgICBtX2hhbmRsZWROb2RlID0gZmFsc2U7CiAgICAgbV9oYW5kbGVkQ2hpbGRy
ZW4gPSBlbmRPZmZzZXQgPT0gMDsKQEAgLTg0NSw3ICs5NTAsNyBAQCB2b2lkIFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkCiAgICAgd2hpbGUgKG1fbm9kZSAmJiBtX25vZGUgIT0g
bV9wYXN0U3RhcnROb2RlKSB7CiAgICAgICAgIC8vIERvbid0IGhhbmRsZSBub2RlIGlmIHdlIHN0
YXJ0IGl0ZXJhdGluZyBhdCBbbm9kZSwgMF0uCiAgICAgICAgIGlmICghbV9oYW5kbGVkTm9kZSAm
JiAhKG1fbm9kZSA9PSBtX2VuZE5vZGUgJiYgbV9lbmRPZmZzZXQgPT0gMCkpIHsKLSAgICAgICAg
ICAgIFJlbmRlck9iamVjdCAqcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCk7CisgICAgICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOwogICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1RleHQoKSAmJiBtX25vZGUtPm5vZGVU
eXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdo
YXQgYWJvdXQgQ0RBVEFfU0VDVElPTl9OT0RFPwogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJl
ci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgbV9vZmZzZXQgPiAwKQpAQCAt
ODc3LDkgKzk4MiwxMSBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFk
CiAgICAgICAgICAgICAvLyBFeGl0IGFsbCBvdGhlciBjb250YWluZXJzLgogICAgICAgICAgICAg
bmV4dCA9IG1fbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICB3aGlsZSAoIW5l
eHQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1fbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgICAg
ICAgICAgICAgIE5vZGUqIHBhcmVudE5vZGUgPSBwYXJlbnRPclNoYWRvd1BhcmVudChtX25vZGUp
OworICAgICAgICAgICAgICAgIGlmICghcGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgbV9ub2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7Cisg
ICAgICAgICAgICAgICAgbV9ub2RlID0gcGFyZW50Tm9kZTsKKyAgICAgICAgICAgICAgICBtX2Z1
bGx5Q2xpcHBlZFN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgIGV4aXROb2RlKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fcG9zaXRpb25Ob2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
aGFuZGxlZE5vZGUgPSB0cnVlOwpAQCAtODg4LDkgKzk5NSwxMiBAQCB2b2lkIFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG5leHQgPSBtX25vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbV9mdWxseUNsaXBwZWRTdGFjay5wb3AoKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgbV9ub2RlID0gbmV4dDsKKyAgICAgICAgaWYgKG1fbm9kZSkKKyAgICAgICAgICAg
IHB1c2hGdWxseUNsaXBwZWRTdGF0ZShtX2Z1bGx5Q2xpcHBlZFN0YWNrLCBtX25vZGUpOwogICAg
ICAgICBtX29mZnNldCA9IG1fbm9kZSA/IGNhcmV0TWF4T2Zmc2V0KG1fbm9kZSkgOiAwOwogICAg
ICAgICBtX2hhbmRsZWROb2RlID0gZmFsc2U7CiAgICAgICAgIG1faGFuZGxlZENoaWxkcmVuID0g
ZmFsc2U7CkBAIC05MDQsNyArMTAxNCw3IEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJ
dGVyYXRvcjo6aGEKIHsKICAgICBtX2xhc3RUZXh0Tm9kZSA9IG1fbm9kZTsKIAotICAgIFJlbmRl
clRleHQgKnJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KG1fbm9kZS0+cmVuZGVyZXIoKSk7CisgICAg
UmVuZGVyVGV4dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQobV9ub2RlLT5yZW5kZXJlcigpKTsK
ICAgICBTdHJpbmcgc3RyID0gcmVuZGVyZXItPnRleHQoKTsKIAogICAgIGlmICghcmVuZGVyZXIt
PmZpcnN0VGV4dEJveCgpICYmIHN0ci5sZW5ndGgoKSA+IDApCkBAIC05NjAsNyArMTA3MCw3IEBA
IHZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6ZXgKICAgICAgICAgZW1pdENo
YXJhY3RlcignXG4nLCBtX25vZGUsIDAsIDApOwogfQogCi12b2lkIFNpbXBsaWZpZWRCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYywgTm9kZSAqbm9kZSwgaW50IHN0
YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQordm9pZCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGMsIE5vZGUqIG5vZGUsIGludCBzdGFydE9mZnNl
dCwgaW50IGVuZE9mZnNldCkKIHsKICAgICBtX3NpbmdsZUNoYXJhY3RlckJ1ZmZlciA9IGM7CiAg
ICAgbV9wb3NpdGlvbk5vZGUgPSBub2RlOwpAQCAtOTg4LDcgKzEwOTgsNyBAQCBDaGFyYWN0ZXJJ
dGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoKQogewogfQogCi1DaGFyYWN0ZXJJdGVyYXRvcjo6
Q2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFuZ2UgKnIsIGJvb2wgZW1pdENoYXJhY3RlcnNCZXR3
ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucywgYm9vbCBlbnRlclRleHRDb250cm9scykKK0NoYXJhY3Rl
ckl0ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSogciwgYm9vbCBlbWl0Q2hh
cmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zLCBib29sIGVudGVyVGV4dENvbnRyb2xz
KQogICAgIDogbV9vZmZzZXQoMCkKICAgICAsIG1fcnVuT2Zmc2V0KDApCiAgICAgLCBtX2F0QnJl
YWsodHJ1ZSkKQEAgLTExNjcsMTUgKzEyNzcsMTcgQEAgdm9pZCBCYWNrd2FyZHNDaGFyYWN0ZXJJ
dGVyYXRvcjo6YWR2YW5jZQogLy8gLS0tLS0tLS0KIAogV29yZEF3YXJlSXRlcmF0b3I6OldvcmRB
d2FyZUl0ZXJhdG9yKCkKLTogbV9wcmV2aW91c1RleHQoMCksIG1fZGlkTG9va0FoZWFkKGZhbHNl
KQorICAgIDogbV9wcmV2aW91c1RleHQoMCkKKyAgICAsIG1fZGlkTG9va0FoZWFkKGZhbHNlKQog
ewogfQogCi1Xb3JkQXdhcmVJdGVyYXRvcjo6V29yZEF3YXJlSXRlcmF0b3IoY29uc3QgUmFuZ2Ug
KnIpCi06IG1fcHJldmlvdXNUZXh0KDApLCBtX2RpZExvb2tBaGVhZChmYWxzZSksIG1fdGV4dEl0
ZXJhdG9yKHIpCitXb3JkQXdhcmVJdGVyYXRvcjo6V29yZEF3YXJlSXRlcmF0b3IoY29uc3QgUmFu
Z2UqIHIpCisgICAgOiBtX3ByZXZpb3VzVGV4dCgwKQorICAgICwgbV9kaWRMb29rQWhlYWQodHJ1
ZSkgLy8gc28gd2UgY29uc2lkZXIgdGhlIGZpcnN0IGNodW5rIGZyb20gdGhlIHRleHQgaXRlcmF0
b3IKKyAgICAsIG1fdGV4dEl0ZXJhdG9yKHIpCiB7Ci0gICAgbV9kaWRMb29rQWhlYWQgPSB0cnVl
OyAgLy8gc28gd2UgY29uc2lkZXIgdGhlIGZpcnN0IGNodW5rIGZyb20gdGhlIHRleHQgaXRlcmF0
b3IKLSAgICBhZHZhbmNlKCk7ICAgICAgICAgICAgICAvLyBnZXQgaW4gcG9zaXRpb24gb3ZlciB0
aGUgZmlyc3QgY2h1bmsgb2YgdGV4dAorICAgIGFkdmFuY2UoKTsgLy8gZ2V0IGluIHBvc2l0aW9u
IG92ZXIgdGhlIGZpcnN0IGNodW5rIG9mIHRleHQKIH0KIAogLy8gV2UncmUgYWx3YXlzIGluIG9u
ZSBvZiB0aGVzZSBtb2RlczoKQEAgLTExODUsNyArMTI5Nyw3IEBAIFdvcmRBd2FyZUl0ZXJhdG9y
OjpXb3JkQXdhcmVJdGVyYXRvcihjb24KIC8vICAgICAgKHdlIGxvb2tlZCBhaGVhZCB0byB0aGUg
bmV4dCBjaHVuayBhbmQgZm91bmQgYSB3b3JkIGJvdW5kYXJ5KQogLy8gLSBXZSBidWlsdCB1cCBv
dXIgb3duIGNodW5rIG9mIHRleHQgZnJvbSBtYW55IGNodW5rcyBmcm9tIHRoZSB0ZXh0IGl0ZXJh
dG9yCiAKLS8vIEZJWE1FOiBQZXJmIGNvdWxkIGJlIGJhZCBmb3IgaHVnZSBzcGFucyBuZXh0IHRv
IGVhY2ggb3RoZXIgdGhhdCBkb24ndCBmYWxsIG9uIHdvcmQgYm91bmRhcmllcworLy8gRklYTUU6
IFBlcmZvcm1hbmNlIGNvdWxkIGJlIGJhZCBmb3IgaHVnZSBzcGFucyBuZXh0IHRvIGVhY2ggb3Ro
ZXIgdGhhdCBkb24ndCBmYWxsIG9uIHdvcmQgYm91bmRhcmllcy4KIAogdm9pZCBXb3JkQXdhcmVJ
dGVyYXRvcjo6YWR2YW5jZSgpCiB7CkBAIC0xNTA3LDcgKzE2MTksNyBAQCBzaXplX3QgU2VhcmNo
QnVmZmVyOjpsZW5ndGgoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1pbnQgVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChjb25zdCBSYW5nZSAqciwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRp
b24pCitpbnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25zdCBSYW5nZSogciwgYm9vbCBm
b3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCiB7CiAgICAgaW50IGxlbmd0aCA9IDA7CiAgICAgZm9y
IChUZXh0SXRlcmF0b3IgaXQociwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKTsgIWl0LmF0RW5k
KCk7IGl0LmFkdmFuY2UoKSkKQEAgLTE1MjIsNyArMTYzNCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UKICAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2UoZW50
aXJlUmFuZ2VJdGVyYXRvciwgY2hhcmFjdGVyT2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7CiB9CiAK
LVBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoRWxlbWVudCAqc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJv
b2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorUGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJh
dG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50KiBzY29wZSwgaW50IHJhbmdl
TG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24p
CiB7CiAgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHNjb3BlLT5kb2N1bWVudCgpLT5j
cmVhdGVSYW5nZSgpOwogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCShyZXZpc2lvbiA0NDY0
OSkKKysrIFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00OSw2ICs0OSwyMSBAQCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0
IFJhbmdlKik7CiBVQ2hhciogcGxhaW5UZXh0VG9NYWxsb2NBbGxvY2F0ZWRCdWZmZXIoY29uc3Qg
UmFuZ2UqLCB1bnNpZ25lZCYgYnVmZmVyTGVuZ3RoLCBib29sIGlzRGlzcGxheVN0cmluZyk7CiBQ
YXNzUmVmUHRyPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0IFJhbmdlKiwgY29uc3QgU3RyaW5n
JiwgYm9vbCBmb3J3YXJkLCBib29sIGNhc2VTZW5zaXRpdmUpOwogCitjbGFzcyBCaXRTdGFjayB7
CitwdWJsaWM6CisgICAgQml0U3RhY2soKTsKKworICAgIHZvaWQgcHVzaChib29sKTsKKyAgICB2
b2lkIHBvcCgpOworCisgICAgYm9vbCB0b3AoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBzaXplKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZlY3Rvcjx1bnNp
Z25lZCwgMT4gbV93b3JkczsKK307CisKIC8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIERPTSByYW5n
ZSwgcmV0dXJuaW5nIGFsbCB0aGUgdGV4dCwgYW5kIDAtbGVuZ3RoIGJvdW5kYXJpZXMKIC8vIGF0
IHBvaW50cyB3aGVyZSByZXBsYWNlZCBlbGVtZW50cyBicmVhayB1cCB0aGUgdGV4dCBmbG93LiAg
VGhlIHRleHQgY29tZXMgYmFjayBpbgogLy8gY2h1bmtzIHNvIGFzIHRvIG9wdGltaXplIGZvciBw
ZXJmb3JtYW5jZSBvZiB0aGUgaXRlcmF0aW9uLgpAQCAtODAsMjcgKzk1LDI3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICBib29sIGhhbmRsZU5vblRl
eHROb2RlKCk7CiAgICAgdm9pZCBoYW5kbGVUZXh0Qm94KCk7Ci0gICAgdm9pZCBlbWl0Q2hhcmFj
dGVyKFVDaGFyLCBOb2RlICp0ZXh0Tm9kZSwgTm9kZSAqb2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0
U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsKLSAgICB2b2lkIGVtaXRUZXh0KE5vZGUg
KnRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCk7CisgICAg
dm9pZCBlbWl0Q2hhcmFjdGVyKFVDaGFyLCBOb2RlKiB0ZXh0Tm9kZSwgTm9kZSogb2Zmc2V0QmFz
ZU5vZGUsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KTsKKyAgICB2b2lk
IGVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVu
ZE9mZnNldCk7CiAgICAgCiAgICAgLy8gQ3VycmVudCBwb3NpdGlvbiwgbm90IG5lY2Vzc2FyaWx5
IG9mIHRoZSB0ZXh0IGJlaW5nIHJldHVybmVkLCBidXQgcG9zaXRpb24KICAgICAvLyBhcyB3ZSB3
YWxrIHRocm91Z2ggdGhlIERPTSB0cmVlLgotICAgIE5vZGUgKm1fbm9kZTsKKyAgICBOb2RlKiBt
X25vZGU7CiAgICAgaW50IG1fb2Zmc2V0OwogICAgIGJvb2wgbV9oYW5kbGVkTm9kZTsKICAgICBi
b29sIG1faGFuZGxlZENoaWxkcmVuOwotICAgIGJvb2wgbV9pblNoYWRvd0NvbnRlbnQ7CisgICAg
Qml0U3RhY2sgbV9mdWxseUNsaXBwZWRTdGFjazsKICAgICAKICAgICAvLyBUaGUgcmFuZ2UuCi0g
ICAgTm9kZSAqbV9zdGFydENvbnRhaW5lcjsKKyAgICBOb2RlKiBtX3N0YXJ0Q29udGFpbmVyOwog
ICAgIGludCBtX3N0YXJ0T2Zmc2V0OwotICAgIE5vZGUgKm1fZW5kQ29udGFpbmVyOworICAgIE5v
ZGUqIG1fZW5kQ29udGFpbmVyOwogICAgIGludCBtX2VuZE9mZnNldDsKLSAgICBOb2RlICptX3Bh
c3RFbmROb2RlOworICAgIE5vZGUqIG1fcGFzdEVuZE5vZGU7CiAgICAgCiAgICAgLy8gVGhlIGN1
cnJlbnQgdGV4dCBhbmQgaXRzIHBvc2l0aW9uLCBpbiB0aGUgZm9ybSB0byBiZSByZXR1cm5lZCBm
cm9tIHRoZSBpdGVyYXRvci4KLSAgICBOb2RlICptX3Bvc2l0aW9uTm9kZTsKLSAgICBtdXRhYmxl
IE5vZGUgKm1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZTsKKyAgICBOb2RlKiBtX3Bvc2l0aW9uTm9k
ZTsKKyAgICBtdXRhYmxlIE5vZGUqIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZTsKICAgICBtdXRh
YmxlIGludCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQ7CiAgICAgbXV0YWJsZSBpbnQgbV9wb3NpdGlv
bkVuZE9mZnNldDsKICAgICBjb25zdCBVQ2hhciogbV90ZXh0Q2hhcmFjdGVyczsKQEAgLTEwOSwx
MCArMTI0LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gVXNlZCB3aGVuIHRoZXJlIGlzIHN0aWxsIHNv
bWUgcGVuZGluZyB0ZXh0IGZyb20gdGhlIGN1cnJlbnQgbm9kZTsgd2hlbiB0aGVzZQogICAgIC8v
IGFyZSBmYWxzZSBhbmQgMCwgd2UgZ28gYmFjayB0byBub3JtYWwgaXRlcmF0aW5nLgogICAgIGJv
b2wgbV9uZWVkQW5vdGhlck5ld2xpbmU7Ci0gICAgSW5saW5lVGV4dEJveCAqbV90ZXh0Qm94Owor
ICAgIElubGluZVRleHRCb3gqIG1fdGV4dEJveDsKICAgICAKICAgICAvLyBVc2VkIHRvIGRvIHRo
ZSB3aGl0ZXNwYWNlIGNvbGxhcHNpbmcgbG9naWMuCi0gICAgTm9kZSAqbV9sYXN0VGV4dE5vZGU7
ICAgIAorICAgIE5vZGUqIG1fbGFzdFRleHROb2RlOyAgICAKICAgICBib29sIG1fbGFzdFRleHRO
b2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2U7CiAgICAgVUNoYXIgbV9sYXN0Q2hhcmFjdGVyOwog
ICAgIApAQCAtMTM1LDEyICsxNTAsMTIgQEAgcHJpdmF0ZToKIH07CiAKIC8vIEl0ZXJhdGVzIHRo
cm91Z2ggdGhlIERPTSByYW5nZSwgcmV0dXJuaW5nIGFsbCB0aGUgdGV4dCwgYW5kIDAtbGVuZ3Ro
IGJvdW5kYXJpZXMKLS8vIGF0IHBvaW50cyB3aGVyZSByZXBsYWNlZCBlbGVtZW50cyBicmVhayB1
cCB0aGUgdGV4dCBmbG93LiAgVGhlIHRleHQgY29tZXMgYmFjayBpbgorLy8gYXQgcG9pbnRzIHdo
ZXJlIHJlcGxhY2VkIGVsZW1lbnRzIGJyZWFrIHVwIHRoZSB0ZXh0IGZsb3cuIFRoZSB0ZXh0IGNv
bWVzIGJhY2sgaW4KIC8vIGNodW5rcyBzbyBhcyB0byBvcHRpbWl6ZSBmb3IgcGVyZm9ybWFuY2Ug
b2YgdGhlIGl0ZXJhdGlvbi4KIGNsYXNzIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3Ig
ewogcHVibGljOgogICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoKTsKLSAgICBl
eHBsaWNpdCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlICopOwor
ICAgIGV4cGxpY2l0IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2Uq
KTsKICAgICAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fcG9zaXRpb25Ob2Rl
OyB9CiAgICAgdm9pZCBhZHZhbmNlKCk7CkBAIC0xNTUsNyArMTcwLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGhhbmRsZVRleHROb2RlKCk7CiAgICAgYm9vbCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQo
KTsKICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7Ci0gICAgdm9pZCBlbWl0Q2hhcmFjdGVy
KFVDaGFyLCBOb2RlICpOb2RlLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpOworICAg
IHZvaWQgZW1pdENoYXJhY3RlcihVQ2hhciwgTm9kZSosIGludCBzdGFydE9mZnNldCwgaW50IGVu
ZE9mZnNldCk7CiAgICAgCiAgICAgLy8gQ3VycmVudCBwb3NpdGlvbiwgbm90IG5lY2Vzc2FyaWx5
IG9mIHRoZSB0ZXh0IGJlaW5nIHJldHVybmVkLCBidXQgcG9zaXRpb24KICAgICAvLyBhcyB3ZSB3
YWxrIHRocm91Z2ggdGhlIERPTSB0cmVlLgpAQCAtMTYzLDcgKzE3OCw4IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fb2Zmc2V0OwogICAgIGJvb2wgbV9oYW5kbGVkTm9kZTsKICAgICBib29sIG1faGFu
ZGxlZENoaWxkcmVuOwotICAgIAorICAgIEJpdFN0YWNrIG1fZnVsbHlDbGlwcGVkU3RhY2s7CisK
ICAgICAvLyBFbmQgb2YgdGhlIHJhbmdlLgogICAgIE5vZGUqIG1fc3RhcnROb2RlOwogICAgIGlu
dCBtX3N0YXJ0T2Zmc2V0OwpAQCAtMTk0LDcgKzIxMCw3IEBAIHByaXZhdGU6CiBjbGFzcyBDaGFy
YWN0ZXJJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgQ2hhcmFjdGVySXRlcmF0b3IoKTsKLSAgICBl
eHBsaWNpdCBDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSogciwgYm9vbCBlbWl0Q2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zID0gZmFsc2UsIGJvb2wgZW50ZXJUZXh0Q29u
dHJvbHMgPSBmYWxzZSk7CisgICAgZXhwbGljaXQgQ2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFu
Z2UqLCBib29sIGVtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgPSBmYWxz
ZSwgYm9vbCBlbnRlclRleHRDb250cm9scyA9IGZhbHNlKTsKICAgICAKICAgICB2b2lkIGFkdmFu
Y2UoaW50IG51bUNoYXJhY3RlcnMpOwogICAgIApAQCAtMjQwLDcgKzI1Niw3IEBAIHByaXZhdGU6
CiBjbGFzcyBXb3JkQXdhcmVJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgV29yZEF3YXJlSXRlcmF0
b3IoKTsKLSAgICBleHBsaWNpdCBXb3JkQXdhcmVJdGVyYXRvcihjb25zdCBSYW5nZSAqcik7Cisg
ICAgZXhwbGljaXQgV29yZEF3YXJlSXRlcmF0b3IoY29uc3QgUmFuZ2UqKTsKIAogICAgIGJvb2wg
YXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9kaWRMb29rQWhlYWQgJiYgbV90ZXh0SXRlcmF0b3Iu
YXRFbmQoKTsgfQogICAgIHZvaWQgYWR2YW5jZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ2NDkp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBA
QAorMjAwOS0wNi0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDI2MzY0OiBTZWFyY2gg
Y2FuIGZpbmQgdGV4dCB0aGF0J3MgaGlkZGVuIGJ5IG92ZXJmbG93OmhpZGRlbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYzNjQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY5NTIwODE+CisKKyAgICAgICAgKiBmYXN0L3RleHQvZmluZC1oaWRkZW4t
dGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9maW5kLWhpZGRl
bi10ZXh0Lmh0bWw6IEFkZGVkLgorCisgICAgICAgICogZmFzdC9ibG9jay9mbG9hdC9jcmFzaC1y
ZXBsYWNlZC1kaXNwbGF5LWJsb2NrLWV4cGVjdGVkLnR4dDogUmVtb3ZlZCBhIHNwYWNlLgorICAg
ICAgICAqIGZhc3QvZG9tL1JhbmdlL2FjaWQzLXN1cnJvdW5kLWNvbnRlbnRzLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZCBhIGJsYW5rIGxpbmUuCisgICAgICAgICogZmFzdC9kb20vb2JqZWN0LWVtYmVk
LXBsdWdpbi1zY3JpcHRpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkIGZvdXIgc3BhY2VzLgorICAg
ICAgICAqIGZhc3QvcGFyc2VyL2JhZGVudGl0eS1leHBlY3RlZC50eHQ6IFJlbW92ZWQgYSBibGFu
ayBsaW5lLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tcG9zdGVy
LWZyb20tcmVtb3RlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZCBhIGJsYW5rIGxpbmUuCisKIDIwMDkt
MDYtMTIgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9i
bG9jay9mbG9hdC9jcmFzaC1yZXBsYWNlZC1kaXNwbGF5LWJsb2NrLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL2Zsb2F0L2NyYXNoLXJlcGxhY2VkLWRp
c3BsYXktYmxvY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0NDY0OSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvYmxvY2svZmxvYXQvY3Jhc2gtcmVwbGFjZWQtZGlzcGxheS1ibG9jay1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiBUaGlzIHRlc3RzIHJkYXI6Ly9wcm9i
bGVtLzY1NDUwOTUgQVNTRVJUSU9OIEZBSUxFRDogUmVuZGVyQmxvY2suaDo1MTk6ICFvIHx8IG8t
PmlzUmVuZGVyQmxvY2soKQogCi0gCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL29iamVj
dC1lbWJlZC1wbHVnaW4tc2NyaXB0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9vYmplY3QtZW1iZWQtcGx1Z2luLXNjcmlwdGluZy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDQ0NjQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vb2JqZWN0LWVtYmVk
LXBsdWdpbi1zY3JpcHRpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNCw0ICsx
NCw0IEBAIHBsdWdpbiA8ZW1iZWQ+IG5lc3RlZCBpbiBlbXB0eSA8b2JqZWN0PiAKIAogc3RhbmRh
bG9uZSBwbHVnaW4gPGVtYmVkPjogc2hvdWxkIGhhdmUgYSBwbHVnaW4gYW5kIGRvZXMKIAotICAg
ICAgICAKKyAgICAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL2FjaWQzLXN1cnJv
dW5kLWNvbnRlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9SYW5nZS9hY2lkMy1zdXJyb3VuZC1jb250ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDQ0NjQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvYWNpZDMtc3Vycm91bmQtY29u
dGVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsMyBAQAotCiBUaGUg
dGVzdCBiZWxvdyBzaG91bGQgcmVwb3J0IG5vIGZhaWx1cmVzLCBhbmQgc2hvdWxkIHNheSBQQVNT
IGF0IHRoZSBlbmQuCiAKIFBBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL2JhZGVu
dGl0eS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIv
YmFkZW50aXR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDQ2NDkpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3BhcnNlci9iYWRlbnRpdHktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQg
KzEsMyBAQAogVGVzdCBmb3IgYnVnIDEzNDk1OiBSRVBST0RVQ0lCTEUgQ1JBU0g6IFJlZmVyZW5j
aW5nIGFuIHVuZGVmaW5lZCBlbnRpdHkgaW4gYW4gWEhUTUwgZG9jdW1lbnQuCiAKLQogSWYgeW91
IGRvbid0IGNyYXNoLCB5b3UgcGFzcy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9maW5k
LWhpZGRlbi10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3RleHQvZmluZC1oaWRkZW4tdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvZmluZC1oaWRkZW4tdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEgQEAKK1NVQ0NFU1M6IEZvdW5kIGFsbCB0aGUgc3RyaW5ncyB3ZSBleHBl
Y3RlZCB0bywgYW5kIG5vbmUgd2UgZGlkIG5vdCBleHBlY3QgdG8uCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvZmluZC1oaWRkZW4tdGV4dC1leHBlY3RlZC50eHQK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2ZpbmQtaGlkZGVuLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvZmluZC1oaWRkZW4tdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZpbmQtaGlkZGVuLXRleHQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMDQgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
ZnVuY3Rpb24gY2FuRmluZCh0YXJnZXQsIHNwZWNpbWVuKQorICAgICAgICB7CisgICAgICAgICAg
ICBnZXRTZWxlY3Rpb24oKS5lbXB0eSgpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5l
ckhUTUwgPSBzcGVjaW1lbjsKKyAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJGaW5k
U3RyaW5nIiwgZmFsc2UsIHRhcmdldCk7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0U2Vs
ZWN0aW9uKCkucmFuZ2VDb3VudCAhPSAwOworICAgICAgICAgICAgZ2V0U2VsZWN0aW9uKCkuZW1w
dHkoKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB2
YXIgbWVzc2FnZXMgPSAiIjsKKworICAgICAgICBmdW5jdGlvbiB0ZXN0VGVzdFN0eWxlKGlzRXhw
ZWN0ZWRUb0ZpbmQsIHN0eWxlLCBvdXRlclN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgbWFya3VwID0gIjxkaXYgc3R5bGU9JyIgKyBzdHlsZSArICInPndvcmQ8L2Rpdj4iOworICAg
ICAgICAgICAgdmFyIHN0eWxlTWVzc2FnZSA9ICJzdHlsZWQgd2l0aCAiICsgc3R5bGU7CisKKyAg
ICAgICAgICAgIGlmIChvdXRlclN0eWxlKSB7CisgICAgICAgICAgICAgICAgbWFya3VwID0gIjxk
aXYgc3R5bGU9JyIgKyBvdXRlclN0eWxlICsgIic+IiArIG1hcmt1cCArICI8L2Rpdj4iOworICAg
ICAgICAgICAgICAgIHN0eWxlTWVzc2FnZSArPSAiIGluc2lkZSBhbiBlbGVtZW50IHN0eWxlZCB3
aXRoICIgKyBvdXRlclN0eWxlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2Fu
RmluZCgid29yZCIsIG1hcmt1cCkgPT0gaXNFeHBlY3RlZFRvRmluZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChpc0V4cGVjdGVkVG9GaW5kKQorICAgICAgICAg
ICAgICAgIG1lc3NhZ2VzICs9ICIgQ291bGQgbm90IGZpbmQiOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIG1lc3NhZ2VzICs9ICIgRm91bmQiOworICAgICAgICAgICAgbWVzc2Fn
ZXMgKz0gIiBhIHdvcmQgIiArIHN0eWxlTWVzc2FnZSArICIuIjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3ROb25IaWRkZW5UZXh0U3R5bGUoc3R5bGUsIG91dGVyU3R5bGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RUZXN0U3R5bGUodHJ1ZSwgc3R5bGUsIG91dGVyU3R5
bGUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEhpZGRlblRleHRTdHlsZShz
dHlsZSwgb3V0ZXJTdHlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFRlc3RTdHlsZShm
YWxzZSwgc3R5bGUsIG91dGVyU3R5bGUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
cnVuVGVzdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICAgICAgdGVzdE5vbkhpZGRlblRleHRTdHlsZSgiIik7CisKKyAgICAg
ICAgICAgIHRlc3RIaWRkZW5UZXh0U3R5bGUoImRpc3BsYXk6bm9uZSIpOworICAgICAgICAgICAg
dGVzdEhpZGRlblRleHRTdHlsZSgidmlzaWJpbGl0eTpoaWRkZW4iKTsKKworICAgICAgICAgICAg
dGVzdE5vbkhpZGRlblRleHRTdHlsZSgiaGVpZ2h0OjAiKTsKKworICAgICAgICAgICAgdGVzdEhp
ZGRlblRleHRTdHlsZSgiaGVpZ2h0OjA7IG92ZXJmbG93OmhpZGRlbiIpOworICAgICAgICAgICAg
dGVzdEhpZGRlblRleHRTdHlsZSgiaGVpZ2h0OjA7IG92ZXJmbG93OnNjcm9sbCIpOworICAgICAg
ICAgICAgdGVzdEhpZGRlblRleHRTdHlsZSgiaGVpZ2h0OjA7IG92ZXJmbG93OmF1dG8iKTsKKwor
ICAgICAgICAgICAgdGVzdEhpZGRlblRleHRTdHlsZSgid2lkdGg6MDsgb3ZlcmZsb3c6aGlkZGVu
Iik7CisgICAgICAgICAgICB0ZXN0SGlkZGVuVGV4dFN0eWxlKCJ3aWR0aDowOyBvdmVyZmxvdzpz
Y3JvbGwiKTsKKyAgICAgICAgICAgIHRlc3RIaWRkZW5UZXh0U3R5bGUoIndpZHRoOjA7IG92ZXJm
bG93OmF1dG8iKTsKKworICAgICAgICAgICAgdGVzdEhpZGRlblRleHRTdHlsZSgiaGVpZ2h0OjA7
IG92ZXJmbG93LXg6aGlkZGVuIik7CisgICAgICAgICAgICB0ZXN0SGlkZGVuVGV4dFN0eWxlKCJo
ZWlnaHQ6MDsgb3ZlcmZsb3cteDpzY3JvbGwiKTsKKyAgICAgICAgICAgIHRlc3RIaWRkZW5UZXh0
U3R5bGUoImhlaWdodDowOyBvdmVyZmxvdy14OmF1dG8iKTsKKworICAgICAgICAgICAgdGVzdEhp
ZGRlblRleHRTdHlsZSgid2lkdGg6MDsgb3ZlcmZsb3cteDpoaWRkZW4iKTsKKyAgICAgICAgICAg
IHRlc3RIaWRkZW5UZXh0U3R5bGUoIndpZHRoOjA7IG92ZXJmbG93LXg6c2Nyb2xsIik7CisgICAg
ICAgICAgICB0ZXN0SGlkZGVuVGV4dFN0eWxlKCJ3aWR0aDowOyBvdmVyZmxvdy14OmF1dG8iKTsK
KworICAgICAgICAgICAgdGVzdEhpZGRlblRleHRTdHlsZSgiaGVpZ2h0OjA7IG92ZXJmbG93LXk6
aGlkZGVuIik7CisgICAgICAgICAgICB0ZXN0SGlkZGVuVGV4dFN0eWxlKCJoZWlnaHQ6MDsgb3Zl
cmZsb3cteTpzY3JvbGwiKTsKKyAgICAgICAgICAgIHRlc3RIaWRkZW5UZXh0U3R5bGUoImhlaWdo
dDowOyBvdmVyZmxvdy15OmF1dG8iKTsKKworICAgICAgICAgICAgdGVzdEhpZGRlblRleHRTdHls
ZSgid2lkdGg6MDsgb3ZlcmZsb3cteTpoaWRkZW4iKTsKKyAgICAgICAgICAgIHRlc3RIaWRkZW5U
ZXh0U3R5bGUoIndpZHRoOjA7IG92ZXJmbG93LXk6c2Nyb2xsIik7CisgICAgICAgICAgICB0ZXN0
SGlkZGVuVGV4dFN0eWxlKCJ3aWR0aDowOyBvdmVyZmxvdy15OmF1dG8iKTsKKworICAgICAgICAg
ICAgdGVzdEhpZGRlblRleHRTdHlsZSgicG9zaXRpb246IHJlbGF0aXZlIiwgImhlaWdodDowOyBv
dmVyZmxvdzpoaWRkZW4iKTsKKyAgICAgICAgICAgIHRlc3RIaWRkZW5UZXh0U3R5bGUoInBvc2l0
aW9uOiByZWxhdGl2ZSIsICJoZWlnaHQ6MDsgb3ZlcmZsb3c6c2Nyb2xsIik7CisgICAgICAgICAg
ICB0ZXN0SGlkZGVuVGV4dFN0eWxlKCJwb3NpdGlvbjogcmVsYXRpdmUiLCAiaGVpZ2h0OjA7IG92
ZXJmbG93OmF1dG8iKTsKKworICAgICAgICAgICAgdGVzdE5vbkhpZGRlblRleHRTdHlsZSgicG9z
aXRpb246IGFic29sdXRlIiwgImhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW4iKTsKKyAgICAgICAg
ICAgIHRlc3ROb25IaWRkZW5UZXh0U3R5bGUoInBvc2l0aW9uOiBhYnNvbHV0ZSIsICJoZWlnaHQ6
MDsgb3ZlcmZsb3c6c2Nyb2xsIik7CisgICAgICAgICAgICB0ZXN0Tm9uSGlkZGVuVGV4dFN0eWxl
KCJwb3NpdGlvbjogYWJzb2x1dGUiLCAiaGVpZ2h0OjA7IG92ZXJmbG93OmF1dG8iKTsKKworICAg
ICAgICAgICAgdGVzdE5vbkhpZGRlblRleHRTdHlsZSgicG9zaXRpb246IGZpeGVkIiwgImhlaWdo
dDowOyBvdmVyZmxvdzpoaWRkZW4iKTsKKyAgICAgICAgICAgIHRlc3ROb25IaWRkZW5UZXh0U3R5
bGUoInBvc2l0aW9uOiBmaXhlZCIsICJoZWlnaHQ6MDsgb3ZlcmZsb3c6c2Nyb2xsIik7CisgICAg
ICAgICAgICB0ZXN0Tm9uSGlkZGVuVGV4dFN0eWxlKCJwb3NpdGlvbjogZml4ZWQiLCAiaGVpZ2h0
OjA7IG92ZXJmbG93OmF1dG8iKTsKKworICAgICAgICAgICAgaWYgKG1lc3NhZ2VzID09PSAiIikK
KyAgICAgICAgICAgICAgICBtZXNzYWdlcyA9ICJTVUNDRVNTOiBGb3VuZCBhbGwgdGhlIHN0cmlu
Z3Mgd2UgZXhwZWN0ZWQgdG8sIGFuZCBub25lIHdlIGRpZCBub3QgZXhwZWN0IHRvLiI7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWVzc2FnZXMgPSAiRkFJTFVSRToiICsgbWVz
c2FnZXM7CisKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gbWVzc2FnZXM7
CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dHMoKSI+PC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ZpbmQtaGlkZGVuLXRleHQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1l
LXR5cGUKICAgKyB0ZXh0L2h0bWwKTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tcG9zdGVyLWZy
b20tcmVtb3RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXBvc3Rlci1mcm9tLXJlbW90ZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDQ0NjQ5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9sb2Nh
bC12aWRlby1wb3N0ZXItZnJvbS1yZW1vdGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE5vdCBhbGxvd2VkIHRvIGxv
YWQgbG9jYWwgcmVzb3VyY2U6IGNvbXBhc3MuanBnCiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
Tm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogY29tcGFzcy5qcGcKLQogVGVzdCB0
aGF0IGEgcmVtb3RlIHZpZGVvIGVsZW1lbnQgY2FuIG5vdCB1c2UgYSBsb2NhbCBwb3N0ZXIKIAog
VGhpcyB0ZXN0IG9ubHkgd29ya3MgaW4gRFJUCg==
</data>
<flag name="review"
          id="15935"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>