<?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>89586</bug_id>
          
          <creation_ts>2012-06-20 11:31:03 -0700</creation_ts>
          <short_desc>Web Inspector: Add support for keyboard increment / decrement on numbers in attributes in Elements Panel</short_desc>
          <delta_ts>2012-07-05 07:46:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Grinstead">briangrinstead</reporter>
          <assigned_to name="Vivek Galatage">vivekgalatage</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vivekgalatage</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>653694</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-06-20 11:31:03 -0700</bug_when>
    <thetext>When I press up or down on a number in the Styles sidebar, it causes the number to move up or down by one.  Sometimes I want to do the same thing with an attribute (either an inline style, or just a number like `colspan`).  The up/down shortcuts are not hooked up in this case.  See the attached image for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653696</commentid>
    <comment_count>1</comment_count>
      <attachid>148612</attachid>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-06-20 11:31:46 -0700</bug_when>
    <thetext>Created attachment 148612
Screenshot of number highlighted in Elements Panel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662827</commentid>
    <comment_count>2</comment_count>
      <attachid>150760</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-04 03:37:51 -0700</bug_when>
    <thetext>Created attachment 150760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662869</commentid>
    <comment_count>3</comment_count>
      <attachid>150760</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-04 04:53:24 -0700</bug_when>
    <thetext>Comment on attachment 150760
Patch

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

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:1193
&gt; +        function handleKeyDownEvent(event)

This looks like a lot of copy-paste. Could you extract this functionality from the styles sidebar and make it re-usable instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663329</commentid>
    <comment_count>4</comment_count>
      <attachid>150882</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-04 23:23:13 -0700</bug_when>
    <thetext>Created attachment 150882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663349</commentid>
    <comment_count>5</comment_count>
      <attachid>150882</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-04 23:54:35 -0700</bug_when>
    <thetext>Comment on attachment 150882
Patch

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

&gt; Source/WebCore/inspector/front-end/UIUtils.js:279
&gt; +WebInspector.alteredFloatNumber = function(number, event)

Please annotate with jsdoc and compile using compile-front-end.py.
This method is private (rename to _alteredFloatNumber)

&gt; Source/WebCore/inspector/front-end/UIUtils.js:299
&gt; +    if (!String(result).match(WebInspector.StylesSidebarPane.CSSNumberRegex))

This looks like a bad dependency. Utility class should not depend on the styles panel. You should move this check to the call site.

&gt; Source/WebCore/inspector/front-end/UIUtils.js:305
&gt; +WebInspector.handleUpOrDownValue = function(event, element, suggestionHanlder, finishHandler)

Please annotate.

&gt; Source/WebCore/inspector/front-end/UIUtils.js:334
&gt; +        number = WebInspector.StylesSidebarPane.alteredHexNumber(matches[2], event);

Should also be moved into this class as a private member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663351</commentid>
    <comment_count>6</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-05 00:00:22 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 150882 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150882&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/UIUtils.js:279
&gt; &gt; +WebInspector.alteredFloatNumber = function(number, event)
&gt; 
&gt; Please annotate with jsdoc and compile using compile-front-end.py.
&gt; This method is private (rename to _alteredFloatNumber)
&gt; 

Will do.

&gt; &gt; Source/WebCore/inspector/front-end/UIUtils.js:299
&gt; &gt; +    if (!String(result).match(WebInspector.StylesSidebarPane.CSSNumberRegex))
&gt; 
&gt; This looks like a bad dependency. Utility class should not depend on the styles panel. You should move this check to the call site.
&gt; 

Ahh.. Thats really bad. Missed these migrations. Sure will update them as well.

&gt; &gt; Source/WebCore/inspector/front-end/UIUtils.js:305
&gt; &gt; +WebInspector.handleUpOrDownValue = function(event, element, suggestionHanlder, finishHandler)
&gt; 
&gt; Please annotate.
&gt; 

Sure, will annotate it.

&gt; &gt; Source/WebCore/inspector/front-end/UIUtils.js:334
&gt; &gt; +        number = WebInspector.StylesSidebarPane.alteredHexNumber(matches[2], event);
&gt; 
&gt; Should also be moved into this class as a private member.

Will do.

Thank you for the comments. Will update all of them and re-upload the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663375</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-07-05 01:01:04 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 150882 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150882&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/UIUtils.js:279
&gt; &gt; +WebInspector.alteredFloatNumber = function(number, event)
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/UIUtils.js:305
&gt; &gt; +WebInspector.handleUpOrDownValue = function(event, element, suggestionHanlder, finishHandler)

Vivek, could I ask you to give these methods more specific names now that you are moving them inside WebInspector? The existing names were comprehensible while inside StylesSidebarPane, but in UIUtils, it is hard to understand what they. Do. Maybe handleUpOrDownFloatValue[Change]() (and something similar for alteredFloatNumber)...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663461</commentid>
    <comment_count>8</comment_count>
      <attachid>150915</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-05 03:42:45 -0700</bug_when>
    <thetext>Created attachment 150915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663491</commentid>
    <comment_count>9</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-05 04:32:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 150882 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150882&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/front-end/UIUtils.js:279
&gt; &gt; &gt; +WebInspector.alteredFloatNumber = function(number, event)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/front-end/UIUtils.js:305
&gt; &gt; &gt; +WebInspector.handleUpOrDownValue = function(event, element, suggestionHanlder, finishHandler)
&gt; 
&gt; Vivek, could I ask you to give these methods more specific names now that you are moving them inside WebInspector? The existing names were comprehensible while inside StylesSidebarPane, but in UIUtils, it is hard to understand what they. Do. Maybe handleUpOrDownFloatValue[Change]() (and something similar for alteredFloatNumber)...

Thank you Alexander, I have renamed the method to handleElementValueModifications and other methods as: _modifiedHexValue &amp; _modifiedFloatNumber.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663507</commentid>
    <comment_count>10</comment_count>
      <attachid>150915</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-07-05 05:36:00 -0700</bug_when>
    <thetext>Comment on attachment 150915
Patch

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

The patch works for me.

Please fix the nit before landing (guess Pavel will r+ cq+ an updated patch automatically :)) Thanks for handling this feature.

&gt; Source/WebCore/inspector/front-end/MetricsSidebarPane.js:317
&gt; +        WebInspector.handleElementValueModifications(event, element, finishHandler.bind(this), undefined, customNumberHandler.bind(this))

You don&apos;t need to bind customNumberHandler, since it does not address &quot;this&quot; or any of its properties. This line is also missing a trailing semicolon (;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663511</commentid>
    <comment_count>11</comment_count>
      <attachid>150915</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-05 05:44:51 -0700</bug_when>
    <thetext>Comment on attachment 150915
Patch

Looks good. Please fix according to Alexander&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663515</commentid>
    <comment_count>12</comment_count>
      <attachid>150930</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-05 06:02:40 -0700</bug_when>
    <thetext>Created attachment 150930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663518</commentid>
    <comment_count>13</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-05 06:05:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 150915 [details])
&gt; Looks good. Please fix according to Alexander&apos;s comments.

Thank you Pavel and Alexander for your quick reviews. Uploaded the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663544</commentid>
    <comment_count>14</comment_count>
      <attachid>150930</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-05 07:20:13 -0700</bug_when>
    <thetext>Comment on attachment 150930
Patch

Clearing flags on attachment: 150930

Committed r121902: &lt;http://trac.webkit.org/changeset/121902&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663545</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-05 07:20:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663552</commentid>
    <comment_count>16</comment_count>
    <who name="Brian Grinstead">briangrinstead</who>
    <bug_when>2012-07-05 07:46:33 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 150915 [details] [details])
&gt; &gt; Looks good. Please fix according to Alexander&apos;s comments.
&gt; 
&gt; Thank you Pavel and Alexander for your quick reviews. Uploaded the new patch.

Vivek, thank you so much for taking care of this - can&apos;t wait to check it out!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>148612</attachid>
            <date>2012-06-20 11:31:46 -0700</date>
            <delta_ts>2012-06-20 11:31:46 -0700</delta_ts>
            <desc>Screenshot of number highlighted in Elements Panel</desc>
            <filename>increment-decrement-elements-panel.png</filename>
            <type>image/png</type>
            <size>67545</size>
            <attacher name="Brian Grinstead">briangrinstead</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150760</attachid>
            <date>2012-07-04 03:37:51 -0700</date>
            <delta_ts>2012-07-04 23:23:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89586-20120704160613.patch</filename>
            <type>text/plain</type>
            <size>6852</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTgzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA3LTA0ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBzdXBwb3J0IGZvciBrZXlib2FyZCBpbmNyZW1lbnQgLyBkZWNyZW1lbnQgb24gbnVt
YmVycyBpbiBhdHRyaWJ1dGVzIGluIEVsZW1lbnRzIFBhbmVsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBrZXlib2Fy
ZCBtb2RpZmljYXRpb25zIHRvIGF0dHJpYnV0ZSB2YWx1ZXMuIFRoaXMgc3VwcG9ydCBpcyBhbHJl
YWR5IGF2YWlsYWJsZSAKKyAgICAgICAgU3R5bGVzU2lkZWJhclBhbmUuIFRoZSBzYW1lIGhhcyBi
ZWVuIGV4dGVuZGVkIGhlcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIFVJIHJlbGF0ZWQg
ZmVhdHVyZS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZS5fYWx0ZXJlZEZsb2F0TnVtYmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50
c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nQXR0cmlidXRlLmhhbmRsZUtleURv
d25FdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90
b3R5cGUuX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZSk6CisKIDIwMTItMDctMDQgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMjE4MTMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCShyZXZpc2lvbiAxMjA1
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTExMzUsNiArMTEzNSwzMiBAQCBXZWJJbnNwZWN0
b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9LAorICAgIAorICAgIF9hbHRlcmVkRmxvYXROdW1iZXI6IGZ1bmN0aW9uKG51bWJlciwg
ZXZlbnQpCisgICAgeworICAgICAgICB2YXIgYXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlk
ZW50aWZpZXIgPT09ICJVcCIgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKKwor
ICAgICAgICAvLyBKdW1wIGJ5IDEwIHdoZW4gc2hpZnQgaXMgZG93biBvciBqdW1wIGJ5IDAuMSB3
aGVuIEFsdC9PcHRpb24gaXMgZG93bi4KKyAgICAgICAgLy8gQWxzbyBqdW1wIGJ5IDEwIGZvciBw
YWdlIHVwIGFuZCBkb3duLCBvciBieSAxMDAgaWYgc2hpZnQgaXMgaGVsZCB3aXRoIGEgcGFnZSBr
ZXkuCisgICAgICAgIHZhciBjaGFuZ2VBbW91bnQgPSAxOworICAgICAgICBpZiAoZXZlbnQuc2hp
ZnRLZXkgJiYgIWFycm93S2V5UHJlc3NlZCkKKyAgICAgICAgICAgIGNoYW5nZUFtb3VudCA9IDEw
MDsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgIWFycm93S2V5UHJlc3NlZCkK
KyAgICAgICAgICAgIGNoYW5nZUFtb3VudCA9IDEwOworICAgICAgICBlbHNlIGlmIChldmVudC5h
bHRLZXkpCisgICAgICAgICAgICBjaGFuZ2VBbW91bnQgPSAwLjE7CisKKyAgICAgICAgaWYgKGV2
ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAi
UGFnZURvd24iKQorICAgICAgICAgICAgY2hhbmdlQW1vdW50ICo9IC0xOworCisgICAgICAgIC8v
IE1ha2UgdGhlIG5ldyBudW1iZXIgYW5kIGNvbnN0cmFpbiBpdCB0byBhIHByZWNpc2lvbiBvZiA2
LCB0aGlzIG1hdGNoZXMgbnVtYmVycyB0aGUgZW5naW5lIHJldHVybnMuCisgICAgICAgIC8vIFVz
ZSB0aGUgTnVtYmVyIGNvbnN0cnVjdG9yIHRvIGZvcmdldCB0aGUgZml4ZWQgcHJlY2lzaW9uLCBz
byAxLjEwMDAwMCB3aWxsIHByaW50IGFzIDEuMS4KKyAgICAgICAgdmFyIHJlc3VsdCA9IE51bWJl
cigobnVtYmVyICsgY2hhbmdlQW1vdW50KS50b0ZpeGVkKDYpKTsKKyAgICAgICAgaWYgKCFTdHJp
bmcocmVzdWx0KS5tYXRjaChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTTnVtYmVy
UmVnZXgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9LAogCiAgICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cmli
dXRlLCBlbGVtZW50Rm9yU2VsZWN0aW9uKQogICAgIHsKQEAgLTExNjQsNyArMTE5MCw4NCBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5CiAgICAgICAgIC8vIFJlbW92
ZSB6ZXJvLXdpZHRoIHNwYWNlcyB0aGF0IHdlcmUgYWRkZWQgYnkgbm9kZVRpdGxlSW5mby4KICAg
ICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VSZWN1cnNpdmUoYXR0cmlidXRlKTsKIAorICAgICAg
ICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duRXZlbnQoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpc01ldGFPckN0cmwgPSBXZWJJbnNwZWN0b3IuaXNNYWMoKSA/CisgICAgICAgICAg
ICAgICAgZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkg
JiYgIWV2ZW50LmFsdEtleSA6CisgICAgICAgICAgICAgICAgZXZlbnQuY3RybEtleSAmJiAhZXZl
bnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleTsKKyAgICAgICAg
ICAgIGlmIChpc0VudGVyS2V5KGV2ZW50KSAmJiAoZXZlbnQuaXNNZXRhT3JDdHJsRm9yVGVzdCB8
fCAhY29uZmlnLm11bHRpbGluZSB8fCBpc01ldGFPckN0cmwpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAiY29tbWl0IjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUgfHwgZXZlbnQua2V5SWRl
bnRpZmllciA9PT0gIlUrMDAxQiIpCisgICAgICAgICAgICAgICAgcmV0dXJuICJjYW5jZWwiOwor
ICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAwOSIpIC8v
IFRhYiBrZXkKKyAgICAgICAgICAgICAgICByZXR1cm4gIm1vdmUtIiArIChldmVudC5zaGlmdEtl
eSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgdmFyIGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAi
VXAiIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7CisgICAgICAgICAgICAgICAg
dmFyIHBhZ2VLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJQYWdlVXAiIHx8
IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJQYWdlRG93biIpOworICAgICAgICAgICAgICAgIGlm
ICghYXJyb3dLZXlQcmVzc2VkICYmICFwYWdlS2V5UHJlc3NlZCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGlvbi5yYW5nZUNv
dW50KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAg
ICB2YXIgc2VsZWN0aW9uUmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIXNlbGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzU2Vs
Zk9yRGVzY2VuZGFudChhdHRyaWJ1dGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgICAgICB2YXIgd29yZFJhbmdlID0gc2VsZWN0aW9uUmFuZ2Uuc3Rh
cnRDb250YWluZXIucmFuZ2VPZldvcmQoc2VsZWN0aW9uUmFuZ2Uuc3RhcnRPZmZzZXQsIFdlYklu
c3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVycywgYXR0cmlidXRl
KTsKKyAgICAgICAgICAgICAgICB2YXIgd29yZFN0cmluZyA9IHdvcmRSYW5nZS50b1N0cmluZygp
OworCisgICAgICAgICAgICAgICAgdmFyIHJlcGxhY2VtZW50U3RyaW5nOworICAgICAgICAgICAg
ICAgIHZhciBwcmVmaXgsIHN1ZmZpeCwgbnVtYmVyOworCisgICAgICAgICAgICAgICAgdmFyIG1h
dGNoZXM7CisgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IC8oLiojKShbXGRhLWZBLUZdKykoLiop
Ly5leGVjKHdvcmRTdHJpbmcpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzICYmIG1hdGNo
ZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IG1hdGNoZXNbMV07Cisg
ICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IG1hdGNoZXNbM107CisgICAgICAgICAgICAgICAg
ICAgIG51bWJlciA9IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5hbHRlcmVkSGV4TnVt
YmVyKG1hdGNoZXNbMl0sIGV2ZW50KTsKKworICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVu
dFN0cmluZyA9IHByZWZpeCArIG51bWJlciArIHN1ZmZpeDsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBtYXRjaGVzID0gLyguKj8pKC0/KD86XGQrKD86XC5c
ZCspP3xcLlxkKykpKC4qKS8uZXhlYyh3b3JkU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHByZWZpeCA9IG1hdGNoZXNbMV07CisgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSBt
YXRjaGVzWzNdOworICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyID0gdGhpcy5fYWx0ZXJl
ZEZsb2F0TnVtYmVyKHBhcnNlRmxvYXQobWF0Y2hlc1syXSksIGV2ZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChudW1iZXIgPT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBOZWVkIHRvIGNoZWNrIGZvciBudWxsIGV4cGxpY2l0bHkuCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHByZWZpeCAr
IG51bWJlciArIHN1ZmZpeDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudFN0cmluZykgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgcmVwbGFjZW1lbnRUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKHJlcGxhY2VtZW50U3RyaW5nKTsKKworICAgICAgICAgICAgICAgICAgICB3b3JkUmFuZ2Uu
ZGVsZXRlQ29udGVudHMoKTsKKyAgICAgICAgICAgICAgICAgICAgd29yZFJhbmdlLmluc2VydE5v
ZGUocmVwbGFjZW1lbnRUZXh0Tm9kZSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZpbmFs
U2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICAgICAgICAg
ICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KHJlcGxhY2VtZW50VGV4dE5vZGUsIDAp
OworICAgICAgICAgICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldEVuZChyZXBsYWNl
bWVudFRleHROb2RlLCByZXBsYWNlbWVudFN0cmluZy5sZW5ndGgpOworCisgICAgICAgICAgICAg
ICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAgICAgICAgICAgICAg
c2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOworCisgICAgICAgICAgICAg
ICAgICAgIGV2ZW50LmhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIAogICAgICAgICB2YXIgY29uZmlnID0gbmV3IFdlYkluc3BlY3Rvci5FZGl0
aW5nQ29uZmlnKHRoaXMuX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwgdGhp
cy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpLCBhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAg
Y29uZmlnLmN1c3RvbUZpbmlzaEhhbmRsZXIgPSBoYW5kbGVLZXlEb3duRXZlbnQuYmluZCh0aGlz
KTsKKyAgICAgICAgCiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSBXZWJJbnNwZWN0b3Iuc3RhcnRF
ZGl0aW5nKGF0dHJpYnV0ZSwgY29uZmlnKTsKIAogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0QmFzZUFuZEV4dGVudChlbGVtZW50Rm9yU2VsZWN0aW9uLCAwLCBlbGVtZW50Rm9yU2Vs
ZWN0aW9uLCAxKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150882</attachid>
            <date>2012-07-04 23:23:13 -0700</date>
            <delta_ts>2012-07-05 03:42:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89586-20120705115135.patch</filename>
            <type>text/plain</type>
            <size>12179</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTg4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTA0ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBzdXBwb3J0IGZvciBrZXlib2FyZCBpbmNyZW1lbnQgLyBkZWNyZW1lbnQgb24gbnVt
