<?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>6341</bug_id>
          
          <creation_ts>2006-01-02 20:18:34 -0800</creation_ts>
          <short_desc>Move frame traversal logic from WebFrame to WebBridge</short_desc>
          <delta_ts>2006-01-02 21:13:29 -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>WebKit API</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>27535</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-02 20:18:34 -0800</bug_when>
    <thetext>Now that frame traversal is cleanly factored out, it should be moved over to WebBridge. This lays the 
groundwork to start moving code en masse over the bridge into WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27536</commentid>
    <comment_count>1</comment_count>
      <attachid>5434</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-02 20:21:07 -0800</bug_when>
    <thetext>Created attachment 5434
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27544</commentid>
    <comment_count>2</comment_count>
      <attachid>5434</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-02 20:55:26 -0800</bug_when>
    <thetext>Comment on attachment 5434
the patch

Looks sane to me.

I saw one tab in:
+- (WebBridge *)traverseNextFrameStayWithin:(WebBridge *)stayWithin

Also, incidentally, I hate variable names like &quot;fv&quot; if you share my hatred you
could consider making those more legible as you update/move that code.

Finally I asked you over IRC if there were any leaks... which it seems there
were not.

r=me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5434</attachid>
            <date>2006-01-02 20:21:07 -0800</date>
            <delta_ts>2006-01-02 20:55:26 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>frame-traversal-on-bridge.patch.txt</filename>
            <type>text/plain</type>
            <size>20345</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L0No
