<?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>76058</bug_id>
          
          <creation_ts>2012-01-11 06:37:13 -0800</creation_ts>
          <short_desc>Web Inspector: [TextPrompt] Autocomplete adds unwanted text that&apos;s hard to remove</short_desc>
          <delta_ts>2012-01-17 11:25:07 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533858</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-11 06:37:13 -0800</bug_when>
    <thetext>What steps will reproduce the problem?
1. Open the Web Inspector
2. Type in the console: str.replace(/is/, &apos;was&apos;)
3. Try to type a &quot;g&quot; after /is/ to make it a global replace

What is the expected result?
A &quot;g&quot;. That&apos;s it. Just a &quot;g&quot;.

What happens instead?
The &apos;smart&apos; autocomplete adds &apos;getComputedStyle&apos; and it won&apos;t go away! If you backspace, you backspace the last letter of getComputedStyle, not the whole thing. If you backspace all the way back, it just adds &quot;etComputedStyle&quot; again. If you ESC it&apos;s gone for half a second and than it&apos;s there again.

It&apos;s not only annoying, it actually breaks functionality! The new autocomplete is a little too eager.

Upstreaming http://code.google.com/p/chromium/issues/detail?id=109518</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533908</commentid>
    <comment_count>1</comment_count>
      <attachid>122027</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-11 08:06:46 -0800</bug_when>
    <thetext>Created attachment 122027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533924</commentid>
    <comment_count>2</comment_count>
      <attachid>122027</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-11 08:41:36 -0800</bug_when>
    <thetext>Comment on attachment 122027
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        - Avoid showing suggestions when navigating through the user input.

Could you add a test that emits Right, Right, Right on various user inputs and checks that popup is never shown?

&gt; Source/WebCore/ChangeLog:9
&gt; +        - Don&apos;t complete the grayed (non-selected) suggestion with Right or End.

Lets wait before we do this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535529</commentid>
    <comment_count>3</comment_count>
      <attachid>122395</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-13 01:53:33 -0800</bug_when>
    <thetext>Created attachment 122395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535552</commentid>
    <comment_count>4</comment_count>
      <attachid>122395</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 02:46:31 -0800</bug_when>
    <thetext>Comment on attachment 122395
Patch

Attachment 122395 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11227511

New failing tests:
inspector/styles/styles-cancel-editing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535739</commentid>
    <comment_count>5</comment_count>
      <attachid>122442</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-13 09:43:43 -0800</bug_when>
    <thetext>Created attachment 122442
Patch

Add PageUp/PageDown handling in suggest box</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535765</commentid>
    <comment_count>6</comment_count>
      <attachid>122442</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 10:22:37 -0800</bug_when>
    <thetext>Comment on attachment 122442
Patch

Attachment 122442 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11236089

New failing tests:
inspector/styles/styles-cancel-editing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536525</commentid>
    <comment_count>7</comment_count>
      <attachid>122625</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-16 06:43:08 -0800</bug_when>
    <thetext>Created attachment 122625
Patch

[PATCH] Fix test failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537009</commentid>
    <comment_count>8</comment_count>
      <attachid>122747</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-17 03:36:47 -0800</bug_when>
    <thetext>Created attachment 122747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537017</commentid>
    <comment_count>9</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-17 04:14:11 -0800</bug_when>
    <thetext>Committed r105140: &lt;http://trac.webkit.org/changeset/105140&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122027</attachid>
            <date>2012-01-11 08:06:46 -0800</date>
            <delta_ts>2012-01-13 01:53:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76058-20120111200644.patch</filename>
            <type>text/plain</type>
            <size>2184</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlkOWQyM2I5MTQ0ZjEy
ZGY2ODhhMzZiZmM5Y2UxNTk0ZmM2YjgzYy4uMWFlODIwYjFhNzBjY2YyNDhiNDFjOWY5MzliZTVh
ZTQ3OWU2MDBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTExICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1RleHRQcm9tcHRdIEF1dG9jb21wbGV0ZSBhZGRzIHVud2FudGVkIHRleHQgdGhhdCdz
IGhhcmQgdG8gcmVtb3ZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjA1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gQXZvaWQgc2hvd2luZyBzdWdnZXN0aW9ucyB3aGVuIG5hdmlnYXRpbmcgdGhyb3Vn
aCB0aGUgdXNlciBpbnB1dC4KKyAgICAgICAgLSBEb24ndCBjb21wbGV0ZSB0aGUgZ3JheWVkIChu
b24tc2VsZWN0ZWQpIHN1Z2dlc3Rpb24gd2l0aCBSaWdodCBvciBFbmQuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dFByb21wdC5wcm90b3R5cGUub25LZXlEb3duKToKKwogMjAxMi0wMS0xMCAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGludHJvZHVjZSAic291cmNlIiBjb2x1bW4gaW4gdGhlIENTUyBwcm9maWxlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcwppbmRleCBmM2Ji
ODljMjRlNWMyZjFhNzllYWQ3OTcyYjcyODliNWQzMWE1NjFiLi4xMWU5MGMzMzQ3NjJlODg4NWI5
MmI0OTBlNDBlZDg5MzJmZWQ2OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCkBAIC0yMzIsMTQgKzIzMiwyMiBAQCBXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNhc2UgIkVudGVyIjoKICAgICAg
ICAgICAgIGhhbmRsZWQgPSB0aGlzLmVudGVyS2V5UHJlc3NlZChldmVudCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAiTGVmdCI6CisgICAgICAgIGNhc2UgIkhvbWUiOgorICAg
ICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQorICAgICAgICAgICAgICAg
IHRoaXMuX3N1Z2dlc3RCb3guaGlkZSgpOworICAgICAgICAgICAgdGhpcy5jbGVhckF1dG9Db21w
bGV0ZSgpOworICAgICAgICAgICAgaW52b2tlRGVmYXVsdCA9IGZhbHNlOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgIlJpZ2h0IjoKICAgICAgICAgY2FzZSAiRW5kIjoKICAgICAg
ICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSAmJiB0aGlzLmlzQ2FyZXRBdEVu
ZE9mUHJvbXB0KCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuX3N1Z2dlc3RCb3gu
dGFiS2V5UHJlc3NlZChldmVudCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBoYW5kbGVkID0gdGhpcy5hY2NlcHRBdXRvQ29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWhhbmRsZWQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlU29vbigp
OworICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5oaWRlKCk7CisgICAgICAgICAgICAgICAg
dGhpcy5jbGVhckF1dG9Db21wbGV0ZSgpOworICAgICAgICAgICAgICAgIGludm9rZURlZmF1bHQg
PSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
ICJVKzAwMUIiOiAvLyBFc2MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122395</attachid>
            <date>2012-01-13 01:53:33 -0800</date>
            <delta_ts>2012-01-13 09:43:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76058-20120113135331.patch</filename>
            <type>text/plain</type>
            <size>16382</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhjYmRkMDA4YzllNjYx