YmVycyBpbiBhdHRyaWJ1dGVzIGluIEVsZW1lbnRzIFBhbmVsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yZWQgaGFuZGxlVXBPckRvd25WYWx1
ZSBhbmQgYWx0ZXJlZEZsb2F0TnVtYmVyIGZyb20gU3R5bGVzU2lkZWJhclBhbmUuanMgc28gYXMg
dG8gcmV1c2UgdGhlIHNhbWUKKyAgICAgICAgaW4gdGhlIEVsZW1lbnRzVHJlZU91dGxpbmUuanMu
IFRoaXMgaGFzIGJlZW4gbW92ZWQgaW4gVUlVdGlscy5qcyBhcyBib3RoIHRoZXNlIGZpbGVzIGNh
biB1dGlsaXplIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgQWxzbyBtb2RpZmllZCBTdHlsZXNTaWRl
YmFyUGFuZS5qcyB0byBhY2NvbW9kYXRlIHRoZSByZWZhY3RvcmluZy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYXMgVUkgcmVsYXRlZCBmaXggYW5kIHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGFydEVkaXRpbmdBdHRy
aWJ1dGUuaGFuZGxlS2V5RG93bkV2ZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuYWx0
ZXJlZEZsb2F0TnVtYmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5oYW5kbGVVcE9yRG93blZh
bHVlKToKKwogMjAxMi0wNy0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIE5vdGlmaWNhdGlvbnMgc2hvdWxkIGJlIGluIE1vZHVsZXMvbm90aWZp
Y2F0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1RyZWVPdXRsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24gMTIxODgxKQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjc0LDYgKzEyNzQsMjYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZUVsZW1lbnQucHJvdG90eQogICAgICAgICByZW1vdmVaZXJvV2lkdGhTcGFjZVJlY3Vyc2l2
ZShhdHRyaWJ1dGUpOwogCiAgICAgICAgIHZhciBjb25maWcgPSBuZXcgV2ViSW5zcGVjdG9yLkVk
aXRpbmdDb25maWcodGhpcy5fYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0
aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIGF0dHJpYnV0ZU5hbWUpOworICAgICAg
ICAKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bkV2ZW50cyhldmVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlzTWV0YU9yQ3RybCA9IFdlYkluc3BlY3Rvci5pc01hYygpID8K
KyAgICAgICAgICAgICAgICBldmVudC5tZXRhS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZl
bnQuY3RybEtleSAmJiAhZXZlbnQuYWx0S2V5IDoKKyAgICAgICAgICAgICAgICBldmVudC5jdHJs
S2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuYWx0S2V5
OworICAgICAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpICYmIChldmVudC5pc01ldGFPckN0
cmxGb3JUZXN0IHx8ICFjb25maWcubXVsdGlsaW5lIHx8IGlzTWV0YU9yQ3RybCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuICJjb21taXQiOworICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5
Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5Fc2MuY29kZSB8fCBl
dmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDFCIikKKyAgICAgICAgICAgICAgICByZXR1cm4g
ImNhbmNlbCI7CisgICAgICAgICAgICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAi
VSswMDA5IikgLy8gVGFiIGtleQorICAgICAgICAgICAgICAgIHJldHVybiAibW92ZS0iICsgKGV2
ZW50LnNoaWZ0S2V5ID8gImJhY2t3YXJkIiA6ICJmb3J3YXJkIik7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuaGFuZGxlVXBPckRvd25WYWx1ZShldmVu
dCwgYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBjb25maWcuY3VzdG9tRmluaXNoSGFuZGxlciA9IGhhbmRs
ZUtleURvd25FdmVudHMuYmluZCh0aGlzKTsKKyAgICAgICAgCiAgICAgICAgIHRoaXMuX2VkaXRp
bmcgPSBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGF0dHJpYnV0ZSwgY29uZmlnKTsKIAogICAg
ICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChlbGVtZW50Rm9yU2Vs
ZWN0aW9uLCAwLCBlbGVtZW50Rm9yU2VsZWN0aW9uLCAxKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwko
cmV2aXNpb24gMTIxODgxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTM3LDMyICsxMzcsNiBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuUHNldWRvSWROCiAKIFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5DU1NOdW1iZXJSZWdleCA9IC9eKC0/KD86XGQrKD86XC5cZCspP3xc
LlxkKykpJC87CiAKLVdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5hbHRlcmVkRmxvYXRO
dW1iZXIgPSBmdW5jdGlvbihudW1iZXIsIGV2ZW50KQotewotICAgIHZhciBhcnJvd0tleVByZXNz
ZWQgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVwIiB8fCBldmVudC5rZXlJZGVudGlmaWVy
ID09PSAiRG93biIpOwotCi0gICAgLy8gSnVtcCBieSAxMCB3aGVuIHNoaWZ0IGlzIGRvd24gb3Ig
anVtcCBieSAwLjEgd2hlbiBBbHQvT3B0aW9uIGlzIGRvd24uCi0gICAgLy8gQWxzbyBqdW1wIGJ5
IDEwIGZvciBwYWdlIHVwIGFuZCBkb3duLCBvciBieSAxMDAgaWYgc2hpZnQgaXMgaGVsZCB3aXRo
IGEgcGFnZSBrZXkuCi0gICAgdmFyIGNoYW5nZUFtb3VudCA9IDE7Ci0gICAgaWYgKGV2ZW50LnNo
aWZ0S2V5ICYmICFhcnJvd0tleVByZXNzZWQpCi0gICAgICAgIGNoYW5nZUFtb3VudCA9IDEwMDsK
LSAgICBlbHNlIGlmIChldmVudC5zaGlmdEtleSB8fCAhYXJyb3dLZXlQcmVzc2VkKQotICAgICAg
ICBjaGFuZ2VBbW91bnQgPSAxMDsKLSAgICBlbHNlIGlmIChldmVudC5hbHRLZXkpCi0gICAgICAg
IGNoYW5nZUFtb3VudCA9IDAuMTsKLQotICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAi
RG93biIgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VEb3duIikKLSAgICAgICAgY2hh
bmdlQW1vdW50ICo9IC0xOwotCi0gICAgLy8gTWFrZSB0aGUgbmV3IG51bWJlciBhbmQgY29uc3Ry
YWluIGl0IHRvIGEgcHJlY2lzaW9uIG9mIDYsIHRoaXMgbWF0Y2hlcyBudW1iZXJzIHRoZSBlbmdp
bmUgcmV0dXJucy4KLSAgICAvLyBVc2UgdGhlIE51bWJlciBjb25zdHJ1Y3RvciB0byBmb3JnZXQg
dGhlIGZpeGVkIHByZWNpc2lvbiwgc28gMS4xMDAwMDAgd2lsbCBwcmludCBhcyAxLjEuCi0gICAg
dmFyIHJlc3VsdCA9IE51bWJlcigobnVtYmVyICsgY2hhbmdlQW1vdW50KS50b0ZpeGVkKDYpKTsK
LSAgICBpZiAoIVN0cmluZyhyZXN1bHQpLm1hdGNoKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFy
UGFuZS5DU1NOdW1iZXJSZWdleCkpCi0gICAgICAgIHJldHVybiBudWxsOwotCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQogV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLmFsdGVyZWRIZXhO
dW1iZXIgPSBmdW5jdGlvbihoZXhTdHJpbmcsIGV2ZW50KQogewogICAgIHZhciBudW1iZXIgPSBw
YXJzZUludChoZXhTdHJpbmcsIDE2KTsKQEAgLTI1NzMsODAgKzI1NDcsMTYgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcgogCiAgICAgX2hhbmRsZU5hbWVPclZhbHVl
VXBEb3duOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIC8vIEhhbmRsZSBudW1lcmlj
IHZhbHVlIGluY3JlbWVudC9kZWNyZW1lbnQgb25seSBhdCB0aGlzIHBvaW50LgotICAgICAgICBp
ZiAoIXRoaXMuX2lzRWRpdGluZ05hbWUgJiYgdGhpcy5faGFuZGxlVXBPckRvd25WYWx1ZShldmVu
dCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfSwKLQotICAgIF9oYW5kbGVVcE9yRG93blZhbHVlOiBmdW5jdGlvbihldmVudCkKLSAgICB7
Ci0gICAgICAgIHZhciBhcnJvd0tleVByZXNzZWQgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IlVwIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIpOwotICAgICAgICB2YXIgcGFn
ZUtleVByZXNzZWQgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VVcCIgfHwgZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIlBhZ2VEb3duIik7Ci0gICAgICAgIGlmICghYXJyb3dLZXlQcmVz
c2VkICYmICFwYWdlS2V5UHJlc3NlZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotICAgICAgICBpZiAo
IXNlbGVjdGlvbi5yYW5nZUNvdW50KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIHZhciBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwotICAgICAg
ICBpZiAoIXNlbGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzU2VsZk9yRGVz
Y2VuZGFudCh0aGlzLl9zaWRlYmFyUGFuZS52YWx1ZUVsZW1lbnQpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIHZhciB3b3JkUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS5zdGFy
dENvbnRhaW5lci5yYW5nZU9mV29yZChzZWxlY3Rpb25SYW5nZS5zdGFydE9mZnNldCwgV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzLCB0aGlzLl9zaWRl
YmFyUGFuZS52YWx1ZUVsZW1lbnQpOwotICAgICAgICB2YXIgd29yZFN0cmluZyA9IHdvcmRSYW5n
ZS50b1N0cmluZygpOwotICAgICAgICBpZiAodGhpcy5faXNWYWx1ZVN1Z2dlc3Rpb24od29yZFN0
cmluZykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHJlcGxhY2Vt
ZW50U3RyaW5nOwotICAgICAgICB2YXIgcHJlZml4LCBzdWZmaXgsIG51bWJlcjsKLQotICAgICAg
ICB2YXIgbWF0Y2hlczsKLSAgICAgICAgbWF0Y2hlcyA9IC8oLiojKShbXGRhLWZBLUZdKykoLiop
Ly5leGVjKHdvcmRTdHJpbmcpOwotICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0
aCkgewotICAgICAgICAgICAgcHJlZml4ID0gbWF0Y2hlc1sxXTsKLSAgICAgICAgICAgIHN1ZmZp
eCA9IG1hdGNoZXNbM107Ci0gICAgICAgICAgICBudW1iZXIgPSBXZWJJbnNwZWN0b3IuU3R5bGVz
U2lkZWJhclBhbmUuYWx0ZXJlZEhleE51bWJlcihtYXRjaGVzWzJdLCBldmVudCk7Ci0KLSAgICAg
ICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcHJlZml4ICsgbnVtYmVyICsgc3VmZml4OwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbWF0Y2hlcyA9IC8oLio/KSgtPyg/OlxkKyg/Olwu
XGQrKT98XC5cZCspKSguKikvLmV4ZWMod29yZFN0cmluZyk7Ci0gICAgICAgICAgICBpZiAobWF0
Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHByZWZpeCA9IG1hdGNo
ZXNbMV07Ci0gICAgICAgICAgICAgICAgc3VmZml4ID0gbWF0Y2hlc1szXTsKLSAgICAgICAgICAg
ICAgICBudW1iZXIgPSBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEZsb2F0
TnVtYmVyKHBhcnNlRmxvYXQobWF0Y2hlc1syXSksIGV2ZW50KTsKLSAgICAgICAgICAgICAgICBp
ZiAobnVtYmVyID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY2hl
Y2sgZm9yIG51bGwgZXhwbGljaXRseS4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5n
ID0gcHJlZml4ICsgbnVtYmVyICsgc3VmZml4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHJlcGxhY2VtZW50U3RyaW5nKSB7Ci0gICAgICAgICAgICB2YXIgcmVwbGFj
ZW1lbnRUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlcGxhY2VtZW50U3RyaW5n
KTsKLQotICAgICAgICAgICAgd29yZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7Ci0gICAgICAgICAg
ICB3b3JkUmFuZ2UuaW5zZXJ0Tm9kZShyZXBsYWNlbWVudFRleHROb2RlKTsKLQotICAgICAgICAg
ICAgdmFyIGZpbmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwotICAg
ICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChyZXBsYWNlbWVudFRleHROb2Rl
LCAwKTsKLSAgICAgICAgICAgIGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0RW5kKHJlcGxhY2VtZW50
VGV4dE5vZGUsIHJlcGxhY2VtZW50U3RyaW5nLmxlbmd0aCk7Ci0KLSAgICAgICAgICAgIHNlbGVj
dGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShm
aW5hbFNlbGVjdGlvblJhbmdlKTsKLQotICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7
Ci0gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotCisgICAgICAgIGZ1bmN0aW9u
IGZpbmlzaEhhbmxkZXIoKQorICAgICAgICB7CiAgICAgICAgICAgICAvLyBTeW50aGVzaXplIHBy
b3BlcnR5IHRleHQgZGlzcmVnYXJkaW5nIGFueSBjb21tZW50cywgY3VzdG9tIHdoaXRlc3BhY2Ug
ZXRjLgogICAgICAgICAgICAgdGhpcy5fc2lkZWJhclBhbmUuYXBwbHlTdHlsZVRleHQodGhpcy5f
c2lkZWJhclBhbmUubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgKyAiOiAiICsgdGhpcy5fc2lkZWJh
clBhbmUudmFsdWVFbGVtZW50LnRleHRDb250ZW50LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAKKyAgICAgICAgLy8gSGFu
ZGxlIG51bWVyaWMgdmFsdWUgaW5jcmVtZW50L2RlY3JlbWVudCBvbmx5IGF0IHRoaXMgcG9pbnQu
CisgICAgICAgIGlmICghdGhpcy5faXNFZGl0aW5nTmFtZSAmJiBXZWJJbnNwZWN0b3IuaGFuZGxl
VXBPckRvd25WYWx1ZShldmVudCwgdGhpcy5fc2lkZWJhclBhbmUudmFsdWVFbGVtZW50LCB0aGlz
Ll9pc1ZhbHVlU3VnZ2VzdGlvbi5iaW5kKHRoaXMpLCBmaW5pc2hIYW5sZGVyLmJpbmQodGhpcykp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0sCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRp
bHMuanMJKHJldmlzaW9uIDEyMTg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVUlVdGlscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3NiwxMDMgQEAgV2Vi
SW5zcGVjdG9yLkVkaXRpbmdDb25maWcucHJvdG90eXBlID0gewogICAgIH0KIH0KIAorV2ViSW5z
cGVjdG9yLmFsdGVyZWRGbG9hdE51bWJlciA9IGZ1bmN0aW9uKG51bWJlciwgZXZlbnQpCit7Cisg
ICAgdmFyIGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiIHx8
IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7CisKKyAgICAvLyBKdW1wIGJ5IDEwIHdo
ZW4gc2hpZnQgaXMgZG93biBvciBqdW1wIGJ5IDAuMSB3aGVuIEFsdC9PcHRpb24gaXMgZG93bi4K
KyAgICAvLyBBbHNvIGp1bXAgYnkgMTAgZm9yIHBhZ2UgdXAgYW5kIGRvd24sIG9yIGJ5IDEwMCBp
ZiBzaGlmdCBpcyBoZWxkIHdpdGggYSBwYWdlIGtleS4KKyAgICB2YXIgY2hhbmdlQW1vdW50ID0g
MTsKKyAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgIWFycm93S2V5UHJlc3NlZCkKKyAgICAgICAg
Y2hhbmdlQW1vdW50ID0gMTAwOworICAgIGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFhcnJv
d0tleVByZXNzZWQpCisgICAgICAgIGNoYW5nZUFtb3VudCA9IDEwOworICAgIGVsc2UgaWYgKGV2
ZW50LmFsdEtleSkKKyAgICAgICAgY2hhbmdlQW1vdW50ID0gMC4xOworCisgICAgaWYgKGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJEb3duIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiUGFn
ZURvd24iKQorICAgICAgICBjaGFuZ2VBbW91bnQgKj0gLTE7CisKKyAgICAvLyBNYWtlIHRoZSBu
ZXcgbnVtYmVyIGFuZCBjb25zdHJhaW4gaXQgdG8gYSBwcmVjaXNpb24gb2YgNiwgdGhpcyBtYXRj
aGVzIG51bWJlcnMgdGhlIGVuZ2luZSByZXR1cm5zLgorICAgIC8vIFVzZSB0aGUgTnVtYmVyIGNv
bnN0cnVjdG9yIHRvIGZvcmdldCB0aGUgZml4ZWQgcHJlY2lzaW9uLCBzbyAxLjEwMDAwMCB3aWxs
IHByaW50IGFzIDEuMS4KKyAgICB2YXIgcmVzdWx0ID0gTnVtYmVyKChudW1iZXIgKyBjaGFuZ2VB
bW91bnQpLnRvRml4ZWQoNikpOworICAgIGlmICghU3RyaW5nKHJlc3VsdCkubWF0Y2goV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU051bWJlclJlZ2V4KSkKKyAgICAgICAgcmV0dXJu
IG51bGw7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitXZWJJbnNwZWN0b3IuaGFuZGxlVXBP
ckRvd25WYWx1ZSA9IGZ1bmN0aW9uKGV2ZW50LCBlbGVtZW50LCBzdWdnZXN0aW9uSGFubGRlciwg
ZmluaXNoSGFuZGxlcikKK3sKKyAgICB2YXIgYXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlk
ZW50aWZpZXIgPT09ICJVcCIgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKKyAg
ICB2YXIgcGFnZUtleVByZXNzZWQgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VVcCIg
fHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VEb3duIik7CisgICAgaWYgKCFhcnJvd0tl
eVByZXNzZWQgJiYgIXBhZ2VLZXlQcmVzc2VkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIGlmICghc2VsZWN0
aW9uLnJhbmdlQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhciBzZWxlY3Rp
b25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAgIGlmICghc2VsZWN0aW9uUmFu
Z2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIuaXNTZWxmT3JEZXNjZW5kYW50KGVsZW1lbnQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YXIgd29yZFJhbmdlID0gc2VsZWN0aW9uUmFu
Z2Uuc3RhcnRDb250YWluZXIucmFuZ2VPZldvcmQoc2VsZWN0aW9uUmFuZ2Uuc3RhcnRPZmZzZXQs
IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5TdHlsZVZhbHVlRGVsaW1pdGVycywgZWxl
bWVudCk7CisgICAgdmFyIHdvcmRTdHJpbmcgPSB3b3JkUmFuZ2UudG9TdHJpbmcoKTsKKyAgICAK
KyAgICBpZiAoc3VnZ2VzdGlvbkhhbmxkZXIgJiYgc3VnZ2VzdGlvbkhhbmxkZXIod29yZFN0cmlu
ZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhciByZXBsYWNlbWVudFN0cmluZzsK
KyAgICB2YXIgcHJlZml4LCBzdWZmaXgsIG51bWJlcjsKKworICAgIHZhciBtYXRjaGVzOworICAg
IG1hdGNoZXMgPSAvKC4qIykoW1xkYS1mQS1GXSspKC4qKS8uZXhlYyh3b3JkU3RyaW5nKTsKKyAg
ICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkgeworICAgICAgICBwcmVmaXggPSBtYXRj
aGVzWzFdOworICAgICAgICBzdWZmaXggPSBtYXRjaGVzWzNdOworICAgICAgICBudW1iZXIgPSBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEhleE51bWJlcihtYXRjaGVzWzJd
LCBldmVudCk7CisKKyAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBwcmVmaXggKyBudW1iZXIg
KyBzdWZmaXg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbWF0Y2hlcyA9IC8oLio/KSgtPyg/Olxk
Kyg/OlwuXGQrKT98XC5cZCspKSguKikvLmV4ZWMod29yZFN0cmluZyk7CisgICAgICAgIGlmICht
YXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoKSB7CisgICAgICAgICAgICBwcmVmaXggPSBtYXRjaGVz
WzFdOworICAgICAgICAgICAgc3VmZml4ID0gbWF0Y2hlc1szXTsKKyAgICAgICAgICAgIG51bWJl
ciA9IFdlYkluc3BlY3Rvci5hbHRlcmVkRmxvYXROdW1iZXIocGFyc2VGbG9hdChtYXRjaGVzWzJd
KSwgZXZlbnQpOworICAgICAgICAgICAgaWYgKG51bWJlciA9PT0gbnVsbCkgeworICAgICAgICAg
ICAgICAgIC8vIE5lZWQgdG8gY2hlY2sgZm9yIG51bGwgZXhwbGljaXRseS4KKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlcGxhY2Vt
ZW50U3RyaW5nID0gcHJlZml4ICsgbnVtYmVyICsgc3VmZml4OworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKHJlcGxhY2VtZW50U3RyaW5nKSB7CisgICAgICAgIHZhciByZXBsYWNlbWVudFRl
eHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocmVwbGFjZW1lbnRTdHJpbmcpOworCisg
ICAgICAgIHdvcmRSYW5nZS5kZWxldGVDb250ZW50cygpOworICAgICAgICB3b3JkUmFuZ2UuaW5z
ZXJ0Tm9kZShyZXBsYWNlbWVudFRleHROb2RlKTsKKworICAgICAgICB2YXIgZmluYWxTZWxlY3Rp
b25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIGZpbmFsU2VsZWN0aW9u
UmFuZ2Uuc2V0U3RhcnQocmVwbGFjZW1lbnRUZXh0Tm9kZSwgMCk7CisgICAgICAgIGZpbmFsU2Vs
ZWN0aW9uUmFuZ2Uuc2V0RW5kKHJlcGxhY2VtZW50VGV4dE5vZGUsIHJlcGxhY2VtZW50U3RyaW5n
Lmxlbmd0aCk7CisKKyAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOworICAgICAg
ICBzZWxlY3Rpb24uYWRkUmFuZ2UoZmluYWxTZWxlY3Rpb25SYW5nZSk7CisKKyAgICAgICAgZXZl
bnQuaGFuZGxlZCA9IHRydWU7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgIGlmIChmaW5pc2hIYW5kbGVyKQorICAgICAgICAgICAgZmlu
aXNoSGFuZGxlcigpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIC8qKiAKICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudAogICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZz19IGNvbmZpZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150915</attachid>
            <date>2012-07-05 03:42:45 -0700</date>
            <delta_ts>2012-07-05 06:02:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89586-20120705161106.patch</filename>
            <type>text/plain</type>
            <size>19676</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTg5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTA1ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBzdXBwb3J0IGZvciBrZXlib2FyZCBpbmNyZW1lbnQgLyBkZWNyZW1lbnQgb24gbnVt