YW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNDM3CmRpZmYgLXUgLXAgLXIxLjM0Mzcg
Q2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMzAgRGVjIDIwMDUgMjI6MTc6MDYgLTAwMDAJMS4zNDM3
CisrKyBDaGFuZ2VMb2cJMyBKYW4gMjAwNiAwNDoyMDo1MCAtMDAwMApAQCAtMSwzICsxLDYyIEBA
CisyMDA2LTAxLTAyICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwktIG1vdmVkIGZyYW1lIHRyYXZlcnNh
bCBsb2dpYyBmcm9tIFdlYkZyYW1lIHRvIFdlYkJyaWRnZQorCWh0dHA6Ly9idWd6aWxsYS5vcGVu
ZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0MQorCisJVG8gZG8gdGhpcywgSSBoYWQgdG8g
aW52ZXJ0IHRoZSBvd25lcnNoaXAgc28gdGhhdCBXZWJCcmlkZ2Ugbm93CisJb3ducyBXZWJGcmFt
ZSBpbnN0ZWFkIG9mIHZpY2UgdmVyc2EuIEFzIGEgcmVzdWx0LCBXZWJWaWV3IG5vdyBvd25zCisJ
YSBXZWJCcmlkZ2UgcG9pbnRlciBhbmQgZG9lcyBub3QgaGF2ZSBhIGRpcmVjdCBXZWJGcmFtZSBw
b2ludGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJCcmlkZ2UuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkJyaWRnZS5tOgorICAgICAgICAo
LVtXZWJCcmlkZ2UgaW5pdFdpdGhGcmFtZU5hbWU6dmlldzpdKTogVGhlIGluaXRpYWxpemVyIGlz
IG5vdyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcKKwl0aGUgZnJhbWUsIHNvIHBhc3MgaXQgd2hh
dCBpdCBuZWVkcyB0byBkbyB0aGF0LgorICAgICAgICAoLVtXZWJCcmlkZ2UgZGVhbGxvY10pOiBU
aGUgYnJpZGdlIG5vdyBvd25zIHRoZSBmcmFtZSwgc28gcmVsZWFzZSBpdC4KKyAgICAgICAgKC1b
V2ViQnJpZGdlIGNsb3NlXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkJyaWRnZSBmaXJzdENoaWxk
XSk6IE1vdmVkIGZyb20gV2ViRnJhbWUKKyAgICAgICAgKC1bV2ViQnJpZGdlIGxhc3RDaGlsZF0p
OiBkaXR0bworICAgICAgICAoLVtXZWJCcmlkZ2UgY2hpbGRDb3VudF0pOiBkaXR0bworICAgICAg
ICAoLVtXZWJCcmlkZ2UgcHJldmlvdXNTaWJsaW5nXSk6IGRpdHRvCisgICAgICAgICgtW1dlYkJy
aWRnZSBuZXh0U2libGluZ10pOiBkaXR0bworICAgICAgICAoLVtXZWJCcmlkZ2UgaXNEZXNjZW5k
YW50T2ZGcmFtZTpdKTogZGl0dG8KKyAgICAgICAgKC1bV2ViQnJpZGdlIHRyYXZlcnNlTmV4dEZy
YW1lU3RheVdpdGhpbjpdKTogZGl0dG8KKyAgICAgICAgKC1bV2ViQnJpZGdlIGFwcGVuZENoaWxk
Ol0pOiBkaXR0bworICAgICAgICAoLVtXZWJCcmlkZ2UgcmVtb3ZlQ2hpbGQ6XSk6IGRpdHRvCisg
ICAgICAgICogV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lLm06CisgICAgICAgICgtW1dlYkZyYW1l
IF9yZW1vdmVDaGlsZDo6XSk6IENhbGwgV2ViQnJpZGdlIHZlcnNpb24KKyAgICAgICAgKC1bV2Vi
RnJhbWVQcml2YXRlIGRlYWxsb2NdKTogZGl0dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX2ZpcnN0
Q2hpbGRGcmFtZV0pOiBkaXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfbGFzdENoaWxkRnJhbWVd
KTogZGl0dG8KKyAgICAgICAgKC1bV2ViRnJhbWUgX2NoaWxkRnJhbWVDb3VudF0pOiBkaXR0bwor
ICAgICAgICAoLVtXZWJGcmFtZSBfcHJldmlvdXNTaWJsaW5nRnJhbWVdKTogZGl0dG8KKyAgICAg
ICAgKC1bV2ViRnJhbWUgX25leHRTaWJsaW5nRnJhbWVdKTogZGl0dG8KKyAgICAgICAgKC1bV2Vi
RnJhbWUgX3RyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjpdKTogZGl0dG8KKyAgICAgICAgKC1b
V2ViRnJhbWUgX2FwcGVuZENoaWxkOl0pOiBkaXR0bworICAgICAgICAoLVtXZWJGcmFtZSBfcmVt
b3ZlQ2hpbGQ6XSk6IGRpdHRvCisgICAgICAgICgtW1dlYkZyYW1lIF9pc0Rlc2NlbmRhbnRPZkZy
YW1lOl0pOiBkaXR0bywKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RldGFjaEZyb21QYXJlbnRdKTog
cmVvcmRlciBhIGJpdCB0byBhdm9pZCBsb3Npbmcgb3VyIGJyaWRnZQorCXBvaW50ZXIgYmVmb3Jl
IHRoZSBicmlkZ2UgaXMgZHVlIHRvIHJlbGVhc2UgdXMsIGFuZCBkb24ndCByZWxlYXNlIHRoZQor
CWJyaWRnZSBhbnkgbW9yZSBzaW5jZSBpdCBub3cgb3ducyB1cworICAgICAgICAoLVtXZWJGcmFt
ZSBfaW5pdFdpdGhOYW1lOndlYkZyYW1lVmlldzp3ZWJWaWV3OmJyaWRnZTpdKTogbmV3IGluaXRp
YWxpemVyLAorCXdlIG5vIGxvbmdlciBjcmVhdGUgdGhlIGJyaWRnZSwgaW5zdGVhZCBpdCBpcyBw
YXNzZWQgaW4KKyAgICAgICAgKC1bV2ViRnJhbWUgaW5pdFdpdGhOYW1lOndlYkZyYW1lVmlldzp3
ZWJWaWV3Ol0pOiBDYWxsIHRoZSBuZXcgZGVzaWduYXRlZAorCWluaXRpYWxpemVyLCBidXQgdGhp
cyBtZXRob2QgaXMgbm8gbG9uZ2VyIHZpYWJsZSBhbmQgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisg
ICAgICAgICogV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lSW50ZXJuYWwuaDoKKyAgICAgICAgCisJ
KiBXZWJWaWV3LnN1YnByb2ovV2ViVmlldy5tOiBXZWJWaWV3IHdhcyBjaGFuZ2VkIHRvIGhvbGQg
b250bworCXRoZSBXZWJCcmlkZ2UgZm9yIHRoZSBtYWluIGZyYW1lIGluc3RlYWQgb2YgdGhlIFdl
YkZyYW1lLgorCQorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBkZWFsbG9jXSk6IHVwZGF0ZSBm
b3IgdGhlIGZhY3QgdGhhdCB3ZSBob2xkCisJYSBicmlkZ2Ugbm93LCBub3QgYSBmcmFtZS4KKyAg
ICAgICAgKC1bV2ViVmlldyBfY2xvc2VdKTogZGl0dG8KKyAgICAgICAgKC1bV2ViVmlldyBfY3Jl
YXRlRnJhbWVOYW1lZDppblBhcmVudDphbGxvd3NTY3JvbGxpbmc6XSk6IENyZWF0ZQorCWEgYnJp
ZGdlLCBub3QgYSBmcmFtZS4KKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKTogZGl0dG8uCisgICAgICAgICgtW1dlYlZpZXcg
c2V0RGVmZXJzQ2FsbGJhY2tzOl0pOiBnZXQgbWFpbkZyYW1lIHZpYSBtZXRob2QKKyAgICAgICAg
KC1bV2ViVmlldyBtYWluRnJhbWVdKTogVXBkYXRlIHRvIGdldCB0aGUgbWFpbiBmcmFtZSBwcm9w
ZXJseQorCiAyMDA1LTEyLTMwICBNaXR6IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0
ZWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluLCBsYW5kZWQgYnkgYXAuCkluZGV4
OiBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJCcmlkZ2UuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4zMApkaWZmIC11IC1wIC1yMS4zMCBXZWJDb3JlU3VwcG9ydC5z
dWJwcm9qL1dlYkJyaWRnZS5oCi0tLSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkJyaWRnZS5o
CTI2IERlYyAyMDA1IDIxOjQ2OjI2IC0wMDAwCTEuMzAKKysrIFdlYkNvcmVTdXBwb3J0LnN1YnBy
b2ovV2ViQnJpZGdlLmgJMyBKYW4gMjAwNiAwNDoyMDo1MCAtMDAwMApAQCAtMzQsNyArMzQsMTAg
QEAKIAogQGludGVyZmFjZSBXZWJCcmlkZ2UgOiBXZWJDb3JlQnJpZGdlIDxXZWJDb3JlQnJpZGdl
PgogewotICAgIFdlYkJyaWRnZSAqX3BhcmVudEJyaWRnZTsKKyAgICBXZWJCcmlkZ2UgKl9uZXh0
U2libGluZzsKKyAgICBXZWJCcmlkZ2UgKl9wcmV2aW91c1NpYmxpbmc7CisgICAgTlNNdXRhYmxl
QXJyYXkgKl9jaGlsZHJlbjsKKwogICAgIFdlYkZyYW1lICpfZnJhbWU7CiAgICAgV2ViQ29yZUtl
eWJvYXJkVUlNb2RlIF9rZXlib2FyZFVJTW9kZTsKICAgICBCT09MIF9rZXlib2FyZFVJTW9kZUFj
Y2Vzc2VkOwpAQCAtNDUsNyArNDgsNyBAQAogICAgIE5TRGljdGlvbmFyeSAqbGFzdERhc2hib2Fy
ZFJlZ2lvbnM7CiB9CiAKLS0gKGlkKWluaXRXaXRoV2ViRnJhbWU6KFdlYkZyYW1lICopd2ViRnJh
bWU7CistIChpZClpbml0V2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKiluYW1lIHZpZXc6KFdlYkZy
YW1lVmlldyAqKXZpZXcgOwogLSAodm9pZCljbG9zZTsKIAogLSAodm9pZClyZWNlaXZlZERhdGE6
KE5TRGF0YSAqKWRhdGEgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKil0ZXh0RW5jb2RpbmdO
YW1lOwpAQCAtNTQsNCArNTcsMTcgQEAKIAogLSAoV2ViRnJhbWUgKil3ZWJGcmFtZTsKIAorLSAo
V2ViQnJpZGdlICopZmlyc3RDaGlsZDsKKy0gKFdlYkJyaWRnZSAqKWxhc3RDaGlsZDsKKy0gKFdl
YkJyaWRnZSAqKXByZXZpb3VzU2libGluZzsKKy0gKFdlYkJyaWRnZSAqKW5leHRTaWJsaW5nOwor
CistICh2b2lkKWFwcGVuZENoaWxkOihXZWJCcmlkZ2UgKiljaGlsZDsKKy0gKHZvaWQpcmVtb3Zl
Q2hpbGQ6KFdlYkJyaWRnZSAqKWNoaWxkOworCistICh1bnNpZ25lZCljaGlsZENvdW50OworLSAo
Qk9PTClpc0Rlc2NlbmRhbnRPZkZyYW1lOihXZWJCcmlkZ2UgKilhbmNlc3RvcjsKKy0gKFdlYkJy
aWRnZSAqKXRyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjooV2ViQnJpZGdlICopc3RheVdpdGhp
bjsKKworCiBAZW5kCkluZGV4OiBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkJyaWRnZS5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJv
ai9XZWJCcmlkZ2UubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zODIKZGlmZiAtdSAtcCAtcjEu
MzgyIFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViQnJpZGdlLm0KLS0tIFdlYkNvcmVTdXBwb3J0
LnN1YnByb2ovV2ViQnJpZGdlLm0JMzAgRGVjIDIwMDUgMDU6MTE6NDUgLTAwMDAJMS4zODIKKysr
IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViQnJpZGdlLm0JMyBKYW4gMjAwNiAwNDoyMDo1MCAt
MDAwMApAQCAtMTE1LDIwICsxMTUsMTcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktl
eSA9ICAgQCJXZQogCiBAaW1wbGVtZW50YXRpb24gV2ViQnJpZGdlCiAKLS0gKGlkKWluaXRXaXRo
V2ViRnJhbWU6KFdlYkZyYW1lICopd2ViRnJhbWUKKy0gKGlkKWluaXRXaXRoRnJhbWVOYW1lOihO
U1N0cmluZyAqKW5hbWUgdmlldzooV2ViRnJhbWVWaWV3ICopdmlldyAKIHsKICAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwogCiAgICAgKytXZWJCcmlkZ2VDb3VudDsKICAgICAKLSAgICBXZWJWaWV3
ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwotICAgIAotICAgIC8vIE5vbi1yZXRhaW5l
ZCBiZWNhdXNlIGRhdGEgc291cmNlIG93bnMgcmVwcmVzZW50YXRpb24gb3ducyBicmlkZ2UuCi0g
ICAgLy8gQnV0IFdlYkZyYW1lIHdpbGwgY2FsbCBjbG9zZSBvbiB1cyBiZWZvcmUgaXQgZ29lcyBh
d2F5LCB3aGljaAotICAgIC8vIGd1YXJhbnRlZXMgd2Ugd2lsbCBub3QgaGF2ZSBhIHN0YWxlIHJl
ZmVyZW5jZS4KLSAgICBfZnJhbWUgPSB3ZWJGcmFtZTsKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0g
W3ZpZXcgX3dlYlZpZXddOworCisgICAgX2ZyYW1lID0gW1tXZWJGcmFtZSBhbGxvY10gX2luaXRX
aXRoTmFtZTpuYW1lIHdlYkZyYW1lVmlldzp2aWV3IHdlYlZpZXc6d2ViVmlldyBicmlkZ2U6c2Vs
Zl07CiAKLSAgICBbc2VsZiBzZXROYW1lOlt3ZWJGcmFtZSBuYW1lXV07CisgICAgW3NlbGYgc2V0
TmFtZTpbX2ZyYW1lIG5hbWVdXTsKICAgICBbc2VsZiBpbml0aWFsaXplU2V0dGluZ3M6W3dlYlZp
ZXcgX3NldHRpbmdzXV07CiAgICAgW3NlbGYgc2V0VGV4dFNpemVNdWx0aXBsaWVyOlt3ZWJWaWV3
IHRleHRTaXplTXVsdGlwbGllcl1dOwogCkBAIC0xNTIsNiArMTQ5LDggQEAgTlNTdHJpbmcgKldl
YlBsdWdpbkNvbnRhaW5lcktleSA9ICAgQCJXZQogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW2xh
c3REYXNoYm9hcmRSZWdpb25zIHJlbGVhc2VdOworICAgIFtfZnJhbWUgcmVsZWFzZV07CisgICAg
W19jaGlsZHJlbiByZWxlYXNlXTsKICAgICAKICAgICBbc2VsZiBmaW5pXTsKICAgICBbc3VwZXIg
ZGVhbGxvY107CkBAIC02NDEsNiArNjQwLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5l
cktleSA9ICAgQCJXZQogCiAtICh2b2lkKWNsb3NlCiB7CisgICAgW19mcmFtZSByZWxlYXNlXTsK
ICAgICBfZnJhbWUgPSBuaWw7CiB9CiAKQEAgLTE3MjYsNCArMTcyNiwxMDMgQEAgc3RhdGljIE5T
Q2hhcmFjdGVyU2V0ICpfZ2V0UG9zdFNtYXJ0U2V0KAogICAgIFtfZnJhbWUgX2hhbmRsZWRPbmxv
YWRFdmVudHNdOwogfQogCistIChXZWJCcmlkZ2UgKilmaXJzdENoaWxkCit7CisgICAgaWYgKCFb
X2NoaWxkcmVuIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBbX2No
aWxkcmVuIG9iamVjdEF0SW5kZXg6MF07Cit9CisKKy0gKFdlYkJyaWRnZSAqKWxhc3RDaGlsZAor
eworICAgIHJldHVybiBbX2NoaWxkcmVuIGxhc3RPYmplY3RdOworfQorCistICh1bnNpZ25lZClj
aGlsZENvdW50Cit7CisgICAgcmV0dXJuIFtfY2hpbGRyZW4gY291bnRdOworfQorCistIChXZWJC
cmlkZ2UgKilwcmV2aW91c1NpYmxpbmc7Cit7CisgICAgcmV0dXJuIF9wcmV2aW91c1NpYmxpbmc7
Cit9CisKKy0gKFdlYkJyaWRnZSAqKW5leHRTaWJsaW5nOworeworICAgIHJldHVybiBfbmV4dFNp
Ymxpbmc7Cit9CisKKy0gKEJPT0wpaXNEZXNjZW5kYW50T2ZGcmFtZTooV2ViQnJpZGdlICopYW5j
ZXN0b3IKK3sKKyAgICBmb3IgKFdlYkJyaWRnZSAqZnJhbWUgPSBzZWxmOyBmcmFtZTsgZnJhbWUg
PSAoV2ViQnJpZGdlICopW2ZyYW1lIHBhcmVudF0pCisgICAgICAgIGlmIChmcmFtZSA9PSBhbmNl
c3RvcikKKyAgICAgICAgICAgIHJldHVybiBZRVM7CisKKyAgICByZXR1cm4gTk87Cit9CisKKy0g
KFdlYkJyaWRnZSAqKXRyYXZlcnNlTmV4dEZyYW1lU3RheVdpdGhpbjooV2ViQnJpZGdlICopc3Rh
eVdpdGhpbgoreworICAgIFdlYkJyaWRnZSAqZmlyc3RDaGlsZCA9IFtzZWxmIGZpcnN0Q2hpbGRd
OworICAgIGlmIChmaXJzdENoaWxkKSB7CisgICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8fCBb
Zmlyc3RDaGlsZCBpc0Rlc2NlbmRhbnRPZkZyYW1lOnN0YXlXaXRoaW5dKTsKKyAgICAgICAgcmV0
dXJuIGZpcnN0Q2hpbGQ7CisgICAgfQorCisgICAgaWYgKHNlbGYgPT0gc3RheVdpdGhpbikKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBXZWJCcmlkZ2UgKm5leHRTaWJsaW5nID0gW3NlbGYgbmV4
dFNpYmxpbmddOworICAgIGlmIChuZXh0U2libGluZykgeworICAgICAgICBhc3NlcnQoIXN0YXlX
aXRoaW4gfHwgW25leHRTaWJsaW5nICBpc0Rlc2NlbmRhbnRPZkZyYW1lOnN0YXlXaXRoaW5dKTsK
KwlyZXR1cm4gbmV4dFNpYmxpbmc7CisgICAgfQorCisgICAgV2ViQnJpZGdlICpmcmFtZSA9IHNl
bGY7CisgICAgd2hpbGUgKGZyYW1lICYmICFuZXh0U2libGluZyAmJiAoIXN0YXlXaXRoaW4gfHwg
W2ZyYW1lIHBhcmVudF0gIT0gc3RheVdpdGhpbikpIHsKKyAgICAgICAgZnJhbWUgPSAoV2ViQnJp
ZGdlICopW2ZyYW1lIHBhcmVudF07CisgICAgICAgIG5leHRTaWJsaW5nID0gW2ZyYW1lIG5leHRT
aWJsaW5nXTsKKyAgICB9CisKKyAgICBpZiAoZnJhbWUpIHsKKyAgICAgICAgQVNTRVJUKCFzdGF5
V2l0aGluIHx8ICFuZXh0U2libGluZyB8fCBbbmV4dFNpYmxpbmcgaXNEZXNjZW5kYW50T2ZGcmFt
ZTpzdGF5V2l0aGluXSk7CisgICAgICAgIHJldHVybiBuZXh0U2libGluZzsKKyAgICB9CisKKyAg
ICByZXR1cm4gbmlsOworfQorCistICh2b2lkKWFwcGVuZENoaWxkOihXZWJCcmlkZ2UgKiljaGls
ZAoreworICAgIFtjaGlsZCBzZXRQYXJlbnQ6c2VsZl07CisKKyAgICBpZiAoX2NoaWxkcmVuID09
IG5pbCkKKyAgICAgICAgX2NoaWxkcmVuID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07
CisKKyAgICBXZWJCcmlkZ2UgKnByZXZpb3VzID0gW3NlbGYgbGFzdENoaWxkXTsKKyAgICBpZiAo
cHJldmlvdXMpIHsKKyAgICAgICAgcHJldmlvdXMtPl9uZXh0U2libGluZyA9IGNoaWxkOworICAg
ICAgICBjaGlsZC0+X3ByZXZpb3VzU2libGluZyA9IHByZXZpb3VzOworICAgIH0KKyAgICBBU1NF
UlQoY2hpbGQtPl9uZXh0U2libGluZyA9PSBuaWwpOworCisgICAgW19jaGlsZHJlbiBhZGRPYmpl
Y3Q6Y2hpbGRdOworfQorCistICh2b2lkKXJlbW92ZUNoaWxkOihXZWJCcmlkZ2UgKiljaGlsZAor
eworICAgIGlmIChjaGlsZC0+X3ByZXZpb3VzU2libGluZykKKyAgICAgICAgY2hpbGQtPl9wcmV2
aW91c1NpYmxpbmctPl9uZXh0U2libGluZyA9IGNoaWxkLT5fbmV4dFNpYmxpbmc7CisgICAgCisg
ICAgaWYgKGNoaWxkLT5fbmV4dFNpYmxpbmcpCisgICAgICAgIGNoaWxkLT5fbmV4dFNpYmxpbmct
Pl9wcmV2aW91c1NpYmxpbmcgPSBjaGlsZC0+X3ByZXZpb3VzU2libGluZzsgCisKKyAgICBjaGls
ZC0+X3ByZXZpb3VzU2libGluZyA9IG5pbDsKKyAgICBjaGlsZC0+X25leHRTaWJsaW5nID0gbmls
OworCisgICAgW19jaGlsZHJlbiByZW1vdmVPYmplY3Q6Y2hpbGRdOworfQorCiBAZW5kCkluZGV4
OiBXZWJWaWV3LnN1YnByb2ovV2ViRnJhbWUubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZS5tLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjI2NwpkaWZmIC11IC1wIC1yMS4yNjcgV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lLm0KLS0t
IFdlYlZpZXcuc3VicHJvai9XZWJGcmFtZS5tCTMwIERlYyAyMDA1IDIwOjQyOjE1IC0wMDAwCTEu
MjY3CisrKyBXZWJWaWV3LnN1YnByb2ovV2ViRnJhbWUubQkzIEphbiAyMDA2IDA0OjIwOjUxIC0w
MDAwCkBAIC0xMjgsMzYgKzEyOCw2IEBAIE5TU3RyaW5nICpXZWJQYWdlQ2FjaGVEb2N1bWVudFZp
ZXdLZXkgPSAKIAogQGVuZAogCi1AaW50ZXJmYWNlIE5TQXJyYXkgKFdlYlNhZmVNYWtlUGVyZm9y
bSkKLQotLSAodm9pZClfd2ViX3NhZmVNYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjooU0VMKWFT
ZWxlY3RvcjsKLQotQGVuZAotCi0KLUBpbXBsZW1lbnRhdGlvbiBOU0FycmF5IChXZWJTYWZlTWFr
ZVBlcmZvcm0pCi0KLS0gKHZvaWQpX3dlYl9zYWZlTWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6
KFNFTClhU2VsZWN0b3IKLXsKLSAgICB1bnNpZ25lZCBjb3VudCA9IFtzZWxmIGNvdW50XTsKLSAg
ICBpZiAoMCA9PSBjb3VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNvdW50ID4gMTI4
KSB7Ci0gICAgICAgIFtbc2VsZiBjb3B5XSBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjphU2Vs
ZWN0b3JdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotIAotICAgIGlkIGJhdGNoWzEyOF07Ci0g
ICAgW3NlbGYgZ2V0T2JqZWN0czpiYXRjaCByYW5nZTpOU01ha2VSYW5nZSgwLCBjb3VudCldOwot
ICAgIHVuc2lnbmVkIGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAg
ICAgb2JqY19tc2dTZW5kKGJhdGNoW2ldLCBhU2VsZWN0b3IpOwotICAgIH0KLX0KLQotQGVuZAot
CiAvLyBPbmUgZGF5IHdlIG1pZ2h0IHdhbnQgdG8gZXhwYW5kIHRoZSB1c2Ugb2YgdGhpcyBraW5k
IG9mIGNsYXNzIHN1Y2ggdGhhdCB3ZSdkIHJlY2VpdmUgb25lCiAvLyBvdmVyIHRoZSBicmlkZ2Us
IGFuZCBwb3NzaWJseSBoYW5kIGl0IG9uIHRocm91Z2ggdG8gdGhlIEZvcm1zRGVsZWdhdGUuCiAv
LyBUb2RheSBpdCBpcyBqdXN0IHVzZWQgaW50ZXJuYWxseSB0byBrZWVwIHNvbWUgc3RhdGUgYXMg
d2UgbWFrZSBvdXIgd2F5IHRocm91Z2ggYSBidW5jaApAQCAtMjAyLDkgKzE3Miw2IEBAIE5TU3Ry
aW5nICpXZWJQYWdlQ2FjaGVEb2N1bWVudFZpZXdLZXkgPSAKIEBpbnRlcmZhY2UgV2ViRnJhbWVQ
cml2YXRlIDogTlNPYmplY3QKIHsKIEBwdWJsaWMKLSAgICBXZWJGcmFtZSAqbmV4dFNpYmxpbmc7
Ci0gICAgV2ViRnJhbWUgKnByZXZpb3VzU2libGluZzsKLQogICAgIE5TU3RyaW5nICpuYW1lOwog
ICAgIFdlYkZyYW1lVmlldyAqd2ViRnJhbWVWaWV3OwogICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFT
b3VyY2U7CkBAIC0yMTMsNyArMTgwLDYgQEAgTlNTdHJpbmcgKldlYlBhZ2VDYWNoZURvY3VtZW50
Vmlld0tleSA9IAogICAgIFdlYlZpZXcgKndlYlZpZXc7CiAgICAgV2ViRnJhbWVTdGF0ZSBzdGF0
ZTsKICAgICBXZWJGcmFtZUxvYWRUeXBlIGxvYWRUeXBlOwotICAgIE5TTXV0YWJsZUFycmF5ICpj
aGlsZHJlbjsKICAgICBXZWJIaXN0b3J5SXRlbSAqY3VycmVudEl0ZW07CS8vIEJGIGl0ZW0gZm9y
IG91ciBjdXJyZW50IGNvbnRlbnQKICAgICBXZWJIaXN0b3J5SXRlbSAqcHJvdmlzaW9uYWxJdGVt
OwkvLyBCRiBpdGVtIGZvciB3aGVyZSB3ZSdyZSB0cnlpbmcgdG8gZ28KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAob25seSBrbm93biB3aGVuIG5hdmlnYXRpbmcg
dG8gYSBwcmUtZXhpc3RpbmcgQkYgaXRlbSkKQEAgLTI4NCw4ICsyNTAsNiBAQCBOU1N0cmluZyAq
V2ViUGFnZUNhY2hlRG9jdW1lbnRWaWV3S2V5ID0gCiAgICAgW3dlYkZyYW1lVmlldyByZWxlYXNl
XTsKICAgICBbZGF0YVNvdXJjZSByZWxlYXNlXTsKICAgICBbcHJvdmlzaW9uYWxEYXRhU291cmNl
IHJlbGVhc2VdOwotICAgIFticmlkZ2UgcmVsZWFzZV07Ci0gICAgW2NoaWxkcmVuIHJlbGVhc2Vd
OwogCiAgICAgW2N1cnJlbnRJdGVtIHJlbGVhc2VdOwogICAgIFtwcm92aXNpb25hbEl0ZW0gcmVs
ZWFzZV07CkBAIC0zNzgsOTQgKzM0Miw0MiBAQCBOU1N0cmluZyAqV2ViUGFnZUNhY2hlRG9jdW1l
bnRWaWV3S2V5ID0gCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUgKEZyYW1lVHJhdmVyc2FsKQog
LSAoV2ViRnJhbWUgKilfZmlyc3RDaGlsZEZyYW1lCiB7Ci0gICAgaWYgKCFbX3ByaXZhdGUtPmNo
aWxkcmVuIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbX3ByaXZh
dGUtPmNoaWxkcmVuIG9iamVjdEF0SW5kZXg6MF07CisgICAgcmV0dXJuIFtbW3NlbGYgX2JyaWRn
ZV0gZmlyc3RDaGlsZF0gd2ViRnJhbWVdOwogfQogCiAtIChXZWJGcmFtZSAqKV9sYXN0Q2hpbGRG
cmFtZQogewotICAgIHJldHVybiBbX3ByaXZhdGUtPmNoaWxkcmVuIGxhc3RPYmplY3RdOworICAg
IHJldHVybiBbW1tzZWxmIF9icmlkZ2VdIGxhc3RDaGlsZF0gd2ViRnJhbWVdOwogfQogCiAtICh1
bnNpZ25lZClfY2hpbGRGcmFtZUNvdW50CiB7Ci0gICAgcmV0dXJuIFtfcHJpdmF0ZS0+Y2hpbGRy
ZW4gY291bnRdOworICAgIHJldHVybiBbW3NlbGYgX2JyaWRnZV0gY2hpbGRDb3VudF07CiB9CiAK
IC0gKFdlYkZyYW1lICopX3ByZXZpb3VzU2libGluZ0ZyYW1lOwogewotICAgIHJldHVybiBfcHJp
dmF0ZS0+cHJldmlvdXNTaWJsaW5nOworICAgIHJldHVybiBbW1tzZWxmIF9icmlkZ2VdIHByZXZp
b3VzU2libGluZ10gd2ViRnJhbWVdOwogfQogCiAtIChXZWJGcmFtZSAqKV9uZXh0U2libGluZ0Zy
YW1lOwogewotICAgIHJldHVybiBfcHJpdmF0ZS0+bmV4dFNpYmxpbmc7CisgICAgcmV0dXJuIFtb
W3NlbGYgX2JyaWRnZV0gbmV4dFNpYmxpbmddIHdlYkZyYW1lXTsKIH0KIAogLSAoV2ViRnJhbWUg
KilfdHJhdmVyc2VOZXh0RnJhbWVTdGF5V2l0aGluOihXZWJGcmFtZSAqKXN0YXlXaXRoaW4KIHsK
LSAgICBXZWJGcmFtZSAqZmlyc3RDaGlsZCA9IFtzZWxmIF9maXJzdENoaWxkRnJhbWVdOwotICAg
IGlmIChmaXJzdENoaWxkKSB7Ci0gICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8fCBbZmlyc3RD
aGlsZCBfaXNEZXNjZW5kYW50T2ZGcmFtZTpzdGF5V2l0aGluXSk7Ci0gICAgICAgIHJldHVybiBm
aXJzdENoaWxkOwotICAgIH0KLQotICAgIGlmIChzZWxmID09IHN0YXlXaXRoaW4pCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgV2ViRnJhbWUgKm5leHRTaWJsaW5nID0gW3NlbGYgX25leHRTaWJs
aW5nRnJhbWVdOwotICAgIGlmIChuZXh0U2libGluZykgewotICAgICAgICBhc3NlcnQoIXN0YXlX
aXRoaW4gfHwgW25leHRTaWJsaW5nICBfaXNEZXNjZW5kYW50T2ZGcmFtZTpzdGF5V2l0aGluXSk7
Ci0JcmV0dXJuIG5leHRTaWJsaW5nOwotICAgIH0KLQotICAgIFdlYkZyYW1lICpmcmFtZSA9IHNl
bGY7Ci0gICAgd2hpbGUgKGZyYW1lICYmICFuZXh0U2libGluZyAmJiAoIXN0YXlXaXRoaW4gfHwg
W2ZyYW1lIHBhcmVudEZyYW1lXSAhPSBzdGF5V2l0aGluKSkgewotICAgICAgICBmcmFtZSA9IFtm
cmFtZSBwYXJlbnRGcmFtZV07Ci0gICAgICAgIG5leHRTaWJsaW5nID0gW2ZyYW1lIF9uZXh0U2li
bGluZ0ZyYW1lXTsKLSAgICB9Ci0KLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgQVNTRVJUKCFz
dGF5V2l0aGluIHx8ICFuZXh0U2libGluZyB8fCBbbmV4dFNpYmxpbmcgX2lzRGVzY2VuZGFudE9m
RnJhbWU6c3RheVdpdGhpbl0pOwotICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmc7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW1tbc2VsZiBfYnJpZGdlXSB0cmF2ZXJzZU5l
eHRGcmFtZVN0YXlXaXRoaW46W3N0YXlXaXRoaW4gX2JyaWRnZV1dIHdlYkZyYW1lXTsKIH0KIAog
LSAodm9pZClfYXBwZW5kQ2hpbGQ6KFdlYkZyYW1lICopY2hpbGQKIHsKLSAgICBbW2NoaWxkIF9i
cmlkZ2VdIHNldFBhcmVudDpfcHJpdmF0ZS0+YnJpZGdlXTsKLQotICAgIGlmIChfcHJpdmF0ZS0+
Y2hpbGRyZW4gPT0gbmlsKQotICAgICAgICBfcHJpdmF0ZS0+Y2hpbGRyZW4gPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XTsKLQotICAgIFdlYkZyYW1lICpwcmV2aW91c0ZyYW1lID0gW3Nl
bGYgX2xhc3RDaGlsZEZyYW1lXTsKLSAgICBpZiAocHJldmlvdXNGcmFtZSkgewotICAgICAgICBw
cmV2aW91c0ZyYW1lLT5fcHJpdmF0ZS0+bmV4dFNpYmxpbmcgPSBjaGlsZDsKLSAgICAgICAgY2hp
bGQtPl9wcml2YXRlLT5wcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c0ZyYW1lOwotICAgIH0KLSAg
ICBBU1NFUlQoY2hpbGQtPl9wcml2YXRlLT5uZXh0U2libGluZyA9PSBuaWwpOwotCi0gICAgW19w
cml2YXRlLT5jaGlsZHJlbiBhZGRPYmplY3Q6Y2hpbGRdOworICAgIFtbc2VsZiBfYnJpZGdlXSBh
cHBlbmRDaGlsZDpbY2hpbGQgX2JyaWRnZV1dOwogfQogCiAtICh2b2lkKV9yZW1vdmVDaGlsZDoo
V2ViRnJhbWUgKiljaGlsZAogewotICAgIC8vIG1vdmUgY29ycmVzcG9uZGluZyBwcmV2aW91cyBh
bmQgbmV4dCBXZWJGcmFtZSBzaWJsaW5nIHBvaW50ZXJzIHRvIHRoZWlyIG5ldyBwb3NpdGlvbnMK
LSAgICAvLyB3aGVuIHdlIHJlbW92ZSBhIGNoaWxkIHdlIG1heSBoYXZlIHRvIHJlYXR0YWNoIHRo
ZSBwcmV2aW91cyBmcmFtZSdzIG5leHQgZnJhbWUgYW5kIHZpc2EgdmVyc2EKLSAgICBpZiAoY2hp
bGQtPl9wcml2YXRlLT5wcmV2aW91c1NpYmxpbmcpCi0gICAgICAgIGNoaWxkLT5fcHJpdmF0ZS0+
cHJldmlvdXNTaWJsaW5nLT5fcHJpdmF0ZS0+bmV4dFNpYmxpbmcgPSBjaGlsZC0+X3ByaXZhdGUt
Pm5leHRTaWJsaW5nOwotICAgIAotICAgIGlmIChjaGlsZC0+X3ByaXZhdGUtPm5leHRTaWJsaW5n
KQotICAgICAgICBjaGlsZC0+X3ByaXZhdGUtPm5leHRTaWJsaW5nLT5fcHJpdmF0ZS0+cHJldmlv
dXNTaWJsaW5nID0gY2hpbGQtPl9wcml2YXRlLT5wcmV2aW91c1NpYmxpbmc7IAotCi0gICAgY2hp
bGQtPl9wcml2YXRlLT5wcmV2aW91c1NpYmxpbmcgPSBuaWw7Ci0gICAgY2hpbGQtPl9wcml2YXRl
LT5uZXh0U2libGluZyA9IG5pbDsKLQotICAgIFtfcHJpdmF0ZS0+Y2hpbGRyZW4gcmVtb3ZlT2Jq
ZWN0OmNoaWxkXTsKKyAgICBbW3NlbGYgX2JyaWRnZV0gcmVtb3ZlQ2hpbGQ6W2NoaWxkIF9icmlk
Z2VdXTsKIH0KIAogQGVuZApAQCAtNjU1LDExICs1NjcsNyBAQCBOU1N0cmluZyAqV2ViUGFnZUNh
Y2hlRG9jdW1lbnRWaWV3S2V5ID0gCiAvLyBGSVhNRTogdGhpcyBleGlzdHMgb25seSBhcyBhIGNv
bnZlbmllbmNlIGZvciBTYWZhcmksIGNvbnNpZGVyIG1vdmluZyB0aGVyZQogLSAoQk9PTClfaXNE
ZXNjZW5kYW50T2ZGcmFtZTooV2ViRnJhbWUgKilhbmNlc3RvcgogewotICAgIGZvciAoV2ViRnJh
bWUgKmZyYW1lID0gc2VsZjsgZnJhbWU7IGZyYW1lID0gW2ZyYW1lIHBhcmVudEZyYW1lXSkKLSAg
ICAgICAgaWYgKGZyYW1lID09IGFuY2VzdG9yKQotICAgICAgICAgICAgcmV0dXJuIFlFUzsKLQot
ICAgIHJldHVybiBOTzsKKyAgICByZXR1cm4gW1tzZWxmIF9icmlkZ2VdIGlzRGVzY2VuZGFudE9m
RnJhbWU6W2FuY2VzdG9yIF9icmlkZ2VdXTsKIH0KIAogLSAoQk9PTClfaXNGcmFtZVNldApAQCAt
NzA4LDkgKzYxNiw5IEBAIE5TU3RyaW5nICpXZWJQYWdlQ2FjaGVEb2N1bWVudFZpZXdLZXkgPSAK
IAogICAgIFtzZWxmIHJldGFpbl07IC8vIHJldGFpbiBzZWxmIHRlbXBvcmFyaWx5IGJlY2F1c2Ug
ZGVhbGxvYyBjYW4gcmUtZW50ZXIgdGhpcyBtZXRob2QKIAotICAgIFtbc2VsZiBwYXJlbnRGcmFt
ZV0gX3JlbW92ZUNoaWxkOnNlbGZdOwogICAgIFticmlkZ2UgY2xvc2VdOwotICAgIFticmlkZ2Ug
cmVsZWFzZV07CisgICAgW1tzZWxmIHBhcmVudEZyYW1lXSBfcmVtb3ZlQ2hpbGQ6c2VsZl07CisK
ICAgICBfcHJpdmF0ZS0+YnJpZGdlID0gbmlsOwogCiAgICAgW3NlbGYgcmVsZWFzZV07CkBAIC0y
NjU3LDYgKzI1NjUsMjkgQEAgc3RhdGljIENGQWJzb2x1dGVUaW1lIF90aW1lT2ZMYXN0Q29tcGxl
dAogCiBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUgKFdlYkludGVybmFsKQogCistIChpZClfaW5p
dFdpdGhOYW1lOihOU1N0cmluZyAqKW4gd2ViRnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmdiB3
ZWJWaWV3OihXZWJWaWV3ICopdiBicmlkZ2U6KFdlYkJyaWRnZSAqKWJyaWRnZQoreworICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgX3ByaXZhdGUgPSBbW1dlYkZyYW1lUHJpdmF0ZSBhbGxvY10gaW5pdF07CisKKyAgICBb
c2VsZiBfc2V0V2ViVmlldzp2XTsKKyAgICBbc2VsZiBfc2V0TmFtZTpuXTsKKyAgICBfcHJpdmF0
ZS0+YnJpZGdlID0gYnJpZGdlOworCisgICAgaWYgKGZ2KSB7CisgICAgICAgIFtfcHJpdmF0ZSBz
ZXRXZWJGcmFtZVZpZXc6ZnZdOworICAgICAgICBbZnYgX3NldFdlYlZpZXc6dl07CisgICAgICAg
IFtmdiBfc2V0V2ViRnJhbWU6c2VsZl07CisgICAgfQorICAgIAorICAgICsrV2ViRnJhbWVDb3Vu
dDsKKyAgICAKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAoTlNBcnJheSAqKV9kb2N1bWVudFZp
ZXdzCiB7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJh
eV07CkBAIC0yOTc2LDMzICsyOTA3LDE1IEBAIHN0YXRpYyBDRkFic29sdXRlVGltZSBfdGltZU9m
TGFzdENvbXBsZXQKIAogQGltcGxlbWVudGF0aW9uIFdlYkZyYW1lCiAKLS0gaW5pdAorLSAoaWQp
aW5pdAogewogICAgIHJldHVybiBbc2VsZiBpbml0V2l0aE5hbWU6bmlsIHdlYkZyYW1lVmlldzpu
aWwgd2ViVmlldzpuaWxdOwogfQogCi0tIGluaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluIHdlYkZy
YW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnYgd2ViVmlldzooV2ViVmlldyAqKXYKKy8vIEZJWE1F
OiB0aGlzIG1ldGhvZCBjYW4ndCB3b3JrIGFueSBtb3JlIGFuZCBzaG91bGQgYmUgbWFya2VkIGRl
cHJlY2F0ZWQKKy0gKGlkKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluIHdlYkZyYW1lVmlldzoo
V2ViRnJhbWVWaWV3ICopZnYgd2ViVmlldzooV2ViVmlldyAqKXYKIHsKLSAgICBzZWxmID0gW3N1
cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9w
cml2YXRlID0gW1tXZWJGcmFtZVByaXZhdGUgYWxsb2NdIGluaXRdOwotCi0gICAgW3NlbGYgX3Nl
dFdlYlZpZXc6dl07Ci0gICAgW3NlbGYgX3NldE5hbWU6bl07Ci0KLSAgICBfcHJpdmF0ZS0+YnJp
ZGdlID0gW1tXZWJCcmlkZ2UgYWxsb2NdIGluaXRXaXRoV2ViRnJhbWU6c2VsZl07Ci0gICAgCi0g
ICAgaWYgKGZ2KSB7Ci0gICAgICAgIFtfcHJpdmF0ZSBzZXRXZWJGcmFtZVZpZXc6ZnZdOwotICAg
ICAgICBbZnYgX3NldFdlYlZpZXc6dl07Ci0gICAgICAgIFtmdiBfc2V0V2ViRnJhbWU6c2VsZl07
Ci0gICAgfQotICAgIAotICAgICsrV2ViRnJhbWVDb3VudDsKLSAgICAKLSAgICByZXR1cm4gc2Vs
ZjsKKyAgICByZXR1cm4gW3NlbGYgX2luaXRXaXRoTmFtZTpuIHdlYkZyYW1lVmlldzpmdiB3ZWJW
aWV3OnYgYnJpZGdlOm5pbF07CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpJbmRleDogV2ViVmlldy5z
dWJwcm9qL1dlYkZyYW1lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
V2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJGcmFtZUludGVybmFsLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMTgKZGlmZiAtdSAtcCAtcjEuMTggV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lSW50
ZXJuYWwuaAotLS0gV2ViVmlldy5zdWJwcm9qL1dlYkZyYW1lSW50ZXJuYWwuaAkyNSBEZWMgMjAw
NSAxMTowNTowNCAtMDAwMAkxLjE4CisrKyBXZWJWaWV3LnN1YnByb2ovV2ViRnJhbWVJbnRlcm5h
bC5oCTMgSmFuIDIwMDYgMDQ6MjA6NTEgLTAwMDAKQEAgLTU4LDYgKzU4LDcgQEAKIC0gKFdlYkZy
YW1lICopX2ZpbmRGcmFtZVdpdGhTZWxlY3Rpb247CiAtICh2b2lkKV9jbGVhclNlbGVjdGlvbklu
T3RoZXJGcmFtZXM7CiAtIChCT09MKV9zdWJmcmFtZUlzTG9hZGluZzsKKy0gKGlkKV9pbml0V2l0
aE5hbWU6KE5TU3RyaW5nICopbiB3ZWJGcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKWZ2IHdlYlZp
ZXc6KFdlYlZpZXcgKil2IGJyaWRnZTooV2ViQnJpZGdlICopYnJpZGdlOwogCiBAZW5kCiAKSW5k
ZXg6IFdlYlZpZXcuc3VicHJvai9XZWJWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYktpdC9XZWJWaWV3LnN1YnByb2ovV2ViVmlldy5tLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjMyMwpkaWZmIC11IC1wIC1yMS4zMjMgV2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubQotLS0g
V2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubQkzMCBEZWMgMjAwNSAwNToxMTo0NyAtMDAwMAkxLjMy
MworKysgV2ViVmlldy5zdWJwcm9qL1dlYlZpZXcubQkzIEphbiAyMDA2IDA0OjIwOjUyIC0wMDAw
CkBAIC0yMDcsNyArMjA3LDcgQEAgbWFjcm8oeWFua0FuZFNlbGVjdCkgXAogQGludGVyZmFjZSBX
ZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0CiB7CiBAcHVibGljCi0gICAgV2ViRnJhbWUgKm1haW5G
cmFtZTsKKyAgICBXZWJCcmlkZ2UgKm1haW5GcmFtZUJyaWRnZTsKICAgICAKICAgICBpZCBVSURl
bGVnYXRlOwogICAgIGlkIFVJRGVsZWdhdGVGb3J3YXJkZXI7CkBAIC0zNjksNyArMzY5LDcgQEAg
c3RhdGljIEJPT0wgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IFlFUwogCiAtICh2b2lkKWRlYWxs
b2MKIHsKLSAgICBBU1NFUlQobWFpbkZyYW1lID09IG5pbCk7CisgICAgQVNTRVJUKG1haW5GcmFt
ZUJyaWRnZSA9PSBuaWwpOwogICAgIEFTU0VSVChkcmFnZ2luZ0RvY3VtZW50VmlldyA9PSBuaWwp
OwogICAgIEFTU0VSVChkcmFnQ2FyZXRCcmlkZ2UgPT0gbmlsKTsKICAgICAKQEAgLTU0MCw5ICs1
NDAsOSBAQCBzdGF0aWMgYm9vbCBkZWJ1Z1dpZGdldCA9IHRydWU7CiAgICAgLy8gVG8gYXZvaWQg
bGVha3MsIGNhbGwgcmVtb3ZlRHJhZ0NhcmV0IGluIGNhc2UgaXQgd2Fzbid0IGNhbGxlZCBhZnRl
ciBtb3ZlRHJhZ0NhcmV0VG9Qb2ludC4KICAgICBbc2VsZiByZW1vdmVEcmFnQ2FyZXRdOwogICAg
IAotICAgIFtfcHJpdmF0ZS0+bWFpbkZyYW1lIF9kZXRhY2hGcm9tUGFyZW50XTsKLSAgICBbX3By
aXZhdGUtPm1haW5GcmFtZSByZWxlYXNlXTsKLSAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lID0gbmls
OworICAgIFtbc2VsZiBtYWluRnJhbWVdIF9kZXRhY2hGcm9tUGFyZW50XTsKKyAgICBbX3ByaXZh
dGUtPm1haW5GcmFtZUJyaWRnZSByZWxlYXNlXTsKKyAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lQnJp
ZGdlID0gbmlsOwogICAgIAogICAgIC8vIENsZWFyIHRoZSBwYWdlIGNhY2hlIHNvIHdlIGNhbGwg
ZGVzdHJveSBvbiBhbGwgdGhlIHBsdWctaW5zIGluIHRoZSBwYWdlIGNhY2hlIHRvIGJyZWFrIGFu
eSByZXRhaW4gY3ljbGVzLgogICAgIC8vIFNlZSBjb21tZW50IGluIFtXZWJIaXN0b3J5SXRlbSBf
cmVsZWFzZUFsbFBlbmRpbmdQYWdlQ2FjaGVzXSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KQEAgLTU2
MSwxNSArNTYxLDE0IEBAIHN0YXRpYyBib29sIGRlYnVnV2lkZ2V0ID0gdHJ1ZTsKICAgICBbY2hp
bGRWaWV3IF9zZXRXZWJWaWV3OnNlbGZdOwogICAgIFtjaGlsZFZpZXcgc2V0QWxsb3dzU2Nyb2xs
aW5nOmFsbG93c1Njcm9sbGluZ107CiAgICAgCi0gICAgV2ViRnJhbWUgKm5ld0ZyYW1lID0gW1tX
ZWJGcmFtZSBhbGxvY10gaW5pdFdpdGhOYW1lOmZuYW1lIHdlYkZyYW1lVmlldzpjaGlsZFZpZXcg
d2ViVmlldzpzZWxmXTsKKyAgICBXZWJCcmlkZ2UgKm5ld0JyaWRnZSA9IFtbV2ViQnJpZGdlIGFs
bG9jXSBpbml0V2l0aEZyYW1lTmFtZTpmbmFtZSB2aWV3OmNoaWxkVmlld107CiAKLSAgICBbY2hp
bGRWaWV3IHJlbGVhc2VdOwotCi0gICAgW3BhcmVudCBfYWRkQ2hpbGQ6bmV3RnJhbWVdOworICAg
IFtwYXJlbnQgX2FkZENoaWxkOltuZXdCcmlkZ2Ugd2ViRnJhbWVdXTsKICAgICAKLSAgICBbbmV3
RnJhbWUgcmVsZWFzZV07CisgICAgW2NoaWxkVmlldyByZWxlYXNlXTsKKyAgICBbbmV3QnJpZGdl
IHJlbGVhc2VdOwogICAgICAgICAKLSAgICByZXR1cm4gbmV3RnJhbWU7CisgICAgcmV0dXJuIFtu
ZXdCcmlkZ2Ugd2ViRnJhbWVdOwogfQogCiAtICh2b2lkKV9maW5pc2hlZExvYWRpbmdSZXNvdXJj
ZUZyb21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQpAQCAtNjkxLDcgKzY5
MCw3IEBAIHN0YXRpYyBib29sIGRlYnVnV2lkZ2V0ID0gdHJ1ZTsKICAgICB9CiAKICAgICBfcHJp
dmF0ZS0+ZGVmZXJzQ2FsbGJhY2tzID0gZGVmZXJzOwotICAgIFtfcHJpdmF0ZS0+bWFpbkZyYW1l
IF9kZWZlcnNDYWxsYmFja3NDaGFuZ2VkXTsKKyAgICBbW3NlbGYgbWFpbkZyYW1lXSBfZGVmZXJz
Q2FsbGJhY2tzQ2hhbmdlZF07CiB9CiAKIC0gKHZvaWQpX3NldFRvcExldmVsRnJhbWVOYW1lOihO
U1N0cmluZyAqKW5hbWUKQEAgLTE1NTQsMTEgKzE1NTMsMTMgQEAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqY291bnRJbnZvY2F0aW9uczsKIAogICAgIE5TUmVjdCBmID0gW3NlbGYgZnJhbWVdOwogICAg
IFdlYkZyYW1lVmlldyAqd3YgPSBbW1dlYkZyYW1lVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTog
TlNNYWtlUmVjdCgwLDAsZi5zaXplLndpZHRoLGYuc2l6ZS5oZWlnaHQpXTsKKyAgICBbd3YgX3Nl
dFdlYlZpZXc6c2VsZl07CiAgICAgW3d2IHNldEF1dG9yZXNpemluZ01hc2s6IE5TVmlld1dpZHRo
U2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwogICAgIFtzZWxmIGFkZFN1YnZpZXc6IHd2
XTsKICAgICBbd3YgcmVsZWFzZV07CiAKLSAgICBfcHJpdmF0ZS0+bWFpbkZyYW1lID0gW1tXZWJG
cmFtZSBhbGxvY10gaW5pdFdpdGhOYW1lOiBmcmFtZU5hbWUgd2ViRnJhbWVWaWV3OiB3diAgd2Vi
Vmlldzogc2VsZl07CisgICAgX3ByaXZhdGUtPm1haW5GcmFtZUJyaWRnZSA9IFtbV2ViQnJpZGdl
IGFsbG9jXSBpbml0V2l0aEZyYW1lTmFtZTpmcmFtZU5hbWUgdmlldzp3dl07CisKICAgICBbc2Vs
ZiBfYWRkVG9BbGxXZWJWaWV3c1NldF07CiAgICAgW3NlbGYgc2V0R3JvdXBOYW1lOmdyb3VwTmFt
ZV07CiAgICAgCkBAIC0xODE3LDkgKzE4MTgsOSBAQCBOU19FTkRIQU5ETEVSCiAtIChXZWJGcmFt
ZSAqKW1haW5GcmFtZQogewogICAgIC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBpbiBpbml0aWFsaXph
dGlvbiwgYmVmb3JlIF9wcml2YXRlIGhhcyBiZWVuIHNldCB1cCAoMzQ2NTYxMykKLSAgICBpZiAo
X3ByaXZhdGUgIT0gbmlsKSB7Ci0gICAgICAgIHJldHVybiBfcHJpdmF0ZS0+bWFpbkZyYW1lOwot
ICAgIH0KKyAgICBpZiAoX3ByaXZhdGUgIT0gbmlsKQorICAgICAgICByZXR1cm4gW19wcml2YXRl
LT5tYWluRnJhbWVCcmlkZ2Ugd2ViRnJhbWVdOworCiAgICAgcmV0dXJuIG5pbDsKIH0KIAo=
</data>
<flag name="review"
          id="1163"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>