YzJjZWJiNjUxOTIxZjEyNWRmMzA2NGEyYi4uOWM0ZDc1ZWUwMDBmYmFiNjJjNDI4YzQ3NjA4Zjlk
NjgzOGUwNTQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAxLTExICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1RleHRQcm9tcHRdIEF1dG9jb21wbGV0ZSBhZGRzIHVud2FudGVkIHRleHQgdGhhdCdz
IGhhcmQgdG8gcmVtb3ZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjA1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFzIHBlciB0aGUgcmVzdWx0cyBvZiBhIHdhciByb29tOgorICAgICAgICAtIEF1dG8t
c3VnZ2VzdCBvbmx5IGFmdGVyIHVzZXIgdHlwaW5nIChhdm9pZCBzaG93aW5nIHN1Z2dlc3Rpb25z
IHdoZW4gbmF2aWdhdGluZyB0aHJvdWdoIHRoZSB1c2VyIGlucHV0LikKKyAgICAgICAgLSBEbyBu
b3Qgc2VsZWN0IHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBzdWdnZXN0IGJveCBpcyBzaG93biBhdCB0
aGUgZW5kIG9mIHByb21wdCAodG8gYWxsb3cgRW50ZXIgdG8gY29tbWl0IHRoZSBpbnB1dC4pCisg
ICAgICAgIC0gT25seSBzaG93IGdyYXllZCBhdXRvY29tcGxldGlvbiBhdCB0aGUgZW5kIG9mIHBy
b21wdCAob3RoZXJ3aXNlIHNob3cgYSBzdWdnZXN0IGJveCB3aXRoIHRoZSBmaXJzdCBpdGVtIHNl
bGVjdGVkLikKKyAgICAgICAgLSBHcmF5ZWQgYXV0b2NvbXBsZXRpb24gY2FuIG9ubHkgYmUgYWNj
ZXB0ZWQgd2l0aCB0aGUgRW5kIG9yIFJpZ2h0IGtleXMuCisgICAgICAgIC0gRW50ZXIgY2FuIGFj
Y2VwdCBhIHNlbGVjdGVkIHN1Z2dlc3Rpb24gaXRlbSBmcm9tIHRoZSBsaXN0LCB3aXRob3V0IGNv
bW1pdHRpbmcgdGhlIGlucHV0LgorICAgICAgICAtIFJldGFpbiB0aGUgQ1NTIG1vZGVsIGVkaXRp
bmcgYmVoYXZpb3IgYXMgY2xvc2UgdG8gdGhlIGV4aXN0aW5nIG9uZSBhcyBwb3NzaWJsZS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6Cisg
ICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5zZXQgdGV4dCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuX3JlbW92ZVN1Z2dlc3Rp
b25BaWRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fc2Vs
ZWN0U3RhcnQubW92ZUJhY2tJZk91dHNpZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQucHJvdG90eXBlLl9zZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5wcm90b3R5cGUub25LZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
UHJvbXB0LnByb3RvdHlwZS5hY2NlcHRBdXRvQ29tcGxldGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmNvbXBsZXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fY29tcGxldGlvbnNSZWFkeSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuaXNDYXJldEF0RW5kT2ZQcm9tcHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLnRhYktleVByZXNzZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUudXBk
YXRlU3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2Vz
dEJveC5wcm90b3R5cGUuX3VwZGF0ZUl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0
UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLl9jYW5TaG93Qm94KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLl9jb21wbGV0aW9uc1JlYWR5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBl
LmVudGVyS2V5UHJlc3NlZCk6CisKKwogMjAxMi0wMS0xMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgcHV0RGlyZWN0IChwYXJ0
IDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxl
c1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHls
ZXNTaWRlYmFyUGFuZS5qcwppbmRleCAzZjk1NWMxYjlhYzhhZDBkOGM0ZWQ5NDQ0MWNhMzFiMzUx
MTkwMGIzLi5hODdkNzVkN2M1ZTdjZDE3OWI0MmJhN2YxYTUyMjMyMTJiZDQxZjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJh
clBhbmUuanMKQEAgLTIxNTYsOSArMjE1Niw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgX2hhc0JlZW5Nb2RpZmllZEluY3JlbWVu
dGFsbHk6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIC8vIE5ldyBwcm9wZXJ0aWVzIGFwcGxp
ZWQgdmlhIHVwL2Rvd24gaGF2ZSBhbiBvcmlnaW5hbFByb3BlcnR5VGV4dCBhbmQgd2lsbCBiZSBk
ZWxldGVkIGxhdGVyCisgICAgICAgIC8vIE5ldyBwcm9wZXJ0aWVzIGFwcGxpZWQgdmlhIHVwL2Rv
d24gb3IgbGl2ZSBlZGl0aW5nIGhhdmUgYW4gb3JpZ2luYWxQcm9wZXJ0eVRleHQgYW5kIHdpbGwg
YmUgZGVsZXRlZCBsYXRlcgogICAgICAgICAvLyBvbiwgaWYgY2FuY2VsbGVkLCB3aGVuIHRoZSBl
bXB0eSBzdHJpbmcgZ2V0cyBhcHBsaWVkIGFzIHRoZWlyIHN0eWxlIHRleHQuCi0gICAgICAgIHJl
dHVybiB0eXBlb2YgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dCA9PT0gInN0cmluZyI7CisgICAg
ICAgIHJldHVybiB0eXBlb2YgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dCA9PT0gInN0cmluZyIg
fHwgISF0aGlzLnByb3BlcnR5LnByb3BlcnR5VGV4dDsKICAgICB9LAogCiAgICAgYXBwbHlTdHls
ZVRleHQ6IGZ1bmN0aW9uKHN0eWxlVGV4dCwgdXBkYXRlSW50ZXJmYWNlLCBtYWpvckNoYW5nZSwg
aXNSZXZlcnQpCkBAIC0yMTg0LDcgKzIxODQsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgc3R5bGVUZXh0ID0gc3R5bGVUZXh0
LnJlcGxhY2UoL1xzL2csICIgIikudHJpbSgpOyAvLyBSZXBsYWNlICZuYnNwOyB3aXRoIHdoaXRl
c3BhY2UuCiAgICAgICAgIHZhciBzdHlsZVRleHRMZW5ndGggPSBzdHlsZVRleHQubGVuZ3RoOwog
ICAgICAgICBpZiAoIXN0eWxlVGV4dExlbmd0aCAmJiB1cGRhdGVJbnRlcmZhY2UgJiYgIWlzUmV2
ZXJ0ICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmICF0aGlzLl9oYXNCZWVuTW9kaWZpZWRJbmNyZW1l
bnRhbGx5KCkpIHsKLSAgICAgICAgICAgIC8vIFRoZSB1c2VyIGRlbGV0ZWQgZXZlcnl0aGluZyBh
bmQgbmV2ZXIgYXBwbGllZCBhIG5ldyBwcm9wZXJ0eSB2YWx1ZSB2aWEgVXAvRG93biBzY3JvbGxp
bmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBlbGVtZW50IGFuZCB1cGRhdGUuCisgICAgICAgICAgICAv
LyBUaGUgdXNlciBkZWxldGVkIGV2ZXJ5dGhpbmcgYW5kIG5ldmVyIGFwcGxpZWQgYSBuZXcgcHJv
cGVydHkgdmFsdWUgdmlhIFVwL0Rvd24gc2Nyb2xsaW5nL2xpdmUgZWRpdGluZywgc28gcmVtb3Zl
IHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVwZGF0ZS4KICAgICAgICAgICAgIHRoaXMucGFyZW50LnJl
bW92ZUNoaWxkKHRoaXMpOwogICAgICAgICAgICAgc2VjdGlvbi5hZnRlclVwZGF0ZSgpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI1OCwxNyArMjI1OCwxOSBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlICJVKzAwMDkiOgotICAgICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJs
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5hY2NlcHRTdWdnZXN0aW9u
KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9pc0VkaXRpbmdOYW1lOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRlKCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUub25L
ZXlEb3duLmNhbGwodGhpcywgZXZlbnQpOwogICAgIH0sCiAKKyAgICB0YWJLZXlQcmVzc2VkOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgpOworCisg
ICAgICAgIC8vIEFsd2F5cyB0YWIgdG8gdGhlIG5leHQgZmllbGQuCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9LAorCiAgICAgX2hhbmRsZU5hbWVPclZhbHVlVXBEb3duOiBmdW5jdGlvbihl
dmVudCkKICAgICB7CiAgICAgICAgIC8vIEhhbmRsZSBudW1lcmljIHZhbHVlIGluY3JlbWVudC9k
ZWNyZW1lbnQgb25seSBhdCB0aGlzIHBvaW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCmluZGV4IGYzYmI4OWMyNGU1YzJmMWE3OWVhZDc5
NzJiNzI4OWI1ZDMxYTU2MWIuLjdkZjkzNGU5MGUyZTdiZmU3NjBmMmUyNmViYjkxYzAxNDQyOGVj
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFBy
b21wdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9t
cHQuanMKQEAgLTEzNyw3ICsxMzcsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5
cGUgPSB7CiAKICAgICBzZXQgdGV4dCh4KQogICAgIHsKLSAgICAgICAgdGhpcy5jbGVhckF1dG9D
b21wbGV0ZSh0cnVlKTsKKyAgICAgICAgdGhpcy5fcmVtb3ZlU3VnZ2VzdGlvbkFpZHMoKTsKICAg
ICAgICAgaWYgKCF4KSB7CiAgICAgICAgICAgICAvLyBBcHBlbmQgYSBicmVhayBlbGVtZW50IGlu
c3RlYWQgb2Ygc2V0dGluZyB0ZXh0Q29udGVudCB0byBtYWtlIHN1cmUgdGhlIHNlbGVjdGlvbiBp
cyBpbnNpZGUgdGhlIHByb21wdC4KICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKQEAgLTE4NiwxOSArMTg2LDI2IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlzLl9l
bGVtZW50LCBmYWxzZSk7CiAgICAgfSwKIAorICAgIF9yZW1vdmVTdWdnZXN0aW9uQWlkczogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5jbGVhckF1dG9Db21wbGV0ZSgpOworICAgICAg
ICB0aGlzLmhpZGVTdWdnZXN0Qm94KCk7CisgICAgfSwKKwogICAgIF9zZWxlY3RTdGFydDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uVGltZW91dCkK
ICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zZWxlY3Rpb25UaW1lb3V0KTsKIAotICAg
ICAgICB0aGlzLmNsZWFyQXV0b0NvbXBsZXRlKCk7CisgICAgICAgIHRoaXMuX3JlbW92ZVN1Z2dl
c3Rpb25BaWRzKCk7CiAKICAgICAgICAgZnVuY3Rpb24gbW92ZUJhY2tJZk91dHNpZGUoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0aW9uVGltZW91dDsKLSAgICAg
ICAgICAgIGlmICghdGhpcy5pc0NhcmV0SW5zaWRlUHJvbXB0KCkgJiYgd2luZG93LmdldFNlbGVj
dGlvbigpLmlzQ29sbGFwc2VkKQorICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ2FyZXRJbnNpZGVQ
cm9tcHQoKSAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQpIHsKICAgICAgICAg
ICAgICAgICB0aGlzLm1vdmVDYXJldFRvRW5kT2ZQcm9tcHQoKTsKLSAgICAgICAgICAgIHRoaXMu
YXV0b0NvbXBsZXRlU29vbigpOworICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlU29v
bigpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc2VsZWN0aW9u
VGltZW91dCA9IHNldFRpbWVvdXQobW92ZUJhY2tJZk91dHNpZGUuYmluZCh0aGlzKSwgMTAwKTsK
QEAgLTIzMiwyMiArMjM5LDI1IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9
IHsKICAgICAgICAgY2FzZSAiRW50ZXIiOgogICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuZW50
ZXJLZXlQcmVzc2VkKGV2ZW50KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJM
ZWZ0IjoKKyAgICAgICAgY2FzZSAiSG9tZSI6CisgICAgICAgICAgICB0aGlzLl9yZW1vdmVTdWdn
ZXN0aW9uQWlkcygpOworICAgICAgICAgICAgaW52b2tlRGVmYXVsdCA9IGZhbHNlOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgIlJpZ2h0IjoKICAgICAgICAgY2FzZSAiRW5kIjoK
LSAgICAgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSAmJiB0aGlzLmlzQ2Fy
ZXRBdEVuZE9mUHJvbXB0KCkpCi0gICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuX3N1Z2dl
c3RCb3gudGFiS2V5UHJlc3NlZChldmVudCk7Ci0gICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICh0aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkpCiAgICAgICAgICAgICAgICAgaGFu
ZGxlZCA9IHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFo
YW5kbGVkKQotICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZVNvb24oKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9yZW1v
dmVTdWdnZXN0aW9uQWlkcygpOworICAgICAgICAgICAgaW52b2tlRGVmYXVsdCA9IGZhbHNlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgIlUrMDAxQiI6IC8vIEVzYwogICAgICAg
ICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKSB7CiAgICAgICAgICAgICAgICAg
dGhpcy5fc3VnZ2VzdEJveC5oaWRlKCk7CiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSAiVSswMDIwIjogLy8gU3BhY2UKICAgICAgICAgICAgIGlmICh0aGlz
Ll9zdWdnZXN0Rm9yY2VhYmxlICYmIGV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYg
IWV2ZW50LmFsdEtleSAmJiAhZXZlbnQuc2hpZnRLZXkpIHsKICAgICAgICAgICAgICAgICB0aGlz
LmRlZmF1bHRLZXlIYW5kbGVyKGV2ZW50LCB0cnVlKTsKQEAgLTI3NSw5ICsyODUsMTMgQEAgV2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogCiAgICAgYWNjZXB0QXV0b0NvbXBs
ZXRlOiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gZmFsc2U7CiAgICAg
ICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0
aGlzLl9zdWdnZXN0Qm94LmFjY2VwdFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgcmV0dXJuIHRoaXMu
YWNjZXB0U3VnZ2VzdGlvbigpOworICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5fc3VnZ2VzdEJv
eC5hY2NlcHRTdWdnZXN0aW9uKCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAg
cmVzdWx0ID0gdGhpcy5hY2NlcHRTdWdnZXN0aW9uKCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNDgsNyArMzYyLDcgQEAgV2ViSW5zcGVjdG9yLlRl
eHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgc2hvdWxkRXhpdCA9IHRydWU7CiAg
ICAgICAgIGVsc2UgaWYgKCFhdXRvICYmICFpc0VtcHR5SW5wdXQgJiYgIXNlbGVjdGlvblJhbmdl
LmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzRGVzY2VuZGFudCh0aGlzLl9lbGVtZW50KSkKICAg
ICAgICAgICAgIHNob3VsZEV4aXQgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChhdXRvICYmICF0
aGlzLl9zdWdnZXN0Qm94ICYmICFmb3JjZSAmJiAhdGhpcy5pc0NhcmV0QXRFbmRPZlByb21wdCgp
KQorICAgICAgICBlbHNlIGlmIChhdXRvICYmICFmb3JjZSAmJiAhdGhpcy5pc0NhcmV0QXRFbmRP
ZlByb21wdCgpICYmICF0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkKICAgICAgICAgICAgIHNo
b3VsZEV4aXQgPSB0cnVlOwogICAgICAgICBlbHNlIGlmICghc2VsZWN0aW9uLmlzQ29sbGFwc2Vk
KQogICAgICAgICAgICAgc2hvdWxkRXhpdCA9IHRydWU7CkBAIC00MDcsNyArNDIxLDcgQEAgV2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91c2VyRW50
ZXJlZFRleHQgPSBmdWxsV29yZFJhbmdlLnRvU3RyaW5nKCk7CiAKICAgICAgICAgaWYgKHRoaXMu
X3N1Z2dlc3RCb3gpCi0gICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LnVwZGF0ZVN1Z2dlc3Rp
b25zKHRoaXMuX2JveEZvckFuY2hvckF0U3RhcnQoc2VsZWN0aW9uLCBmdWxsV29yZFJhbmdlKSwg
Y29tcGxldGlvbnMpOworICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC51cGRhdGVTdWdnZXN0
aW9ucyh0aGlzLl9ib3hGb3JBbmNob3JBdFN0YXJ0KHNlbGVjdGlvbiwgZnVsbFdvcmRSYW5nZSks
IGNvbXBsZXRpb25zLCAhdGhpcy5pc0NhcmV0QXRFbmRPZlByb21wdCgpKTsKIAogICAgICAgICB2
YXIgd29yZFByZWZpeExlbmd0aCA9IG9yaWdpbmFsV29yZFByZWZpeFJhbmdlLnRvU3RyaW5nKCku
bGVuZ3RoOwogCkBAIC00NTQsMjUgKzQ2OCwyNyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXV0bykgewotICAgICAgICAg
ICAgdGhpcy5fdXNlckVudGVyZWRSYW5nZS5kZWxldGVDb250ZW50cygpOwotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5wcnVuZUVtcHR5VGV4dE5vZGVzKCk7Ci0gICAgICAgICAgICB2YXIgZmlu
YWxTZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Ci0gICAgICAgICAgICB2
YXIgcHJlZml4VGV4dCA9IGNvbXBsZXRpb25UZXh0LnN1YnN0cmluZygwLCB3b3JkUHJlZml4TGVu
Z3RoKTsKLSAgICAgICAgICAgIHZhciBzdWZmaXhUZXh0ID0gY29tcGxldGlvblRleHQuc3Vic3Ry
aW5nKHdvcmRQcmVmaXhMZW5ndGgpOwotCi0gICAgICAgICAgICB2YXIgcHJlZml4VGV4dE5vZGUg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcmVmaXhUZXh0KTsKLSAgICAgICAgICAgIGZ1bGxX
b3JkUmFuZ2UuaW5zZXJ0Tm9kZShwcmVmaXhUZXh0Tm9kZSk7Ci0KLSAgICAgICAgICAgIHRoaXMu
YXV0b0NvbXBsZXRlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAg
ICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5jbGFzc05hbWUgPSAiYXV0by1jb21w
bGV0ZS10ZXh0IjsKLSAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC50ZXh0Q29u
dGVudCA9IHN1ZmZpeFRleHQ7Ci0KLSAgICAgICAgICAgIHByZWZpeFRleHROb2RlLnBhcmVudE5v
ZGUuaW5zZXJ0QmVmb3JlKHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCwgcHJlZml4VGV4dE5vZGUu
bmV4dFNpYmxpbmcpOwotCi0gICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0
KHByZWZpeFRleHROb2RlLCB3b3JkUHJlZml4TGVuZ3RoKTsKLSAgICAgICAgICAgIGZpbmFsU2Vs
ZWN0aW9uUmFuZ2Uuc2V0RW5kKHByZWZpeFRleHROb2RlLCB3b3JkUHJlZml4TGVuZ3RoKTsKLSAg
ICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKLSAgICAgICAgICAgIHNlbGVj
dGlvbi5hZGRSYW5nZShmaW5hbFNlbGVjdGlvblJhbmdlKTsKKyAgICAgICAgICAgIGlmICh0aGlz
LmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl91c2VyRW50
ZXJlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5wcnVuZUVtcHR5VGV4dE5vZGVzKCk7CisgICAgICAgICAgICAgICAgdmFyIGZpbmFsU2VsZWN0
aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICAgICAgICAgIHZhciBw
cmVmaXhUZXh0ID0gY29tcGxldGlvblRleHQuc3Vic3RyaW5nKDAsIHdvcmRQcmVmaXhMZW5ndGgp
OworICAgICAgICAgICAgICAgIHZhciBzdWZmaXhUZXh0ID0gY29tcGxldGlvblRleHQuc3Vic3Ry
aW5nKHdvcmRQcmVmaXhMZW5ndGgpOworCisgICAgICAgICAgICAgICAgdmFyIHByZWZpeFRleHRO
b2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocHJlZml4VGV4dCk7CisgICAgICAgICAgICAg
ICAgZnVsbFdvcmRSYW5nZS5pbnNlcnROb2RlKHByZWZpeFRleHROb2RlKTsKKworICAgICAgICAg
ICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQuY2xhc3NO
YW1lID0gImF1dG8tY29tcGxldGUtdGV4dCI7CisgICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29t
cGxldGVFbGVtZW50LnRleHRDb250ZW50ID0gc3VmZml4VGV4dDsKKworICAgICAgICAgICAgICAg
IHByZWZpeFRleHROb2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuYXV0b0NvbXBsZXRl
RWxlbWVudCwgcHJlZml4VGV4dE5vZGUubmV4dFNpYmxpbmcpOworCisgICAgICAgICAgICAgICAg
ZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChwcmVmaXhUZXh0Tm9kZSwgd29yZFByZWZpeExl
bmd0aCk7CisgICAgICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQocHJlZml4
VGV4dE5vZGUsIHdvcmRQcmVmaXhMZW5ndGgpOworICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5y
ZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UoZmlu
YWxTZWxlY3Rpb25SYW5nZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgdGhpcy5hcHBseVN1Z2dlc3Rpb24oY29tcGxldGlvblRleHQsIGNvbXBsZXRpb25zLmxl
bmd0aCA+IDEsIG9yaWdpbmFsV29yZFByZWZpeFJhbmdlKTsKICAgICB9LApAQCAtNTcyLDcgKzU4
OCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFy
IGZvdW5kTmV4dFRleHQgPSBmYWxzZTsKICAgICAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAg
ICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSAmJiBub2RlLm5vZGVWYWx1
ZS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBpZiAoZm91bmROZXh0VGV4dCkKKyAgICAgICAg
ICAgICAgICBpZiAoZm91bmROZXh0VGV4dCAmJiAoIXRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCB8
fCAhdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LmlzQW5jZXN0b3Iobm9kZSkpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm91bmROZXh0VGV4dCA9
IHRydWU7CiAgICAgICAgICAgICB9CkBAIC02NDIsMTAgKzY1OCw3IEBAIFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKIAogICAgIHRhYktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3RCb3gudGFiS2V5UHJlc3NlZChldmVudCk7Ci0K
LSAgICAgICAgdGhpcy5jb21wbGV0ZShmYWxzZSwgZmFsc2UsIGV2ZW50LnNoaWZ0S2V5KTsKKyAg
ICAgICAgLy8gSnVzdCBjb25zdW1lIHRoZSBrZXkuCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0sCiAKQEAgLTEwMjcsMTQgKzEwNDAsMTUgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3Vn
Z2VzdEJveC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtBbmNob3JCb3h9
IGFuY2hvckJveAogICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz49fSBjb21wbGV0aW9ucwor
ICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGNhblNob3dGb3JTaW5nbGVJdGVtCiAgICAgICovCi0g
ICAgdXBkYXRlU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uKGFuY2hvckJveCwgY29tcGxldGlvbnMpCisg
ICAgdXBkYXRlU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uKGFuY2hvckJveCwgY29tcGxldGlvbnMsIGNh
blNob3dGb3JTaW5nbGVJdGVtKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3RUaW1l
b3V0KSB7CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc3VnZ2VzdFRpbWVvdXQpOwog
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3N1Z2dlc3RUaW1lb3V0OwogICAgICAgICB9Ci0gICAg
ICAgIHRoaXMuX2NvbXBsZXRpb25zUmVhZHkoYW5jaG9yQm94LCBjb21wbGV0aW9ucyk7CisgICAg
ICAgIHRoaXMuX2NvbXBsZXRpb25zUmVhZHkoYW5jaG9yQm94LCBjb21wbGV0aW9ucywgY2FuU2hv
d0ZvclNpbmdsZUl0ZW0pOwogICAgIH0sCiAKICAgICBfb25JdGVtTW91c2VEb3duOiBmdW5jdGlv
bih0ZXh0LCBldmVudCkKQEAgLTEwNjIsMTQgKzEwNzYsMTEgQEAgV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50Owog
ICAgIH0sCiAKLSAgICBfdXBkYXRlSXRlbXM6IGZ1bmN0aW9uKGl0ZW1zKQorICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbj19IGNhblNob3dGb3JTaW5nbGVJdGVtCisgICAgICovCisgICAg
X3VwZGF0ZUl0ZW1zOiBmdW5jdGlvbihpdGVtcywgY2FuU2hvd0ZvclNpbmdsZUl0ZW0pCiAgICAg
ewotICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkcmVuOwot
ICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gTWF0aC5taW4oY2hpbGRyZW4ubGVuZ3RoIC0g
MSwgdGhpcy5fc2VsZWN0ZWRJbmRleCk7Ci0gICAgICAgIHZhciBzZWxlY3RlZEl0ZW1UZXh0ID0g
dGhpcy5fc2VsZWN0ZWRJbmRleCA+PSAwID8gY2hpbGRyZW5bdGhpcy5fc2VsZWN0ZWRJbmRleF0u
dGV4dENvbnRlbnQgOiBudWxsOwotICAgICAgICB2YXIgaXRlbUluZGV4ID0gMDsKLSAgICAgICAg
dmFyIGNoaWxkID0gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOwotICAgICAgICB2YXIg
Y2hpbGRUZXh0ID0gY2hpbGQgPyBjaGlsZC50ZXh0Q29udGVudCA6IG51bGw7CiAgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB2YXIgdXNlckVu
dGVyZWRUZXh0ID0gdGhpcy5fdGV4dFByb21wdC5fdXNlckVudGVyZWRUZXh0OwpAQCAtMTA3OSw3
ICsxMDkwLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGN1cnJlbnRJ
dGVtRWxlbWVudCk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQg
PSB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgIHRoaXMuX3NlbGVjdGVk
RWxlbWVudCA9IGNhblNob3dGb3JTaW5nbGVJdGVtID8gdGhpcy5jb250ZW50RWxlbWVudC5maXJz
dENoaWxkIDogbnVsbDsKICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKCk7CiAgICAgfSwK
IApAQCAtMTA5NSwyMiArMTEwNiwzMyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0
Qm94LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudC5zY3Jv
bGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKICAgICAgICAgfQogICAgIH0sCisgICAgCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPj19IGNvbXBsZXRpb25zCisgICAgICog
QHBhcmFtIHtib29sZWFuPX0gY2FuU2hvd0ZvclNpbmdsZUl0ZW0KKyAgICAgKi8KKyAgICBfY2Fu
U2hvd0JveDogZnVuY3Rpb24oY29tcGxldGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVtKQorICAg
IHsKKyAgICAgICAgaWYgKCFjb21wbGV0aW9ucyB8fCAhY29tcGxldGlvbnMubGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKGNvbXBsZXRpb25z
Lmxlbmd0aCA+IDEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAg
IC8vIERvIG5vdCBzaG93IGEgc2luZ2xlIHN1Z2dlc3Rpb24gaWYgaXQgaXMgdGhlIHNhbWUgYXMg
dXNlci1lbnRlcmVkIHByZWZpeCwgZXZlbiBpZiBhbGxvd2VkIHRvIHNob3cgc2luZ2xlLWl0ZW0g
c3VnZ2VzdCBib3hlcy4KKyAgICAgICAgcmV0dXJuIGNhblNob3dGb3JTaW5nbGVJdGVtICYmIGNv
bXBsZXRpb25zWzBdICE9PSB0aGlzLl90ZXh0UHJvbXB0Ll91c2VyRW50ZXJlZFRleHQ7ICAgICAg
ICAKKyAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtBbmNob3JCb3h9IGFuY2hvckJv
eAogICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz49fSBjb21wbGV0aW9ucworICAgICAqIEBw
YXJhbSB7Ym9vbGVhbj19IGNhblNob3dGb3JTaW5nbGVJdGVtCiAgICAgICovCi0gICAgX2NvbXBs
ZXRpb25zUmVhZHk6IGZ1bmN0aW9uKGFuY2hvckJveCwgY29tcGxldGlvbnMpCisgICAgX2NvbXBs
ZXRpb25zUmVhZHk6IGZ1bmN0aW9uKGFuY2hvckJveCwgY29tcGxldGlvbnMsIGNhblNob3dGb3JT
aW5nbGVJdGVtKQogICAgIHsKLSAgICAgICAgaWYgKCFjb21wbGV0aW9ucyB8fCAhY29tcGxldGlv
bnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0aGlzLmhpZGUoKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlSXRlbXMoY29tcGxldGlvbnMpOwot
ICAgICAgICB0aGlzLl91cGRhdGVCb3hQb3NpdGlvbihhbmNob3JCb3gpOwotICAgICAgICBpZiAo
dGhpcy5jb250ZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggJiYgdGhpcy5jb250ZW50RWxlbWVu
dC5jaGlsZHJlbi5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICAvLyBXaWxsIG5vdCBiZSBzaG93
biBmb3IgYSBzb2xlIHN1Z2dlc3Rpb24gb3Igbm8gc3VnZ2VzdGlvbnMuCisgICAgICAgIGlmICh0
aGlzLl9jYW5TaG93Qm94KGNvbXBsZXRpb25zLCBjYW5TaG93Rm9yU2luZ2xlSXRlbSkpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1zKGNvbXBsZXRpb25zLCBjYW5TaG93Rm9yU2luZ2xl
SXRlbSk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVCb3hQb3NpdGlvbihhbmNob3JCb3gpOwog
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ2aXNpYmxlIik7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5oaWRlKCk7CkBAIC0xMTI4LDggKzExNTAsMTIg
QEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUgPSB7CiAKICAg
ICBlbnRlcktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKKyAgICAgICAgdmFyIGhh
c1NlbGVjdGVkSXRlbSA9ICEhdGhpcy5fc2VsZWN0ZWRFbGVtZW50OwogICAgICAgICB0aGlzLmFj
Y2VwdFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gUmVw
b3J0IHRoZSBldmVudCBhcyBub24taGFuZGxlZCBpZiB0aGVyZSBpcyBubyBzZWxlY3RlZCBpdGVt
LAorICAgICAgICAvLyB0byBjb21taXQgdGhlIGlucHV0IG9yIGhhbmRsZSBpdCBvdGhlcndpc2Uu
CisgICAgICAgIHJldHVybiBoYXNTZWxlY3RlZEl0ZW07CiAgICAgfSwKIAogICAgIHRhYktleVBy
ZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122442</attachid>
            <date>2012-01-13 09:43:43 -0800</date>
            <delta_ts>2012-01-16 06:42:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76058-20120113214340.patch</filename>
            <type>text/plain</type>
            <size>21202</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg5NDBmOGI2MzcwODAy