YmVycyBpbiBhdHRyaWJ1dGVzIGluIEVsZW1lbnRzIFBhbmVsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpCisKKyAgICAgICAgUmVmYWN0b3JpbmcgdGhlIGtleSBldmVudHMgd2hp
bGUgZWRpdGluZyBzdHlsZSBwcm9wZXJ0eSB2YWx1ZXMuIE1pZ3JhdGVkIHRoZSBjb2RlIHRvIFVJ
VXRpbHMuanMgYW5kIHJlZmVycmVkCisgICAgICAgIGZyb20gU3R5bGVzU2lkZWJhclBhbmUuanMs
IEVsZW1lbnRzVHJlZU91dGxpbmUuanMgYW5kIE1ldHJpY3NTaWRlYmFyUGFuZS5qcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYXMgY29kZSByZWZhY3RvcmluZyBhbmQgVUkgZmVhdHVyZSBhZGRl
ZCB0byBFbGVtZW50c1RyZWVPdXRsaW5lLmpzCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZS5oYW5kbGVLZXlE
b3duRXZlbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnBy
b3RvdHlwZS5fc3RhcnRFZGl0aW5nQXR0cmlidXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRy
aWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duLmZpbmlzaEhhbmRsZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hhbmRs
ZUtleURvd24uY3VzdG9tTnVtYmVySGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0
cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hhbmRsZU5hbWVPclZhbHVlVXBEb3du
LmZpbmlzaEhhbmRsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5l
LnByb3RvdHlwZS5faGFuZGxlTmFtZU9yVmFsdWVVcERvd24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVUlVdGlscy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fbW9kaWZpZWRI
ZXhWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX21vZGlmaWVkRmxvYXROdW1iZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmhhbmRsZUVsZW1lbnRWYWx1ZU1vZGlmaWNhdGlvbnMpOgor
CiAyMDEyLTA3LTA1ICBTYW0gRCAgPGRzYW0yOTEyQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBIYXZpbmcgYSAiU2Nyb2xsIGludG8gdmlldyIgZm9yIG5vZGVzIHRocm91Z2gg
d2ViIGluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNUcmVlT3V0bGluZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMJKHJldmlzaW9uIDEyMTg4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTI3NCw2ICsxMjc0LDI2IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHkKICAgICAgICAgcmVtb3ZlWmVyb1dpZHRoU3BhY2VS
ZWN1cnNpdmUoYXR0cmlidXRlKTsKIAogICAgICAgICB2YXIgY29uZmlnID0gbmV3IFdlYkluc3Bl
Y3Rvci5FZGl0aW5nQ29uZmlnKHRoaXMuX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQuYmluZCh0
aGlzKSwgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpLCBhdHRyaWJ1dGVOYW1lKTsK
KyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUtleURvd25FdmVudHMoZXZlbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpc01ldGFPckN0cmwgPSBXZWJJbnNwZWN0b3IuaXNN
YWMoKSA/CisgICAgICAgICAgICAgICAgZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuc2hpZnRLZXkg
JiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleSA6CisgICAgICAgICAgICAgICAgZXZl
bnQuY3RybEtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50
LmFsdEtleTsKKyAgICAgICAgICAgIGlmIChpc0VudGVyS2V5KGV2ZW50KSAmJiAoZXZlbnQuaXNN
ZXRhT3JDdHJsRm9yVGVzdCB8fCAhY29uZmlnLm11bHRpbGluZSB8fCBpc01ldGFPckN0cmwpKQor
ICAgICAgICAgICAgICAgIHJldHVybiAiY29tbWl0IjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGV2
ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNv
ZGUgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAxQiIpCisgICAgICAgICAgICAgICAg
cmV0dXJuICJjYW5jZWwiOworICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmll
ciA9PT0gIlUrMDAwOSIpIC8vIFRhYiBrZXkKKyAgICAgICAgICAgICAgICByZXR1cm4gIm1vdmUt
IiArIChldmVudC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmhhbmRsZUVsZW1lbnRWYWx1
ZU1vZGlmaWNhdGlvbnMoZXZlbnQsIGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY29uZmlnLmN1c3RvbUZp
bmlzaEhhbmRsZXIgPSBoYW5kbGVLZXlEb3duRXZlbnRzLmJpbmQodGhpcyk7CisgICAgICAgIAog
ICAgICAgICB0aGlzLl9lZGl0aW5nID0gV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhhdHRyaWJ1
dGUsIGNvbmZpZyk7CiAKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRF
eHRlbnQoZWxlbWVudEZvclNlbGVjdGlvbiwgMCwgZWxlbWVudEZvclNlbGVjdGlvbiwgMSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFu
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01l
dHJpY3NTaWRlYmFyUGFuZS5qcwkocmV2aXNpb24gMTIxODgxKQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMJKHdvcmtpbmcgY29weSkK
QEAgLTMwMCw1NiArMzAwLDIxIEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJv
dG90eXAKIAogICAgIF9oYW5kbGVLZXlEb3duOiBmdW5jdGlvbihjb250ZXh0LCBzdHlsZVByb3Bl
cnR5LCBldmVudCkKICAgICB7Ci0gICAgICAgIGlmICghL14oPzpQYWdlKT8oPzpVcHxEb3duKSQv
LnRlc3QoZXZlbnQua2V5SWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IHZhciBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKIAotICAgICAgICB2YXIgc2VsZWN0
aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotICAgICAgICBpZiAoIXNlbGVjdGlvbi5yYW5n
ZUNvdW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBzZWxlY3Rpb25SYW5n
ZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwotICAgICAgICBpZiAoIXNlbGVjdGlvblJhbmdl
LmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzU2VsZk9yRGVzY2VuZGFudChlbGVtZW50KSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IGVsZW1lbnQu
dGV4dENvbnRlbnQ7Ci0gICAgICAgIHZhciB3b3JkUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS5zdGFy
dENvbnRhaW5lci5yYW5nZU9mV29yZChzZWxlY3Rpb25SYW5nZS5zdGFydE9mZnNldCwgV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzLCBlbGVtZW50KTsK
LSAgICAgICAgdmFyIHdvcmRTdHJpbmcgPSB3b3JkUmFuZ2UudG9TdHJpbmcoKTsKLQotICAgICAg
ICB2YXIgbWF0Y2hlcyA9IC8oLio/KSgtPyg/OlxkKyg/OlwuXGQrKT98XC5cZCspKSguKikvLmV4
ZWMod29yZFN0cmluZyk7Ci0gICAgICAgIHZhciByZXBsYWNlbWVudFN0cmluZzsKLSAgICAgICAg
aWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBwcmVmaXgg
PSBtYXRjaGVzWzFdOwotICAgICAgICAgICAgdmFyIHN1ZmZpeCA9IG1hdGNoZXNbM107Ci0gICAg
ICAgICAgICB2YXIgbnVtYmVyID0gV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLmFsdGVy
ZWRGbG9hdE51bWJlcihwYXJzZUZsb2F0KG1hdGNoZXNbMl0pLCBldmVudCk7Ci0gICAgICAgICAg
ICBpZiAobnVtYmVyID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgLy8gTmVlZCB0byBjaGVj
ayBmb3IgbnVsbCBleHBsaWNpdGx5LgotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgZnVuY3Rpb24gZmluaXNoSGFuZGxlcihvcmlnaW5hbFZhbHVlLCByZXBs
YWNlbWVudFN0cmluZykKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fYXBwbHlVc2VySW5w
dXQoZWxlbWVudCwgcmVwbGFjZW1lbnRTdHJpbmcsIG9yaWdpbmFsVmFsdWUsIGNvbnRleHQsIGZh
bHNlKTsKKyAgICAgICAgfQogCisgICAgICAgIGZ1bmN0aW9uIGN1c3RvbU51bWJlckhhbmRsZXIo
bnVtYmVyKQorICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3R5bGVQcm9wZXJ0eSAhPT0gIm1h
cmdpbiIgJiYgbnVtYmVyIDwgMCkKICAgICAgICAgICAgICAgICBudW1iZXIgPSAwOwotCi0gICAg
ICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9IHByZWZpeCArIG51bWJlciArIHN1ZmZpeDsKKyAg
ICAgICAgICAgIHJldHVybiBudW1iZXI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFyZXBsYWNl
bWVudFN0cmluZykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgcmVwbGFjZW1l
bnRUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlcGxhY2VtZW50U3RyaW5nKTsK
LQotICAgICAgICB3b3JkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKLSAgICAgICAgd29yZFJhbmdl
Lmluc2VydE5vZGUocmVwbGFjZW1lbnRUZXh0Tm9kZSk7Ci0KLSAgICAgICAgdmFyIGZpbmFsU2Vs
ZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwotICAgICAgICBmaW5hbFNlbGVj
dGlvblJhbmdlLnNldFN0YXJ0KHJlcGxhY2VtZW50VGV4dE5vZGUsIDApOwotICAgICAgICBmaW5h
bFNlbGVjdGlvblJhbmdlLnNldEVuZChyZXBsYWNlbWVudFRleHROb2RlLCByZXBsYWNlbWVudFN0
cmluZy5sZW5ndGgpOwotCi0gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKLSAg
ICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOwogCi0gICAgICAg
IGV2ZW50LmhhbmRsZWQgPSB0cnVlOwotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwot
ICAgICAgICB0aGlzLl9hcHBseVVzZXJJbnB1dChlbGVtZW50LCByZXBsYWNlbWVudFN0cmluZywg
b3JpZ2luYWxWYWx1ZSwgY29udGV4dCwgZmFsc2UpOworICAgICAgICBXZWJJbnNwZWN0b3IuaGFu
ZGxlRWxlbWVudFZhbHVlTW9kaWZpY2F0aW9ucyhldmVudCwgZWxlbWVudCwgZmluaXNoSGFuZGxl
ci5iaW5kKHRoaXMpLCB1bmRlZmluZWQsIGN1c3RvbU51bWJlckhhbmRsZXIuYmluZCh0aGlzKSkK
ICAgICB9LAogCiAgICAgZWRpdGluZ0VuZGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFu
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0
eWxlc1NpZGViYXJQYW5lLmpzCShyZXZpc2lvbiAxMjE4ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTQsOSArMTE0LDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNvbG9yRm9y
bQogICAgIEhTTEE6ICJoc2xhIgogfQogCi1XZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUu
U3R5bGVWYWx1ZURlbGltaXRlcnMgPSAiIFx4QTBcdFxuXCInOjssLygpIjsKLQotCiAvLyBLZWVw
IGluIHN5bmMgd2l0aCBSZW5kZXJTdHlsZUNvbnN0YW50cy5oIFBzZXVkb0lkIGVudW0uIEFycmF5
IGJlbG93IGNvbnRhaW5zIHBzZXVkbyBpZCBuYW1lcyBmb3IgY29ycmVzcG9uZGluZyBlbnVtIGlu
ZGV4ZXMuCiAvLyBGaXJzdCBpdGVtIGlzIGVtcHR5IGR1ZSB0byBpdHMgYXJ0aWZpY2lhbCBOT1BT
RVVETyBuYXR1cmUgaW4gdGhlIGVudW0uCiAvLyBGSVhNRTogZmluZCBhIHdheSBvZiBnZW5lcmF0
aW5nIHRoaXMgbWFwcGluZyBvciBnZXR0aW5nIGl0IGZyb20gY29tYmluYXRpb24gb2YgUmVuZGVy
U3R5bGVDb25zdGFudHMgYW5kIENTU1NlbGVjdG9yLmNwcCBhdApAQCAtMTM1LDY1ICsxMzIsNiBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuUHNldWRvSWROCiAgICAgIi13ZWJraXQt
cmVzaXplciIsICItd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIiwgIi13ZWJraXQtb3V0ZXItc3Bp
bi1idXR0b24iCiBdOwogCi1XZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTTnVtYmVy
UmVnZXggPSAvXigtPyg/OlxkKyg/OlwuXGQrKT98XC5cZCspKSQvOwotCi1XZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEZsb2F0TnVtYmVyID0gZnVuY3Rpb24obnVtYmVyLCBl
dmVudCkKLXsKLSAgICB2YXIgYXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50aWZpZXIg
PT09ICJVcCIgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKLQotICAgIC8vIEp1
bXAgYnkgMTAgd2hlbiBzaGlmdCBpcyBkb3duIG9yIGp1bXAgYnkgMC4xIHdoZW4gQWx0L09wdGlv
biBpcyBkb3duLgotICAgIC8vIEFsc28ganVtcCBieSAxMCBmb3IgcGFnZSB1cCBhbmQgZG93biwg
b3IgYnkgMTAwIGlmIHNoaWZ0IGlzIGhlbGQgd2l0aCBhIHBhZ2Uga2V5LgotICAgIHZhciBjaGFu
Z2VBbW91bnQgPSAxOwotICAgIGlmIChldmVudC5zaGlmdEtleSAmJiAhYXJyb3dLZXlQcmVzc2Vk
KQotICAgICAgICBjaGFuZ2VBbW91bnQgPSAxMDA7Ci0gICAgZWxzZSBpZiAoZXZlbnQuc2hpZnRL
ZXkgfHwgIWFycm93S2V5UHJlc3NlZCkKLSAgICAgICAgY2hhbmdlQW1vdW50ID0gMTA7Ci0gICAg
ZWxzZSBpZiAoZXZlbnQuYWx0S2V5KQotICAgICAgICBjaGFuZ2VBbW91bnQgPSAwLjE7Ci0KLSAg
ICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iIHx8IGV2ZW50LmtleUlkZW50aWZp
ZXIgPT09ICJQYWdlRG93biIpCi0gICAgICAgIGNoYW5nZUFtb3VudCAqPSAtMTsKLQotICAgIC8v
IE1ha2UgdGhlIG5ldyBudW1iZXIgYW5kIGNvbnN0cmFpbiBpdCB0byBhIHByZWNpc2lvbiBvZiA2
LCB0aGlzIG1hdGNoZXMgbnVtYmVycyB0aGUgZW5naW5lIHJldHVybnMuCi0gICAgLy8gVXNlIHRo
ZSBOdW1iZXIgY29uc3RydWN0b3IgdG8gZm9yZ2V0IHRoZSBmaXhlZCBwcmVjaXNpb24sIHNvIDEu
MTAwMDAwIHdpbGwgcHJpbnQgYXMgMS4xLgotICAgIHZhciByZXN1bHQgPSBOdW1iZXIoKG51bWJl
ciArIGNoYW5nZUFtb3VudCkudG9GaXhlZCg2KSk7Ci0gICAgaWYgKCFTdHJpbmcocmVzdWx0KS5t
YXRjaChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTTnVtYmVyUmVnZXgpKQotICAg
ICAgICByZXR1cm4gbnVsbDsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVdlYkluc3BlY3Rv
ci5TdHlsZXNTaWRlYmFyUGFuZS5hbHRlcmVkSGV4TnVtYmVyID0gZnVuY3Rpb24oaGV4U3RyaW5n
LCBldmVudCkKLXsKLSAgICB2YXIgbnVtYmVyID0gcGFyc2VJbnQoaGV4U3RyaW5nLCAxNik7Ci0g
ICAgaWYgKGlzTmFOKG51bWJlcikgfHwgIWlzRmluaXRlKG51bWJlcikpCi0gICAgICAgIHJldHVy
biBoZXhTdHJpbmc7Ci0KLSAgICB2YXIgbWF4VmFsdWUgPSBNYXRoLnBvdygxNiwgaGV4U3RyaW5n
Lmxlbmd0aCkgLSAxOwotICAgIHZhciBhcnJvd0tleVByZXNzZWQgPSAoZXZlbnQua2V5SWRlbnRp
ZmllciA9PT0gIlVwIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIpOwotCi0gICAg
dmFyIGRlbHRhOwotICAgIGlmIChhcnJvd0tleVByZXNzZWQpCi0gICAgICAgIGRlbHRhID0gKGV2
ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIpID8gMSA6IC0xOwotICAgIGVsc2UKLSAgICAgICAg
ZGVsdGEgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VVcCIpID8gMTYgOiAtMTY7Ci0K
LSAgICBpZiAoZXZlbnQuc2hpZnRLZXkpCi0gICAgICAgIGRlbHRhICo9IDE2OwotCi0gICAgdmFy
IHJlc3VsdCA9IG51bWJlciArIGRlbHRhOwotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICBy
ZXN1bHQgPSAwOyAvLyBDb2xvciBoZXggdmFsdWVzIGFyZSBuZXZlciBuZWdhdGl2ZSwgc28gY2xh
bXAgdG8gMC4KLSAgICBlbHNlIGlmIChyZXN1bHQgPiBtYXhWYWx1ZSkKLSAgICAgICAgcmV0dXJu
IGhleFN0cmluZzsKLQotICAgIC8vIEVuc3VyZSB0aGUgcmVzdWx0IGxlbmd0aCBpcyB0aGUgc2Ft
ZSBhcyB0aGUgb3JpZ2luYWwgaGV4IHZhbHVlLgotICAgIHZhciByZXN1bHRTdHJpbmcgPSByZXN1
bHQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7Ci0gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0
aERlbHRhID0gaGV4U3RyaW5nLmxlbmd0aCAtIHJlc3VsdFN0cmluZy5sZW5ndGg7IGkgPCBsZW5n
dGhEZWx0YTsgKytpKQotICAgICAgICByZXN1bHRTdHJpbmcgPSAiMCIgKyByZXN1bHRTdHJpbmc7
Ci0gICAgcmV0dXJuIHJlc3VsdFN0cmluZzsKLX0KLQogV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lLmNhbm9uaWNhbFByb3BlcnR5TmFtZSA9IGZ1bmN0aW9uKG5hbWUpCiB7CiAgICAgaWYg
KCFuYW1lIHx8IG5hbWUubGVuZ3RoIDwgOSB8fCBuYW1lLmNoYXJBdCgwKSAhPT0gIi0iKQpAQCAt
MjUzOCw3ICsyNDc2LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5w
cgogV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcnR5UHJvbXB0ID0gZnVu
Y3Rpb24oY3NzQ29tcGxldGlvbnMsIHNpZGViYXJQYW5lLCBpc0VkaXRpbmdOYW1lLCBhY2NlcHRD
YWxsYmFjaykKIHsKICAgICAvLyBVc2UgdGhlIHNhbWUgY2FsbGJhY2sgYm90aCBmb3IgYXBwbHlJ
dGVtQ2FsbGJhY2sgYW5kIGFjY2VwdEl0ZW1DYWxsYmFjay4KLSAgICBXZWJJbnNwZWN0b3IuVGV4
dFByb21wdC5jYWxsKHRoaXMsIHRoaXMuX2J1aWxkUHJvcGVydHlDb21wbGV0aW9ucy5iaW5kKHRo
aXMpLCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMp
OworICAgIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LmNhbGwodGhpcywgdGhpcy5fYnVpbGRQcm9w
ZXJ0eUNvbXBsZXRpb25zLmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5TdHlsZVZhbHVlRGVsaW1p
dGVycyk7CiAgICAgdGhpcy5zZXRTdWdnZXN0Qm94RW5hYmxlZCgiZ2VuZXJpYy1zdWdnZXN0Iik7
CiAgICAgdGhpcy5fY3NzQ29tcGxldGlvbnMgPSBjc3NDb21wbGV0aW9uczsKICAgICB0aGlzLl9z
aWRlYmFyUGFuZSA9IHNpZGViYXJQYW5lOwpAQCAtMjU3Myw4MCArMjUxMSwxNiBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuQ1NTUHJvcGVyCiAKICAgICBfaGFuZGxlTmFtZU9yVmFs
dWVVcERvd246IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgLy8gSGFuZGxlIG51bWVy
aWMgdmFsdWUgaW5jcmVtZW50L2RlY3JlbWVudCBvbmx5IGF0IHRoaXMgcG9pbnQuCi0gICAgICAg
IGlmICghdGhpcy5faXNFZGl0aW5nTmFtZSAmJiB0aGlzLl9oYW5kbGVVcE9yRG93blZhbHVlKGV2
ZW50KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9LAotCi0gICAgX2hhbmRsZVVwT3JEb3duVmFsdWU6IGZ1bmN0aW9uKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdmFyIGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09
PSAiVXAiIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7Ci0gICAgICAgIHZhciBw
YWdlS2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiUGFnZVVwIiB8fCBldmVu
dC5rZXlJZGVudGlmaWVyID09PSAiUGFnZURvd24iKTsKLSAgICAgICAgaWYgKCFhcnJvd0tleVBy
ZXNzZWQgJiYgIXBhZ2VLZXlQcmVzc2VkKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlm
ICghc2VsZWN0aW9uLnJhbmdlQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7Ci0gICAg
ICAgIGlmICghc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIuaXNTZWxmT3JE
ZXNjZW5kYW50KHRoaXMuX3NpZGViYXJQYW5lLnZhbHVlRWxlbWVudCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHdvcmRSYW5nZSA9IHNlbGVjdGlvblJhbmdlLnN0
YXJ0Q29udGFpbmVyLnJhbmdlT2ZXb3JkKHNlbGVjdGlvblJhbmdlLnN0YXJ0T2Zmc2V0LCBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMsIHRoaXMuX3Np
ZGViYXJQYW5lLnZhbHVlRWxlbWVudCk7Ci0gICAgICAgIHZhciB3b3JkU3RyaW5nID0gd29yZFJh
bmdlLnRvU3RyaW5nKCk7Ci0gICAgICAgIGlmICh0aGlzLl9pc1ZhbHVlU3VnZ2VzdGlvbih3b3Jk
U3RyaW5nKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB2YXIgcmVwbGFj
ZW1lbnRTdHJpbmc7Ci0gICAgICAgIHZhciBwcmVmaXgsIHN1ZmZpeCwgbnVtYmVyOwotCi0gICAg
ICAgIHZhciBtYXRjaGVzOwotICAgICAgICBtYXRjaGVzID0gLyguKiMpKFtcZGEtZkEtRl0rKSgu
KikvLmV4ZWMod29yZFN0cmluZyk7Ci0gICAgICAgIGlmIChtYXRjaGVzICYmIG1hdGNoZXMubGVu
Z3RoKSB7Ci0gICAgICAgICAgICBwcmVmaXggPSBtYXRjaGVzWzFdOwotICAgICAgICAgICAgc3Vm
Zml4ID0gbWF0Y2hlc1szXTsKLSAgICAgICAgICAgIG51bWJlciA9IFdlYkluc3BlY3Rvci5TdHls
ZXNTaWRlYmFyUGFuZS5hbHRlcmVkSGV4TnVtYmVyKG1hdGNoZXNbMl0sIGV2ZW50KTsKLQotICAg
ICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBwcmVmaXggKyBudW1iZXIgKyBzdWZmaXg7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXRjaGVzID0gLyguKj8pKC0/KD86XGQrKD86
XC5cZCspP3xcLlxkKykpKC4qKS8uZXhlYyh3b3JkU3RyaW5nKTsKLSAgICAgICAgICAgIGlmICht
YXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgcHJlZml4ID0gbWF0
Y2hlc1sxXTsKLSAgICAgICAgICAgICAgICBzdWZmaXggPSBtYXRjaGVzWzNdOwotICAgICAgICAg
ICAgICAgIG51bWJlciA9IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5hbHRlcmVkRmxv
YXROdW1iZXIocGFyc2VGbG9hdChtYXRjaGVzWzJdKSwgZXZlbnQpOwotICAgICAgICAgICAgICAg
IGlmIChudW1iZXIgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBj
aGVjayBmb3IgbnVsbCBleHBsaWNpdGx5LgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJp
bmcgPSBwcmVmaXggKyBudW1iZXIgKyBzdWZmaXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAocmVwbGFjZW1lbnRTdHJpbmcpIHsKLSAgICAgICAgICAgIHZhciByZXBs
YWNlbWVudFRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocmVwbGFjZW1lbnRTdHJp
bmcpOwotCi0gICAgICAgICAgICB3b3JkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKLSAgICAgICAg
ICAgIHdvcmRSYW5nZS5pbnNlcnROb2RlKHJlcGxhY2VtZW50VGV4dE5vZGUpOwotCi0gICAgICAg
ICAgICB2YXIgZmluYWxTZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Ci0g
ICAgICAgICAgICBmaW5hbFNlbGVjdGlvblJhbmdlLnNldFN0YXJ0KHJlcGxhY2VtZW50VGV4dE5v
ZGUsIDApOwotICAgICAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQocmVwbGFjZW1l
bnRUZXh0Tm9kZSwgcmVwbGFjZW1lbnRTdHJpbmcubGVuZ3RoKTsKLQotICAgICAgICAgICAgc2Vs
ZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwotICAgICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdl
KGZpbmFsU2VsZWN0aW9uUmFuZ2UpOwotCi0gICAgICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0KKyAgICAgICAgZnVuY3Rp
b24gZmluaXNoSGFuZGxlcihvcmlnaW5hbFZhbHVlLCByZXBsYWNlbWVudFN0cmluZykKKyAgICAg
ICAgewogICAgICAgICAgICAgLy8gU3ludGhlc2l6ZSBwcm9wZXJ0eSB0ZXh0IGRpc3JlZ2FyZGlu
ZyBhbnkgY29tbWVudHMsIGN1c3RvbSB3aGl0ZXNwYWNlIGV0Yy4KICAgICAgICAgICAgIHRoaXMu
X3NpZGViYXJQYW5lLmFwcGx5U3R5bGVUZXh0KHRoaXMuX3NpZGViYXJQYW5lLm5hbWVFbGVtZW50
LnRleHRDb250ZW50ICsgIjogIiArIHRoaXMuX3NpZGViYXJQYW5lLnZhbHVlRWxlbWVudC50ZXh0
Q29udGVudCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CisgICAgCisgICAgICAgIC8vIEhhbmRsZSBudW1lcmljIHZhbHVlIGluY3Jl
bWVudC9kZWNyZW1lbnQgb25seSBhdCB0aGlzIHBvaW50LgorICAgICAgICBpZiAoIXRoaXMuX2lz
RWRpdGluZ05hbWUgJiYgV2ViSW5zcGVjdG9yLmhhbmRsZUVsZW1lbnRWYWx1ZU1vZGlmaWNhdGlv
bnMoZXZlbnQsIHRoaXMuX3NpZGViYXJQYW5lLnZhbHVlRWxlbWVudCwgZmluaXNoSGFuZGxlci5i
aW5kKHRoaXMpLCB0aGlzLl9pc1ZhbHVlU3VnZ2VzdGlvbi5iaW5kKHRoaXMpKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCShyZXZp
c2lvbiAxMjE4ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRp
bHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw2ICsyNzYsMTYwIEBAIFdlYkluc3BlY3Rvci5F
ZGl0aW5nQ29uZmlnLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5DU1NO
dW1iZXJSZWdleCA9IC9eKC0/KD86XGQrKD86XC5cZCspP3xcLlxkKykpJC87CisKK1dlYkluc3Bl
Y3Rvci5TdHlsZVZhbHVlRGVsaW1pdGVycyA9ICIgXHhBMFx0XG5cIic6OywvKCkiOworCisvKioK
KyAqIEBwYXJhbSB7c3RyaW5nfSBoZXhTdHJpbmcKKyAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50Cisg
Ki8KK1dlYkluc3BlY3Rvci5fbW9kaWZpZWRIZXhWYWx1ZSA9IGZ1bmN0aW9uKGhleFN0cmluZywg
ZXZlbnQpCit7CisgICAgdmFyIG51bWJlciA9IHBhcnNlSW50KGhleFN0cmluZywgMTYpOworICAg
IGlmIChpc05hTihudW1iZXIpIHx8ICFpc0Zpbml0ZShudW1iZXIpKQorICAgICAgICByZXR1cm4g
aGV4U3RyaW5nOworCisgICAgdmFyIG1heFZhbHVlID0gTWF0aC5wb3coMTYsIGhleFN0cmluZy5s
ZW5ndGgpIC0gMTsKKyAgICB2YXIgYXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50aWZp
ZXIgPT09ICJVcCIgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKKworICAgIHZh
ciBkZWx0YTsKKyAgICBpZiAoYXJyb3dLZXlQcmVzc2VkKQorICAgICAgICBkZWx0YSA9IChldmVu
dC5rZXlJZGVudGlmaWVyID09PSAiVXAiKSA/IDEgOiAtMTsKKyAgICBlbHNlCisgICAgICAgIGRl
bHRhID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJQYWdlVXAiKSA/IDE2IDogLTE2OworCisg
ICAgaWYgKGV2ZW50LnNoaWZ0S2V5KQorICAgICAgICBkZWx0YSAqPSAxNjsKKworICAgIHZhciBy
ZXN1bHQgPSBudW1iZXIgKyBkZWx0YTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmVz
dWx0ID0gMDsgLy8gQ29sb3IgaGV4IHZhbHVlcyBhcmUgbmV2ZXIgbmVnYXRpdmUsIHNvIGNsYW1w
IHRvIDAuCisgICAgZWxzZSBpZiAocmVzdWx0ID4gbWF4VmFsdWUpCisgICAgICAgIHJldHVybiBo
ZXhTdHJpbmc7CisKKyAgICAvLyBFbnN1cmUgdGhlIHJlc3VsdCBsZW5ndGggaXMgdGhlIHNhbWUg
YXMgdGhlIG9yaWdpbmFsIGhleCB2YWx1ZS4KKyAgICB2YXIgcmVzdWx0U3RyaW5nID0gcmVzdWx0
LnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOworICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhE
ZWx0YSA9IGhleFN0cmluZy5sZW5ndGggLSByZXN1bHRTdHJpbmcubGVuZ3RoOyBpIDwgbGVuZ3Ro
RGVsdGE7ICsraSkKKyAgICAgICAgcmVzdWx0U3RyaW5nID0gIjAiICsgcmVzdWx0U3RyaW5nOwor
ICAgIHJldHVybiByZXN1bHRTdHJpbmc7Cit9CisKKy8qKgorICogQHBhcmFtIHtudW1iZXJ9IG51
bWJlcgorICogQHBhcmFtIHtFdmVudH0gZXZlbnQKKyAqLworV2ViSW5zcGVjdG9yLl9tb2RpZmll
ZEZsb2F0TnVtYmVyID0gZnVuY3Rpb24obnVtYmVyLCBldmVudCkKK3sKKyAgICB2YXIgYXJyb3dL
ZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIgfHwgZXZlbnQua2V5SWRl
bnRpZmllciA9PT0gIkRvd24iKTsKKworICAgIC8vIEp1bXAgYnkgMTAgd2hlbiBzaGlmdCBpcyBk
b3duIG9yIGp1bXAgYnkgMC4xIHdoZW4gQWx0L09wdGlvbiBpcyBkb3duLgorICAgIC8vIEFsc28g
anVtcCBieSAxMCBmb3IgcGFnZSB1cCBhbmQgZG93biwgb3IgYnkgMTAwIGlmIHNoaWZ0IGlzIGhl
bGQgd2l0aCBhIHBhZ2Uga2V5LgorICAgIHZhciBjaGFuZ2VBbW91bnQgPSAxOworICAgIGlmIChl
dmVudC5zaGlmdEtleSAmJiAhYXJyb3dLZXlQcmVzc2VkKQorICAgICAgICBjaGFuZ2VBbW91bnQg
PSAxMDA7CisgICAgZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgIWFycm93S2V5UHJlc3NlZCkK
KyAgICAgICAgY2hhbmdlQW1vdW50ID0gMTA7CisgICAgZWxzZSBpZiAoZXZlbnQuYWx0S2V5KQor
ICAgICAgICBjaGFuZ2VBbW91bnQgPSAwLjE7CisKKyAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmll
ciA9PT0gIkRvd24iIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJQYWdlRG93biIpCisgICAg
ICAgIGNoYW5nZUFtb3VudCAqPSAtMTsKKworICAgIC8vIE1ha2UgdGhlIG5ldyBudW1iZXIgYW5k
IGNvbnN0cmFpbiBpdCB0byBhIHByZWNpc2lvbiBvZiA2LCB0aGlzIG1hdGNoZXMgbnVtYmVycyB0
aGUgZW5naW5lIHJldHVybnMuCisgICAgLy8gVXNlIHRoZSBOdW1iZXIgY29uc3RydWN0b3IgdG8g
Zm9yZ2V0IHRoZSBmaXhlZCBwcmVjaXNpb24sIHNvIDEuMTAwMDAwIHdpbGwgcHJpbnQgYXMgMS4x
LgorICAgIHZhciByZXN1bHQgPSBOdW1iZXIoKG51bWJlciArIGNoYW5nZUFtb3VudCkudG9GaXhl
ZCg2KSk7CisgICAgaWYgKCFTdHJpbmcocmVzdWx0KS5tYXRjaChXZWJJbnNwZWN0b3IuQ1NTTnVt
YmVyUmVnZXgpKQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKKy8qKgorICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgICogQHBhcmFtIHtFbGVtZW50fSBl
bGVtZW50CisgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcsc3RyaW5nKT19IGZpbmlzaEhhbmRs
ZXIKKyAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZyk9fSBzdWdnZXN0aW9uSGFuZGxlcgorICAq
IEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyKTpudW1iZXI9fSBjdXN0b21OdW1iZXJIYW5kbGVyCisg
Ki8KK1dlYkluc3BlY3Rvci5oYW5kbGVFbGVtZW50VmFsdWVNb2RpZmljYXRpb25zID0gZnVuY3Rp
b24oZXZlbnQsIGVsZW1lbnQsIGZpbmlzaEhhbmRsZXIsIHN1Z2dlc3Rpb25IYW5kbGVyLCBjdXN0
b21OdW1iZXJIYW5kbGVyKQoreworICAgIHZhciBhcnJvd0tleVByZXNzZWQgPSAoZXZlbnQua2V5
SWRlbnRpZmllciA9PT0gIlVwIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIpOwor
ICAgIHZhciBwYWdlS2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiUGFnZVVw
IiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiUGFnZURvd24iKTsKKyAgICBpZiAoIWFycm93
S2V5UHJlc3NlZCAmJiAhcGFnZUtleVByZXNzZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgaWYgKCFzZWxl
Y3Rpb24ucmFuZ2VDb3VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFyIHNlbGVj
dGlvblJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAgaWYgKCFzZWxlY3Rpb25S
YW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lci5pc1NlbGZPckRlc2NlbmRhbnQoZWxlbWVudCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhciBvcmlnaW5hbFZhbHVlID0gZWxlbWVu
dC50ZXh0Q29udGVudDsKKyAgICB2YXIgd29yZFJhbmdlID0gc2VsZWN0aW9uUmFuZ2Uuc3RhcnRD
b250YWluZXIucmFuZ2VPZldvcmQoc2VsZWN0aW9uUmFuZ2Uuc3RhcnRPZmZzZXQsIFdlYkluc3Bl
Y3Rvci5TdHlsZVZhbHVlRGVsaW1pdGVycywgZWxlbWVudCk7CisgICAgdmFyIHdvcmRTdHJpbmcg
PSB3b3JkUmFuZ2UudG9TdHJpbmcoKTsKKyAgICAKKyAgICBpZiAoc3VnZ2VzdGlvbkhhbmRsZXIg
JiYgc3VnZ2VzdGlvbkhhbmRsZXIod29yZFN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHZhciByZXBsYWNlbWVudFN0cmluZzsKKyAgICB2YXIgcHJlZml4LCBzdWZmaXgsIG51
bWJlcjsKKworICAgIHZhciBtYXRjaGVzOworICAgIG1hdGNoZXMgPSAvKC4qIykoW1xkYS1mQS1G
XSspKC4qKS8uZXhlYyh3b3JkU3RyaW5nKTsKKyAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxl
bmd0aCkgeworICAgICAgICBwcmVmaXggPSBtYXRjaGVzWzFdOworICAgICAgICBzdWZmaXggPSBt
YXRjaGVzWzNdOworICAgICAgICBudW1iZXIgPSBXZWJJbnNwZWN0b3IuX21vZGlmaWVkSGV4VmFs
dWUobWF0Y2hlc1syXSwgZXZlbnQpOworICAgICAgICAKKyAgICAgICAgaWYgKGN1c3RvbU51bWJl
ckhhbmRsZXIpCisgICAgICAgICAgICBudW1iZXIgPSBjdXN0b21OdW1iZXJIYW5kbGVyKG51bWJl
cik7CisKKyAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBwcmVmaXggKyBudW1iZXIgKyBzdWZm
aXg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbWF0Y2hlcyA9IC8oLio/KSgtPyg/OlxkKyg/Olwu
XGQrKT98XC5cZCspKSguKikvLmV4ZWMod29yZFN0cmluZyk7CisgICAgICAgIGlmIChtYXRjaGVz
ICYmIG1hdGNoZXMubGVuZ3RoKSB7CisgICAgICAgICAgICBwcmVmaXggPSBtYXRjaGVzWzFdOwor
ICAgICAgICAgICAgc3VmZml4ID0gbWF0Y2hlc1szXTsKKyAgICAgICAgICAgIG51bWJlciA9IFdl
Ykluc3BlY3Rvci5fbW9kaWZpZWRGbG9hdE51bWJlcihwYXJzZUZsb2F0KG1hdGNoZXNbMl0pLCBl
dmVudCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gY2hlY2sgZm9yIG51
bGwgZXhwbGljaXRseS4KKyAgICAgICAgICAgIGlmIChudW1iZXIgPT09IG51bGwpICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKGN1c3RvbU51bWJlckhhbmRsZXIpCisgICAgICAgICAgICAgICAgbnVtYmVy
ID0gY3VzdG9tTnVtYmVySGFuZGxlcihudW1iZXIpOworCisgICAgICAgICAgICByZXBsYWNlbWVu
dFN0cmluZyA9IHByZWZpeCArIG51bWJlciArIHN1ZmZpeDsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChyZXBsYWNlbWVudFN0cmluZykgeworICAgICAgICB2YXIgcmVwbGFjZW1lbnRUZXh0
Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlcGxhY2VtZW50U3RyaW5nKTsKKworICAg
ICAgICB3b3JkUmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKKyAgICAgICAgd29yZFJhbmdlLmluc2Vy
dE5vZGUocmVwbGFjZW1lbnRUZXh0Tm9kZSk7CisKKyAgICAgICAgdmFyIGZpbmFsU2VsZWN0aW9u
UmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgICAgICBmaW5hbFNlbGVjdGlvblJh
bmdlLnNldFN0YXJ0KHJlcGxhY2VtZW50VGV4dE5vZGUsIDApOworICAgICAgICBmaW5hbFNlbGVj
dGlvblJhbmdlLnNldEVuZChyZXBsYWNlbWVudFRleHROb2RlLCByZXBsYWNlbWVudFN0cmluZy5s
ZW5ndGgpOworCisgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgICAg
c2VsZWN0aW9uLmFkZFJhbmdlKGZpbmFsU2VsZWN0aW9uUmFuZ2UpOworCisgICAgICAgIGV2ZW50
LmhhbmRsZWQgPSB0cnVlOworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICBpZiAoZmluaXNoSGFuZGxlcikKKyAgICAgICAgICAgIGZpbmlz
aEhhbmRsZXIob3JpZ2luYWxWYWx1ZSwgcmVwbGFjZW1lbnRTdHJpbmcpOworCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8qKiAKICAqIEBwYXJh
bSB7RWxlbWVudH0gZWxlbWVudAogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZp
Zz19IGNvbmZpZwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150930</attachid>
            <date>2012-07-05 06:02:40 -0700</date>
            <delta_ts>2012-07-05 07:20:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89586-20120705183210.patch</filename>
            <type>text/plain</type>
            <size>19671</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTA1ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBzdXBwb3J0IGZvciBrZXlib2FyZCBpbmNyZW1lbnQgLyBkZWNyZW1lbnQgb24gbnVt
