<?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>49275</bug_id>
          
          <creation_ts>2010-11-09 13:38:35 -0800</creation_ts>
          <short_desc>Need WebKit2 mechanism for getting the visible page text</short_desc>
          <delta_ts>2010-11-09 14:27:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>306955</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-09 13:38:35 -0800</bug_when>
    <thetext>Need WebKit2 mechanism for getting the visible page text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306956</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-09 13:38:58 -0800</bug_when>
    <thetext>&lt;rdar://problem/8646928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306958</commentid>
    <comment_count>2</comment_count>
      <attachid>73408</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-09 13:46:45 -0800</bug_when>
    <thetext>Created attachment 73408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306965</commentid>
    <comment_count>3</comment_count>
      <attachid>73408</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-09 13:54:12 -0800</bug_when>
    <thetext>Comment on attachment 73408
Patch

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

&gt; WebKit2/UIProcess/WebPageProxy.cpp:74
&gt; +void invalidateCallbackMap(HashMap&lt;uint64_t, RefPtr&lt;T&gt; &gt;&amp; map)

Could just use T in this template in the places you use RefPtr&lt;T&gt;. Would read nicer and work just as well.

&gt; WebKit2/UIProcess/API/C/WKPage.cpp:333
&gt; +void WKPageGetContentsAsString(WKPageRef pageRef, void *context, WKPageGetContentsAsStringFunction callback)

Should be void* instead of void *.

&gt; WebKit2/WebProcess/WebPage/WebFrame.cpp:248
&gt; +            WebFrame* webFrame = static_cast&lt;WebFrameLoaderClient*&gt;(child-&gt;loader()-&gt;client())-&gt;webFrame();
&gt; +            builder.append(webFrame-&gt;contentsAsString());

Not sure this needs a local variable for webFrame.

&gt; WebKit2/WebProcess/WebPage/WebFrame.cpp:250
&gt; +            if (child-&gt;tree()-&gt;nextSibling())
&gt; +                builder.append(&apos; &apos;);

I would suggest:

    if (!builder.isEmpty())
        builder.append(&apos; &apos;);

at the start of the loop instead of this code at the end of the loop.

&gt; WebKit2/WebProcess/WebPage/WebFrame.cpp:254
&gt; +        
&gt; +        // FIXME: It may make sense to use toStringPreserveCapacity() here.
&gt; +        return builder.toString();

The blank line here makes the paragraphing a little strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306981</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-09 14:27:25 -0800</bug_when>
    <thetext>Landed in 71678.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73408</attachid>
            <date>2010-11-09 13:46:45 -0800</date>
            <delta_ts>2010-11-09 13:54:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchForCallback.diff</filename>
            <type>text/plain</type>
            <size>21264</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTY3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMTEtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIFdl
YktpdDIgbWVjaGFuaXNtIGZvciBnZXR0aW5nIHRoZSB2aXNpYmxlIHBhZ2UgdGV4dAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyNzUKKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOiBBZGQgbmVjZXNzYXJ5IGV4cG9ydHMuCisKIDIwMTAtMTEtMDkg
IENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKYW1lcyBSb2JpbnNvbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzE2MjcpCisrKyBXZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsOCArMjAwLDggQEAgX19aTjdX
ZWJDb3JlMTFIaXN0b3J5SXRlbUMxRVJLTjNXVEY2U3RyaQogX19aTjdXZWJDb3JlMTFIaXN0b3J5
SXRlbUMxRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFUzdfUzdfCiBfX1pON1dlYkNvcmUxMUhp
c3RvcnlJdGVtQzFFdgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbUQxRXYKLV9fWk43V2ViQ29y
ZTExTWVtb3J5Q2FjaGUxM2dldFN0YXRpc3RpY3NFdgogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNo
ZTExc2V0RGlzYWJsZWRFYgorX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTEzZ2V0U3RhdGlzdGlj
c0V2CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNzZXRDYXBhY2l0aWVzRWpqagogX19aTjdX
ZWJDb3JlMTFSZW5kZXJMYXllcjE5c2Nyb2xsUmVjdFRvVmlzaWJsZUVSS05TXzdJbnRSZWN0RWJS
S05TXzE1U2Nyb2xsQWxpZ25tZW50RVM2XwogX19aTjdXZWJDb3JlMTFnbG9iYWxQb2ludEVSSzhf
TlNQb2ludFA4TlNXaW5kb3cKQEAgLTQ3OSwxMCArNDc5LDEwIEBAIF9fWk43V2ViQ29yZTIwUmVz
b3VyY2VSZXNwb25zZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUyMFNwYWNlU3BsaXRTdHJpbmdEYXRh
MTJjcmVhdGVWZWN0b3JFdgogX19aTjdXZWJDb3JlMjBwcm90b2NvbElzSmF2YVNjcmlwdEVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyMTFpdGVtQXRJ
bmRleEVpCi1fX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQZW5kaW5n
UmVxdWVzdHNFTlMwXzhQcmlvcml0eUUKLV9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1
bGVyMjRzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQogX19aTjdXZWJD
b3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnQyNGRpc2FtYmlndWF0ZUtleURvd25FdmVudEVOUzBf
NFR5cGVFYgogX19aTjdXZWJDb3JlMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnRDMUVQN05TRXZlbnQK
K19fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjBzZXJ2ZVBlbmRpbmdSZXF1ZXN0
c0VOUzBfOFByaW9yaXR5RQorX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyNHNj
aGVkdWxlUGx1Z2luU3RyZWFtTG9hZEVQTlNfNUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyQ2xpZW50RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBfX1pON1dlYkNvcmUyMVNW
R0RvY3VtZW50RXh0ZW5zaW9uczIxc2FtcGxlQW5pbWF0aW9uQXRUaW1lRVJLTjNXVEY2U3RyaW5n
RVBOU18xNFNWR1NNSUxFbGVtZW50RWQKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZh
bHVlMTFkZXNlcmlhbGl6ZUVQSzE1T3BhcXVlSlNDb250ZXh0UFBLMTNPcGFxdWVKU1ZhbHVlCiBf
X1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUEsxNU9wYXF1ZUpTQ29u
dGV4dFBLMTNPcGFxdWVKU1ZhbHVlUFM2XwpAQCAtNjQ5LDYgKzY0OSw3IEBAIF9fWk43V2ViQ29y
ZTVGcmFtZTlzY2FsZVBhZ2VFZgogX19aTjdXZWJDb3JlNUZyYW1lRDFFdgogX19aTjdXZWJDb3Jl
NUltYWdlMTJzdXBwb3J0c1R5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU1SW1hZ2Uy
MGxvYWRQbGF0Zm9ybVJlc291cmNlRVBLYworX19aTjdXZWJDb3JlNVJhbmdlMTBzZWxlY3ROb2Rl
RVBOU180Tm9kZUVSaQogX19aTjdXZWJDb3JlNVJhbmdlNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0
cklOU184RG9jdW1lbnRFRUVOUzJfSU5TXzROb2RlRUVFaVM2X2kKIF9fWk43V2ViQ29yZTVSYW5n
ZTZzZXRFbmRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVpUmkKIF9fWk43V2ViQ29yZTVS
YW5nZThzZXRTdGFydEVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWlSaQpAQCAtOTAzLDYg
KzkwNCw3IEBAIF9fWk43V2ViQ29yZTljbG9zZUZpbGVFUmkKIF9fWk43V2ViQ29yZTlmb250Q2Fj
aGVFdgogX19aTjdXZWJDb3JlOW1ha2VSYW5nZUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRVMyXwog
X19aTjdXZWJDb3JlOXBhZ2VDYWNoZUV2CitfX1pON1dlYkNvcmU5cGxhaW5UZXh0RVBLTlNfNVJh
bmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFCiBfX1pON1dlYkNvcmU5dG9FbGVtZW50RU4z
SlNDN0pTVmFsdWVFCiBfX1pOSzNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3QxMmdsb2JhbE9iamVj
dEV2CiBfX1pOSzNXVEY2U3RyaW5nMTRjcmVhdGVDRlN0cmluZ0V2CkluZGV4OiBXZWJLaXQyL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzE2NzMp
CisrKyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisy
MDEwLTExLTA5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBXZWJLaXQyIG1lY2hhbmlzbSBm
b3IgZ2V0dGluZyB0aGUgdmlzaWJsZSBwYWdlIHRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mjc1CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmcpOgorICAg
ICAgICAoY2FsbENvbnRlbnRzQXNTdHJpbmdCbG9ja0Jsb2NrQW5kRGlzcG9zZSk6CisgICAgICAg
IChXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nX2IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaDoKKyAgICAgICAgQWRkIEdldENvbnRlbnRzQXNTdHJpbmcgY2FsbGJhY2sgZnVu
Y3Rpb24gZGVjbGFyYXRpb24gYW5kIGZvcndhcmRpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW52YWxpZGF0ZUNhbGxiYWNrTWFw
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkR2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgIEFkZCBHZXRDb250ZW50c0FzU3RyaW5nIGNhbGxiYWNrIGFu
ZCBnZW5lcmFsaXplIGludmFsaWRhdGluZyB0aGUgY2FsbGJhY2sKKyAgICAgICAgbWFwcyBpbnRv
IGEgc3RhbmRhbG9uZSBmdW5jdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCBEaWRHZXRDb250ZW50c0FzU3RyaW5nIHJldHVy
biBtZXNzYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICBHZXRzIHRoZSBzdHJpbmcg
Y29udGVudCBvZiBhbGwgdGhlIHN1YmZyYW1lcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZTo6aXNGcmFtZVNldCk6CisgICAgICAgIENhbGwgdGhyb3VnaCB0byB0aGUgZG9jdW1lbnQuCisK
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgRm9yd2FyZCB0byB0aGUgdGhlIG1haW4gZnJh
bWVzIGNvbnRlbnRzQXNTdHJpbmcgZnVuY3Rpb24uCisKKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBBZGQgR2V0Q29udGVudHNBc1N0
cmluZyBhbmQgY29sbGVjdCBhbGwgY2FsbGJhY2sgbWVzc2FnZXMgdG9nZXRoZXIuCisKIDIwMTAt
MTEtMDkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CShyZXZpc2lvbiA3MTY1NykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3Rh
dGljIFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyIHdlYlBhZ2VQcm94eUNvdW50ZXIoIldlYlBh
Z2VQcm94eSIpOwogI2VuZGlmCiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIGludmFsaWRh
dGVDYWxsYmFja01hcChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VD4gPiYgbWFwKQoreworICAg
IFZlY3RvcjxSZWZQdHI8VD4gPiBjYWxsYmFja3NWZWN0b3I7CisgICAgY29weVZhbHVlc1RvVmVj
dG9yKG1hcCwgY2FsbGJhY2tzVmVjdG9yKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IGNhbGxiYWNrc1ZlY3Rvci5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIGNhbGxiYWNr
c1ZlY3RvcltpXS0+aW52YWxpZGF0ZSgpOworICAgIG1hcC5jbGVhcigpOworfQorCiBQYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoV2ViUGFnZU5hbWVzcGFjZSog
cGFnZU5hbWVzcGFjZSwgdWludDY0X3QgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViUGFnZVByb3h5KHBhZ2VOYW1lc3BhY2UsIHBhZ2VJRCkpOwpAQCAtMjAyLDIzICsyMTIs
MTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX3BhZ2VUaXRsZSA9IFN0cmlu
ZygpOwogICAgIG1fdG9vbFRpcCA9IFN0cmluZygpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxTY3Jp
cHRSZXR1cm5WYWx1ZUNhbGxiYWNrPiA+IHNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzOwotICAg
IGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3NjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzLCBzY3JpcHRS
ZXR1cm5WYWx1ZUNhbGxiYWNrcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBzY3Jp
cHRSZXR1cm5WYWx1ZUNhbGxiYWNrcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHNj
cmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzW2ldLT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9zY3JpcHRS
ZXR1cm5WYWx1ZUNhbGxiYWNrcy5jbGVhcigpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrPiA+IHJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uQ2FsbGJhY2tzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3JlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzLCByZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbkNhbGxiYWNrcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSByZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzW2ld
LT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNh
bGxiYWNrcy5jbGVhcigpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxGcmFtZVNvdXJjZUNhbGxiYWNr
PiA+IGZyYW1lU291cmNlQ2FsbGJhY2tzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2ZyYW1l
U291cmNlQ2FsbGJhY2tzLCBmcmFtZVNvdXJjZUNhbGxiYWNrcyk7Ci0gICAgbV9mcmFtZVNvdXJj
ZUNhbGxiYWNrcy5jbGVhcigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZnJhbWVT
b3VyY2VDYWxsYmFja3Muc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBmcmFtZVNvdXJj
ZUNhbGxiYWNrc1tpXS0+aW52YWxpZGF0ZSgpOworICAgIGludmFsaWRhdGVDYWxsYmFja01hcCht
X2NvbnRlbnRzQXNTdHJpbmdDYWxsYmFja3MpOworICAgIGludmFsaWRhdGVDYWxsYmFja01hcCht
X2ZyYW1lU291cmNlQ2FsbGJhY2tzKTsKKyAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9yZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrcyk7CisgICAgaW52YWxpZGF0ZUNh
bGxiYWNrTWFwKG1fc2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja3MpOwogCiAgICAgVmVjdG9yPFdl
YkVkaXRDb21tYW5kUHJveHkqPiBlZGl0Q29tbWFuZFZlY3RvcjsKICAgICBjb3B5VG9WZWN0b3Io
bV9lZGl0Q29tbWFuZFNldCwgZWRpdENvbW1hbmRWZWN0b3IpOwpAQCAtNTg4LDYgKzU4NSwxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViCiAgICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJ
RCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
Q29udGVudHNBc1N0cmluZyhQYXNzUmVmUHRyPENvbnRlbnRzQXNTdHJpbmdDYWxsYmFjaz4gcHJw
Q2FsbGJhY2spCit7CisgICAgUmVmUHRyPENvbnRlbnRzQXNTdHJpbmdDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBwcnBDYWxsYmFjazsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBtX2NvbnRlbnRzQXNTdHJpbmdDYWxsYmFja3Muc2V0KGNhbGxiYWNr
SUQsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldENvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKK30KKwogdm9p
ZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKIHsKICAgICBpZiAoIWlzVmFs
aWQoKSkKQEAgLTEyMzUsNiArMTI0MCwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZUV2ZW50KHVpbnQzCiAgICAgbV91aUNsaWVudC5kaWROb3RIYW5kbGVLZXlFdmVudCh0aGlzLCBl
dmVudCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRDb250ZW50c0FzU3RyaW5nKGNv
bnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIFJl
ZlB0cjxDb250ZW50c0FzU3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrID0gbV9jb250ZW50c0FzU3Ry
aW5nQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykgeworICAg
ICAgICAvLyBGSVhNRTogTG9nIGVycm9yIG9yIGFzc2VydC4KKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0
U3RyaW5nLmltcGwoKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiByZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7CiAgICAgUmVmUHRyPFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s+IGNhbGxiYWNrID0g
bV9zY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwpAQCAtMTMxNSwy
MyArMTMzMSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICBt
X3BhZ2VUaXRsZSA9IFN0cmluZygpOwogICAgIG1fdG9vbFRpcCA9IFN0cmluZygpOwogCi0gICAg
VmVjdG9yPFJlZlB0cjxTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrPiA+IHNjcmlwdFJldHVyblZh
bHVlQ2FsbGJhY2tzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3NjcmlwdFJldHVyblZhbHVl
Q2FsbGJhY2tzLCBzY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrcyk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBzY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrcy5zaXplKCk7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIHNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzW2ldLT5pbnZhbGlkYXRl
KCk7Ci0gICAgbV9zY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrcy5jbGVhcigpOwotCi0gICAgVmVj
dG9yPFJlZlB0cjxSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrPiA+IHJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzOwotICAgIGNvcHlWYWx1ZXNU
b1ZlY3RvcihtX3JlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzLCByZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrcyk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSByZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uQ2FsbGJhY2tzW2ldLT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9yZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrcy5jbGVhcigpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxG
cmFtZVNvdXJjZUNhbGxiYWNrPiA+IGZyYW1lU291cmNlQ2FsbGJhY2tzOwotICAgIGNvcHlWYWx1
ZXNUb1ZlY3RvcihtX2ZyYW1lU291cmNlQ2FsbGJhY2tzLCBmcmFtZVNvdXJjZUNhbGxiYWNrcyk7
Ci0gICAgbV9mcmFtZVNvdXJjZUNhbGxiYWNrcy5jbGVhcigpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBzaXplID0gZnJhbWVTb3VyY2VDYWxsYmFja3Muc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICBmcmFtZVNvdXJjZUNhbGxiYWNrc1tpXS0+aW52YWxpZGF0ZSgpOworICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2NvbnRlbnRzQXNTdHJpbmdDYWxsYmFja3MpOworICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2ZyYW1lU291cmNlQ2FsbGJhY2tzKTsKKyAgICBpbnZhbGlkYXRl
Q2FsbGJhY2tNYXAobV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrcyk7
CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fc2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja3Mp
OwogCiAgICAgVmVjdG9yPFdlYkVkaXRDb21tYW5kUHJveHkqPiBlZGl0Q29tbWFuZFZlY3RvcjsK
ICAgICBjb3B5VG9WZWN0b3IobV9lZGl0Q29tbWFuZFNldCwgZWRpdENvbW1hbmRWZWN0b3IpOwpJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDcxNjU3KQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcg
QEAgc3RydWN0IFdlYlBvcHVwSXRlbTsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLU3RyaW5n
UmVmLCBTdHJpbmdJbXBsKj4gRnJhbWVTb3VyY2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPFdLU3RyaW5nUmVmLCBTdHJpbmdJbXBsKj4gUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25DYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLU3RyaW5nUmVmLCBT
dHJpbmdJbXBsKj4gU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPFdLU3RyaW5nUmVmLCBTdHJpbmdJbXBsKj4gQ29udGVudHNBc1N0cmluZ0NhbGxiYWNr
OwogCiBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKQEAg
LTIwMSw2ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrPik7
CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihQYXNzUmVmUHRy
PFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2s+KTsKICAgICB2b2lkIGdl
dFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBQYXNzUmVmUHRyPEZyYW1lU291cmNlQ2Fs
bGJhY2s+KTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoUGFzc1JlZlB0cjxDb250ZW50
c0FzU3RyaW5nQ2FsbGJhY2s+KTsKIAogICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24sIFdlYkZyYW1lUHJveHkqLCB1aW50NjRfdCBsaXN0ZW5lcklE
KTsKIApAQCAtMzQxLDYgKzM0Myw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBkaWRSZWNl
aXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKTsKIAorICAgIHZvaWQg
ZGlkR2V0Q29udGVudHNBc1N0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50NjRfdCk7CiAgICAgdm9p
ZCBkaWRSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgdWludDY0X3QpOwog
ICAgIHZvaWQgZGlkR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOwogICAgIHZvaWQgZGlkR2V0U291cmNlRm9yRnJhbWUoY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOwpAQCAtMzcwLDkgKzM3MywxMCBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPFdlYkluc3BlY3RvclByb3h5PiBtX2luc3BlY3RvcjsKIAotICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrPiA+IG1fc2NyaXB0UmV0dXJuVmFs
dWVDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2s+ID4gbV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbkNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q29udGVudHNB
c1N0cmluZ0NhbGxiYWNrPiA+IG1fY29udGVudHNBc1N0cmluZ0NhbGxiYWNrczsKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8RnJhbWVTb3VyY2VDYWxsYmFjaz4gPiBtX2ZyYW1lU291cmNl
Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxSZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrPiA+IG1fcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb25DYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNjcmlwdFJldHVy
blZhbHVlQ2FsbGJhY2s+ID4gbV9zY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrczsKIAogICAgIEhh
c2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDcxNjU3
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC05Miw2ICs5Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
V2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwg
V2ViS2l0OjpTdHJpbmdQYWlyVmVjdG9yIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkK
IAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMuCisgICAgRGlkR2V0Q29udGVudHNBc1N0cmluZyhX
VEY6OlN0cmluZyByZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGlkR2V0
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpTdHJpbmcgcmVzdWx0U3RyaW5n
LCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERpZEdldFNvdXJjZUZvckZyYW1lKFdURjo6U3Ry
aW5nIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBEaWRSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoV1RGOjpTdHJpbmcgcmVzdWx0U3RyaW5nLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA3MTY1NykK
KysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyOSwzICszMjksMjIgQEAgdm9pZCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZV9iKFdLUGFnZVJl
ZgogICAgIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lKHBhZ2VSZWYsIGZyYW1lUmVmLCBCbG9ja19j
b3B5KGJsb2NrKSwgY2FsbEdldFNvdXJjZUZvckZyYW1lQmxvY2tCbG9ja0FuZERpc3Bvc2UpOwog
fQogI2VuZGlmCisKK3ZvaWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZyhXS1BhZ2VSZWYgcGFn
ZVJlZiwgdm9pZCAqY29udGV4dCwgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZ0Z1bmN0aW9uIGNh
bGxiYWNrKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0Q29udGVudHNBc1N0cmluZyhDb250
ZW50c0FzU3RyaW5nQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworfQorCisj
aWZkZWYgX19CTE9DS1NfXworc3RhdGljIHZvaWQgY2FsbENvbnRlbnRzQXNTdHJpbmdCbG9ja0Js
b2NrQW5kRGlzcG9zZShXS1N0cmluZ1JlZiByZXN1bHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvciwg
dm9pZCogY29udGV4dCkKK3sKKyAgICBXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nQmxvY2sgYmxv
Y2sgPSAoV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZ0Jsb2NrKWNvbnRleHQ7CisgICAgYmxvY2so
cmVzdWx0VmFsdWUsIGVycm9yKTsKKyAgICBCbG9ja19yZWxlYXNlKGJsb2NrKTsKK30KKwordm9p
ZCBXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nX2IoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdl
dFNvdXJjZUZvckZyYW1lQmxvY2sgYmxvY2spCit7CisgICAgV0tQYWdlR2V0Q29udGVudHNBc1N0
cmluZyhwYWdlUmVmLCBCbG9ja19jb3B5KGJsb2NrKSwgY2FsbENvbnRlbnRzQXNTdHJpbmdCbG9j
a0Jsb2NrQW5kRGlzcG9zZSk7Cit9CisjZW5kaWYKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCShyZXZpc2lvbiA3MTY1NykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yODIsMTkgKzI4MiwyNiBAQCBXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQoV0tQCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENs
aWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlRmluZENsaWVudCogY2xpZW50KTsKIAog
dHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uKShXS1N0cmluZ1JlZiwg
V0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzY3JpcHQsIHZvaWQgKmNvbnRl
eHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIHNjcmlwdCwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGZ1
bmN0aW9uKTsKICNpZmRlZiBfX0JMT0NLU19fCiB0eXBlZGVmIHZvaWQgKF5XS1BhZ2VSdW5KYXZh
U2NyaXB0QmxvY2spKFdLU3RyaW5nUmVmLCBXS0Vycm9yUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9iKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiBzY3JpcHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRCbG9jayBibG9jayk7CiAjZW5kaWYKIAogdHlw
ZWRlZiB2b2lkICgqV0tQYWdlR2V0U291cmNlRm9yRnJhbWVGdW5jdGlvbikoV0tTdHJpbmdSZWYs
IFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZUdldFNvdXJjZUZvckZy
YW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCB2b2lkICpjb250ZXh0LCBXS1Bh
Z2VHZXRTb3VyY2VGb3JGcmFtZUZ1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdL
UGFnZUdldFNvdXJjZUZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCB2
b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZUZ1bmN0aW9uIGZ1bmN0aW9uKTsK
ICNpZmRlZiBfX0JMT0NLU19fCiB0eXBlZGVmIHZvaWQgKF5XS1BhZ2VHZXRTb3VyY2VGb3JGcmFt
ZUJsb2NrKShXS1N0cmluZ1JlZiwgV0tFcnJvclJlZik7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VH
ZXRTb3VyY2VGb3JGcmFtZV9iKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Bh
Z2VHZXRTb3VyY2VGb3JGcmFtZUJsb2NrIGJsb2NrKTsKICNlbmRpZgogCit0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nRnVuY3Rpb24pKFdLU3RyaW5nUmVmLCBXS0Vycm9y
UmVmLCB2b2lkKik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKFdL
UGFnZVJlZiBwYWdlLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nRnVu
Y3Rpb24gZnVuY3Rpb24pOworI2lmZGVmIF9fQkxPQ0tTX18KK3R5cGVkZWYgdm9pZCAoXldLUGFn
ZUdldENvbnRlbnRzQXNTdHJpbmdCbG9jaykoV0tTdHJpbmdSZWYsIFdLRXJyb3JSZWYpOworV0tf
RVhQT1JUIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc1N0cmluZ19iKFdLUGFnZVJlZiBwYWdlLCBX
S1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nQmxvY2sgYmxvY2spOworI2VuZGlmCisKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCShyZXZpc2lvbiA3MTY1NykKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsOSBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvSlNSYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJh
dG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0UmVzb3VyY2VEZWNvZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTIzNCw2ICsyMzYsNTMgQEAgU3RyaW5n
IFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdCAKICAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2Rpbmco
KS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXpl
KCkpOwogfQogCitTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKK3sK
KyAgICBpZiAoIW1fY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBp
ZiAoaXNGcmFtZVNldCgpKSB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAg
ICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2NvcmVGcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
ICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50
Kj4oY2hpbGQtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCh3ZWJGcmFtZS0+Y29udGVudHNBc1N0cmluZygpKTsKKyAgICAgICAgICAg
IGlmIChjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEZJWE1FOiBJ
dCBtYXkgbWFrZSBzZW5zZSB0byB1c2UgdG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkgaGVyZS4K
KyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gZG9jdW1l
bnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZG9jdW1l
bnRFbGVtZW50KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gZG9jdW1lbnQtPmNyZWF0ZVJhbmdlKCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICByYW5nZS0+c2VsZWN0Tm9kZShkb2N1bWVudEVsZW1lbnQuZ2V0KCksIGVjKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBwbGFp
blRleHQocmFuZ2UuZ2V0KCkpOworfQorCitib29sIFdlYkZyYW1lOjppc0ZyYW1lU2V0KCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAo
IWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGRvY3VtZW50LT5p
c0ZyYW1lU2V0KCk7Cit9CisKIGJvb2wgV2ViRnJhbWU6OmlzTWFpbkZyYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoV2ViUGFnZSogcCA9IHBhZ2UoKSkKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuaAkocmV2aXNpb24gNzE2NTcpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CiAKICAgICBTdHJpbmcgc291cmNlKCkgY29uc3Q7CisgICAgU3RyaW5nIGNvbnRlbnRzQXNTdHJp
bmcoKSBjb25zdDsKIAogICAgIC8vIFdLQnVuZGxlRnJhbWUgQVBJIGFuZCBTUEkgZnVuY3Rpb25z
CiAgICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0OwpAQCAtMTE2LDYgKzExNyw4IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0K
IAorICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0OworCiAgICAgV2ViQ29yZTo6RnJhbWUqIG1f
Y29yZUZyYW1lOwogCiAgICAgdWludDY0X3QgbV9wb2xpY3lMaXN0ZW5lcklEOwpJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDcxNjU3KQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
Nyw2ICs3NTcsMTIgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoYwog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OmdldENv
bnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBTdHJpbmcgcmVzdWx0
U3RyaW5nID0gbV9tYWluRnJhbWUtPmNvbnRlbnRzQXNTdHJpbmcoKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZEdldENvbnRlbnRzQXNTdHJpbmcocmVzdWx0U3RyaW5nLCBj
YWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3Ry
aW5nID0gcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDcxNjU3KQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsOSArMjMzLDEx
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB2b2lkIHRvdWNoRXZl
bnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwogI2VuZGlmCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisKKyAgICB2
b2lkIGdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBn
ZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsK
ICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5n
ZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgdm9pZCBwbGF0Zm9ybVByZWZlcmVu
Y2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gNzE2
NTcpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMyArNDUsMTQgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAK
ICAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQog
CisgICAgIyBDYWxsYmFja3MuCiAgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24odWludDY0X3QgY2FsbGJhY2tJRCkKLQorICAgIEdldENvbnRlbnRzQXNTdHJpbmcodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBHZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEY6OlN0
cmluZyBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBQcmVmZXJlbmNlc0RpZENo
YW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCiAKLSAgICBSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoV1RGOjpTdHJpbmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lEKQor
ICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9y
ZSkKIAogICAgIFNldEN1c3RvbVVzZXJBZ2VudChXVEY6OlN0cmluZyBjdXN0b21Vc2VyQWdlbnQp
CiAK
</data>
<flag name="review"
          id="63837"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>