MDg1NDg2OTVkNjM2NzRmMTU3Yzg2MzdkMy4uOGVjOGZhZTNkYjE2NTY3Yjg0NTlkNzlhZDQxNmZm
YWYzNTBhOWQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAxLTExICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1RleHRQcm9tcHRdIEF1dG9jb21wbGV0ZSBhZGRzIHVud2FudGVkIHRleHQgdGhhdCdz
IGhhcmQgdG8gcmVtb3ZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjA1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFzIHBlciB0aGUgcmVzdWx0cyBvZiBhIHdhciByb29tOgorICAgICAgICAtIEF1dG8t
c3VnZ2VzdCBvbmx5IGFmdGVyIHVzZXIgdHlwaW5nIChhdm9pZCBzaG93aW5nIHN1Z2dlc3Rpb25z
IHdoZW4gbmF2aWdhdGluZyB0aHJvdWdoIHRoZSB1c2VyIGlucHV0LikKKyAgICAgICAgLSBEbyBu
b3Qgc2VsZWN0IHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBzdWdnZXN0IGJveCBpcyBzaG93biBhdCB0
aGUgZW5kIG9mIHByb21wdCAodG8gYWxsb3cgRW50ZXIgdG8gY29tbWl0IHRoZSBpbnB1dC4pCisg
ICAgICAgIC0gT25seSBzaG93IGdyYXllZCBhdXRvY29tcGxldGlvbiBhdCB0aGUgZW5kIG9mIHBy
b21wdCAob3RoZXJ3aXNlIHNob3cgYSBzdWdnZXN0IGJveCB3aXRoIHRoZSBmaXJzdCBpdGVtIHNl
bGVjdGVkLikKKyAgICAgICAgLSBHcmF5ZWQgYXV0b2NvbXBsZXRpb24gY2FuIG9ubHkgYmUgYWNj
ZXB0ZWQgd2l0aCB0aGUgRW5kIG9yIFJpZ2h0IGtleXMuCisgICAgICAgIC0gRW50ZXIgY2FuIGFj
Y2VwdCBhIHNlbGVjdGVkIHN1Z2dlc3Rpb24gaXRlbSBmcm9tIHRoZSBsaXN0LCB3aXRob3V0IGNv
bW1pdHRpbmcgdGhlIGlucHV0LgorICAgICAgICAtIFJldGFpbiB0aGUgQ1NTIG1vZGVsIGVkaXRp
bmcgYmVoYXZpb3IgYXMgY2xvc2UgdG8gdGhlIGV4aXN0aW5nIG9uZSBhcyBwb3NzaWJsZS4KKyAg
ICAgICAgLSBFbmFibGUgUGFnZVVwL1BhZ2VEb3duIHRvIG5hdmlnYXRlIHRoZSBzdWdnZXN0IGJv
eCBpdGVtcy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSk6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFByb21wdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5z
ZXQgdGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuX3Jl
bW92ZVN1Z2dlc3Rpb25BaWRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnBy
b3RvdHlwZS5fc2VsZWN0U3RhcnQubW92ZUJhY2tJZk91dHNpZGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLl9zZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUub25LZXlEb3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5hY2NlcHRBdXRvQ29tcGxldGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmNvbXBsZXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fY29tcGxldGlvbnNSZWFkeSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuaXNDYXJldEF0RW5kT2ZQ
cm9tcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLnRhYktl
eVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmRv
d25LZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlw
ZS5wYWdlVXBLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnBy
b3RvdHlwZS5wYWdlRG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uTmV4dEl0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uUHJldmlvdXNJdGVtKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnVw
ZGF0ZVN1Z2dlc3Rpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dl
c3RCb3gucHJvdG90eXBlLl91cGRhdGVJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fY2FuU2hvd0JveCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fcmVtZW1iZXJSb3dDb3Vu
dFBlclZpZXdwb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RC
b3gucHJvdG90eXBlLl9jb21wbGV0aW9uc1JlYWR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnBhZ2VVcEtleVByZXNzZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUucGFnZURvd25L
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gu
cHJvdG90eXBlLmVudGVyS2V5UHJlc3NlZCk6CisKIDIwMTItMDEtMTMgIFZzZXZvbG9kIFZsYXNv
diAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBpbnNwZWN0b3Ig
c2NyaXB0cyBuYXZpZ2F0b3Igc3R5bGUgZml4ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCAzZjk1NWMx
YjlhYzhhZDBkOGM0ZWQ5NDQ0MWNhMzFiMzUxMTkwMGIzLi5hODdkNzVkN2M1ZTdjZDE3OWI0MmJh
N2YxYTUyMjMyMTJiZDQxZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTIxNTYsOSArMjE1Niw5IEBA
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAg
ICAgX2hhc0JlZW5Nb2RpZmllZEluY3JlbWVudGFsbHk6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIC8vIE5ldyBwcm9wZXJ0aWVzIGFwcGxpZWQgdmlhIHVwL2Rvd24gaGF2ZSBhbiBvcmlnaW5h
bFByb3BlcnR5VGV4dCBhbmQgd2lsbCBiZSBkZWxldGVkIGxhdGVyCisgICAgICAgIC8vIE5ldyBw
cm9wZXJ0aWVzIGFwcGxpZWQgdmlhIHVwL2Rvd24gb3IgbGl2ZSBlZGl0aW5nIGhhdmUgYW4gb3Jp
Z2luYWxQcm9wZXJ0eVRleHQgYW5kIHdpbGwgYmUgZGVsZXRlZCBsYXRlcgogICAgICAgICAvLyBv
biwgaWYgY2FuY2VsbGVkLCB3aGVuIHRoZSBlbXB0eSBzdHJpbmcgZ2V0cyBhcHBsaWVkIGFzIHRo
ZWlyIHN0eWxlIHRleHQuCi0gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5vcmlnaW5hbFByb3Bl
cnR5VGV4dCA9PT0gInN0cmluZyI7CisgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5vcmlnaW5h
bFByb3BlcnR5VGV4dCA9PT0gInN0cmluZyIgfHwgISF0aGlzLnByb3BlcnR5LnByb3BlcnR5VGV4
dDsKICAgICB9LAogCiAgICAgYXBwbHlTdHlsZVRleHQ6IGZ1bmN0aW9uKHN0eWxlVGV4dCwgdXBk
YXRlSW50ZXJmYWNlLCBtYWpvckNoYW5nZSwgaXNSZXZlcnQpCkBAIC0yMTg0LDcgKzIxODQsNyBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgc3R5bGVUZXh0ID0gc3R5bGVUZXh0LnJlcGxhY2UoL1xzL2csICIgIikudHJpbSgpOyAv
LyBSZXBsYWNlICZuYnNwOyB3aXRoIHdoaXRlc3BhY2UuCiAgICAgICAgIHZhciBzdHlsZVRleHRM
ZW5ndGggPSBzdHlsZVRleHQubGVuZ3RoOwogICAgICAgICBpZiAoIXN0eWxlVGV4dExlbmd0aCAm
JiB1cGRhdGVJbnRlcmZhY2UgJiYgIWlzUmV2ZXJ0ICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmICF0
aGlzLl9oYXNCZWVuTW9kaWZpZWRJbmNyZW1lbnRhbGx5KCkpIHsKLSAgICAgICAgICAgIC8vIFRo
ZSB1c2VyIGRlbGV0ZWQgZXZlcnl0aGluZyBhbmQgbmV2ZXIgYXBwbGllZCBhIG5ldyBwcm9wZXJ0
eSB2YWx1ZSB2aWEgVXAvRG93biBzY3JvbGxpbmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBlbGVtZW50
IGFuZCB1cGRhdGUuCisgICAgICAgICAgICAvLyBUaGUgdXNlciBkZWxldGVkIGV2ZXJ5dGhpbmcg
YW5kIG5ldmVyIGFwcGxpZWQgYSBuZXcgcHJvcGVydHkgdmFsdWUgdmlhIFVwL0Rvd24gc2Nyb2xs
aW5nL2xpdmUgZWRpdGluZywgc28gcmVtb3ZlIHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVwZGF0ZS4K
ICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpOwogICAgICAgICAgICAg
c2VjdGlvbi5hZnRlclVwZGF0ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI1OCwxNyAr
MjI1OCwxOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9t
cHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJVKzAwMDkiOgotICAgICAgICAgICAg
aWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5f
c3VnZ2VzdEJveC5hY2NlcHRTdWdnZXN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICF0
aGlzLl9pc0VkaXRpbmdOYW1lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRo
aXMuYWNjZXB0QXV0b0NvbXBsZXRlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5wcm90b3R5cGUub25LZXlEb3duLmNhbGwodGhpcywgZXZlbnQpOwogICAg
IH0sCiAKKyAgICB0YWJLZXlQcmVzc2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
LmFjY2VwdEF1dG9Db21wbGV0ZSgpOworCisgICAgICAgIC8vIEFsd2F5cyB0YWIgdG8gdGhlIG5l
eHQgZmllbGQuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCiAgICAgX2hhbmRsZU5h
bWVPclZhbHVlVXBEb3duOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIC8vIEhhbmRs
ZSBudW1lcmljIHZhbHVlIGluY3JlbWVudC9kZWNyZW1lbnQgb25seSBhdCB0aGlzIHBvaW50Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCmlu
ZGV4IGYzYmI4OWMyNGU1YzJmMWE3OWVhZDc5NzJiNzI4OWI1ZDMxYTU2MWIuLjk5ZjU0NDBjNjAx
N2U0YTJlMTA3NGEwZGNhN2YwM2Q2NzdkNDExOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKQEAgLTEzNyw3ICsxMzcsNyBAQCBXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAKICAgICBzZXQgdGV4dCh4KQogICAg
IHsKLSAgICAgICAgdGhpcy5jbGVhckF1dG9Db21wbGV0ZSh0cnVlKTsKKyAgICAgICAgdGhpcy5f
cmVtb3ZlU3VnZ2VzdGlvbkFpZHMoKTsKICAgICAgICAgaWYgKCF4KSB7CiAgICAgICAgICAgICAv
LyBBcHBlbmQgYSBicmVhayBlbGVtZW50IGluc3RlYWQgb2Ygc2V0dGluZyB0ZXh0Q29udGVudCB0
byBtYWtlIHN1cmUgdGhlIHNlbGVjdGlvbiBpcyBpbnNpZGUgdGhlIHByb21wdC4KICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKQEAgLTE4NiwxOSArMTg2LDI2IEBA
IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlzLl9lbGVtZW50LCBmYWxzZSk7CiAgICAgfSwKIAorICAg
IF9yZW1vdmVTdWdnZXN0aW9uQWlkczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5j
bGVhckF1dG9Db21wbGV0ZSgpOworICAgICAgICB0aGlzLmhpZGVTdWdnZXN0Qm94KCk7CisgICAg
fSwKKwogICAgIF9zZWxlY3RTdGFydDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fc2VsZWN0aW9uVGltZW91dCkKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlz
Ll9zZWxlY3Rpb25UaW1lb3V0KTsKIAotICAgICAgICB0aGlzLmNsZWFyQXV0b0NvbXBsZXRlKCk7
CisgICAgICAgIHRoaXMuX3JlbW92ZVN1Z2dlc3Rpb25BaWRzKCk7CiAKICAgICAgICAgZnVuY3Rp
b24gbW92ZUJhY2tJZk91dHNpZGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fc2VsZWN0aW9uVGltZW91dDsKLSAgICAgICAgICAgIGlmICghdGhpcy5pc0NhcmV0SW5zaWRl
UHJvbXB0KCkgJiYgd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQorICAgICAgICAg
ICAgaWYgKCF0aGlzLmlzQ2FyZXRJbnNpZGVQcm9tcHQoKSAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAgICAgICB0aGlzLm1vdmVDYXJldFRvRW5kT2ZQ
cm9tcHQoKTsKLSAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlU29vbigpOworICAgICAgICAg
ICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlU29vbigpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5fc2VsZWN0aW9uVGltZW91dCA9IHNldFRpbWVvdXQobW92ZUJhY2tJ
Zk91dHNpZGUuYmluZCh0aGlzKSwgMTAwKTsKQEAgLTIyNiwyOCArMjMzLDM3IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgY2FzZSAiRG93biI6CiAgICAg
ICAgICAgICBoYW5kbGVkID0gdGhpcy5kb3duS2V5UHJlc3NlZChldmVudCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAiUGFnZVVwIjoKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0
aGlzLnBhZ2VVcEtleVByZXNzZWQoZXZlbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgIlBhZ2VEb3duIjoKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnBhZ2VEb3duS2V5
UHJlc3NlZChldmVudCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiVSswMDA5
IjogLy8gVGFiCiAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50YWJLZXlQcmVzc2VkKGV2ZW50
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICJFbnRlciI6CiAgICAgICAgICAg
ICBoYW5kbGVkID0gdGhpcy5lbnRlcktleVByZXNzZWQoZXZlbnQpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgIkxlZnQiOgorICAgICAgICBjYXNlICJIb21lIjoKKyAgICAgICAg
ICAgIHRoaXMuX3JlbW92ZVN1Z2dlc3Rpb25BaWRzKCk7CisgICAgICAgICAgICBpbnZva2VEZWZh
dWx0ID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiUmlnaHQiOgog
ICAgICAgICBjYXNlICJFbmQiOgotICAgICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94Vmlz
aWJsZSgpICYmIHRoaXMuaXNDYXJldEF0RW5kT2ZQcm9tcHQoKSkKLSAgICAgICAgICAgICAgICBo
YW5kbGVkID0gdGhpcy5fc3VnZ2VzdEJveC50YWJLZXlQcmVzc2VkKGV2ZW50KTsKLSAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHRoaXMuaXNDYXJldEF0RW5kT2ZQcm9tcHQoKSkK
ICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5hY2NlcHRBdXRvQ29tcGxldGUoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWhhbmRsZWQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0
b0NvbXBsZXRlU29vbigpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRoaXMuX3JlbW92ZVN1Z2dlc3Rpb25BaWRzKCk7CisgICAgICAgICAgICBpbnZv
a2VEZWZhdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiVSsw
MDFCIjogLy8gRXNjCiAgICAgICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkp
IHsKICAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LmhpZGUoKTsKICAgICAgICAgICAg
ICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICJVKzAwMjAiOiAvLyBTcGFjZQog
ICAgICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3RGb3JjZWFibGUgJiYgZXZlbnQuY3RybEtleSAm
JiAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuYWx0S2V5ICYmICFldmVudC5zaGlmdEtleSkgewog
ICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEtleUhhbmRsZXIoZXZlbnQsIHRydWUpOwpAQCAt
Mjc1LDkgKzI5MSwxMyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAK
ICAgICBhY2NlcHRBdXRvQ29tcGxldGU6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIHZhciBy
ZXN1bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3RCb3guYWNjZXB0U3VnZ2VzdGlvbigpOwot
ICAgICAgICByZXR1cm4gdGhpcy5hY2NlcHRTdWdnZXN0aW9uKCk7CisgICAgICAgICAgICByZXN1
bHQgPSB0aGlzLl9zdWdnZXN0Qm94LmFjY2VwdFN1Z2dlc3Rpb24oKTsKKyAgICAgICAgaWYgKCFy
ZXN1bHQpCisgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmFjY2VwdFN1Z2dlc3Rpb24oKTsKKwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKICAgICAvKioKQEAgLTM0OCw3ICszNjgs
NyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBz
aG91bGRFeGl0ID0gdHJ1ZTsKICAgICAgICAgZWxzZSBpZiAoIWF1dG8gJiYgIWlzRW1wdHlJbnB1
dCAmJiAhc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIuaXNEZXNjZW5kYW50
KHRoaXMuX2VsZW1lbnQpKQogICAgICAgICAgICAgc2hvdWxkRXhpdCA9IHRydWU7Ci0gICAgICAg
IGVsc2UgaWYgKGF1dG8gJiYgIXRoaXMuX3N1Z2dlc3RCb3ggJiYgIWZvcmNlICYmICF0aGlzLmlz
Q2FyZXRBdEVuZE9mUHJvbXB0KCkpCisgICAgICAgIGVsc2UgaWYgKGF1dG8gJiYgIWZvcmNlICYm
ICF0aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkgJiYgIXRoaXMuaXNTdWdnZXN0Qm94VmlzaWJs
ZSgpKQogICAgICAgICAgICAgc2hvdWxkRXhpdCA9IHRydWU7CiAgICAgICAgIGVsc2UgaWYgKCFz
ZWxlY3Rpb24uaXNDb2xsYXBzZWQpCiAgICAgICAgICAgICBzaG91bGRFeGl0ID0gdHJ1ZTsKQEAg
LTQwNyw3ICs0MjcsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX3VzZXJFbnRlcmVkVGV4dCA9IGZ1bGxXb3JkUmFuZ2UudG9TdHJpbmcoKTsK
IAogICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdEJveCkKLSAgICAgICAgICAgIHRoaXMuX3N1Z2dl
c3RCb3gudXBkYXRlU3VnZ2VzdGlvbnModGhpcy5fYm94Rm9yQW5jaG9yQXRTdGFydChzZWxlY3Rp
b24sIGZ1bGxXb3JkUmFuZ2UpLCBjb21wbGV0aW9ucyk7CisgICAgICAgICAgICB0aGlzLl9zdWdn
ZXN0Qm94LnVwZGF0ZVN1Z2dlc3Rpb25zKHRoaXMuX2JveEZvckFuY2hvckF0U3RhcnQoc2VsZWN0
aW9uLCBmdWxsV29yZFJhbmdlKSwgY29tcGxldGlvbnMsICF0aGlzLmlzQ2FyZXRBdEVuZE9mUHJv
bXB0KCkpOwogCiAgICAgICAgIHZhciB3b3JkUHJlZml4TGVuZ3RoID0gb3JpZ2luYWxXb3JkUHJl
Zml4UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7CiAKQEAgLTQ1NCwyNSArNDc0LDI3IEBAIFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChhdXRvKSB7Ci0gICAgICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFJhbmdlLmRlbGV0ZUNvbnRl
bnRzKCk7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnBydW5lRW1wdHlUZXh0Tm9kZXMoKTsK
LSAgICAgICAgICAgIHZhciBmaW5hbFNlbGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKLSAgICAgICAgICAgIHZhciBwcmVmaXhUZXh0ID0gY29tcGxldGlvblRleHQuc3Vic3Ry
aW5nKDAsIHdvcmRQcmVmaXhMZW5ndGgpOwotICAgICAgICAgICAgdmFyIHN1ZmZpeFRleHQgPSBj
b21wbGV0aW9uVGV4dC5zdWJzdHJpbmcod29yZFByZWZpeExlbmd0aCk7Ci0KLSAgICAgICAgICAg
IHZhciBwcmVmaXhUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHByZWZpeFRleHQp
OwotICAgICAgICAgICAgZnVsbFdvcmRSYW5nZS5pbnNlcnROb2RlKHByZWZpeFRleHROb2RlKTsK
LQotICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LmNs
YXNzTmFtZSA9ICJhdXRvLWNvbXBsZXRlLXRleHQiOwotICAgICAgICAgICAgdGhpcy5hdXRvQ29t
cGxldGVFbGVtZW50LnRleHRDb250ZW50ID0gc3VmZml4VGV4dDsKLQotICAgICAgICAgICAgcHJl
Zml4VGV4dE5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5hdXRvQ29tcGxldGVFbGVt
ZW50LCBwcmVmaXhUZXh0Tm9kZS5uZXh0U2libGluZyk7Ci0KLSAgICAgICAgICAgIGZpbmFsU2Vs
ZWN0aW9uUmFuZ2Uuc2V0U3RhcnQocHJlZml4VGV4dE5vZGUsIHdvcmRQcmVmaXhMZW5ndGgpOwot
ICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQocHJlZml4VGV4dE5vZGUsIHdv
cmRQcmVmaXhMZW5ndGgpOwotICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygp
OwotICAgICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOwor
ICAgICAgICAgICAgaWYgKHRoaXMuaXNDYXJldEF0RW5kT2ZQcm9tcHQoKSkgeworICAgICAgICAg
ICAgICAgIHRoaXMuX3VzZXJFbnRlcmVkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LnBydW5lRW1wdHlUZXh0Tm9kZXMoKTsKKyAgICAgICAgICAg
ICAgICB2YXIgZmluYWxTZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgICAgICAgICAgICAgdmFyIHByZWZpeFRleHQgPSBjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmco
MCwgd29yZFByZWZpeExlbmd0aCk7CisgICAgICAgICAgICAgICAgdmFyIHN1ZmZpeFRleHQgPSBj
b21wbGV0aW9uVGV4dC5zdWJzdHJpbmcod29yZFByZWZpeExlbmd0aCk7CisKKyAgICAgICAgICAg
ICAgICB2YXIgcHJlZml4VGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcmVmaXhU
ZXh0KTsKKyAgICAgICAgICAgICAgICBmdWxsV29yZFJhbmdlLmluc2VydE5vZGUocHJlZml4VGV4
dE5vZGUpOworCisgICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgICAgIHRoaXMuYXV0b0Nv
bXBsZXRlRWxlbWVudC5jbGFzc05hbWUgPSAiYXV0by1jb21wbGV0ZS10ZXh0IjsKKyAgICAgICAg
ICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBzdWZmaXhUZXh0
OworCisgICAgICAgICAgICAgICAgcHJlZml4VGV4dE5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZv
cmUodGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LCBwcmVmaXhUZXh0Tm9kZS5uZXh0U2libGluZyk7
CisKKyAgICAgICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KHByZWZpeFRl
eHROb2RlLCB3b3JkUHJlZml4TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBmaW5hbFNlbGVjdGlv
blJhbmdlLnNldEVuZChwcmVmaXhUZXh0Tm9kZSwgd29yZFByZWZpeExlbmd0aCk7CisgICAgICAg
ICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOworICAgICAgICAgICAgICAgIHNl
bGVjdGlvbi5hZGRSYW5nZShmaW5hbFNlbGVjdGlvblJhbmdlKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLmFwcGx5U3VnZ2VzdGlvbihjb21wbGV0aW9u
VGV4dCwgY29tcGxldGlvbnMubGVuZ3RoID4gMSwgb3JpZ2luYWxXb3JkUHJlZml4UmFuZ2UpOwog
ICAgIH0sCkBAIC01NzIsNyArNTk0LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgZm91bmROZXh0VGV4dCA9IGZhbHNlOwogICAgICAgICB3aGls
ZSAobm9kZSkgewogICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9O
T0RFICYmIG5vZGUubm9kZVZhbHVlLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIGlmIChmb3Vu
ZE5leHRUZXh0KQorICAgICAgICAgICAgICAgIGlmIChmb3VuZE5leHRUZXh0ICYmICghdGhpcy5h
dXRvQ29tcGxldGVFbGVtZW50IHx8ICF0aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQuaXNBbmNlc3Rv
cihub2RlKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICBmb3VuZE5leHRUZXh0ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTY0MiwxMCArNjY0
LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogCiAgICAgdGFiS2V5
UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5pc1N1Z2dl
c3RCb3hWaXNpYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJveC50YWJL
ZXlQcmVzc2VkKGV2ZW50KTsKLQotICAgICAgICB0aGlzLmNvbXBsZXRlKGZhbHNlLCBmYWxzZSwg
ZXZlbnQuc2hpZnRLZXkpOworICAgICAgICAvLyBKdXN0IGNvbnN1bWUgdGhlIGtleS4KICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIApAQCAtNjcxLDcgKzY5MCwyMyBAQCBXZWJJbnNwZWN0
b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3Vn
Z2VzdEJveC5kb3duS2V5UHJlc3NlZChldmVudCk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KKyAgICB9LAorCisgICAgcGFnZVVwS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpCisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJveC5wYWdlVXBLZXlQcmVzc2VkKGV2ZW50KTsKKworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAgIHBhZ2VEb3duS2V5UHJlc3NlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxl
KCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJveC5wYWdlRG93bktleVByZXNz
ZWQoZXZlbnQpOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAogfQogCiBXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7CkBAIC05OTQsMzEgKzEwMjksNTkgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9t
cHQuU3VnZ2VzdEJveC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0s
CiAKLSAgICBfb25OZXh0SXRlbTogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uTmV4dEl0ZW06IGZ1
bmN0aW9uKGV2ZW50LCBpc1BhZ2VTY3JvbGwpCiAgICAgewogICAgICAgICB2YXIgY2hpbGRyZW4g
PSB0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkTm9kZXM7CiAgICAgICAgIGlmICghY2hpbGRyZW4u
bGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLl9z
ZWxlY3RlZEVsZW1lbnQpCi0gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSB0aGlz
Ll9zZWxlY3RlZEVsZW1lbnQubmV4dFNpYmxpbmcgfHwgdGhpcy5jb250ZW50RWxlbWVudC5maXJz
dENoaWxkOwotICAgICAgICBlbHNlCisgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRFbGVtZW50
KQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5jb250ZW50RWxlbWVu
dC5maXJzdENoaWxkOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghaXNQYWdlU2Ny
b2xsKQorICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVj
dGVkRWxlbWVudC5uZXh0U2libGluZyB8fCB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQ7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgY2FuZGlkYXRlID0gdGhp
cy5fc2VsZWN0ZWRFbGVtZW50OworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaXRlbXNMZWZ0
ID0gdGhpcy5fcm93Q291bnRQZXJWaWV3cG9ydDsgaXRlbXNMZWZ0OyAtLWl0ZW1zTGVmdCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLm5leHRTaWJsaW5nKQorICAgICAgICAg
ICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlLm5leHRTaWJsaW5nOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSBj
YW5kaWRhdGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgdGhpcy5fdXBkYXRl
U2VsZWN0aW9uKCk7CiAgICAgICAgIHRoaXMuX2FwcGx5U3VnZ2VzdGlvbih1bmRlZmluZWQsIHRy
dWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCi0gICAgX29uUHJldmlvdXNJdGVt
OiBmdW5jdGlvbihldmVudCkKKyAgICBfb25QcmV2aW91c0l0ZW06IGZ1bmN0aW9uKGV2ZW50LCBp
c1BhZ2VTY3JvbGwpCiAgICAgewogICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRF
bGVtZW50LmNoaWxkTm9kZXM7CiAgICAgICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQp
Ci0gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZEVsZW1l
bnQucHJldmlvdXNTaWJsaW5nIHx8IHRoaXMuY29udGVudEVsZW1lbnQubGFzdENoaWxkOwotICAg
ICAgICBlbHNlCisgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRFbGVtZW50KQogICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5jb250ZW50RWxlbWVudC5sYXN0Q2hpbGQ7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFpc1BhZ2VTY3JvbGwpCisgICAgICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50LnBy
ZXZpb3VzU2libGluZyB8fCB0aGlzLmNvbnRlbnRFbGVtZW50Lmxhc3RDaGlsZDsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBjYW5kaWRhdGUgPSB0aGlzLl9zZWxlY3Rl
ZEVsZW1lbnQ7CisKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpdGVtc0xlZnQgPSB0aGlzLl9y
b3dDb3VudFBlclZpZXdwb3J0OyBpdGVtc0xlZnQ7IC0taXRlbXNMZWZ0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjYW5kaWRhdGUucHJldmlvdXNTaWJsaW5nKQorICAgICAgICAgICAgICAg
ICAgICAgICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlLnByZXZpb3VzU2libGluZzsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gY2Fu
ZGlkYXRlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNl
bGVjdGlvbigpOwogICAgICAgICB0aGlzLl9hcHBseVN1Z2dlc3Rpb24odW5kZWZpbmVkLCB0cnVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDI3LDE0ICsxMDkwLDE1IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAq
IEBwYXJhbSB7QW5jaG9yQm94fSBhbmNob3JCb3gKICAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJp
bmc+PX0gY29tcGxldGlvbnMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBjYW5TaG93Rm9yU2lu
Z2xlSXRlbQogICAgICAqLwotICAgIHVwZGF0ZVN1Z2dlc3Rpb25zOiBmdW5jdGlvbihhbmNob3JC
b3gsIGNvbXBsZXRpb25zKQorICAgIHVwZGF0ZVN1Z2dlc3Rpb25zOiBmdW5jdGlvbihhbmNob3JC
b3gsIGNvbXBsZXRpb25zLCBjYW5TaG93Rm9yU2luZ2xlSXRlbSkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9zdWdnZXN0VGltZW91dCkgewogICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMu
X3N1Z2dlc3RUaW1lb3V0KTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zdWdnZXN0VGltZW91
dDsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9jb21wbGV0aW9uc1JlYWR5KGFuY2hvckJveCwg
Y29tcGxldGlvbnMpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9uc1JlYWR5KGFuY2hvckJveCwg
Y29tcGxldGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVtKTsKICAgICB9LAogCiAgICAgX29uSXRl
bU1vdXNlRG93bjogZnVuY3Rpb24odGV4dCwgZXZlbnQpCkBAIC0xMDYxLDE1ICsxMTI1LDEyIEBA
IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlID0gewogICAgICAg
ICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX29uSXRlbU1vdXNl
RG93bi5iaW5kKHRoaXMsIHRleHQpLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiBlbGVtZW50Owog
ICAgIH0sCi0KLSAgICBfdXBkYXRlSXRlbXM6IGZ1bmN0aW9uKGl0ZW1zKQorICAgIAorICAgIC8q
KgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGNhblNob3dGb3JTaW5nbGVJdGVtCisgICAgICov
CisgICAgX3VwZGF0ZUl0ZW1zOiBmdW5jdGlvbihpdGVtcywgY2FuU2hvd0ZvclNpbmdsZUl0ZW0p
CiAgICAgewotICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxk
cmVuOwotICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gTWF0aC5taW4oY2hpbGRyZW4ubGVu
Z3RoIC0gMSwgdGhpcy5fc2VsZWN0ZWRJbmRleCk7Ci0gICAgICAgIHZhciBzZWxlY3RlZEl0ZW1U
ZXh0ID0gdGhpcy5fc2VsZWN0ZWRJbmRleCA+PSAwID8gY2hpbGRyZW5bdGhpcy5fc2VsZWN0ZWRJ
bmRleF0udGV4dENvbnRlbnQgOiBudWxsOwotICAgICAgICB2YXIgaXRlbUluZGV4ID0gMDsKLSAg
ICAgICAgdmFyIGNoaWxkID0gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOwotICAgICAg
ICB2YXIgY2hpbGRUZXh0ID0gY2hpbGQgPyBjaGlsZC50ZXh0Q29udGVudCA6IG51bGw7CiAgICAg
ICAgIHRoaXMuY29udGVudEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB2YXIg
dXNlckVudGVyZWRUZXh0ID0gdGhpcy5fdGV4dFByb21wdC5fdXNlckVudGVyZWRUZXh0OwpAQCAt
MTA3OCw4ICsxMTM5LDggQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgY3VycmVudEl0ZW1FbGVtZW50ID0gdGhpcy5fY3Jl
YXRlSXRlbUVsZW1lbnQodXNlckVudGVyZWRUZXh0LCBpdGVtKTsKICAgICAgICAgICAgIHRoaXMu
Y29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY3VycmVudEl0ZW1FbGVtZW50KTsKICAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQu
Zmlyc3RDaGlsZDsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IGNh
blNob3dGb3JTaW5nbGVJdGVtID8gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkIDogbnVs
bDsKICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKCk7CiAgICAgfSwKIApAQCAtMTA5Nywy
MSArMTE1OCw0MSBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtBbmNob3JCb3h9IGFuY2hv
ckJveAogICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz49fSBjb21wbGV0aW9ucworICAgICAq
IEBwYXJhbSB7Ym9vbGVhbj19IGNhblNob3dGb3JTaW5nbGVJdGVtCiAgICAgICovCi0gICAgX2Nv
bXBsZXRpb25zUmVhZHk6IGZ1bmN0aW9uKGFuY2hvckJveCwgY29tcGxldGlvbnMpCisgICAgX2Nh
blNob3dCb3g6IGZ1bmN0aW9uKGNvbXBsZXRpb25zLCBjYW5TaG93Rm9yU2luZ2xlSXRlbSkKICAg
ICB7Ci0gICAgICAgIGlmICghY29tcGxldGlvbnMgfHwgIWNvbXBsZXRpb25zLmxlbmd0aCkgewot
ICAgICAgICAgICAgdGhpcy5oaWRlKCkKKyAgICAgICAgaWYgKCFjb21wbGV0aW9ucyB8fCAhY29t
cGxldGlvbnMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlm
IChjb21wbGV0aW9ucy5sZW5ndGggPiAxKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgLy8gRG8gbm90IHNob3cgYSBzaW5nbGUgc3VnZ2VzdGlvbiBpZiBpdCBpcyB0aGUgc2Ft
ZSBhcyB1c2VyLWVudGVyZWQgcHJlZml4LCBldmVuIGlmIGFsbG93ZWQgdG8gc2hvdyBzaW5nbGUt
aXRlbSBzdWdnZXN0IGJveGVzLgorICAgICAgICByZXR1cm4gY2FuU2hvd0ZvclNpbmdsZUl0ZW0g
JiYgY29tcGxldGlvbnNbMF0gIT09IHRoaXMuX3RleHRQcm9tcHQuX3VzZXJFbnRlcmVkVGV4dDsK
KyAgICB9LAorCisgICAgX3JlbWVtYmVyUm93Q291bnRQZXJWaWV3cG9ydDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAgICAgICB0aGlzLl91cGRhdGVJdGVtcyhj
b21wbGV0aW9ucyk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUJveFBvc2l0aW9uKGFuY2hvckJveCk7
Ci0gICAgICAgIGlmICh0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAmJiB0aGlz
LmNvbnRlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDEpIHsKLSAgICAgICAgICAgIC8vIFdp
bGwgbm90IGJlIHNob3duIGZvciBhIHNvbGUgc3VnZ2VzdGlvbiBvciBubyBzdWdnZXN0aW9ucy4K
KyAgICAgICAgdGhpcy5fcm93Q291bnRQZXJWaWV3cG9ydCA9IE1hdGguZmxvb3IodGhpcy5jb250
YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodCAvIHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGls
ZC5vZmZzZXRIZWlnaHQpOworICAgIH0sICAgIAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtB
bmNob3JCb3h9IGFuY2hvckJveAorICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz49fSBjb21w
bGV0aW9ucworICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGNhblNob3dGb3JTaW5nbGVJdGVtCisg
ICAgICovCisgICAgX2NvbXBsZXRpb25zUmVhZHk6IGZ1bmN0aW9uKGFuY2hvckJveCwgY29tcGxl
dGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVtKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2Nh
blNob3dCb3goY29tcGxldGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVtKSkgeworICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlSXRlbXMoY29tcGxldGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVtKTsK
KyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUJveFBvc2l0aW9uKGFuY2hvckJveCk7CiAgICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgICAgICAgICAg
IHRoaXMuX3JlbWVtYmVyUm93Q291bnRQZXJWaWV3cG9ydCgpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIHRoaXMuaGlkZSgpOwogICAgIH0sCkBAIC0xMTI2LDEwICsxMjA3LDI0IEBAIFdl
Ykluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gdGhpcy5fb25OZXh0SXRlbShldmVudCk7CiAgICAgfSwKIAorICAgIHBhZ2VVcEtleVBy
ZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX29uUHJl
dmlvdXNJdGVtKGV2ZW50LCB0cnVlKTsKKyAgICB9LAorCisgICAgcGFnZURvd25LZXlQcmVzc2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vbk5leHRJdGVt
KGV2ZW50LCB0cnVlKTsKKyAgICB9LAorICAgIAogICAgIGVudGVyS2V5UHJlc3NlZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgeworICAgICAgICB2YXIgaGFzU2VsZWN0ZWRJdGVtID0gISF0aGlzLl9z
ZWxlY3RlZEVsZW1lbnQ7CiAgICAgICAgIHRoaXMuYWNjZXB0U3VnZ2VzdGlvbigpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBSZXBvcnQgdGhlIGV2ZW50IGFzIG5vbi1oYW5k
bGVkIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkIGl0ZW0sCisgICAgICAgIC8vIHRvIGNvbW1pdCB0
aGUgaW5wdXQgb3IgaGFuZGxlIGl0IG90aGVyd2lzZS4KKyAgICAgICAgcmV0dXJuIGhhc1NlbGVj
dGVkSXRlbTsKICAgICB9LAogCiAgICAgdGFiS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122625</attachid>
            <date>2012-01-16 06:43:08 -0800</date>
            <delta_ts>2012-01-17 03:36:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76058-20120116184306.patch</filename>
            <type>text/plain</type>
            <size>21004</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZkZGVkNzYyZWQwYjUw
MWY2Y2IwZTczYWYxYTZiZTUyNDE3YzEwMi4uNGUyZTY5N2VhZDE0MjU4MGRmMjI0MzhhZDNhZjU3
YTc5ZGQ2YzI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAxLTExICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1RleHRQcm9tcHRdIEF1dG9jb21wbGV0ZSBhZGRzIHVud2FudGVkIHRleHQgdGhhdCdz
IGhhcmQgdG8gcmVtb3ZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjA1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFzIHBlciB0aGUgcmVzdWx0cyBvZiBhIHdhciByb29tOgorICAgICAgICAtIEF1dG8t
c3VnZ2VzdCBvbmx5IGFmdGVyIHVzZXIgdHlwaW5nIChhdm9pZCBzaG93aW5nIHN1Z2dlc3Rpb25z
IHdoZW4gbmF2aWdhdGluZyB0aHJvdWdoIHRoZSB1c2VyIGlucHV0LikKKyAgICAgICAgLSBEbyBu
b3Qgc2VsZWN0IHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBzdWdnZXN0IGJveCBpcyBzaG93biBhdCB0
aGUgZW5kIG9mIHByb21wdCAodG8gYWxsb3cgRW50ZXIgdG8gY29tbWl0IHRoZSBpbnB1dC4pCisg
ICAgICAgIC0gT25seSBzaG93IGdyYXllZCBhdXRvY29tcGxldGlvbiBhdCB0aGUgZW5kIG9mIHBy
b21wdCAob3RoZXJ3aXNlIHNob3cgYSBzdWdnZXN0IGJveCB3aXRoIHRoZSBmaXJzdCBpdGVtIHNl
bGVjdGVkLikKKyAgICAgICAgLSBHcmF5ZWQgYXV0b2NvbXBsZXRpb24gY2FuIG9ubHkgYmUgYWNj
ZXB0ZWQgd2l0aCB0aGUgRW5kIG9yIFJpZ2h0IGtleXMuCisgICAgICAgIC0gRW50ZXIgY2FuIGFj
Y2VwdCBhIHNlbGVjdGVkIHN1Z2dlc3Rpb24gaXRlbSBmcm9tIHRoZSBsaXN0LCB3aXRob3V0IGNv
bW1pdHRpbmcgdGhlIGlucHV0LgorICAgICAgICAtIFJldGFpbiB0aGUgQ1NTIG1vZGVsIGVkaXRp
bmcgYmVoYXZpb3IgYXMgY2xvc2UgdG8gdGhlIGV4aXN0aW5nIG9uZSBhcyBwb3NzaWJsZS4KKyAg
ICAgICAgLSBFbmFibGUgUGFnZVVwL1BhZ2VEb3duIHRvIG5hdmlnYXRlIHRoZSBzdWdnZXN0IGJv
eCBpdGVtcy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSk6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFByb21wdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5z
ZXQgdGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuX3Jl
bW92ZVN1Z2dlc3Rpb25BaWRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnBy
b3RvdHlwZS5fc2VsZWN0U3RhcnQubW92ZUJhY2tJZk91dHNpZGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLl9zZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUub25LZXlEb3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5hY2NlcHRBdXRvQ29tcGxldGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmNvbXBsZXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fY29tcGxldGlvbnNSZWFkeSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuaXNDYXJldEF0RW5kT2ZQ
cm9tcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLnRhYktl
eVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmRv
d25LZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlw
ZS5wYWdlVXBLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnBy
b3RvdHlwZS5wYWdlRG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uTmV4dEl0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uUHJldmlvdXNJdGVtKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnVw
ZGF0ZVN1Z2dlc3Rpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dl
c3RCb3gucHJvdG90eXBlLl91cGRhdGVJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fY2FuU2hvd0JveCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fcmVtZW1iZXJSb3dDb3Vu
dFBlclZpZXdwb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RC
b3gucHJvdG90eXBlLl9jb21wbGV0aW9uc1JlYWR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnBhZ2VVcEtleVByZXNzZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUucGFnZURvd25L
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gu
cHJvdG90eXBlLmVudGVyS2V5UHJlc3NlZCk6CisKIDIwMTItMDEtMTYgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBt
YWtlIGRpc3RjaGVjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDNmOTU1YzFiOWFjOGFkMGQ4YzRlZDk0
NDQxY2EzMWIzNTExOTAwYjMuLjFiZDI1OWM0MTY1MjMyNjA5ZWQ5MGI1N2UxNzJiOTQ5YmYyZjdk
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMjE1Niw5ICsyMTU2LDkgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfaGFzQmVlbk1vZGlm
aWVkSW5jcmVtZW50YWxseTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgLy8gTmV3IHByb3Bl
cnRpZXMgYXBwbGllZCB2aWEgdXAvZG93biBoYXZlIGFuIG9yaWdpbmFsUHJvcGVydHlUZXh0IGFu
ZCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIKKyAgICAgICAgLy8gTmV3IHByb3BlcnRpZXMgYXBwbGll
ZCB2aWEgdXAvZG93biBvciBsaXZlIGVkaXRpbmcgaGF2ZSBhbiBvcmlnaW5hbFByb3BlcnR5VGV4
dCBhbmQgd2lsbCBiZSBkZWxldGVkIGxhdGVyCiAgICAgICAgIC8vIG9uLCBpZiBjYW5jZWxsZWQs
IHdoZW4gdGhlIGVtcHR5IHN0cmluZyBnZXRzIGFwcGxpZWQgYXMgdGhlaXIgc3R5bGUgdGV4dC4K
LSAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0ID09PSAic3Ry
aW5nIjsKKyAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0ID09
PSAic3RyaW5nIiB8fCAoISF0aGlzLnByb3BlcnR5LnByb3BlcnR5VGV4dCAmJiB0aGlzLl9uZXdQ
cm9wZXJ0eSk7CiAgICAgfSwKIAogICAgIGFwcGx5U3R5bGVUZXh0OiBmdW5jdGlvbihzdHlsZVRl
eHQsIHVwZGF0ZUludGVyZmFjZSwgbWFqb3JDaGFuZ2UsIGlzUmV2ZXJ0KQpAQCAtMjE4NCw3ICsy
MTg0LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHN0eWxlVGV4dCA9IHN0eWxlVGV4dC5yZXBsYWNlKC9ccy9nLCAiICIpLnRy
aW0oKTsgLy8gUmVwbGFjZSAmbmJzcDsgd2l0aCB3aGl0ZXNwYWNlLgogICAgICAgICB2YXIgc3R5
bGVUZXh0TGVuZ3RoID0gc3R5bGVUZXh0Lmxlbmd0aDsKICAgICAgICAgaWYgKCFzdHlsZVRleHRM
ZW5ndGggJiYgdXBkYXRlSW50ZXJmYWNlICYmICFpc1JldmVydCAmJiB0aGlzLl9uZXdQcm9wZXJ0
eSAmJiAhdGhpcy5faGFzQmVlbk1vZGlmaWVkSW5jcmVtZW50YWxseSgpKSB7Ci0gICAgICAgICAg
ICAvLyBUaGUgdXNlciBkZWxldGVkIGV2ZXJ5dGhpbmcgYW5kIG5ldmVyIGFwcGxpZWQgYSBuZXcg
cHJvcGVydHkgdmFsdWUgdmlhIFVwL0Rvd24gc2Nyb2xsaW5nLCBzbyByZW1vdmUgdGhlIHRyZWUg
ZWxlbWVudCBhbmQgdXBkYXRlLgorICAgICAgICAgICAgLy8gVGhlIHVzZXIgZGVsZXRlZCBldmVy
eXRoaW5nIGFuZCBuZXZlciBhcHBsaWVkIGEgbmV3IHByb3BlcnR5IHZhbHVlIHZpYSBVcC9Eb3du
IHNjcm9sbGluZy9saXZlIGVkaXRpbmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBlbGVtZW50IGFuZCB1
cGRhdGUuCiAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTsKICAgICAg
ICAgICAgIHNlY3Rpb24uYWZ0ZXJVcGRhdGUoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIy
NTgsMTcgKzIyNTgsMTkgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3Bl
cnR5UHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAiVSswMDA5IjoKLSAgICAg
ICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2libGUoKSkgewotICAgICAgICAgICAgICAg
IHRoaXMuX3N1Z2dlc3RCb3guYWNjZXB0U3VnZ2VzdGlvbigpOwotICAgICAgICAgICAgICAgIHJl
dHVybiAhdGhpcy5faXNFZGl0aW5nTmFtZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiB0aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgV2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLm9uS2V5RG93bi5jYWxsKHRoaXMsIGV2ZW50
KTsKICAgICB9LAogCisgICAgdGFiS2V5UHJlc3NlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5hY2NlcHRBdXRvQ29tcGxldGUoKTsKKworICAgICAgICAvLyBBbHdheXMgdGFiIHRv
IHRoZSBuZXh0IGZpZWxkLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKwogICAgIF9o
YW5kbGVOYW1lT3JWYWx1ZVVwRG93bjogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICAv
LyBIYW5kbGUgbnVtZXJpYyB2YWx1ZSBpbmNyZW1lbnQvZGVjcmVtZW50IG9ubHkgYXQgdGhpcyBw
b2ludC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFByb21wdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21w
dC5qcwppbmRleCBmM2JiODljMjRlNWMyZjFhNzllYWQ3OTcyYjcyODliNWQzMWE1NjFiLi5kNzU1
YjI4NmQzYzhkNzYyOTMyZjc2ZWI5NTI4MmE4NmU1NmQwYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCkBAIC0xMzcsNyArMTM3LDcg
QEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogCiAgICAgc2V0IHRleHQo
eCkKICAgICB7Ci0gICAgICAgIHRoaXMuY2xlYXJBdXRvQ29tcGxldGUodHJ1ZSk7CisgICAgICAg
IHRoaXMuX3JlbW92ZVN1Z2dlc3Rpb25BaWRzKCk7CiAgICAgICAgIGlmICgheCkgewogICAgICAg
ICAgICAgLy8gQXBwZW5kIGEgYnJlYWsgZWxlbWVudCBpbnN0ZWFkIG9mIHNldHRpbmcgdGV4dENv
bnRlbnQgdG8gbWFrZSBzdXJlIHRoZSBzZWxlY3Rpb24gaXMgaW5zaWRlIHRoZSBwcm9tcHQuCiAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0xODYsMTkgKzE4
NiwyNiBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQodGhpcy5fZWxlbWVudCwgZmFsc2UpOwogICAgIH0s
CiAKKyAgICBfcmVtb3ZlU3VnZ2VzdGlvbkFpZHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHRoaXMuY2xlYXJBdXRvQ29tcGxldGUoKTsKKyAgICAgICAgdGhpcy5oaWRlU3VnZ2VzdEJveCgp
OworICAgIH0sCisKICAgICBfc2VsZWN0U3RhcnQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvblRpbWVvdXQpCiAgICAgICAgICAgICBjbGVhclRpbWVv
dXQodGhpcy5fc2VsZWN0aW9uVGltZW91dCk7CiAKLSAgICAgICAgdGhpcy5jbGVhckF1dG9Db21w
bGV0ZSgpOworICAgICAgICB0aGlzLl9yZW1vdmVTdWdnZXN0aW9uQWlkcygpOwogCiAgICAgICAg
IGZ1bmN0aW9uIG1vdmVCYWNrSWZPdXRzaWRlKCkKICAgICAgICAgewogICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuX3NlbGVjdGlvblRpbWVvdXQ7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuaXNDYXJl
dEluc2lkZVByb21wdCgpICYmIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCkKKyAg
ICAgICAgICAgIGlmICghdGhpcy5pc0NhcmV0SW5zaWRlUHJvbXB0KCkgJiYgd2luZG93LmdldFNl
bGVjdGlvbigpLmlzQ29sbGFwc2VkKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQ2FyZXRU
b0VuZE9mUHJvbXB0KCk7Ci0gICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZVNvb24oKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZVNvb24oKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMuX3NlbGVjdGlvblRpbWVvdXQgPSBzZXRUaW1lb3V0KG1v
dmVCYWNrSWZPdXRzaWRlLmJpbmQodGhpcyksIDEwMCk7CkBAIC0yMjYsMjggKzIzMywzNyBAQCBX
ZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNhc2UgIkRvd24i
OgogICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuZG93bktleVByZXNzZWQoZXZlbnQpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlBhZ2VVcCI6CisgICAgICAgICAgICBoYW5k
bGVkID0gdGhpcy5wYWdlVXBLZXlQcmVzc2VkKGV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlICJQYWdlRG93biI6CisgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5wYWdl
RG93bktleVByZXNzZWQoZXZlbnQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
IlUrMDAwOSI6IC8vIFRhYgogICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMudGFiS2V5UHJlc3Nl
ZChldmVudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiRW50ZXIiOgogICAg
ICAgICAgICAgaGFuZGxlZCA9IHRoaXMuZW50ZXJLZXlQcmVzc2VkKGV2ZW50KTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlICJMZWZ0IjoKKyAgICAgICAgY2FzZSAiSG9tZSI6Cisg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVTdWdnZXN0aW9uQWlkcygpOworICAgICAgICAgICAgaW52
b2tlRGVmYXVsdCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgIlJp
Z2h0IjoKICAgICAgICAgY2FzZSAiRW5kIjoKLSAgICAgICAgICAgIGlmICh0aGlzLmlzU3VnZ2Vz
dEJveFZpc2libGUoKSAmJiB0aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkpCi0gICAgICAgICAg
ICAgICAgaGFuZGxlZCA9IHRoaXMuX3N1Z2dlc3RCb3gudGFiS2V5UHJlc3NlZChldmVudCk7Ci0g
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmlzQ2FyZXRBdEVuZE9mUHJv
bXB0KCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRl
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVkKQotICAgICAgICAgICAgICAgICAgICB0
aGlzLmF1dG9Db21wbGV0ZVNvb24oKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVTdWdnZXN0aW9uQWlkcygpOworICAgICAgICAg
ICAgaW52b2tlRGVmYXVsdCA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgIlUrMDAxQiI6IC8vIEVzYwogICAgICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94Vmlz
aWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5oaWRlKCk7CiAgICAg
ICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiVSswMDIwIjogLy8g
U3BhY2UKICAgICAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0Rm9yY2VhYmxlICYmIGV2ZW50LmN0
cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleSAmJiAhZXZlbnQuc2hpZnRL
ZXkpIHsKICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRLZXlIYW5kbGVyKGV2ZW50LCB0cnVl
KTsKQEAgLTI3NSw5ICsyOTEsMTMgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBl
ID0gewogCiAgICAgYWNjZXB0QXV0b0NvbXBsZXRlOiBmdW5jdGlvbigpCiAgICAgeworICAgICAg
ICB2YXIgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIGlmICh0aGlzLmlzU3VnZ2VzdEJveFZpc2li
bGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0Qm94LmFjY2VwdFN1Z2dlc3Rp
b24oKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXB0U3VnZ2VzdGlvbigpOworICAgICAgICAg
ICAgcmVzdWx0ID0gdGhpcy5fc3VnZ2VzdEJveC5hY2NlcHRTdWdnZXN0aW9uKCk7CisgICAgICAg
IGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5hY2NlcHRTdWdnZXN0aW9u
KCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNDgs
NyArMzY4LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgc2hvdWxkRXhpdCA9IHRydWU7CiAgICAgICAgIGVsc2UgaWYgKCFhdXRvICYmICFpc0Vt
cHR5SW5wdXQgJiYgIXNlbGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzRGVz
Y2VuZGFudCh0aGlzLl9lbGVtZW50KSkKICAgICAgICAgICAgIHNob3VsZEV4aXQgPSB0cnVlOwot
ICAgICAgICBlbHNlIGlmIChhdXRvICYmICF0aGlzLl9zdWdnZXN0Qm94ICYmICFmb3JjZSAmJiAh
dGhpcy5pc0NhcmV0QXRFbmRPZlByb21wdCgpKQorICAgICAgICBlbHNlIGlmIChhdXRvICYmICFm
b3JjZSAmJiAhdGhpcy5pc0NhcmV0QXRFbmRPZlByb21wdCgpICYmICF0aGlzLmlzU3VnZ2VzdEJv
eFZpc2libGUoKSkKICAgICAgICAgICAgIHNob3VsZEV4aXQgPSB0cnVlOwogICAgICAgICBlbHNl
IGlmICghc2VsZWN0aW9uLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAgc2hvdWxkRXhpdCA9IHRy
dWU7CkBAIC00MDcsNyArNDI3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFRleHQgPSBmdWxsV29yZFJhbmdlLnRvU3Ry
aW5nKCk7CiAKICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3RCb3gpCi0gICAgICAgICAgICB0aGlz
Ll9zdWdnZXN0Qm94LnVwZGF0ZVN1Z2dlc3Rpb25zKHRoaXMuX2JveEZvckFuY2hvckF0U3RhcnQo
c2VsZWN0aW9uLCBmdWxsV29yZFJhbmdlKSwgY29tcGxldGlvbnMpOworICAgICAgICAgICAgdGhp
cy5fc3VnZ2VzdEJveC51cGRhdGVTdWdnZXN0aW9ucyh0aGlzLl9ib3hGb3JBbmNob3JBdFN0YXJ0
KHNlbGVjdGlvbiwgZnVsbFdvcmRSYW5nZSksIGNvbXBsZXRpb25zLCAhdGhpcy5pc0NhcmV0QXRF
bmRPZlByb21wdCgpKTsKIAogICAgICAgICB2YXIgd29yZFByZWZpeExlbmd0aCA9IG9yaWdpbmFs
V29yZFByZWZpeFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoOwogCkBAIC00NTQsMjUgKzQ3NCwyNyBA
QCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoYXV0bykgewotICAgICAgICAgICAgdGhpcy5fdXNlckVudGVyZWRSYW5nZS5kZWxl
dGVDb250ZW50cygpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5wcnVuZUVtcHR5VGV4dE5v
ZGVzKCk7Ci0gICAgICAgICAgICB2YXIgZmluYWxTZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNy
ZWF0ZVJhbmdlKCk7Ci0gICAgICAgICAgICB2YXIgcHJlZml4VGV4dCA9IGNvbXBsZXRpb25UZXh0
LnN1YnN0cmluZygwLCB3b3JkUHJlZml4TGVuZ3RoKTsKLSAgICAgICAgICAgIHZhciBzdWZmaXhU
ZXh0ID0gY29tcGxldGlvblRleHQuc3Vic3RyaW5nKHdvcmRQcmVmaXhMZW5ndGgpOwotCi0gICAg
ICAgICAgICB2YXIgcHJlZml4VGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcmVm
aXhUZXh0KTsKLSAgICAgICAgICAgIGZ1bGxXb3JkUmFuZ2UuaW5zZXJ0Tm9kZShwcmVmaXhUZXh0
Tm9kZSk7Ci0KLSAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxl
bWVudC5jbGFzc05hbWUgPSAiYXV0by1jb21wbGV0ZS10ZXh0IjsKLSAgICAgICAgICAgIHRoaXMu
YXV0b0NvbXBsZXRlRWxlbWVudC50ZXh0Q29udGVudCA9IHN1ZmZpeFRleHQ7Ci0KLSAgICAgICAg
ICAgIHByZWZpeFRleHROb2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuYXV0b0NvbXBs
ZXRlRWxlbWVudCwgcHJlZml4VGV4dE5vZGUubmV4dFNpYmxpbmcpOwotCi0gICAgICAgICAgICBm
aW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KHByZWZpeFRleHROb2RlLCB3b3JkUHJlZml4TGVu
Z3RoKTsKLSAgICAgICAgICAgIGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0RW5kKHByZWZpeFRleHRO
b2RlLCB3b3JkUHJlZml4TGVuZ3RoKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxS
YW5nZXMoKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShmaW5hbFNlbGVjdGlvblJh
bmdlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkpIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLl91c2VyRW50ZXJlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5wcnVuZUVtcHR5VGV4dE5vZGVzKCk7CisgICAg
ICAgICAgICAgICAgdmFyIGZpbmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworICAgICAgICAgICAgICAgIHZhciBwcmVmaXhUZXh0ID0gY29tcGxldGlvblRleHQuc3Vi
c3RyaW5nKDAsIHdvcmRQcmVmaXhMZW5ndGgpOworICAgICAgICAgICAgICAgIHZhciBzdWZmaXhU
ZXh0ID0gY29tcGxldGlvblRleHQuc3Vic3RyaW5nKHdvcmRQcmVmaXhMZW5ndGgpOworCisgICAg
ICAgICAgICAgICAgdmFyIHByZWZpeFRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
cHJlZml4VGV4dCk7CisgICAgICAgICAgICAgICAgZnVsbFdvcmRSYW5nZS5pbnNlcnROb2RlKHBy
ZWZpeFRleHROb2RlKTsKKworICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmF1dG9Db21wbGV0ZUVsZW1lbnQuY2xhc3NOYW1lID0gImF1dG8tY29tcGxldGUtdGV4dCI7Cisg
ICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnRleHRDb250ZW50ID0gc3Vm
Zml4VGV4dDsKKworICAgICAgICAgICAgICAgIHByZWZpeFRleHROb2RlLnBhcmVudE5vZGUuaW5z
ZXJ0QmVmb3JlKHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCwgcHJlZml4VGV4dE5vZGUubmV4dFNp
YmxpbmcpOworCisgICAgICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChw
cmVmaXhUZXh0Tm9kZSwgd29yZFByZWZpeExlbmd0aCk7CisgICAgICAgICAgICAgICAgZmluYWxT
ZWxlY3Rpb25SYW5nZS5zZXRFbmQocHJlZml4VGV4dE5vZGUsIHdvcmRQcmVmaXhMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgICAg
ICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UoZmluYWxTZWxlY3Rpb25SYW5nZSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5hcHBseVN1Z2dlc3Rpb24oY29t
cGxldGlvblRleHQsIGNvbXBsZXRpb25zLmxlbmd0aCA+IDEsIG9yaWdpbmFsV29yZFByZWZpeFJh
bmdlKTsKICAgICB9LApAQCAtNTcyLDcgKzU5NCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZvdW5kTmV4dFRleHQgPSBmYWxzZTsKICAgICAg
ICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2Rl
LlRFWFRfTk9ERSAmJiBub2RlLm5vZGVWYWx1ZS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZm91bmROZXh0VGV4dCkKKyAgICAgICAgICAgICAgICBpZiAoZm91bmROZXh0VGV4dCAmJiAo
IXRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudCB8fCAhdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50Lmlz
QW5jZXN0b3Iobm9kZSkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgZm91bmROZXh0VGV4dCA9IHRydWU7CiAgICAgICAgICAgICB9CkBAIC02NDIs
MTAgKzY2NCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKIAogICAg
IHRhYktleVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
aXNTdWdnZXN0Qm94VmlzaWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3RC
b3gudGFiS2V5UHJlc3NlZChldmVudCk7Ci0KLSAgICAgICAgdGhpcy5jb21wbGV0ZShmYWxzZSwg
ZmFsc2UsIGV2ZW50LnNoaWZ0S2V5KTsKKyAgICAgICAgLy8gSnVzdCBjb25zdW1lIHRoZSBrZXku
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKQEAgLTY3MSw3ICs2OTAsMjMgQEAgV2Vi
SW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3N1Z2dlc3RCb3guZG93bktleVByZXNzZWQoZXZlbnQpOwogCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CisgICAgfSwKKworICAgIHBhZ2VVcEtleVByZXNzZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3RCb3gucGFnZVVwS2V5UHJlc3NlZChldmVudCk7
CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICBwYWdlRG93bktleVByZXNz
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94
VmlzaWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1Z2dlc3RCb3gucGFnZURvd25L
ZXlQcmVzc2VkKGV2ZW50KTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKIH0KIAog
V2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5PYmplY3QucHJvdG90eXBlOwpAQCAtOTk0LDMxICsxMDI5LDU5IEBAIFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9LAogCi0gICAgX29uTmV4dEl0ZW06IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbk5leHRJ
dGVtOiBmdW5jdGlvbihldmVudCwgaXNQYWdlU2Nyb2xsKQogICAgIHsKICAgICAgICAgdmFyIGNo
aWxkcmVuID0gdGhpcy5jb250ZW50RWxlbWVudC5jaGlsZE5vZGVzOwogICAgICAgICBpZiAoIWNo
aWxkcmVuLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAo
dGhpcy5fc2VsZWN0ZWRFbGVtZW50KQotICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50
ID0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50Lm5leHRTaWJsaW5nIHx8IHRoaXMuY29udGVudEVsZW1l
bnQuZmlyc3RDaGlsZDsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVk
RWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVu
dEVsZW1lbnQuZmlyc3RDaGlsZDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIWlz
UGFnZVNjcm9sbCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSB0aGlz
Ll9zZWxlY3RlZEVsZW1lbnQubmV4dFNpYmxpbmcgfHwgdGhpcy5jb250ZW50RWxlbWVudC5maXJz
dENoaWxkOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGNhbmRpZGF0
ZSA9IHRoaXMuX3NlbGVjdGVkRWxlbWVudDsKKworICAgICAgICAgICAgICAgIGZvciAodmFyIGl0
ZW1zTGVmdCA9IHRoaXMuX3Jvd0NvdW50UGVyVmlld3BvcnQ7IGl0ZW1zTGVmdDsgLS1pdGVtc0xl
ZnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5uZXh0U2libGluZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5uZXh0U2libGluZzsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVt
ZW50ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHRoaXMu
X3VwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlzLl9hcHBseVN1Z2dlc3Rpb24odW5kZWZp
bmVkLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAotICAgIF9vblByZXZp
b3VzSXRlbTogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uUHJldmlvdXNJdGVtOiBmdW5jdGlvbihl
dmVudCwgaXNQYWdlU2Nyb2xsKQogICAgIHsKICAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5j
b250ZW50RWxlbWVudC5jaGlsZE5vZGVzOwogICAgICAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRF
bGVtZW50KQotICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5fc2VsZWN0
ZWRFbGVtZW50LnByZXZpb3VzU2libGluZyB8fCB0aGlzLmNvbnRlbnRFbGVtZW50Lmxhc3RDaGls
ZDsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkRWxlbWVudCkKICAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQubGFz
dENoaWxkOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghaXNQYWdlU2Nyb2xsKQor
ICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkRWxl
bWVudC5wcmV2aW91c1NpYmxpbmcgfHwgdGhpcy5jb250ZW50RWxlbWVudC5sYXN0Q2hpbGQ7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgY2FuZGlkYXRlID0gdGhpcy5f
c2VsZWN0ZWRFbGVtZW50OworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaXRlbXNMZWZ0ID0g
dGhpcy5fcm93Q291bnRQZXJWaWV3cG9ydDsgaXRlbXNMZWZ0OyAtLWl0ZW1zTGVmdCkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnByZXZpb3VzU2libGluZykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5wcmV2aW91c1NpYmxpbmc7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVu
dCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICB0aGlzLl91
cGRhdGVTZWxlY3Rpb24oKTsKICAgICAgICAgdGhpcy5fYXBwbHlTdWdnZXN0aW9uKHVuZGVmaW5l
ZCwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAyNywxNCArMTA5MCwxNSBAQCBX
ZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZSA9IHsKICAgICAvKioK
ICAgICAgKiBAcGFyYW0ge0FuY2hvckJveH0gYW5jaG9yQm94CiAgICAgICogQHBhcmFtIHtBcnJh
eS48c3RyaW5nPj19IGNvbXBsZXRpb25zCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gY2FuU2hv
d0ZvclNpbmdsZUl0ZW0KICAgICAgKi8KLSAgICB1cGRhdGVTdWdnZXN0aW9uczogZnVuY3Rpb24o
YW5jaG9yQm94LCBjb21wbGV0aW9ucykKKyAgICB1cGRhdGVTdWdnZXN0aW9uczogZnVuY3Rpb24o
YW5jaG9yQm94LCBjb21wbGV0aW9ucywgY2FuU2hvd0ZvclNpbmdsZUl0ZW0pCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fc3VnZ2VzdFRpbWVvdXQpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91
dCh0aGlzLl9zdWdnZXN0VGltZW91dCk7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc3VnZ2Vz
dFRpbWVvdXQ7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fY29tcGxldGlvbnNSZWFkeShhbmNo
b3JCb3gsIGNvbXBsZXRpb25zKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnNSZWFkeShhbmNo
b3JCb3gsIGNvbXBsZXRpb25zLCBjYW5TaG93Rm9yU2luZ2xlSXRlbSk7CiAgICAgfSwKIAogICAg
IF9vbkl0ZW1Nb3VzZURvd246IGZ1bmN0aW9uKHRleHQsIGV2ZW50KQpAQCAtMTA2MiwxNCArMTEy
NiwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfSwKIAotICAgIF91cGRhdGVJdGVtczogZnVu
Y3Rpb24oaXRlbXMpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gY2FuU2hvd0Zv
clNpbmdsZUl0ZW0KKyAgICAgKi8KKyAgICBfdXBkYXRlSXRlbXM6IGZ1bmN0aW9uKGl0ZW1zLCBj
YW5TaG93Rm9yU2luZ2xlSXRlbSkKICAgICB7Ci0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMu
Y29udGVudEVsZW1lbnQuY2hpbGRyZW47Ci0gICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBN
YXRoLm1pbihjaGlsZHJlbi5sZW5ndGggLSAxLCB0aGlzLl9zZWxlY3RlZEluZGV4KTsKLSAgICAg
ICAgdmFyIHNlbGVjdGVkSXRlbVRleHQgPSB0aGlzLl9zZWxlY3RlZEluZGV4ID49IDAgPyBjaGls
ZHJlblt0aGlzLl9zZWxlY3RlZEluZGV4XS50ZXh0Q29udGVudCA6IG51bGw7Ci0gICAgICAgIHZh
ciBpdGVtSW5kZXggPSAwOwotICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNvbnRlbnRFbGVtZW50
LmZpcnN0Q2hpbGQ7Ci0gICAgICAgIHZhciBjaGlsZFRleHQgPSBjaGlsZCA/IGNoaWxkLnRleHRD
b250ZW50IDogbnVsbDsKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOwogCiAgICAgICAgIHZhciB1c2VyRW50ZXJlZFRleHQgPSB0aGlzLl90ZXh0UHJvbXB0Ll91
c2VyRW50ZXJlZFRleHQ7CkBAIC0xMDc5LDcgKzExNDAsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dFBy
b21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuY29udGVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQoY3VycmVudEl0ZW1FbGVtZW50KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGls
ZDsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gY2FuU2hvd0ZvclNpbmdsZUl0ZW0g
PyB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQgOiBudWxsOwogICAgICAgICB0aGlzLl91
cGRhdGVTZWxlY3Rpb24oKTsKICAgICB9LAogCkBAIC0xMDk3LDIxICsxMTU4LDQxIEBAIFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlID0gewogICAgIH0sCiAKICAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge0FuY2hvckJveH0gYW5jaG9yQm94CiAgICAgICogQHBhcmFt
IHtBcnJheS48c3RyaW5nPj19IGNvbXBsZXRpb25zCisgICAgICogQHBhcmFtIHtib29sZWFuPX0g
Y2FuU2hvd0ZvclNpbmdsZUl0ZW0KICAgICAgKi8KLSAgICBfY29tcGxldGlvbnNSZWFkeTogZnVu
Y3Rpb24oYW5jaG9yQm94LCBjb21wbGV0aW9ucykKKyAgICBfY2FuU2hvd0JveDogZnVuY3Rpb24o
Y29tcGxldGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVtKQogICAgIHsKLSAgICAgICAgaWYgKCFj
b21wbGV0aW9ucyB8fCAhY29tcGxldGlvbnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0aGlzLmhp
ZGUoKQorICAgICAgICBpZiAoIWNvbXBsZXRpb25zIHx8ICFjb21wbGV0aW9ucy5sZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0
aCA+IDEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBEbyBub3Qgc2hv
dyBhIHNpbmdsZSBzdWdnZXN0aW9uIGlmIGl0IGlzIHRoZSBzYW1lIGFzIHVzZXItZW50ZXJlZCBw
cmVmaXgsIGV2ZW4gaWYgYWxsb3dlZCB0byBzaG93IHNpbmdsZS1pdGVtIHN1Z2dlc3QgYm94ZXMu
CisgICAgICAgIHJldHVybiBjYW5TaG93Rm9yU2luZ2xlSXRlbSAmJiBjb21wbGV0aW9uc1swXSAh
PT0gdGhpcy5fdGV4dFByb21wdC5fdXNlckVudGVyZWRUZXh0OworICAgIH0sCisKKyAgICBfcmVt
ZW1iZXJSb3dDb3VudFBlclZpZXdwb3J0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGlsZCkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogCi0gICAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1zKGNvbXBsZXRpb25zKTsKLSAgICAg
ICAgdGhpcy5fdXBkYXRlQm94UG9zaXRpb24oYW5jaG9yQm94KTsKLSAgICAgICAgaWYgKHRoaXMu
Y29udGVudEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoICYmIHRoaXMuY29udGVudEVsZW1lbnQuY2hp
bGRyZW4ubGVuZ3RoID4gMSkgewotICAgICAgICAgICAgLy8gV2lsbCBub3QgYmUgc2hvd24gZm9y
IGEgc29sZSBzdWdnZXN0aW9uIG9yIG5vIHN1Z2dlc3Rpb25zLgorICAgICAgICB0aGlzLl9yb3dD
b3VudFBlclZpZXdwb3J0ID0gTWF0aC5mbG9vcih0aGlzLmNvbnRhaW5lckVsZW1lbnQub2Zmc2V0
SGVpZ2h0IC8gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkLm9mZnNldEhlaWdodCk7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QW5jaG9yQm94fSBhbmNob3JCb3gKKyAg
ICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW49fSBjYW5TaG93Rm9yU2luZ2xlSXRlbQorICAgICAqLworICAgIF9jb21wbGV0aW9u
c1JlYWR5OiBmdW5jdGlvbihhbmNob3JCb3gsIGNvbXBsZXRpb25zLCBjYW5TaG93Rm9yU2luZ2xl
SXRlbSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jYW5TaG93Qm94KGNvbXBsZXRpb25zLCBj
YW5TaG93Rm9yU2luZ2xlSXRlbSkpIHsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUl0ZW1zKGNv
bXBsZXRpb25zLCBjYW5TaG93Rm9yU2luZ2xlSXRlbSk7CisgICAgICAgICAgICB0aGlzLl91cGRh
dGVCb3hQb3NpdGlvbihhbmNob3JCb3gpOwogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJ2aXNpYmxlIik7CisgICAgICAgICAgICB0aGlzLl9yZW1lbWJlclJvd0NvdW50
UGVyVmlld3BvcnQoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLmhpZGUoKTsK
ICAgICB9LApAQCAtMTEyNiwxMCArMTIwNywyNCBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5T
dWdnZXN0Qm94LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29uTmV4dEl0ZW0o
ZXZlbnQpOwogICAgIH0sCiAKKyAgICBwYWdlVXBLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vblByZXZpb3VzSXRlbShldmVudCwgdHJ1ZSk7
CisgICAgfSwKKworICAgIHBhZ2VEb3duS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fb25OZXh0SXRlbShldmVudCwgdHJ1ZSk7CisgICAgfSwK
KwogICAgIGVudGVyS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICB2
YXIgaGFzU2VsZWN0ZWRJdGVtID0gISF0aGlzLl9zZWxlY3RlZEVsZW1lbnQ7CiAgICAgICAgIHRo
aXMuYWNjZXB0U3VnZ2VzdGlvbigpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAv
LyBSZXBvcnQgdGhlIGV2ZW50IGFzIG5vbi1oYW5kbGVkIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVk
IGl0ZW0sCisgICAgICAgIC8vIHRvIGNvbW1pdCB0aGUgaW5wdXQgb3IgaGFuZGxlIGl0IG90aGVy
d2lzZS4KKyAgICAgICAgcmV0dXJuIGhhc1NlbGVjdGVkSXRlbTsKICAgICB9LAogCiAgICAgdGFi
S2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122747</attachid>
            <date>2012-01-17 03:36:47 -0800</date>
            <delta_ts>2012-01-17 11:25:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76058-20120117153644.patch</filename>
            <type>text/plain</type>
            <size>21030</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4NTIxOWFmMWZjZWZj