YmVycyBpbiBhdHRyaWJ1dGVzIGluIEVsZW1lbnRzIFBhbmVsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTU4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4KKworICAgICAgICBSZWZhY3RvcmluZyB0aGUga2V5IGV2ZW50cyB3aGls
ZSBlZGl0aW5nIHN0eWxlIHByb3BlcnR5IHZhbHVlcy4gTWlncmF0ZWQgdGhlIGNvZGUgdG8gVUlV
dGlscy5qcyBhbmQgcmVmZXJyZWQKKyAgICAgICAgZnJvbSBTdHlsZXNTaWRlYmFyUGFuZS5qcywg
RWxlbWVudHNUcmVlT3V0bGluZS5qcyBhbmQgTWV0cmljc1NpZGViYXJQYW5lLmpzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBhcyBjb2RlIHJlZmFjdG9yaW5nIGFuZCBVSSBmZWF0dXJlIGFkZGVk
IHRvIEVsZW1lbnRzVHJlZU91dGxpbmUuanMKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNUcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50
c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nQXR0cmlidXRlLmhhbmRsZUtleURv
d25FdmVudHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJp
Y3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hhbmRsZUtleURvd24uZmluaXNoSGFuZGxlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGFuZGxl
S2V5RG93bi5jdXN0b21OdW1iZXJIYW5kbGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRy
aWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGFuZGxlTmFtZU9yVmFsdWVVcERvd24u
ZmluaXNoSGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUu
cHJvdG90eXBlLl9oYW5kbGVOYW1lT3JWYWx1ZVVwRG93bik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9tb2RpZmllZEhl
eFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fbW9kaWZpZWRGbG9hdE51bWJlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuaGFuZGxlRWxlbWVudFZhbHVlTW9kaWZpY2F0aW9ucyk6CisK
IDIwMTItMDctMDQgIEx1a2UgTWFjcGhlcnNvbiAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEluc3BlY3RvciBjcmFzaGVzIHdoZW4gdHJ5aW5nIHRvIGluc3BlY3QgYSBwYWdl
IHdpdGggQ1NTIHZhcmlhYmxlcwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwkocmV2aXNpb24gMTIx
ODc0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVP
dXRsaW5lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc0LDYgKzEyNzQsMjYgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eQogICAgICAgICByZW1vdmVaZXJvV2lkdGhT
cGFjZVJlY3Vyc2l2ZShhdHRyaWJ1dGUpOwogCiAgICAgICAgIHZhciBjb25maWcgPSBuZXcgV2Vi
SW5zcGVjdG9yLkVkaXRpbmdDb25maWcodGhpcy5fYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZC5i
aW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIGF0dHJpYnV0ZU5h
bWUpOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bkV2ZW50cyhldmVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlzTWV0YU9yQ3RybCA9IFdlYkluc3BlY3Rv
ci5pc01hYygpID8KKyAgICAgICAgICAgICAgICBldmVudC5tZXRhS2V5ICYmICFldmVudC5zaGlm
dEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYWx0S2V5IDoKKyAgICAgICAgICAgICAg
ICBldmVudC5jdHJsS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiAh
ZXZlbnQuYWx0S2V5OworICAgICAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpICYmIChldmVu
dC5pc01ldGFPckN0cmxGb3JUZXN0IHx8ICFjb25maWcubXVsdGlsaW5lIHx8IGlzTWV0YU9yQ3Ry
bCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICJjb21taXQiOworICAgICAgICAgICAgZWxzZSBp
ZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5F
c2MuY29kZSB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDFCIikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gImNhbmNlbCI7CisgICAgICAgICAgICBlbHNlIGlmIChldmVudC5rZXlJZGVu
dGlmaWVyID09PSAiVSswMDA5IikgLy8gVGFiIGtleQorICAgICAgICAgICAgICAgIHJldHVybiAi
bW92ZS0iICsgKGV2ZW50LnNoaWZ0S2V5ID8gImJhY2t3YXJkIiA6ICJmb3J3YXJkIik7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuaGFuZGxlRWxlbWVu
dFZhbHVlTW9kaWZpY2F0aW9ucyhldmVudCwgYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb25maWcuY3Vz
dG9tRmluaXNoSGFuZGxlciA9IGhhbmRsZUtleURvd25FdmVudHMuYmluZCh0aGlzKTsKKyAgICAg
ICAgCiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGF0
dHJpYnV0ZSwgY29uZmlnKTsKIAogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFz
ZUFuZEV4dGVudChlbGVtZW50Rm9yU2VsZWN0aW9uLCAwLCBlbGVtZW50Rm9yU2VsZWN0aW9uLCAx
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGVi
YXJQYW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTWV0cmljc1NpZGViYXJQYW5lLmpzCShyZXZpc2lvbiAxMjE4NzQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMzAwLDU2ICszMDAsMjEgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFu
ZS5wcm90b3R5cAogCiAgICAgX2hhbmRsZUtleURvd246IGZ1bmN0aW9uKGNvbnRleHQsIHN0eWxl
UHJvcGVydHksIGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCEvXig/OlBhZ2UpPyg/OlVwfERv
d24pJC8udGVzdChldmVudC5rZXlJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgdmFyIGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0OwogCi0gICAgICAgIHZhciBz
ZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmICghc2VsZWN0aW9u
LnJhbmdlQ291bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNlbGVjdGlv
blJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7Ci0gICAgICAgIGlmICghc2VsZWN0aW9u
UmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIuaXNTZWxmT3JEZXNjZW5kYW50KGVsZW1lbnQp
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gZWxl
bWVudC50ZXh0Q29udGVudDsKLSAgICAgICAgdmFyIHdvcmRSYW5nZSA9IHNlbGVjdGlvblJhbmdl
LnN0YXJ0Q29udGFpbmVyLnJhbmdlT2ZXb3JkKHNlbGVjdGlvblJhbmdlLnN0YXJ0T2Zmc2V0LCBX
ZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMsIGVsZW1l
bnQpOwotICAgICAgICB2YXIgd29yZFN0cmluZyA9IHdvcmRSYW5nZS50b1N0cmluZygpOwotCi0g
ICAgICAgIHZhciBtYXRjaGVzID0gLyguKj8pKC0/KD86XGQrKD86XC5cZCspP3xcLlxkKykpKC4q
KS8uZXhlYyh3b3JkU3RyaW5nKTsKLSAgICAgICAgdmFyIHJlcGxhY2VtZW50U3RyaW5nOwotICAg
ICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIHBy
ZWZpeCA9IG1hdGNoZXNbMV07Ci0gICAgICAgICAgICB2YXIgc3VmZml4ID0gbWF0Y2hlc1szXTsK
LSAgICAgICAgICAgIHZhciBudW1iZXIgPSBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUu
YWx0ZXJlZEZsb2F0TnVtYmVyKHBhcnNlRmxvYXQobWF0Y2hlc1syXSksIGV2ZW50KTsKLSAgICAg
ICAgICAgIGlmIChudW1iZXIgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBOZWVkIHRv
IGNoZWNrIGZvciBudWxsIGV4cGxpY2l0bHkuCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiBmaW5pc2hIYW5kbGVyKG9yaWdpbmFsVmFsdWUs
IHJlcGxhY2VtZW50U3RyaW5nKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9hcHBseVVz
ZXJJbnB1dChlbGVtZW50LCByZXBsYWNlbWVudFN0cmluZywgb3JpZ2luYWxWYWx1ZSwgY29udGV4
dCwgZmFsc2UpOworICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gY3VzdG9tTnVtYmVySGFu
ZGxlcihudW1iZXIpCisgICAgICAgIHsKICAgICAgICAgICAgIGlmIChzdHlsZVByb3BlcnR5ICE9
PSAibWFyZ2luIiAmJiBudW1iZXIgPCAwKQogICAgICAgICAgICAgICAgIG51bWJlciA9IDA7Ci0K
LSAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcHJlZml4ICsgbnVtYmVyICsgc3VmZml4
OworICAgICAgICAgICAgcmV0dXJuIG51bWJlcjsKICAgICAgICAgfQotICAgICAgICBpZiAoIXJl
cGxhY2VtZW50U3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciByZXBs
YWNlbWVudFRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocmVwbGFjZW1lbnRTdHJp
bmcpOwotCi0gICAgICAgIHdvcmRSYW5nZS5kZWxldGVDb250ZW50cygpOwotICAgICAgICB3b3Jk
UmFuZ2UuaW5zZXJ0Tm9kZShyZXBsYWNlbWVudFRleHROb2RlKTsKLQotICAgICAgICB2YXIgZmlu
YWxTZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Ci0gICAgICAgIGZpbmFs
U2VsZWN0aW9uUmFuZ2Uuc2V0U3RhcnQocmVwbGFjZW1lbnRUZXh0Tm9kZSwgMCk7Ci0gICAgICAg
IGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0RW5kKHJlcGxhY2VtZW50VGV4dE5vZGUsIHJlcGxhY2Vt
ZW50U3RyaW5nLmxlbmd0aCk7Ci0KLSAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygp
OwotICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UoZmluYWxTZWxlY3Rpb25SYW5nZSk7CiAKLSAg
ICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7Ci0gICAgICAgIHRoaXMuX2FwcGx5VXNlcklucHV0KGVsZW1lbnQsIHJlcGxhY2VtZW50U3Ry
aW5nLCBvcmlnaW5hbFZhbHVlLCBjb250ZXh0LCBmYWxzZSk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5oYW5kbGVFbGVtZW50VmFsdWVNb2RpZmljYXRpb25zKGV2ZW50LCBlbGVtZW50LCBmaW5pc2hI
YW5kbGVyLmJpbmQodGhpcyksIHVuZGVmaW5lZCwgY3VzdG9tTnVtYmVySGFuZGxlcik7CiAgICAg
fSwKIAogICAgIGVkaXRpbmdFbmRlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNT
aWRlYmFyUGFuZS5qcwkocmV2aXNpb24gMTIxODc0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTE0
LDkgKzExNCw2IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Db2xvckZvcm0KICAg
ICBIU0xBOiAiaHNsYSIKIH0KIAotV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxl
VmFsdWVEZWxpbWl0ZXJzID0gIiBceEEwXHRcblwiJzo7LC8oKSI7Ci0KLQogLy8gS2VlcCBpbiBz
eW5jIHdpdGggUmVuZGVyU3R5bGVDb25zdGFudHMuaCBQc2V1ZG9JZCBlbnVtLiBBcnJheSBiZWxv
dyBjb250YWlucyBwc2V1ZG8gaWQgbmFtZXMgZm9yIGNvcnJlc3BvbmRpbmcgZW51bSBpbmRleGVz
LgogLy8gRmlyc3QgaXRlbSBpcyBlbXB0eSBkdWUgdG8gaXRzIGFydGlmaWNpYWwgTk9QU0VVRE8g
bmF0dXJlIGluIHRoZSBlbnVtLgogLy8gRklYTUU6IGZpbmQgYSB3YXkgb2YgZ2VuZXJhdGluZyB0
aGlzIG1hcHBpbmcgb3IgZ2V0dGluZyBpdCBmcm9tIGNvbWJpbmF0aW9uIG9mIFJlbmRlclN0eWxl
Q29uc3RhbnRzIGFuZCBDU1NTZWxlY3Rvci5jcHAgYXQKQEAgLTEzNSw2NSArMTMyLDYgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlBzZXVkb0lkTgogICAgICItd2Via2l0LXJlc2l6
ZXIiLCAiLXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiIsICItd2Via2l0LW91dGVyLXNwaW4tYnV0
dG9uIgogXTsKIAotV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU051bWJlclJlZ2V4
ID0gL14oLT8oPzpcZCsoPzpcLlxkKyk/fFwuXGQrKSkkLzsKLQotV2ViSW5zcGVjdG9yLlN0eWxl
c1NpZGViYXJQYW5lLmFsdGVyZWRGbG9hdE51bWJlciA9IGZ1bmN0aW9uKG51bWJlciwgZXZlbnQp
Ci17Ci0gICAgdmFyIGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAi
VXAiIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7Ci0KLSAgICAvLyBKdW1wIGJ5
IDEwIHdoZW4gc2hpZnQgaXMgZG93biBvciBqdW1wIGJ5IDAuMSB3aGVuIEFsdC9PcHRpb24gaXMg
ZG93bi4KLSAgICAvLyBBbHNvIGp1bXAgYnkgMTAgZm9yIHBhZ2UgdXAgYW5kIGRvd24sIG9yIGJ5
IDEwMCBpZiBzaGlmdCBpcyBoZWxkIHdpdGggYSBwYWdlIGtleS4KLSAgICB2YXIgY2hhbmdlQW1v
dW50ID0gMTsKLSAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgIWFycm93S2V5UHJlc3NlZCkKLSAg
ICAgICAgY2hhbmdlQW1vdW50ID0gMTAwOwotICAgIGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8
ICFhcnJvd0tleVByZXNzZWQpCi0gICAgICAgIGNoYW5nZUFtb3VudCA9IDEwOwotICAgIGVsc2Ug
aWYgKGV2ZW50LmFsdEtleSkKLSAgICAgICAgY2hhbmdlQW1vdW50ID0gMC4xOwotCi0gICAgaWYg
KGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09
PSAiUGFnZURvd24iKQotICAgICAgICBjaGFuZ2VBbW91bnQgKj0gLTE7Ci0KLSAgICAvLyBNYWtl
IHRoZSBuZXcgbnVtYmVyIGFuZCBjb25zdHJhaW4gaXQgdG8gYSBwcmVjaXNpb24gb2YgNiwgdGhp
cyBtYXRjaGVzIG51bWJlcnMgdGhlIGVuZ2luZSByZXR1cm5zLgotICAgIC8vIFVzZSB0aGUgTnVt
YmVyIGNvbnN0cnVjdG9yIHRvIGZvcmdldCB0aGUgZml4ZWQgcHJlY2lzaW9uLCBzbyAxLjEwMDAw
MCB3aWxsIHByaW50IGFzIDEuMS4KLSAgICB2YXIgcmVzdWx0ID0gTnVtYmVyKChudW1iZXIgKyBj
aGFuZ2VBbW91bnQpLnRvRml4ZWQoNikpOwotICAgIGlmICghU3RyaW5nKHJlc3VsdCkubWF0Y2go
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLkNTU051bWJlclJlZ2V4KSkKLSAgICAgICAg
cmV0dXJuIG51bGw7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1XZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEhleE51bWJlciA9IGZ1bmN0aW9uKGhleFN0cmluZywgZXZl
bnQpCi17Ci0gICAgdmFyIG51bWJlciA9IHBhcnNlSW50KGhleFN0cmluZywgMTYpOwotICAgIGlm
IChpc05hTihudW1iZXIpIHx8ICFpc0Zpbml0ZShudW1iZXIpKQotICAgICAgICByZXR1cm4gaGV4
U3RyaW5nOwotCi0gICAgdmFyIG1heFZhbHVlID0gTWF0aC5wb3coMTYsIGhleFN0cmluZy5sZW5n
dGgpIC0gMTsKLSAgICB2YXIgYXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50aWZpZXIg
PT09ICJVcCIgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKLQotICAgIHZhciBk
ZWx0YTsKLSAgICBpZiAoYXJyb3dLZXlQcmVzc2VkKQotICAgICAgICBkZWx0YSA9IChldmVudC5r
ZXlJZGVudGlmaWVyID09PSAiVXAiKSA/IDEgOiAtMTsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRh
ID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJQYWdlVXAiKSA/IDE2IDogLTE2OwotCi0gICAg
aWYgKGV2ZW50LnNoaWZ0S2V5KQotICAgICAgICBkZWx0YSAqPSAxNjsKLQotICAgIHZhciByZXN1
bHQgPSBudW1iZXIgKyBkZWx0YTsKLSAgICBpZiAocmVzdWx0IDwgMCkKLSAgICAgICAgcmVzdWx0
ID0gMDsgLy8gQ29sb3IgaGV4IHZhbHVlcyBhcmUgbmV2ZXIgbmVnYXRpdmUsIHNvIGNsYW1wIHRv
IDAuCi0gICAgZWxzZSBpZiAocmVzdWx0ID4gbWF4VmFsdWUpCi0gICAgICAgIHJldHVybiBoZXhT
dHJpbmc7Ci0KLSAgICAvLyBFbnN1cmUgdGhlIHJlc3VsdCBsZW5ndGggaXMgdGhlIHNhbWUgYXMg
dGhlIG9yaWdpbmFsIGhleCB2YWx1ZS4KLSAgICB2YXIgcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRv
U3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOwotICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhEZWx0
YSA9IGhleFN0cmluZy5sZW5ndGggLSByZXN1bHRTdHJpbmcubGVuZ3RoOyBpIDwgbGVuZ3RoRGVs
dGE7ICsraSkKLSAgICAgICAgcmVzdWx0U3RyaW5nID0gIjAiICsgcmVzdWx0U3RyaW5nOwotICAg
IHJldHVybiByZXN1bHRTdHJpbmc7Ci19Ci0KIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFu
ZS5jYW5vbmljYWxQcm9wZXJ0eU5hbWUgPSBmdW5jdGlvbihuYW1lKQogewogICAgIGlmICghbmFt
ZSB8fCBuYW1lLmxlbmd0aCA8IDkgfHwgbmFtZS5jaGFyQXQoMCkgIT09ICItIikKQEAgLTI1Mzgs
NyArMjQ3Niw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHIKIFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5DU1NQcm9wZXJ0eVByb21wdCA9IGZ1bmN0aW9u
KGNzc0NvbXBsZXRpb25zLCBzaWRlYmFyUGFuZSwgaXNFZGl0aW5nTmFtZSwgYWNjZXB0Q2FsbGJh
Y2spCiB7CiAgICAgLy8gVXNlIHRoZSBzYW1lIGNhbGxiYWNrIGJvdGggZm9yIGFwcGx5SXRlbUNh
bGxiYWNrIGFuZCBhY2NlcHRJdGVtQ2FsbGJhY2suCi0gICAgV2ViSW5zcGVjdG9yLlRleHRQcm9t
cHQuY2FsbCh0aGlzLCB0aGlzLl9idWlsZFByb3BlcnR5Q29tcGxldGlvbnMuYmluZCh0aGlzKSwg
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzKTsKKyAg
ICBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5jYWxsKHRoaXMsIHRoaXMuX2J1aWxkUHJvcGVydHlD
b21wbGV0aW9ucy5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuU3R5bGVWYWx1ZURlbGltaXRlcnMp
OwogICAgIHRoaXMuc2V0U3VnZ2VzdEJveEVuYWJsZWQoImdlbmVyaWMtc3VnZ2VzdCIpOwogICAg
IHRoaXMuX2Nzc0NvbXBsZXRpb25zID0gY3NzQ29tcGxldGlvbnM7CiAgICAgdGhpcy5fc2lkZWJh
clBhbmUgPSBzaWRlYmFyUGFuZTsKQEAgLTI1NzMsODAgKzI1MTEsMTYgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlc1NpZGViYXJQYW5lLkNTU1Byb3BlcgogCiAgICAgX2hhbmRsZU5hbWVPclZhbHVlVXBE
b3duOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIC8vIEhhbmRsZSBudW1lcmljIHZh
bHVlIGluY3JlbWVudC9kZWNyZW1lbnQgb25seSBhdCB0aGlzIHBvaW50LgotICAgICAgICBpZiAo
IXRoaXMuX2lzRWRpdGluZ05hbWUgJiYgdGhpcy5faGFuZGxlVXBPckRvd25WYWx1ZShldmVudCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fSwKLQotICAgIF9oYW5kbGVVcE9yRG93blZhbHVlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0g
ICAgICAgIHZhciBhcnJvd0tleVByZXNzZWQgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVw
IiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIpOwotICAgICAgICB2YXIgcGFnZUtl
eVByZXNzZWQgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VVcCIgfHwgZXZlbnQua2V5
SWRlbnRpZmllciA9PT0gIlBhZ2VEb3duIik7Ci0gICAgICAgIGlmICghYXJyb3dLZXlQcmVzc2Vk
ICYmICFwYWdlS2V5UHJlc3NlZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotICAgICAgICBpZiAoIXNl
bGVjdGlvbi5yYW5nZUNvdW50KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IHZhciBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOwotICAgICAgICBp
ZiAoIXNlbGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzU2VsZk9yRGVzY2Vu
ZGFudCh0aGlzLl9zaWRlYmFyUGFuZS52YWx1ZUVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIHZhciB3b3JkUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS5zdGFydENv
bnRhaW5lci5yYW5nZU9mV29yZChzZWxlY3Rpb25SYW5nZS5zdGFydE9mZnNldCwgV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0ZXJzLCB0aGlzLl9zaWRlYmFy
UGFuZS52YWx1ZUVsZW1lbnQpOwotICAgICAgICB2YXIgd29yZFN0cmluZyA9IHdvcmRSYW5nZS50
b1N0cmluZygpOwotICAgICAgICBpZiAodGhpcy5faXNWYWx1ZVN1Z2dlc3Rpb24od29yZFN0cmlu
ZykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIHJlcGxhY2VtZW50
U3RyaW5nOwotICAgICAgICB2YXIgcHJlZml4LCBzdWZmaXgsIG51bWJlcjsKLQotICAgICAgICB2
YXIgbWF0Y2hlczsKLSAgICAgICAgbWF0Y2hlcyA9IC8oLiojKShbXGRhLWZBLUZdKykoLiopLy5l
eGVjKHdvcmRTdHJpbmcpOwotICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkg
ewotICAgICAgICAgICAgcHJlZml4ID0gbWF0Y2hlc1sxXTsKLSAgICAgICAgICAgIHN1ZmZpeCA9
IG1hdGNoZXNbM107Ci0gICAgICAgICAgICBudW1iZXIgPSBXZWJJbnNwZWN0b3IuU3R5bGVzU2lk
ZWJhclBhbmUuYWx0ZXJlZEhleE51bWJlcihtYXRjaGVzWzJdLCBldmVudCk7Ci0KLSAgICAgICAg
ICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcHJlZml4ICsgbnVtYmVyICsgc3VmZml4OwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbWF0Y2hlcyA9IC8oLio/KSgtPyg/OlxkKyg/OlwuXGQr
KT98XC5cZCspKSguKikvLmV4ZWMod29yZFN0cmluZyk7Ci0gICAgICAgICAgICBpZiAobWF0Y2hl
cyAmJiBtYXRjaGVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHByZWZpeCA9IG1hdGNoZXNb
MV07Ci0gICAgICAgICAgICAgICAgc3VmZml4ID0gbWF0Y2hlc1szXTsKLSAgICAgICAgICAgICAg
ICBudW1iZXIgPSBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEZsb2F0TnVt
YmVyKHBhcnNlRmxvYXQobWF0Y2hlc1syXSksIGV2ZW50KTsKLSAgICAgICAgICAgICAgICBpZiAo
bnVtYmVyID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY2hlY2sg
Zm9yIG51bGwgZXhwbGljaXRseS4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0g
cHJlZml4ICsgbnVtYmVyICsgc3VmZml4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKHJlcGxhY2VtZW50U3RyaW5nKSB7Ci0gICAgICAgICAgICB2YXIgcmVwbGFjZW1l
bnRUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJlcGxhY2VtZW50U3RyaW5nKTsK
LQotICAgICAgICAgICAgd29yZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7Ci0gICAgICAgICAgICB3
b3JkUmFuZ2UuaW5zZXJ0Tm9kZShyZXBsYWNlbWVudFRleHROb2RlKTsKLQotICAgICAgICAgICAg
dmFyIGZpbmFsU2VsZWN0aW9uUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwotICAgICAg
ICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChyZXBsYWNlbWVudFRleHROb2RlLCAw
KTsKLSAgICAgICAgICAgIGZpbmFsU2VsZWN0aW9uUmFuZ2Uuc2V0RW5kKHJlcGxhY2VtZW50VGV4
dE5vZGUsIHJlcGxhY2VtZW50U3RyaW5nLmxlbmd0aCk7Ci0KLSAgICAgICAgICAgIHNlbGVjdGlv
bi5yZW1vdmVBbGxSYW5nZXMoKTsKLSAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShmaW5h
bFNlbGVjdGlvblJhbmdlKTsKLQotICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7Ci0g
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotCisgICAgICAgIGZ1bmN0aW9uIGZp
bmlzaEhhbmRsZXIob3JpZ2luYWxWYWx1ZSwgcmVwbGFjZW1lbnRTdHJpbmcpCisgICAgICAgIHsK
ICAgICAgICAgICAgIC8vIFN5bnRoZXNpemUgcHJvcGVydHkgdGV4dCBkaXNyZWdhcmRpbmcgYW55
IGNvbW1lbnRzLCBjdXN0b20gd2hpdGVzcGFjZSBldGMuCiAgICAgICAgICAgICB0aGlzLl9zaWRl
YmFyUGFuZS5hcHBseVN0eWxlVGV4dCh0aGlzLl9zaWRlYmFyUGFuZS5uYW1lRWxlbWVudC50ZXh0
Q29udGVudCArICI6ICIgKyB0aGlzLl9zaWRlYmFyUGFuZS52YWx1ZUVsZW1lbnQudGV4dENvbnRl
bnQsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQorICAgIAorICAgICAgICAvLyBIYW5kbGUgbnVtZXJpYyB2YWx1ZSBpbmNyZW1lbnQv
ZGVjcmVtZW50IG9ubHkgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgaWYgKCF0aGlzLl9pc0VkaXRp
bmdOYW1lICYmIFdlYkluc3BlY3Rvci5oYW5kbGVFbGVtZW50VmFsdWVNb2RpZmljYXRpb25zKGV2
ZW50LCB0aGlzLl9zaWRlYmFyUGFuZS52YWx1ZUVsZW1lbnQsIGZpbmlzaEhhbmRsZXIuYmluZCh0
aGlzKSwgdGhpcy5faXNWYWx1ZVN1Z2dlc3Rpb24uYmluZCh0aGlzKSkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSwKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcwkocmV2aXNpb24g
MTIxODc0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsNiArMjc2LDE2MCBAQCBXZWJJbnNwZWN0b3IuRWRpdGlu
Z0NvbmZpZy5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCitXZWJJbnNwZWN0b3IuQ1NTTnVtYmVy
UmVnZXggPSAvXigtPyg/OlxkKyg/OlwuXGQrKT98XC5cZCspKSQvOworCitXZWJJbnNwZWN0b3Iu
U3R5bGVWYWx1ZURlbGltaXRlcnMgPSAiIFx4QTBcdFxuXCInOjssLygpIjsKKworLyoqCisgKiBA
cGFyYW0ge3N0cmluZ30gaGV4U3RyaW5nCisgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICovCitX
ZWJJbnNwZWN0b3IuX21vZGlmaWVkSGV4VmFsdWUgPSBmdW5jdGlvbihoZXhTdHJpbmcsIGV2ZW50
KQoreworICAgIHZhciBudW1iZXIgPSBwYXJzZUludChoZXhTdHJpbmcsIDE2KTsKKyAgICBpZiAo
aXNOYU4obnVtYmVyKSB8fCAhaXNGaW5pdGUobnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIGhleFN0
cmluZzsKKworICAgIHZhciBtYXhWYWx1ZSA9IE1hdGgucG93KDE2LCBoZXhTdHJpbmcubGVuZ3Ro
KSAtIDE7CisgICAgdmFyIGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09
PSAiVXAiIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7CisKKyAgICB2YXIgZGVs
dGE7CisgICAgaWYgKGFycm93S2V5UHJlc3NlZCkKKyAgICAgICAgZGVsdGEgPSAoZXZlbnQua2V5
SWRlbnRpZmllciA9PT0gIlVwIikgPyAxIDogLTE7CisgICAgZWxzZQorICAgICAgICBkZWx0YSA9
IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiUGFnZVVwIikgPyAxNiA6IC0xNjsKKworICAgIGlm
IChldmVudC5zaGlmdEtleSkKKyAgICAgICAgZGVsdGEgKj0gMTY7CisKKyAgICB2YXIgcmVzdWx0
ID0gbnVtYmVyICsgZGVsdGE7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJlc3VsdCA9
IDA7IC8vIENvbG9yIGhleCB2YWx1ZXMgYXJlIG5ldmVyIG5lZ2F0aXZlLCBzbyBjbGFtcCB0byAw
LgorICAgIGVsc2UgaWYgKHJlc3VsdCA+IG1heFZhbHVlKQorICAgICAgICByZXR1cm4gaGV4U3Ry
aW5nOworCisgICAgLy8gRW5zdXJlIHRoZSByZXN1bHQgbGVuZ3RoIGlzIHRoZSBzYW1lIGFzIHRo
ZSBvcmlnaW5hbCBoZXggdmFsdWUuCisgICAgdmFyIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0
cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoRGVsdGEg
PSBoZXhTdHJpbmcubGVuZ3RoIC0gcmVzdWx0U3RyaW5nLmxlbmd0aDsgaSA8IGxlbmd0aERlbHRh
OyArK2kpCisgICAgICAgIHJlc3VsdFN0cmluZyA9ICIwIiArIHJlc3VsdFN0cmluZzsKKyAgICBy
ZXR1cm4gcmVzdWx0U3RyaW5nOworfQorCisvKioKKyAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIK
KyAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50CisgKi8KK1dlYkluc3BlY3Rvci5fbW9kaWZpZWRGbG9h
dE51bWJlciA9IGZ1bmN0aW9uKG51bWJlciwgZXZlbnQpCit7CisgICAgdmFyIGFycm93S2V5UHJl
c3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiIHx8IGV2ZW50LmtleUlkZW50aWZp
ZXIgPT09ICJEb3duIik7CisKKyAgICAvLyBKdW1wIGJ5IDEwIHdoZW4gc2hpZnQgaXMgZG93biBv
ciBqdW1wIGJ5IDAuMSB3aGVuIEFsdC9PcHRpb24gaXMgZG93bi4KKyAgICAvLyBBbHNvIGp1bXAg
YnkgMTAgZm9yIHBhZ2UgdXAgYW5kIGRvd24sIG9yIGJ5IDEwMCBpZiBzaGlmdCBpcyBoZWxkIHdp
dGggYSBwYWdlIGtleS4KKyAgICB2YXIgY2hhbmdlQW1vdW50ID0gMTsKKyAgICBpZiAoZXZlbnQu
c2hpZnRLZXkgJiYgIWFycm93S2V5UHJlc3NlZCkKKyAgICAgICAgY2hhbmdlQW1vdW50ID0gMTAw
OworICAgIGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFhcnJvd0tleVByZXNzZWQpCisgICAg
ICAgIGNoYW5nZUFtb3VudCA9IDEwOworICAgIGVsc2UgaWYgKGV2ZW50LmFsdEtleSkKKyAgICAg
ICAgY2hhbmdlQW1vdW50ID0gMC4xOworCisgICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09
ICJEb3duIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiUGFnZURvd24iKQorICAgICAgICBj
aGFuZ2VBbW91bnQgKj0gLTE7CisKKyAgICAvLyBNYWtlIHRoZSBuZXcgbnVtYmVyIGFuZCBjb25z
dHJhaW4gaXQgdG8gYSBwcmVjaXNpb24gb2YgNiwgdGhpcyBtYXRjaGVzIG51bWJlcnMgdGhlIGVu
Z2luZSByZXR1cm5zLgorICAgIC8vIFVzZSB0aGUgTnVtYmVyIGNvbnN0cnVjdG9yIHRvIGZvcmdl
dCB0aGUgZml4ZWQgcHJlY2lzaW9uLCBzbyAxLjEwMDAwMCB3aWxsIHByaW50IGFzIDEuMS4KKyAg
ICB2YXIgcmVzdWx0ID0gTnVtYmVyKChudW1iZXIgKyBjaGFuZ2VBbW91bnQpLnRvRml4ZWQoNikp
OworICAgIGlmICghU3RyaW5nKHJlc3VsdCkubWF0Y2goV2ViSW5zcGVjdG9yLkNTU051bWJlclJl
Z2V4KSkKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisv
KioKKyAgKiBAcGFyYW0ge0V2ZW50fSBldmVudAorICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVu
dAorICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nLHN0cmluZyk9fSBmaW5pc2hIYW5kbGVyCisg
ICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpPX0gc3VnZ2VzdGlvbkhhbmRsZXIKKyAgKiBAcGFy
YW0ge2Z1bmN0aW9uKG51bWJlcik6bnVtYmVyPX0gY3VzdG9tTnVtYmVySGFuZGxlcgorICovCitX
ZWJJbnNwZWN0b3IuaGFuZGxlRWxlbWVudFZhbHVlTW9kaWZpY2F0aW9ucyA9IGZ1bmN0aW9uKGV2
ZW50LCBlbGVtZW50LCBmaW5pc2hIYW5kbGVyLCBzdWdnZXN0aW9uSGFuZGxlciwgY3VzdG9tTnVt
YmVySGFuZGxlcikKK3sKKyAgICB2YXIgYXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50
aWZpZXIgPT09ICJVcCIgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKKyAgICB2
YXIgcGFnZUtleVByZXNzZWQgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VVcCIgfHwg
ZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VEb3duIik7CisgICAgaWYgKCFhcnJvd0tleVBy
ZXNzZWQgJiYgIXBhZ2VLZXlQcmVzc2VkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2
YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIGlmICghc2VsZWN0aW9u
LnJhbmdlQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhciBzZWxlY3Rpb25S
YW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAgIGlmICghc2VsZWN0aW9uUmFuZ2Uu
Y29tbW9uQW5jZXN0b3JDb250YWluZXIuaXNTZWxmT3JEZXNjZW5kYW50KGVsZW1lbnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IGVsZW1lbnQudGV4
dENvbnRlbnQ7CisgICAgdmFyIHdvcmRSYW5nZSA9IHNlbGVjdGlvblJhbmdlLnN0YXJ0Q29udGFp
bmVyLnJhbmdlT2ZXb3JkKHNlbGVjdGlvblJhbmdlLnN0YXJ0T2Zmc2V0LCBXZWJJbnNwZWN0b3Iu
U3R5bGVWYWx1ZURlbGltaXRlcnMsIGVsZW1lbnQpOworICAgIHZhciB3b3JkU3RyaW5nID0gd29y
ZFJhbmdlLnRvU3RyaW5nKCk7CisgICAgCisgICAgaWYgKHN1Z2dlc3Rpb25IYW5kbGVyICYmIHN1
Z2dlc3Rpb25IYW5kbGVyKHdvcmRTdHJpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICB2YXIgcmVwbGFjZW1lbnRTdHJpbmc7CisgICAgdmFyIHByZWZpeCwgc3VmZml4LCBudW1iZXI7
CisKKyAgICB2YXIgbWF0Y2hlczsKKyAgICBtYXRjaGVzID0gLyguKiMpKFtcZGEtZkEtRl0rKSgu
KikvLmV4ZWMod29yZFN0cmluZyk7CisgICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGgp
IHsKKyAgICAgICAgcHJlZml4ID0gbWF0Y2hlc1sxXTsKKyAgICAgICAgc3VmZml4ID0gbWF0Y2hl
c1szXTsKKyAgICAgICAgbnVtYmVyID0gV2ViSW5zcGVjdG9yLl9tb2RpZmllZEhleFZhbHVlKG1h
dGNoZXNbMl0sIGV2ZW50KTsKKyAgICAgICAgCisgICAgICAgIGlmIChjdXN0b21OdW1iZXJIYW5k
bGVyKQorICAgICAgICAgICAgbnVtYmVyID0gY3VzdG9tTnVtYmVySGFuZGxlcihudW1iZXIpOwor
CisgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcHJlZml4ICsgbnVtYmVyICsgc3VmZml4Owor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1hdGNoZXMgPSAvKC4qPykoLT8oPzpcZCsoPzpcLlxkKyk/
fFwuXGQrKSkoLiopLy5leGVjKHdvcmRTdHJpbmcpOworICAgICAgICBpZiAobWF0Y2hlcyAmJiBt
YXRjaGVzLmxlbmd0aCkgeworICAgICAgICAgICAgcHJlZml4ID0gbWF0Y2hlc1sxXTsKKyAgICAg
ICAgICAgIHN1ZmZpeCA9IG1hdGNoZXNbM107CisgICAgICAgICAgICBudW1iZXIgPSBXZWJJbnNw
ZWN0b3IuX21vZGlmaWVkRmxvYXROdW1iZXIocGFyc2VGbG9hdChtYXRjaGVzWzJdKSwgZXZlbnQp
OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOZWVkIHRvIGNoZWNrIGZvciBudWxsIGV4
cGxpY2l0bHkuCisgICAgICAgICAgICBpZiAobnVtYmVyID09PSBudWxsKSAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChjdXN0b21OdW1iZXJIYW5kbGVyKQorICAgICAgICAgICAgICAgIG51bWJlciA9IGN1
c3RvbU51bWJlckhhbmRsZXIobnVtYmVyKTsKKworICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJp
bmcgPSBwcmVmaXggKyBudW1iZXIgKyBzdWZmaXg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAocmVwbGFjZW1lbnRTdHJpbmcpIHsKKyAgICAgICAgdmFyIHJlcGxhY2VtZW50VGV4dE5vZGUg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShyZXBsYWNlbWVudFN0cmluZyk7CisKKyAgICAgICAg
d29yZFJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7CisgICAgICAgIHdvcmRSYW5nZS5pbnNlcnROb2Rl
KHJlcGxhY2VtZW50VGV4dE5vZGUpOworCisgICAgICAgIHZhciBmaW5hbFNlbGVjdGlvblJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5z
ZXRTdGFydChyZXBsYWNlbWVudFRleHROb2RlLCAwKTsKKyAgICAgICAgZmluYWxTZWxlY3Rpb25S
YW5nZS5zZXRFbmQocmVwbGFjZW1lbnRUZXh0Tm9kZSwgcmVwbGFjZW1lbnRTdHJpbmcubGVuZ3Ro
KTsKKworICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICAgIHNlbGVj
dGlvbi5hZGRSYW5nZShmaW5hbFNlbGVjdGlvblJhbmdlKTsKKworICAgICAgICBldmVudC5oYW5k
bGVkID0gdHJ1ZTsKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgaWYgKGZpbmlzaEhhbmRsZXIpCisgICAgICAgICAgICBmaW5pc2hIYW5k
bGVyKG9yaWdpbmFsVmFsdWUsIHJlcGxhY2VtZW50U3RyaW5nKTsKKworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvKiogCiAgKiBAcGFyYW0ge0Vs
ZW1lbnR9IGVsZW1lbnQKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWc9fSBj
b25maWcK
</data>

          </attachment>
      

    </bug>

</bugzilla>