Y2UwOTY0M2MzNzVhNGYwYzFmMGM3ZGNiNC4uMTI2OTU0OTA1YzU1ZGYwNDdhOWY3ODBkNGYwN2U4
YzAzOTI5ZGVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAxLTExICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1RleHRQcm9tcHRdIEF1dG9jb21wbGV0ZSBhZGRzIHVud2FudGVkIHRleHQgdGhhdCdz
IGhhcmQgdG8gcmVtb3ZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjA1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFzIHBlciB0aGUgcmVzdWx0cyBvZiBhIHdhciByb29tOgorICAgICAgICAtIEF1dG8t
c3VnZ2VzdCBvbmx5IGFmdGVyIHVzZXIgdHlwaW5nIChhdm9pZCBzaG93aW5nIHN1Z2dlc3Rpb25z
IHdoZW4gbmF2aWdhdGluZyB0aHJvdWdoIHRoZSB1c2VyIGlucHV0LikKKyAgICAgICAgLSBEbyBu
b3Qgc2VsZWN0IHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBzdWdnZXN0IGJveCBpcyBzaG93biBhdCB0
aGUgZW5kIG9mIHByb21wdCAodG8gYWxsb3cgRW50ZXIgdG8gY29tbWl0IHRoZSBpbnB1dC4pCisg
ICAgICAgIC0gT25seSBzaG93IGdyYXllZCBhdXRvY29tcGxldGlvbiBhdCB0aGUgZW5kIG9mIHBy
b21wdCAob3RoZXJ3aXNlIHNob3cgYSBzdWdnZXN0IGJveCB3aXRoIHRoZSBmaXJzdCBpdGVtIHNl
bGVjdGVkLikKKyAgICAgICAgLSBHcmF5ZWQgYXV0b2NvbXBsZXRpb24gY2FuIG9ubHkgYmUgYWNj
ZXB0ZWQgd2l0aCB0aGUgRW5kIG9yIFJpZ2h0IGtleXMuCisgICAgICAgIC0gRW50ZXIgY2FuIGFj
Y2VwdCBhIHNlbGVjdGVkIHN1Z2dlc3Rpb24gaXRlbSBmcm9tIHRoZSBsaXN0LCB3aXRob3V0IGNv
bW1pdHRpbmcgdGhlIGlucHV0LgorICAgICAgICAtIFJldGFpbiB0aGUgQ1NTIG1vZGVsIGVkaXRp
bmcgYmVoYXZpb3IgYXMgY2xvc2UgdG8gdGhlIGV4aXN0aW5nIG9uZSBhcyBwb3NzaWJsZS4KKyAg
ICAgICAgLSBFbmFibGUgUGFnZVVwL1BhZ2VEb3duIHRvIG5hdmlnYXRlIHRoZSBzdWdnZXN0IGJv
eCBpdGVtcy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSk6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFByb21wdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5z
ZXQgdGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuX3Jl
bW92ZVN1Z2dlc3Rpb25BaWRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnBy
b3RvdHlwZS5fc2VsZWN0U3RhcnQubW92ZUJhY2tJZk91dHNpZGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLl9zZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUub25LZXlEb3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5hY2NlcHRBdXRvQ29tcGxldGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmNvbXBsZXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZS5fY29tcGxldGlvbnNSZWFkeSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUuaXNDYXJldEF0RW5kT2ZQ
cm9tcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLnRhYktl
eVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlLmRv
d25LZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlw
ZS5wYWdlVXBLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnBy
b3RvdHlwZS5wYWdlRG93bktleVByZXNzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uTmV4dEl0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUuX29uUHJldmlvdXNJdGVtKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnVw
ZGF0ZVN1Z2dlc3Rpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dl
c3RCb3gucHJvdG90eXBlLl91cGRhdGVJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fY2FuU2hvd0JveCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFByb21wdC5TdWdnZXN0Qm94LnByb3RvdHlwZS5fcmVtZW1iZXJSb3dDb3Vu
dFBlclZpZXdwb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RC
b3gucHJvdG90eXBlLl9jb21wbGV0aW9uc1JlYWR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
ZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlLnBhZ2VVcEtleVByZXNzZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUucGFnZURvd25L
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gu
cHJvdG90eXBlLmVudGVyS2V5UHJlc3NlZCk6CisKIDIwMTItMDEtMTYgIEhhamltZSBNb3JyaXRh
ICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0ludGVybmFsc10gbWVtYmVyIHZh
cmFpYmxlcyBzaG91bGQgZm9sbG93IG5hbWluZyBjb252ZW50aW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5k
ZXggYjViNDAzOTcyMWMzMzkyZWRmNGMxNzZjMGNmYzRjZjQzMjk0OTNmOS4uYjRkMDcwODcxMjg2
NTkxYTRiMDk5Y2VhYTUzMTBmNGI1MmQxMGViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0yMTU2LDkg
KzIxNTYsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKIAogICAgIF9oYXNCZWVuTW9kaWZpZWRJbmNyZW1lbnRhbGx5OiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICAvLyBOZXcgcHJvcGVydGllcyBhcHBsaWVkIHZpYSB1cC9kb3duIGhhdmUg
YW4gb3JpZ2luYWxQcm9wZXJ0eVRleHQgYW5kIHdpbGwgYmUgZGVsZXRlZCBsYXRlcgorICAgICAg
ICAvLyBOZXcgcHJvcGVydGllcyBhcHBsaWVkIHZpYSB1cC9kb3duIG9yIGxpdmUgZWRpdGluZyBo
YXZlIGFuIG9yaWdpbmFsUHJvcGVydHlUZXh0IGFuZCB3aWxsIGJlIGRlbGV0ZWQgbGF0ZXIKICAg
ICAgICAgLy8gb24sIGlmIGNhbmNlbGxlZCwgd2hlbiB0aGUgZW1wdHkgc3RyaW5nIGdldHMgYXBw
bGllZCBhcyB0aGVpciBzdHlsZSB0ZXh0LgotICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMub3Jp
Z2luYWxQcm9wZXJ0eVRleHQgPT09ICJzdHJpbmciOworICAgICAgICByZXR1cm4gdHlwZW9mIHRo
aXMub3JpZ2luYWxQcm9wZXJ0eVRleHQgPT09ICJzdHJpbmciIHx8ICghIXRoaXMucHJvcGVydHku
cHJvcGVydHlUZXh0ICYmIHRoaXMuX25ld1Byb3BlcnR5KTsKICAgICB9LAogCiAgICAgYXBwbHlT
dHlsZVRleHQ6IGZ1bmN0aW9uKHN0eWxlVGV4dCwgdXBkYXRlSW50ZXJmYWNlLCBtYWpvckNoYW5n
ZSwgaXNSZXZlcnQpCkBAIC0yMTg0LDcgKzIxODQsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9w
ZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgc3R5bGVUZXh0ID0gc3R5bGVU
ZXh0LnJlcGxhY2UoL1xzL2csICIgIikudHJpbSgpOyAvLyBSZXBsYWNlICZuYnNwOyB3aXRoIHdo
aXRlc3BhY2UuCiAgICAgICAgIHZhciBzdHlsZVRleHRMZW5ndGggPSBzdHlsZVRleHQubGVuZ3Ro
OwogICAgICAgICBpZiAoIXN0eWxlVGV4dExlbmd0aCAmJiB1cGRhdGVJbnRlcmZhY2UgJiYgIWlz
UmV2ZXJ0ICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmICF0aGlzLl9oYXNCZWVuTW9kaWZpZWRJbmNy
ZW1lbnRhbGx5KCkpIHsKLSAgICAgICAgICAgIC8vIFRoZSB1c2VyIGRlbGV0ZWQgZXZlcnl0aGlu
ZyBhbmQgbmV2ZXIgYXBwbGllZCBhIG5ldyBwcm9wZXJ0eSB2YWx1ZSB2aWEgVXAvRG93biBzY3Jv
bGxpbmcsIHNvIHJlbW92ZSB0aGUgdHJlZSBlbGVtZW50IGFuZCB1cGRhdGUuCisgICAgICAgICAg
ICAvLyBUaGUgdXNlciBkZWxldGVkIGV2ZXJ5dGhpbmcgYW5kIG5ldmVyIGFwcGxpZWQgYSBuZXcg
cHJvcGVydHkgdmFsdWUgdmlhIFVwL0Rvd24gc2Nyb2xsaW5nL2xpdmUgZWRpdGluZywgc28gcmVt
b3ZlIHRoZSB0cmVlIGVsZW1lbnQgYW5kIHVwZGF0ZS4KICAgICAgICAgICAgIHRoaXMucGFyZW50
LnJlbW92ZUNoaWxkKHRoaXMpOwogICAgICAgICAgICAgc2VjdGlvbi5hZnRlclVwZGF0ZSgpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI1OCwxNyArMjI1OCwxOSBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVydHlQcm9tcHQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICJVKzAwMDkiOgotICAgICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94Vmlz
aWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdEJveC5hY2NlcHRTdWdnZXN0
aW9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9pc0VkaXRpbmdOYW1lOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXB0QXV0b0NvbXBsZXRlKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUu
b25LZXlEb3duLmNhbGwodGhpcywgZXZlbnQpOwogICAgIH0sCiAKKyAgICB0YWJLZXlQcmVzc2Vk
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmFjY2VwdEF1dG9Db21wbGV0ZSgpOwor
CisgICAgICAgIC8vIEFsd2F5cyB0YWIgdG8gdGhlIG5leHQgZmllbGQuCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9LAorCiAgICAgX2hhbmRsZU5hbWVPclZhbHVlVXBEb3duOiBmdW5jdGlv
bihldmVudCkKICAgICB7CiAgICAgICAgIC8vIEhhbmRsZSBudW1lcmljIHZhbHVlIGluY3JlbWVu
dC9kZWNyZW1lbnQgb25seSBhdCB0aGlzIHBvaW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCmluZGV4IGYzYmI4OWMyNGU1YzJmMWE3OWVh
ZDc5NzJiNzI4OWI1ZDMxYTU2MWIuLmQ3NTViMjg2ZDNjOGQ3NjI5MzJmNzZlYjk1MjgyYTg2ZTU2
ZDBiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFByb21wdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQ
cm9tcHQuanMKQEAgLTEzNyw3ICsxMzcsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90
b3R5cGUgPSB7CiAKICAgICBzZXQgdGV4dCh4KQogICAgIHsKLSAgICAgICAgdGhpcy5jbGVhckF1
dG9Db21wbGV0ZSh0cnVlKTsKKyAgICAgICAgdGhpcy5fcmVtb3ZlU3VnZ2VzdGlvbkFpZHMoKTsK
ICAgICAgICAgaWYgKCF4KSB7CiAgICAgICAgICAgICAvLyBBcHBlbmQgYSBicmVhayBlbGVtZW50
IGluc3RlYWQgb2Ygc2V0dGluZyB0ZXh0Q29udGVudCB0byBtYWtlIHN1cmUgdGhlIHNlbGVjdGlv
biBpcyBpbnNpZGUgdGhlIHByb21wdC4KICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKQEAgLTE4NiwxOSArMTg2LDI2IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0
LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlz
Ll9lbGVtZW50LCBmYWxzZSk7CiAgICAgfSwKIAorICAgIF9yZW1vdmVTdWdnZXN0aW9uQWlkczog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5jbGVhckF1dG9Db21wbGV0ZSgpOworICAg
ICAgICB0aGlzLmhpZGVTdWdnZXN0Qm94KCk7CisgICAgfSwKKwogICAgIF9zZWxlY3RTdGFydDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VsZWN0aW9uVGltZW91
dCkKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zZWxlY3Rpb25UaW1lb3V0KTsKIAot
ICAgICAgICB0aGlzLmNsZWFyQXV0b0NvbXBsZXRlKCk7CisgICAgICAgIHRoaXMuX3JlbW92ZVN1
Z2dlc3Rpb25BaWRzKCk7CiAKICAgICAgICAgZnVuY3Rpb24gbW92ZUJhY2tJZk91dHNpZGUoKQog
ICAgICAgICB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0aW9uVGltZW91dDsKLSAg
ICAgICAgICAgIGlmICghdGhpcy5pc0NhcmV0SW5zaWRlUHJvbXB0KCkgJiYgd2luZG93LmdldFNl
bGVjdGlvbigpLmlzQ29sbGFwc2VkKQorICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ2FyZXRJbnNp
ZGVQcm9tcHQoKSAmJiB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQpIHsKICAgICAg
ICAgICAgICAgICB0aGlzLm1vdmVDYXJldFRvRW5kT2ZQcm9tcHQoKTsKLSAgICAgICAgICAgIHRo
aXMuYXV0b0NvbXBsZXRlU29vbigpOworICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRl
U29vbigpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc2VsZWN0
aW9uVGltZW91dCA9IHNldFRpbWVvdXQobW92ZUJhY2tJZk91dHNpZGUuYmluZCh0aGlzKSwgMTAw
KTsKQEAgLTIyNiwyOCArMjMzLDM3IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgY2FzZSAiRG93biI6CiAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5k
b3duS2V5UHJlc3NlZChldmVudCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
UGFnZVVwIjoKKyAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnBhZ2VVcEtleVByZXNzZWQoZXZl
bnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIlBhZ2VEb3duIjoKKyAgICAg
ICAgICAgIGhhbmRsZWQgPSB0aGlzLnBhZ2VEb3duS2V5UHJlc3NlZChldmVudCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSAiVSswMDA5IjogLy8gVGFiCiAgICAgICAgICAgICBo
YW5kbGVkID0gdGhpcy50YWJLZXlQcmVzc2VkKGV2ZW50KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlICJFbnRlciI6CiAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5lbnRlcktl
eVByZXNzZWQoZXZlbnQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIkxlZnQi
OgorICAgICAgICBjYXNlICJIb21lIjoKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZVN1Z2dlc3Rp
b25BaWRzKCk7CisgICAgICAgICAgICBpbnZva2VEZWZhdWx0ID0gZmFsc2U7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSAiUmlnaHQiOgogICAgICAgICBjYXNlICJFbmQiOgotICAg
ICAgICAgICAgaWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpICYmIHRoaXMuaXNDYXJldEF0
RW5kT2ZQcm9tcHQoKSkKLSAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5fc3VnZ2VzdEJv
eC50YWJLZXlQcmVzc2VkKGV2ZW50KTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
aWYgKHRoaXMuaXNDYXJldEF0RW5kT2ZQcm9tcHQoKSkKICAgICAgICAgICAgICAgICBoYW5kbGVk
ID0gdGhpcy5hY2NlcHRBdXRvQ29tcGxldGUoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWhhbmRs
ZWQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlU29vbigpOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVN1
Z2dlc3Rpb25BaWRzKCk7CisgICAgICAgICAgICBpbnZva2VEZWZhdWx0ID0gZmFsc2U7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiVSswMDFCIjogLy8gRXNjCiAgICAgICAgICAg
ICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpIHsKICAgICAgICAgICAgICAgICB0aGlz
Ll9zdWdnZXN0Qm94LmhpZGUoKTsKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlICJVKzAwMjAiOiAvLyBTcGFjZQogICAgICAgICAgICAgaWYgKHRoaXMuX3N1
Z2dlc3RGb3JjZWFibGUgJiYgZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiAhZXZl
bnQuYWx0S2V5ICYmICFldmVudC5zaGlmdEtleSkgewogICAgICAgICAgICAgICAgIHRoaXMuZGVm
YXVsdEtleUhhbmRsZXIoZXZlbnQsIHRydWUpOwpAQCAtMjc1LDkgKzI5MSwxMyBAQCBXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAKICAgICBhY2NlcHRBdXRvQ29tcGxldGU6
IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTsKICAgICAgICAg
aWYgKHRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X3N1Z2dlc3RCb3guYWNjZXB0U3VnZ2VzdGlvbigpOwotICAgICAgICByZXR1cm4gdGhpcy5hY2Nl
cHRTdWdnZXN0aW9uKCk7CisgICAgICAgICAgICByZXN1bHQgPSB0aGlzLl9zdWdnZXN0Qm94LmFj
Y2VwdFN1Z2dlc3Rpb24oKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXN1
bHQgPSB0aGlzLmFjY2VwdFN1Z2dlc3Rpb24oKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0sCiAKICAgICAvKioKQEAgLTM0OCw3ICszNjgsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dFBy
b21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBzaG91bGRFeGl0ID0gdHJ1ZTsKICAgICAg
ICAgZWxzZSBpZiAoIWF1dG8gJiYgIWlzRW1wdHlJbnB1dCAmJiAhc2VsZWN0aW9uUmFuZ2UuY29t
bW9uQW5jZXN0b3JDb250YWluZXIuaXNEZXNjZW5kYW50KHRoaXMuX2VsZW1lbnQpKQogICAgICAg
ICAgICAgc2hvdWxkRXhpdCA9IHRydWU7Ci0gICAgICAgIGVsc2UgaWYgKGF1dG8gJiYgIXRoaXMu
X3N1Z2dlc3RCb3ggJiYgIWZvcmNlICYmICF0aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkpCisg
ICAgICAgIGVsc2UgaWYgKGF1dG8gJiYgIWZvcmNlICYmICF0aGlzLmlzQ2FyZXRBdEVuZE9mUHJv
bXB0KCkgJiYgIXRoaXMuaXNTdWdnZXN0Qm94VmlzaWJsZSgpKQogICAgICAgICAgICAgc2hvdWxk
RXhpdCA9IHRydWU7CiAgICAgICAgIGVsc2UgaWYgKCFzZWxlY3Rpb24uaXNDb2xsYXBzZWQpCiAg
ICAgICAgICAgICBzaG91bGRFeGl0ID0gdHJ1ZTsKQEAgLTQwNyw3ICs0MjcsNyBAQCBXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VzZXJFbnRlcmVk
VGV4dCA9IGZ1bGxXb3JkUmFuZ2UudG9TdHJpbmcoKTsKIAogICAgICAgICBpZiAodGhpcy5fc3Vn
Z2VzdEJveCkKLSAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3RCb3gudXBkYXRlU3VnZ2VzdGlvbnMo
dGhpcy5fYm94Rm9yQW5jaG9yQXRTdGFydChzZWxlY3Rpb24sIGZ1bGxXb3JkUmFuZ2UpLCBjb21w
bGV0aW9ucyk7CisgICAgICAgICAgICB0aGlzLl9zdWdnZXN0Qm94LnVwZGF0ZVN1Z2dlc3Rpb25z
KHRoaXMuX2JveEZvckFuY2hvckF0U3RhcnQoc2VsZWN0aW9uLCBmdWxsV29yZFJhbmdlKSwgY29t
cGxldGlvbnMsICF0aGlzLmlzQ2FyZXRBdEVuZE9mUHJvbXB0KCkpOwogCiAgICAgICAgIHZhciB3
b3JkUHJlZml4TGVuZ3RoID0gb3JpZ2luYWxXb3JkUHJlZml4UmFuZ2UudG9TdHJpbmcoKS5sZW5n
dGg7CiAKQEAgLTQ1NCwyNSArNDc0LDI3IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhdXRvKSB7Ci0gICAgICAgICAgICB0
aGlzLl91c2VyRW50ZXJlZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7Ci0gICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LnBydW5lRW1wdHlUZXh0Tm9kZXMoKTsKLSAgICAgICAgICAgIHZhciBmaW5hbFNl
bGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKLSAgICAgICAgICAgIHZhciBw
cmVmaXhUZXh0ID0gY29tcGxldGlvblRleHQuc3Vic3RyaW5nKDAsIHdvcmRQcmVmaXhMZW5ndGgp
OwotICAgICAgICAgICAgdmFyIHN1ZmZpeFRleHQgPSBjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmco
d29yZFByZWZpeExlbmd0aCk7Ci0KLSAgICAgICAgICAgIHZhciBwcmVmaXhUZXh0Tm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHByZWZpeFRleHQpOwotICAgICAgICAgICAgZnVsbFdvcmRS
YW5nZS5pbnNlcnROb2RlKHByZWZpeFRleHROb2RlKTsKLQotICAgICAgICAgICAgdGhpcy5hdXRv
Q29tcGxldGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAg
ICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LmNsYXNzTmFtZSA9ICJhdXRvLWNvbXBsZXRl
LXRleHQiOwotICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LnRleHRDb250ZW50
ID0gc3VmZml4VGV4dDsKLQotICAgICAgICAgICAgcHJlZml4VGV4dE5vZGUucGFyZW50Tm9kZS5p
bnNlcnRCZWZvcmUodGhpcy5hdXRvQ29tcGxldGVFbGVtZW50LCBwcmVmaXhUZXh0Tm9kZS5uZXh0
U2libGluZyk7Ci0KLSAgICAgICAgICAgIGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0U3RhcnQocHJl
Zml4VGV4dE5vZGUsIHdvcmRQcmVmaXhMZW5ndGgpOwotICAgICAgICAgICAgZmluYWxTZWxlY3Rp
b25SYW5nZS5zZXRFbmQocHJlZml4VGV4dE5vZGUsIHdvcmRQcmVmaXhMZW5ndGgpOwotICAgICAg
ICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwotICAgICAgICAgICAgc2VsZWN0aW9u
LmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOworICAgICAgICAgICAgaWYgKHRoaXMuaXND
YXJldEF0RW5kT2ZQcm9tcHQoKSkgeworICAgICAgICAgICAgICAgIHRoaXMuX3VzZXJFbnRlcmVk
UmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnBy
dW5lRW1wdHlUZXh0Tm9kZXMoKTsKKyAgICAgICAgICAgICAgICB2YXIgZmluYWxTZWxlY3Rpb25S
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgICAgICAgICAgdmFyIHByZWZp
eFRleHQgPSBjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcoMCwgd29yZFByZWZpeExlbmd0aCk7Cisg
ICAgICAgICAgICAgICAgdmFyIHN1ZmZpeFRleHQgPSBjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmco
d29yZFByZWZpeExlbmd0aCk7CisKKyAgICAgICAgICAgICAgICB2YXIgcHJlZml4VGV4dE5vZGUg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwcmVmaXhUZXh0KTsKKyAgICAgICAgICAgICAgICBm
dWxsV29yZFJhbmdlLmluc2VydE5vZGUocHJlZml4VGV4dE5vZGUpOworCisgICAgICAgICAgICAg
ICAgdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlRWxlbWVudC5jbGFzc05hbWUg
PSAiYXV0by1jb21wbGV0ZS10ZXh0IjsKKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0
ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBzdWZmaXhUZXh0OworCisgICAgICAgICAgICAgICAgcHJl
Zml4VGV4dE5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5hdXRvQ29tcGxldGVFbGVt
ZW50LCBwcmVmaXhUZXh0Tm9kZS5uZXh0U2libGluZyk7CisKKyAgICAgICAgICAgICAgICBmaW5h
bFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KHByZWZpeFRleHROb2RlLCB3b3JkUHJlZml4TGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldEVuZChwcmVmaXhUZXh0
Tm9kZSwgd29yZFByZWZpeExlbmd0aCk7CisgICAgICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92
ZUFsbFJhbmdlcygpOworICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShmaW5hbFNl
bGVjdGlvblJhbmdlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICB0aGlzLmFwcGx5U3VnZ2VzdGlvbihjb21wbGV0aW9uVGV4dCwgY29tcGxldGlvbnMubGVuZ3Ro
ID4gMSwgb3JpZ2luYWxXb3JkUHJlZml4UmFuZ2UpOwogICAgIH0sCkBAIC01NzIsNyArNTk0LDcg
QEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZm91
bmROZXh0VGV4dCA9IGZhbHNlOwogICAgICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICAgICAg
aWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFICYmIG5vZGUubm9kZVZhbHVlLmxl
bmd0aCkgewotICAgICAgICAgICAgICAgIGlmIChmb3VuZE5leHRUZXh0KQorICAgICAgICAgICAg
ICAgIGlmIChmb3VuZE5leHRUZXh0ICYmICghdGhpcy5hdXRvQ29tcGxldGVFbGVtZW50IHx8ICF0
aGlzLmF1dG9Db21wbGV0ZUVsZW1lbnQuaXNBbmNlc3Rvcihub2RlKSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3VuZE5leHRUZXh0ID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KQEAgLTY0MiwxMCArNjY0LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRQ
cm9tcHQucHJvdG90eXBlID0gewogCiAgICAgdGFiS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJveC50YWJLZXlQcmVzc2VkKGV2ZW50KTsKLQotICAg
ICAgICB0aGlzLmNvbXBsZXRlKGZhbHNlLCBmYWxzZSwgZXZlbnQuc2hpZnRLZXkpOworICAgICAg
ICAvLyBKdXN0IGNvbnN1bWUgdGhlIGtleS4KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwK
IApAQCAtNjcxLDcgKzY5MCwyMyBAQCBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJveC5kb3duS2V5UHJlc3NlZChl
dmVudCk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICB9LAorCisgICAgcGFn
ZVVwS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5p
c1N1Z2dlc3RCb3hWaXNpYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdEJv
eC5wYWdlVXBLZXlQcmVzc2VkKGV2ZW50KTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fSwKKworICAgIHBhZ2VEb3duS2V5UHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5pc1N1Z2dlc3RCb3hWaXNpYmxlKCkpCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fc3VnZ2VzdEJveC5wYWdlRG93bktleVByZXNzZWQoZXZlbnQpOworCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9LAogfQogCiBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CkBAIC05OTQsMzEg
KzEwMjksNTkgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAgICBfb25OZXh0SXRlbTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX29uTmV4dEl0ZW06IGZ1bmN0aW9uKGV2ZW50LCBpc1BhZ2VTY3Jv
bGwpCiAgICAgewogICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRFbGVtZW50LmNo
aWxkTm9kZXM7CiAgICAgICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQpCi0gICAgICAg
ICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQubmV4dFNp
YmxpbmcgfHwgdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOwotICAgICAgICBlbHNlCisg
ICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRFbGVtZW50ID0gdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGlmICghaXNQYWdlU2Nyb2xsKQorICAgICAgICAgICAgICAgIHRo
aXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkRWxlbWVudC5uZXh0U2libGluZyB8
fCB0aGlzLmNvbnRlbnRFbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICB2YXIgY2FuZGlkYXRlID0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50OworCisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaXRlbXNMZWZ0ID0gdGhpcy5fcm93Q291bnRQZXJWaWV3
cG9ydDsgaXRlbXNMZWZ0OyAtLWl0ZW1zTGVmdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
Y2FuZGlkYXRlLm5leHRTaWJsaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRl
ID0gY2FuZGlkYXRlLm5leHRTaWJsaW5nOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKCk7CiAgICAgICAgIHRo
aXMuX2FwcGx5U3VnZ2VzdGlvbih1bmRlZmluZWQsIHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9LAogCi0gICAgX29uUHJldmlvdXNJdGVtOiBmdW5jdGlvbihldmVudCkKKyAgICBf
b25QcmV2aW91c0l0ZW06IGZ1bmN0aW9uKGV2ZW50LCBpc1BhZ2VTY3JvbGwpCiAgICAgewogICAg
ICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNvbnRlbnRFbGVtZW50LmNoaWxkTm9kZXM7CiAgICAg
ICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVsZW1lbnQpCi0gICAgICAgICAgICB0aGlzLl9zZWxl
Y3RlZEVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQucHJldmlvdXNTaWJsaW5nIHx8IHRo
aXMuY29udGVudEVsZW1lbnQubGFzdENoaWxkOwotICAgICAgICBlbHNlCisgICAgICAgIGlmICgh
dGhpcy5fc2VsZWN0ZWRFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50
ID0gdGhpcy5jb250ZW50RWxlbWVudC5sYXN0Q2hpbGQ7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgaWYgKCFpc1BhZ2VTY3JvbGwpCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRF
bGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRFbGVtZW50LnByZXZpb3VzU2libGluZyB8fCB0aGlzLmNv
bnRlbnRFbGVtZW50Lmxhc3RDaGlsZDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHZhciBjYW5kaWRhdGUgPSB0aGlzLl9zZWxlY3RlZEVsZW1lbnQ7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpdGVtc0xlZnQgPSB0aGlzLl9yb3dDb3VudFBlclZpZXdwb3J0OyBpdGVt
c0xlZnQ7IC0taXRlbXNMZWZ0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUu
cHJldmlvdXNTaWJsaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gY2Fu
ZGlkYXRlLnByZXZpb3VzU2libGluZzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlz
Ll9hcHBseVN1Z2dlc3Rpb24odW5kZWZpbmVkLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMDI3LDE0ICsxMDkwLDE1IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RC
b3gucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7QW5jaG9yQm94fSBhbmNo
b3JCb3gKICAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMKKyAgICAg
KiBAcGFyYW0ge2Jvb2xlYW49fSBjYW5TaG93Rm9yU2luZ2xlSXRlbQogICAgICAqLwotICAgIHVw
ZGF0ZVN1Z2dlc3Rpb25zOiBmdW5jdGlvbihhbmNob3JCb3gsIGNvbXBsZXRpb25zKQorICAgIHVw
ZGF0ZVN1Z2dlc3Rpb25zOiBmdW5jdGlvbihhbmNob3JCb3gsIGNvbXBsZXRpb25zLCBjYW5TaG93
Rm9yU2luZ2xlSXRlbSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdWdnZXN0VGltZW91dCkg
ewogICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3N1Z2dlc3RUaW1lb3V0KTsKICAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9zdWdnZXN0VGltZW91dDsKICAgICAgICAgfQotICAgICAgICB0
aGlzLl9jb21wbGV0aW9uc1JlYWR5KGFuY2hvckJveCwgY29tcGxldGlvbnMpOworICAgICAgICB0
aGlzLl9jb21wbGV0aW9uc1JlYWR5KGFuY2hvckJveCwgY29tcGxldGlvbnMsIGNhblNob3dGb3JT
aW5nbGVJdGVtKTsKICAgICB9LAogCiAgICAgX29uSXRlbU1vdXNlRG93bjogZnVuY3Rpb24odGV4
dCwgZXZlbnQpCkBAIC0xMDYyLDE0ICsxMTI2LDExIEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0
LlN1Z2dlc3RCb3gucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICB9
LAogCi0gICAgX3VwZGF0ZUl0ZW1zOiBmdW5jdGlvbihpdGVtcykKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge2Jvb2xlYW49fSBjYW5TaG93Rm9yU2luZ2xlSXRlbQorICAgICAqLworICAgIF91cGRh
dGVJdGVtczogZnVuY3Rpb24oaXRlbXMsIGNhblNob3dGb3JTaW5nbGVJdGVtKQogICAgIHsKLSAg
ICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jb250ZW50RWxlbWVudC5jaGlsZHJlbjsKLSAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IE1hdGgubWluKGNoaWxkcmVuLmxlbmd0aCAtIDEsIHRo
aXMuX3NlbGVjdGVkSW5kZXgpOwotICAgICAgICB2YXIgc2VsZWN0ZWRJdGVtVGV4dCA9IHRoaXMu
X3NlbGVjdGVkSW5kZXggPj0gMCA/IGNoaWxkcmVuW3RoaXMuX3NlbGVjdGVkSW5kZXhdLnRleHRD
b250ZW50IDogbnVsbDsKLSAgICAgICAgdmFyIGl0ZW1JbmRleCA9IDA7Ci0gICAgICAgIHZhciBj
aGlsZCA9IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGlsZDsKLSAgICAgICAgdmFyIGNoaWxk
VGV4dCA9IGNoaWxkID8gY2hpbGQudGV4dENvbnRlbnQgOiBudWxsOwogICAgICAgICB0aGlzLmNv
bnRlbnRFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdmFyIHVzZXJFbnRlcmVk
VGV4dCA9IHRoaXMuX3RleHRQcm9tcHQuX3VzZXJFbnRlcmVkVGV4dDsKQEAgLTEwNzksNyArMTE0
MCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50SXRlbUVs
ZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbGVtZW50ID0gdGhp
cy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkOworICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1l
bnQgPSBjYW5TaG93Rm9yU2luZ2xlSXRlbSA/IHRoaXMuY29udGVudEVsZW1lbnQuZmlyc3RDaGls
ZCA6IG51bGw7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbigpOwogICAgIH0sCiAKQEAg
LTEwOTcsMjEgKzExNTgsNDEgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQuU3VnZ2VzdEJveC5w
cm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7QW5jaG9yQm94
fSBhbmNob3JCb3gKICAgICAgKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gY29tcGxldGlvbnMK
KyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBjYW5TaG93Rm9yU2luZ2xlSXRlbQogICAgICAqLwot
ICAgIF9jb21wbGV0aW9uc1JlYWR5OiBmdW5jdGlvbihhbmNob3JCb3gsIGNvbXBsZXRpb25zKQor
ICAgIF9jYW5TaG93Qm94OiBmdW5jdGlvbihjb21wbGV0aW9ucywgY2FuU2hvd0ZvclNpbmdsZUl0
ZW0pCiAgICAgewotICAgICAgICBpZiAoIWNvbXBsZXRpb25zIHx8ICFjb21wbGV0aW9ucy5sZW5n
dGgpIHsKLSAgICAgICAgICAgIHRoaXMuaGlkZSgpCisgICAgICAgIGlmICghY29tcGxldGlvbnMg
fHwgIWNvbXBsZXRpb25zLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID4gMSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgICAgIC8vIERvIG5vdCBzaG93IGEgc2luZ2xlIHN1Z2dlc3Rpb24gaWYgaXQgaXMg
dGhlIHNhbWUgYXMgdXNlci1lbnRlcmVkIHByZWZpeCwgZXZlbiBpZiBhbGxvd2VkIHRvIHNob3cg
c2luZ2xlLWl0ZW0gc3VnZ2VzdCBib3hlcy4KKyAgICAgICAgcmV0dXJuIGNhblNob3dGb3JTaW5n
bGVJdGVtICYmIGNvbXBsZXRpb25zWzBdICE9PSB0aGlzLl90ZXh0UHJvbXB0Ll91c2VyRW50ZXJl
ZFRleHQ7CisgICAgfSwKKworICAgIF9yZW1lbWJlclJvd0NvdW50UGVyVmlld3BvcnQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5jb250ZW50RWxlbWVudC5maXJzdENoaWxk
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fdXBkYXRl
SXRlbXMoY29tcGxldGlvbnMpOwotICAgICAgICB0aGlzLl91cGRhdGVCb3hQb3NpdGlvbihhbmNo
b3JCb3gpOwotICAgICAgICBpZiAodGhpcy5jb250ZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGgg
JiYgdGhpcy5jb250ZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAg
ICAvLyBXaWxsIG5vdCBiZSBzaG93biBmb3IgYSBzb2xlIHN1Z2dlc3Rpb24gb3Igbm8gc3VnZ2Vz
dGlvbnMuCisgICAgICAgIHRoaXMuX3Jvd0NvdW50UGVyVmlld3BvcnQgPSBNYXRoLmZsb29yKHRo
aXMuY29udGFpbmVyRWxlbWVudC5vZmZzZXRIZWlnaHQgLyB0aGlzLmNvbnRlbnRFbGVtZW50LmZp
cnN0Q2hpbGQub2Zmc2V0SGVpZ2h0KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtBbmNob3JCb3h9IGFuY2hvckJveAorICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz49fSBj
b21wbGV0aW9ucworICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGNhblNob3dGb3JTaW5nbGVJdGVt
CisgICAgICovCisgICAgX2NvbXBsZXRpb25zUmVhZHk6IGZ1bmN0aW9uKGFuY2hvckJveCwgY29t
cGxldGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVtKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X2NhblNob3dCb3goY29tcGxldGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVtKSkgeworICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlSXRlbXMoY29tcGxldGlvbnMsIGNhblNob3dGb3JTaW5nbGVJdGVt
KTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUJveFBvc2l0aW9uKGFuY2hvckJveCk7CiAgICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInZpc2libGUiKTsKKyAgICAgICAg
ICAgIHRoaXMuX3JlbWVtYmVyUm93Q291bnRQZXJWaWV3cG9ydCgpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHRoaXMuaGlkZSgpOwogICAgIH0sCkBAIC0xMTI2LDEwICsxMjA3LDI0IEBA
IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LlN1Z2dlc3RCb3gucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gdGhpcy5fb25OZXh0SXRlbShldmVudCk7CiAgICAgfSwKIAorICAgIHBhZ2VVcEtl
eVByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX29u
UHJldmlvdXNJdGVtKGV2ZW50LCB0cnVlKTsKKyAgICB9LAorCisgICAgcGFnZURvd25LZXlQcmVz
c2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vbk5leHRJ
dGVtKGV2ZW50LCB0cnVlKTsKKyAgICB9LAorCiAgICAgZW50ZXJLZXlQcmVzc2VkOiBmdW5jdGlv
bihldmVudCkKICAgICB7CisgICAgICAgIHZhciBoYXNTZWxlY3RlZEl0ZW0gPSAhIXRoaXMuX3Nl
bGVjdGVkRWxlbWVudDsKICAgICAgICAgdGhpcy5hY2NlcHRTdWdnZXN0aW9uKCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgIC8vIFJlcG9ydCB0aGUgZXZlbnQgYXMgbm9uLWhhbmRs
ZWQgaWYgdGhlcmUgaXMgbm8gc2VsZWN0ZWQgaXRlbSwKKyAgICAgICAgLy8gdG8gY29tbWl0IHRo
ZSBpbnB1dCBvciBoYW5kbGUgaXQgb3RoZXJ3aXNlLgorICAgICAgICByZXR1cm4gaGFzU2VsZWN0
ZWRJdGVtOwogICAgIH0sCiAKICAgICB0YWJLZXlQcmVzc2VkOiBmdW5jdGlvbihldmVudCkK
</data>
<flag name="review"
          id="123612"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>