<?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>80890</bug_id>
          
          <creation_ts>2012-03-12 14:30:30 -0700</creation_ts>
          <short_desc>Web Inspector: Introduce SnippetsScriptMapping.</short_desc>
          <delta_ts>2012-03-14 03:00:09 -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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75094</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>podivilov</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576532</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-12 14:30:30 -0700</bug_when>
    <thetext>Patch to follow.
Tests for this mapping will be added once snippet could be evaluated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576570</commentid>
    <comment_count>1</comment_count>
      <attachid>131421</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-12 14:54:20 -0700</bug_when>
    <thetext>Created attachment 131421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577211</commentid>
    <comment_count>2</comment_count>
      <attachid>131421</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-13 03:34:51 -0700</bug_when>
    <thetext>Comment on attachment 131421
Patch

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

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:227
&gt; +    WebInspector.snippetsModel.addEventListener(WebInspector.SnippetsModel.EventTypes.SnippetDeleted, this._snippetDeleted.bind(this));

SnippetRemoved would be more consistent with other code.

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:237
&gt; +        var snippet = this._snippetForScriptId[rawLocation.scriptId];

Could you only store the last script in _snippetForScriptId and delete stale scripts (_snippetForLastScriptId)? There should be no need to access snippet for stale scripts.

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:242
&gt; +        if (!uiSourceCode)

It&apos;s guaranteed that addScript was already called for this script, so uiSourceCode should always exist here.

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:261
&gt; +        if (!lastScript)

There&apos;s no script for this UISourceCode. How could there be a lastScript for the snippet?

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:262
&gt; +            return null;

Please make sure all clients will check for null.

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:274
&gt; +            result.push(snippet.uiSourceCode);

Wouldn&apos;t there be duplicates?

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:289
&gt; +        var uiSourceCode = new WebInspector.UISourceCode(script.sourceURL, script.sourceURL, new WebInspector.ScriptContentProvider(script));

You should probably bind this script to existing snippet.uiSourceCode instead of creating a new one.

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:294
&gt; +        if (!snippet)

Is it possible? Maybe preventing the snippet from being deleted while it&apos;s evaluated would make the code easier to understand.

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:310
&gt; +        uiSourceCode.isSnippet = true;

uiSourceCode.isEditable = true?

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:350
&gt; +        this._lastScriptForSnippet = new Map();

Clear other maps as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577315</commentid>
    <comment_count>3</comment_count>
      <attachid>131421</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-13 08:01:23 -0700</bug_when>
    <thetext>Comment on attachment 131421
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:227
&gt;&gt; +    WebInspector.snippetsModel.addEventListener(WebInspector.SnippetsModel.EventTypes.SnippetDeleted, this._snippetDeleted.bind(this));
&gt; 
&gt; SnippetRemoved would be more consistent with other code.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:237
&gt;&gt; +        var snippet = this._snippetForScriptId[rawLocation.scriptId];
&gt; 
&gt; Could you only store the last script in _snippetForScriptId and delete stale scripts (_snippetForLastScriptId)? There should be no need to access snippet for stale scripts.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:242
&gt;&gt; +        if (!uiSourceCode)
&gt; 
&gt; It&apos;s guaranteed that addScript was already called for this script, so uiSourceCode should always exist here.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:261
&gt;&gt; +        if (!lastScript)
&gt; 
&gt; There&apos;s no script for this UISourceCode. How could there be a lastScript for the snippet?

I have removed _lastScriptForSnippet map at all and rewritten this piece of code as we discussed offline.

&gt;&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:289
&gt;&gt; +        var uiSourceCode = new WebInspector.UISourceCode(script.sourceURL, script.sourceURL, new WebInspector.ScriptContentProvider(script));
&gt; 
&gt; You should probably bind this script to existing snippet.uiSourceCode instead of creating a new one.

Done.

&gt;&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:310
&gt;&gt; +        uiSourceCode.isSnippet = true;
&gt; 
&gt; uiSourceCode.isEditable = true?

Done.

&gt;&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:350
&gt;&gt; +        this._lastScriptForSnippet = new Map();
&gt; 
&gt; Clear other maps as well?

No need to clear snippet&lt;-&gt;uiSourceCode maps, since snippet are not removed upon navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577321</commentid>
    <comment_count>4</comment_count>
      <attachid>131614</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-13 08:05:36 -0700</bug_when>
    <thetext>Created attachment 131614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577544</commentid>
    <comment_count>5</comment_count>
      <attachid>131669</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-13 10:56:51 -0700</bug_when>
    <thetext>Created attachment 131669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577614</commentid>
    <comment_count>6</comment_count>
      <attachid>131686</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-13 11:51:20 -0700</bug_when>
    <thetext>Created attachment 131686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578242</commentid>
    <comment_count>7</comment_count>
      <attachid>131614</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-14 01:44:20 -0700</bug_when>
    <thetext>Comment on attachment 131614
Patch

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

looks good!

&gt; Source/WebCore/inspector/front-end/ScriptMapping.js:178
&gt; +            if (WebInspector.snippetsModel.snippetForSourceURL(script.sourceURL))

There could be no snippet at this moment. Please check that script.sourceURL starts with &quot;snippet://&quot; instead.

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:391
&gt; +        this._uiSourceCodeForScriptId = {};

Do you need to dispatch removed events here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578244</commentid>
    <comment_count>8</comment_count>
      <attachid>131686</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-14 01:47:39 -0700</bug_when>
    <thetext>Comment on attachment 131686
Patch

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

&gt; Source/WebCore/inspector/front-end/SnippetsModel.js:307
&gt; +    _uiSourceCodesForScripts: function()

Not uiSourceCodesForScripts actually, maybe releasedUISourceCodes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578260</commentid>
    <comment_count>9</comment_count>
      <attachid>131808</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-14 02:04:28 -0700</bug_when>
    <thetext>Created attachment 131808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578281</commentid>
    <comment_count>10</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-14 03:00:09 -0700</bug_when>
    <thetext>Committed r110681: &lt;http://trac.webkit.org/changeset/110681&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131421</attachid>
            <date>2012-03-12 14:54:20 -0700</date>
            <delta_ts>2012-03-13 08:05:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80890-20120313015418.patch</filename>
            <type>text/plain</type>
            <size>11113</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA2YWQ3MzlkOTJkMzZh
ZjFiMjU1ODg3N2I0MjcxZjRkOGVmMDQ1Ni4uMmMyNGY2OTZhN2NkZGFlMjEwYWM2MTY3ZTdmYzRm
MGJkNGU3OTlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDEyLTAzLTEyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBTbmlwcGV0c1NjcmlwdE1hcHBpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDg5MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRN
YXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuYWRkU2NyaXB0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX21h
cHBpbmdGb3JTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU25pcHBldHNN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsLnByb3RvdHlwZS5z
bmlwcGV0Rm9ySWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwucHJvdG90
eXBlLnNuaXBwZXRGb3JTb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRz
U2NyaXB0TWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBw
aW5nLnByb3RvdHlwZS51aVNvdXJjZUNvZGVMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
bmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fc25pcHBldEFkZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9y
ZWxlYXNlU25pcHBldFNjcmlwdC5nZXQgaWYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9zbmlwcGV0
RGVsZXRlZC5nZXQgdGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fc25pcHBldERlbGV0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNuaXBwZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIpOgorCisyMDEyLTAzLTEyICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBzbmlwcGV0cyBtb2RlbC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgwODYzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0TWFwcGluZy5qcwppbmRleCA2YTM4ZTliZjUyOTU2NmUwZTk3OWFkNWFhZWNj
YTBiZDJjNTEzNTUzLi43ZDcxZTM0MjY2MWNmYzY5YTBiZDdmOTZjMzk5NzEwZjFjN2U2YWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBp
bmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBw
aW5nLmpzCkBAIC0yMzYsMTAgKzIzNiwxOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcAogV2Vi
SW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX21h
cHBpbmdzID0gW107CisgICAgCiAgICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nID0gbmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKLSAgICB0aGlzLl9yZXNvdXJjZU1hcHBp
bmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlT
b3VyY2VDb2RlTGlzdENoYW5nZWQsIHRoaXMuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2Vk
LCB0aGlzKTsKICAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3Jlc291cmNlTWFwcGluZyk7
CiAKKyAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBw
b3J0LmlzRW5hYmxlZCgpKSB7CisgICAgICAgIHRoaXMuX3NuaXBwZXRzTWFwcGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgIHRoaXMuX21hcHBp
bmdzLnB1c2godGhpcy5fc25pcHBldHNNYXBwaW5nKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKQorICAgICAgICB0aGlzLl9tYXBw
aW5nc1tpXS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50
cy5VSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcy5faGFuZGxlVUlTb3VyY2VDb2RlTGlzdENo
YW5nZWQsIHRoaXMpOworICAgIAogICAgIHRoaXMuX21hcHBpbmdGb3JTY3JpcHRJZCA9IHt9Owog
ICAgIHRoaXMuX21hcHBpbmdGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CiAgICAgdGhpcy5f
bGl2ZUxvY2F0aW9uc0ZvclNjcmlwdElkID0ge307CkBAIC0zMjEsMTMgKzMyOSwyNiBAQCBXZWJJ
bnNwZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAg
dGhpcy5fbGl2ZUxvY2F0aW9uc0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBbXTsKIAot
ICAgICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX3Jlc291cmNlTWFwcGluZzsKLQorICAgICAgICB2
YXIgbWFwcGluZyA9IHRoaXMuX21hcHBpbmdGb3JTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgdGhp
cy5fbWFwcGluZ0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBtYXBwaW5nOwogICAgICAg
ICBtYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOwogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAorICAgICAqIEByZXR1cm4ge1dlYklu
c3BlY3Rvci5TY3JpcHRNYXBwaW5nfQorICAgICAqLworICAgIF9tYXBwaW5nRm9yU2NyaXB0OiBm
dW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1l
bnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuc25pcHBldEZvclNvdXJjZVVSTChzY3JpcHQu
c291cmNlVVJMKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBldHNNYXBwaW5n
OworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNl
TWFwcGluZzsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RXZlbnR9IGV2ZW50CiAgICAgICovCiAgICAgX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2Vk
OiBmdW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU25pcHBldHNNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU25pcHBldHNNb2RlbC5qcwppbmRleCA4ZTgyYmYyZGJiY2ZkYzdjNWRmZTE0YzIwZjNk
ZDM5NDEyYTk4NGJmLi5mOTU1ZWEyYzIwNmIyZTNmOGZhOTU4NGEzOWMzMWZmYzFhZGYwYjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NuaXBwZXRzTW9k
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TbmlwcGV0c01v
ZGVsLmpzCkBAIC0xMzksNiArMTM5LDE2IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsLnBy
b3RvdHlwZSA9IHsKICAgICBzbmlwcGV0Rm9ySWQ6IGZ1bmN0aW9uKHNuaXBwZXRJZCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zbmlwcGV0c1tzbmlwcGV0SWRdOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCisgICAgICogQHJldHVybiB7
V2ViSW5zcGVjdG9yLlNuaXBwZXR9CisgICAgICovCisgICAgc25pcHBldEZvclNvdXJjZVVSTDog
ZnVuY3Rpb24oc291cmNlVVJMKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IHRvIGJlIGltcGxl
bWVudGVkLgorICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiB9CiAKQEAgLTE5OSwzICsyMDks
MTYzIEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0LnByb3RvdHlwZSA9IHsKIH0KIAogV2ViSW5zcGVj
dG9yLlNuaXBwZXQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5TY3JpcHRNYXBwaW5nfQorICovCitXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5n
ID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX3NuaXBwZXRGb3JTY3JpcHRJZCA9IHt9OworICAg
IHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkID0ge307CisgICAgdGhpcy5fc2NyaXB0Rm9y
VUlTb3VyY2VDb2RlID0gbmV3IE1hcCgpOworICAgIHRoaXMuX3NuaXBwZXRGb3JVSVNvdXJjZUNv
ZGUgPSBuZXcgTWFwKCk7CisgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU25pcHBldCA9IG5ldyBN
YXAoKTsKKyAgICB0aGlzLl9sYXN0U2NyaXB0Rm9yU25pcHBldCA9IG5ldyBNYXAoKTsKKyAgICAK
KyAgICBXZWJJbnNwZWN0b3Iuc25pcHBldHNNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5TbmlwcGV0c01vZGVsLkV2ZW50VHlwZXMuU25pcHBldEFkZGVkLCB0aGlzLl9zbmlwcGV0
QWRkZWQuYmluZCh0aGlzKSk7CisgICAgV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5FdmVudFR5cGVzLlNuaXBwZXRE
ZWxldGVkLCB0aGlzLl9zbmlwcGV0RGVsZXRlZC5iaW5kKHRoaXMpKTsKK30KKworV2ViSW5zcGVj
dG9yLlNuaXBwZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICog
QHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEByZXR1
cm4ge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQorICAgICAqLworICAgIHJhd0xvY2F0aW9uVG9V
SUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHZhciBzbmlw
cGV0ID0gdGhpcy5fc25pcHBldEZvclNjcmlwdElkW3Jhd0xvY2F0aW9uLnNjcmlwdElkXTsKKyAg
ICAgICAgdmFyIGxhc3RTY3JpcHQgPSBzbmlwcGV0ID8gdGhpcy5fbGFzdFNjcmlwdEZvclNuaXBw
ZXQuZ2V0KHNuaXBwZXQpIDogbnVsbDsKKyAgICAgICAgaWYgKGxhc3RTY3JpcHQgJiYgbGFzdFNj
cmlwdC5zY3JpcHRJZCA9PT0gcmF3TG9jYXRpb24uc2NyaXB0SWQpCisgICAgICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHNuaXBwZXQudWlTb3VyY2VDb2RlLCByYXdM
b2NhdGlvbi5saW5lTnVtYmVyIC0gMiwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyIHx8IDApOwor
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRb
cmF3TG9jYXRpb24uc2NyaXB0SWRdOworICAgICAgICBpZiAoIXVpU291cmNlQ29kZSkKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxv
Y2F0aW9uKHVpU291cmNlQ29kZSwgcmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRpb24u
Y29sdW1uTnVtYmVyIHx8IDApOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgorICAg
ICAqIEByZXR1cm4ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICovCisgICAgdWlMb2Nh
dGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3NjcmlwdEZvclVJ
U291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKHNjcmlwdCkKKyAgICAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlv
bihzY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgIAorICAgICAgICB2
YXIgc25pcHBldCA9IHRoaXMuX3NuaXBwZXRGb3JVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29k
ZSk7CisgICAgICAgIHZhciBsYXN0U2NyaXB0ID0gc25pcHBldCA/IHRoaXMuX2xhc3RTY3JpcHRG
b3JTbmlwcGV0LmdldChzbmlwcGV0KSA6IG51bGw7CisgICAgICAgIGlmICghbGFzdFNjcmlwdCkK
KyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9jYXRpb24obGFzdFNjcmlwdCwgbGluZU51bWJlciArIDIs
IGNvbHVtbk51bWJlcik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5
LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0KKyAgICAgKi8KKyAgICB1aVNvdXJjZUNvZGVM
aXN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAg
IGZvciAodmFyIHNjcmlwdElkIGluIHRoaXMuX3NuaXBwZXRGb3JTY3JpcHRJZCkgeworICAgICAg
ICAgICAgdmFyIHNuaXBwZXQgPSB0aGlzLl9zbmlwcGV0Rm9yU2NyaXB0SWRbc2NyaXB0SWRdOwor
ICAgICAgICAgICAgcmVzdWx0LnB1c2goc25pcHBldC51aVNvdXJjZUNvZGUpOworICAgICAgICB9
CisgICAgICAgIGZvciAodmFyIHNjcmlwdElkIGluIHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlw
dElkKSB7CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2Rl
Rm9yU2NyaXB0SWRbc2NyaXB0SWRdOworICAgICAgICAgICAgcmVzdWx0LnB1c2godWlTb3VyY2VD
b2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAgICov
CisgICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZVVS
TCwgc2NyaXB0LnNvdXJjZVVSTCwgbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlk
ZXIoc2NyaXB0KSk7CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkW3Njcmlw
dC5zY3JpcHRJZF0gPSB1aVNvdXJjZUNvZGU7CisgICAgICAgIHRoaXMuX3NjcmlwdEZvclVJU291
cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzY3JpcHQpOworCisgICAgICAgIHZhciBzbmlwcGV0
ID0gV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuc25pcHBldEZvclNvdXJjZVVSTChzY3JpcHQu
c291cmNlVVJMKTsKKyAgICAgICAgaWYgKCFzbmlwcGV0KQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB0aGlzLl9zbmlwcGV0Rm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHNuaXBw
ZXQ7CisgICAgICAgIHRoaXMuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KHNuaXBwZXQpOyAgICAgICAg
CisgICAgICAgIHRoaXMuX2xhc3RTY3JpcHRGb3JTbmlwcGV0LnB1dChzbmlwcGV0LCBzY3JpcHQp
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0g
ZXZlbnQKKyAgICAgKi8KKyAgICBfc25pcHBldEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciBzbmlwcGV0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU25pcHBldH0g
Ki8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZUlkID0gIiI7IC8vIEZJWE1F
OiB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgdmFyIHVpU291cmNlQ29kZVVSTCA9ICIiOyAv
LyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVJZCwgdWlTb3VyY2VDb2Rl
VVJMLCBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIoc25pcHBldCkpOwor
ICAgICAgICB1aVNvdXJjZUNvZGUuaXNTbmlwcGV0ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fdWlT
b3VyY2VDb2RlRm9yU25pcHBldC5wdXQoc25pcHBldCwgdWlTb3VyY2VDb2RlKTsKKyAgICAgICAg
dGhpcy5fc25pcHBldEZvclVJU291cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzbmlwcGV0KTsK
KyAgICAgICAgdmFyIGRhdGEgPSB7IHJlbW92ZWRJdGVtczogW10sIGFkZGVkSXRlbXM6IFt1aVNv
dXJjZUNvZGVdLCBzY3JpcHRJZHM6IFtdIH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVM
aXN0Q2hhbmdlZCwgZGF0YSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlNuaXBwZXR9IHNuaXBwZXQKKyAgICAgKi8KKyAgICBfcmVsZWFzZVNuaXBwZXRT
Y3JpcHQ6IGZ1bmN0aW9uKHNuaXBwZXQpCisgICAgeworICAgICAgICB2YXIgc2NyaXB0ID0gdGhp
cy5fbGFzdFNjcmlwdEZvclNuaXBwZXQuZ2V0KHNuaXBwZXQpOworICAgICAgICBpZiAoIXNjcmlw
dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fbGFzdFNjcmlwdEZvclNuaXBw
ZXQucmVtb3ZlKHNuaXBwZXQpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlT
b3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXTsKKyAgICAgICAgdmFyIGRhdGEg
PSB7IHJlbW92ZWRJdGVtczogW10sIGFkZGVkSXRlbXM6IFt1aVNvdXJjZUNvZGVdLCBzY3JpcHRJ
ZHM6IFtzY3JpcHQuc2NyaXB0SWRdIH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0
Q2hhbmdlZCwgZGF0YSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9zbmlwcGV0RGVsZXRlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgc25pcHBldCA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLlNuaXBwZXR9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTbmlwcGV0LmdldChzbmlwcGV0KTsKKyAgICAgICAgdGhp
cy5fdWlTb3VyY2VDb2RlRm9yU25pcHBldC5yZW1vdmUoc25pcHBldCk7CisgICAgICAgIHRoaXMu
X3NuaXBwZXRGb3JVSVNvdXJjZUNvZGUucmVtb3ZlKHVpU291cmNlQ29kZSk7CisgICAgICAgIHRo
aXMuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KHNuaXBwZXQpOworICAgICAgICB2YXIgZGF0YSA9IHsg
cmVtb3ZlZEl0ZW1zOiBbdWlTb3VyY2VDb2RlXSwgYWRkZWRJdGVtczogW10sIHNjcmlwdElkczog
W10gfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCBkYXRhKTsKKyAg
ICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NuaXBw
ZXRGb3JTY3JpcHRJZCA9IHt9OworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJ
ZCA9IHt9OworICAgICAgICB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7
CisgICAgICAgIHRoaXMuX2xhc3RTY3JpcHRGb3JTbmlwcGV0ID0gbmV3IE1hcCgpOworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLlNuaXBwZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJvdG90eXBlOworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlk
ZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TbmlwcGV0fSBzbmlwcGV0CisgKi8KK1dlYklu
c3BlY3Rvci5TbmlwcGV0Q29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oc25pcHBldCkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyLmNhbGwodGhpcywgInRleHQvamF2
YXNjcmlwdCIsIHNuaXBwZXQuY29udGVudCk7Cit9CisKK1dlYkluc3BlY3Rvci5TbmlwcGV0Q29u
dGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3RhdGljQ29u
dGVudFByb3ZpZGVyLnByb3RvdHlwZTsKKworLyoqCisgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5T
bmlwcGV0c01vZGVsfQorICovCitXZWJJbnNwZWN0b3Iuc25pcHBldHNNb2RlbCA9IG51bGw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131614</attachid>
            <date>2012-03-13 08:05:36 -0700</date>
            <delta_ts>2012-03-14 01:44:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80890-20120313190535.patch</filename>
            <type>text/plain</type>
            <size>12719</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWUyOWY1YjEwOTBjNmEw
ZWI2NTY0MzdjN2MwYTJkNjM2ODVlZTNlNC4uM2M5MTM1MTExMGRkNTg5MDA2MzdjOTYwYTQxZGM1
NmNhODZkYjllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTEyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBTbmlwcGV0c1NjcmlwdE1hcHBpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDg5MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRN
YXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuYWRkU2NyaXB0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX21h
cHBpbmdGb3JTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU25pcHBldHNN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsLnByb3RvdHlwZS5z
bmlwcGV0Rm9ySWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwucHJvdG90
eXBlLnNuaXBwZXRGb3JTb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRz
U2NyaXB0TWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBw
aW5nLnByb3RvdHlwZS51aVNvdXJjZUNvZGVMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
bmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fc25pcHBldEFkZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9y
ZWxlYXNlU25pcHBldFNjcmlwdC5nZXQgaWYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9zbmlwcGV0
RGVsZXRlZC5nZXQgdGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fc25pcHBldERlbGV0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNuaXBwZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIpOgorCiAyMDEyLTAzLTEzICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBzbmlwcGV0cyBtb2RlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0TWFwcGluZy5qcwppbmRleCAzMDk0ZDkzZTA4MzNkNjM0OGYxNzEyYmIxMTdj
NzhlOGYyMDhhOTkyLi41ZGM1Nzk4NTg5Mzk0MGU2N2UxODhkY2UzYTcwZmI1YWQ4NmFkODc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBp
bmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBw
aW5nLmpzCkBAIC03MCwxMCArNzAsMTggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogV2ViSW5z
cGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX21hcHBp
bmdzID0gW107CisgICAgCiAgICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKLSAgICB0aGlzLl9yZXNvdXJjZU1hcHBpbmcu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlTb3Vy
Y2VDb2RlTGlzdENoYW5nZWQsIHRoaXMuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0
aGlzKTsKICAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3Jlc291cmNlTWFwcGluZyk7CiAK
KyAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0
LmlzRW5hYmxlZCgpKSB7CisgICAgICAgIHRoaXMuX3NuaXBwZXRzTWFwcGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgIHRoaXMuX21hcHBpbmdz
LnB1c2godGhpcy5fc25pcHBldHNNYXBwaW5nKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKQorICAgICAgICB0aGlzLl9tYXBwaW5n
c1tpXS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5V
SVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcy5faGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5n
ZWQsIHRoaXMpOworICAgIAogICAgIHRoaXMuX21hcHBpbmdGb3JTY3JpcHRJZCA9IHt9OwogICAg
IHRoaXMuX21hcHBpbmdGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CiAgICAgdGhpcy5fbGl2
ZUxvY2F0aW9uc0ZvclNjcmlwdElkID0ge307CkBAIC0xNTUsMTMgKzE2MywyNiBAQCBXZWJJbnNw
ZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhp
cy5fbGl2ZUxvY2F0aW9uc0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBbXTsKIAotICAg
ICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX3Jlc291cmNlTWFwcGluZzsKLQorICAgICAgICB2YXIg
bWFwcGluZyA9IHRoaXMuX21hcHBpbmdGb3JTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgdGhpcy5f
bWFwcGluZ0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBtYXBwaW5nOwogICAgICAgICBt
YXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOwogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAorICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5TY3JpcHRNYXBwaW5nfQorICAgICAqLworICAgIF9tYXBwaW5nRm9yU2NyaXB0OiBmdW5j
dGlvbihzY3JpcHQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRz
U2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuc25pcHBldEZvclNvdXJjZVVSTChzY3JpcHQuc291
cmNlVVJMKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBldHNNYXBwaW5nOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlTWFw
cGluZzsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZl
bnR9IGV2ZW50CiAgICAgICovCiAgICAgX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkOiBm
dW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU25pcHBldHNNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU25pcHBldHNNb2RlbC5qcwppbmRleCBmNWVkZjRmNzFhNmEwMjUwZTdkYTA0YmU3M2MyMGI5
YjMxZWM5Yzk5Li5mNGI4YmVlOWNhM2Q2Yzc0ZDY4N2Y3NjZmODM5NWE0OWJiY2U5ZjVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NuaXBwZXRzTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TbmlwcGV0c01vZGVs
LmpzCkBAIC00Myw3ICs0Myw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsID0gZnVuY3Rp
b24oKQogV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwuRXZlbnRUeXBlcyA9IHsKICAgICBTbmlw
cGV0QWRkZWQ6ICJTbmlwcGV0QWRkZWQiLAogICAgIFNuaXBwZXRSZW5hbWVkOiAiU25pcHBldFJl
bmFtZWQiLAotICAgIFNuaXBwZXREZWxldGVkOiAiU25pcHBldERlbGV0ZWQiLAorICAgIFNuaXBw
ZXRSZW1vdmVkOiAiU25pcHBldFJlbW92ZWQiLAogfQogCiBXZWJJbnNwZWN0b3IuU25pcHBldHNN
b2RlbC5wcm90b3R5cGUgPSB7CkBAIC04MSw3ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0
c01vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChzbmlwcGV0LmlkID09PSB0aGlz
Ll9zbmlwcGV0c1tpXS5pZCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3NuaXBwZXRzLnNwbGlj
ZShpLCAxKTsKICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlU2V0dGluZ3MoKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU25pcHBl
dHNNb2RlbC5FdmVudFR5cGVzLlNuaXBwZXREZWxldGVkLCBzbmlwcGV0KTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU25pcHBldHNN
b2RlbC5FdmVudFR5cGVzLlNuaXBwZXRSZW1vdmVkLCBzbmlwcGV0KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTM0LDYgKzEzNCwxNiBAQCBX
ZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgc25pcHBldEZvcklk
OiBmdW5jdGlvbihzbmlwcGV0SWQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBl
dHNbc25pcHBldElkXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IHNvdXJjZVVSTAorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TbmlwcGV0fQorICAgICAq
LworICAgIHNuaXBwZXRGb3JTb3VyY2VVUkw6IGZ1bmN0aW9uKHNvdXJjZVVSTCkKKyAgICB7Cisg
ICAgICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgcmV0dXJuIG51bGw7
CiAgICAgfQogfQogCkBAIC0xNTUsNiArMTY1LDggQEAgV2ViSW5zcGVjdG9yLlNuaXBwZXQgPSBm
dW5jdGlvbihtb2RlbCwgaWQsIG5hbWUsIGNvbnRlbnQpCiAgICAgdGhpcy5fY29udGVudCA9IGNv
bnRlbnQgfHwgIiI7CiB9CiAKK1dlYkluc3BlY3Rvci5TbmlwcGV0LmV2YWx1YXRlZFNuaXBwZXRF
eHRyYUxpbmVzQ291bnQgPSAyOworCiAvKioKICAqIEBwYXJhbSB7T2JqZWN0fSBzZXJpYWxpemVk
U25pcHBldAogICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNuaXBwZXR9CkBAIC0yMjEsMyArMjMz
LDE4MSBAQCBXZWJJbnNwZWN0b3IuU25pcHBldC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5TbmlwcGV0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuU2NyaXB0TWFwcGluZ30KKyAqLworV2ViSW5zcGVjdG9yLlNuaXBwZXRzU2NyaXB0TWFwcGlu
ZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9zbmlwcGV0Rm9yU2NyaXB0SWQgPSB7fTsKKyAg
ICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OworICAgIHRoaXMuX3NjcmlwdEZv
clVJU291cmNlQ29kZSA9IG5ldyBNYXAoKTsKKyAgICB0aGlzLl9zbmlwcGV0Rm9yVUlTb3VyY2VD
b2RlID0gbmV3IE1hcCgpOworICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQgPSBuZXcg
TWFwKCk7CisgICAgCisgICAgV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5FdmVudFR5cGVzLlNuaXBwZXRBZGRlZCwg
dGhpcy5fc25pcHBldEFkZGVkLmJpbmQodGhpcykpOworICAgIFdlYkluc3BlY3Rvci5zbmlwcGV0
c01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwuRXZlbnRU
eXBlcy5TbmlwcGV0UmVtb3ZlZCwgdGhpcy5fc25pcHBldFJlbW92ZWQuYmluZCh0aGlzKSk7Cit9
CisKK1dlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlID0geworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24K
KyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0KKyAgICAgKi8KKyAgICBy
YXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCisgICAgeworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbcmF3
TG9jYXRpb24uc2NyaXB0SWRdOworCisgICAgICAgIHZhciBzbmlwcGV0ID0gdGhpcy5fc25pcHBl
dEZvclNjcmlwdElkW3Jhd0xvY2F0aW9uLnNjcmlwdElkXTsKKyAgICAgICAgaWYgKHNuaXBwZXQp
IHsKKyAgICAgICAgICAgIHZhciB1aUxpbmVOdW1iZXIgPSByYXdMb2NhdGlvbi5saW5lTnVtYmVy
IC0gV2ViSW5zcGVjdG9yLlNuaXBwZXQuZXZhbHVhdGVkU25pcHBldEV4dHJhTGluZXNDb3VudDsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VD
b2RlLCB1aUxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3Vy
Y2VDb2RlLCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIg
fHwgMCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1i
ZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCisgICAgICogQHJldHVybiB7
RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKi8KKyAgICB1aUxvY2F0aW9uVG9SYXdMb2Nh
dGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisg
ICAgeworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLmdl
dCh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAoIXNjcmlwdCkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgIHZhciBzbmlwcGV0ID0gdGhpcy5fc25pcHBldEZvclVJU291cmNl
Q29kZS5nZXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKHNuaXBwZXQpIHsKKyAgICAgICAg
ICAgIHZhciByYXdMaW5lTnVtYmVyID0gbGluZU51bWJlciArIFdlYkluc3BlY3Rvci5TbmlwcGV0
LmV2YWx1YXRlZFNuaXBwZXRFeHRyYUxpbmVzQ291bnQ7CisgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9jYXRpb24oc2NyaXB0LCByYXdMaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9uKHNjcmlwdCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJy
YXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQorICAgICAqLworICAgIHVpU291cmNlQ29k
ZUxpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgdWlTb3VyY2VDb2RlIGluIHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQu
dmFsdWVzKCkpCisgICAgICAgICAgICByZXN1bHQucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAg
ICBmb3IgKHZhciBzY3JpcHRJZCBpbiB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCkgewor
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlw
dElkW3NjcmlwdElkXTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zbmlwcGV0Rm9yVUlTb3VyY2VD
b2RlLmdldCh1aVNvdXJjZUNvZGUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgcmVzdWx0LnB1c2godWlTb3VyY2VDb2RlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5TY3JpcHR9IHNjcmlwdAorICAgICAqLworICAgIGFkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0
KQorICAgIHsKKyAgICAgICAgdmFyIHNuaXBwZXQgPSBXZWJJbnNwZWN0b3Iuc25pcHBldHNNb2Rl
bC5zbmlwcGV0Rm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICBpZiAoIXNu
aXBwZXQpIHsKKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVVJU291cmNlQ29kZUZvclNjcmlwdChz
Y3JpcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3Jl
bGVhc2VTbmlwcGV0U2NyaXB0KHNuaXBwZXQpOyAgICAgICAgCisgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTbmlwcGV0LmdldChzbmlwcGV0KTsKKyAgICAg
ICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291
cmNlQ29kZTsKKyAgICAgICAgdGhpcy5fc25pcHBldEZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJ
ZF0gPSBzbmlwcGV0OworICAgICAgICB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUucHV0KHVp
U291cmNlQ29kZSwgc2NyaXB0KTsKKyAgICAgICAgdmFyIGRhdGEgPSB7IHJlbW92ZWRJdGVtczog
W10sIGFkZGVkSXRlbXM6IFtdLCBzY3JpcHRJZHM6IFtzY3JpcHQuc2NyaXB0SWRdIH07CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBw
aW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgZGF0YSk7ICAgICAgICAKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50Cisg
ICAgICovCisgICAgX3NuaXBwZXRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB2YXIgc25pcHBldCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNuaXBwZXR9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGVJZCA9ICIiOyAvLyBGSVhNRTogdG8gYmUg
aW1wbGVtZW50ZWQuCisgICAgICAgIHZhciB1aVNvdXJjZUNvZGVVUkwgPSAiIjsgLy8gRklYTUU6
IHRvIGJlIGltcGxlbWVudGVkLgorICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlSWQsIHVpU291cmNlQ29kZVVSTCwgbmV3
IFdlYkluc3BlY3Rvci5TbmlwcGV0Q29udGVudFByb3ZpZGVyKHNuaXBwZXQpKTsKKyAgICAgICAg
dWlTb3VyY2VDb2RlLmlzU25pcHBldCA9IHRydWU7CisgICAgICAgIHVpU291cmNlQ29kZS5pc0Vk
aXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU25pcHBldC5wdXQo
c25pcHBldCwgdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgdGhpcy5fc25pcHBldEZvclVJU291cmNl
Q29kZS5wdXQodWlTb3VyY2VDb2RlLCBzbmlwcGV0KTsKKyAgICAgICAgdmFyIGRhdGEgPSB7IHJl
bW92ZWRJdGVtczogW10sIGFkZGVkSXRlbXM6IFt1aVNvdXJjZUNvZGVdLCBzY3JpcHRJZHM6IFtd
IH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5T
Y3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgZGF0YSk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0
CisgICAgICovCisgICAgX2NyZWF0ZVVJU291cmNlQ29kZUZvclNjcmlwdDogZnVuY3Rpb24oc2Ny
aXB0KQorICAgIHsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5zb3VyY2VVUkwsIG5ldyBXZWJJ
bnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyKHNjcmlwdCkpOworICAgICAgICB0aGlzLl91
aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gdWlTb3VyY2VDb2RlOwor
ICAgICAgICB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUucHV0KHVpU291cmNlQ29kZSwgc2Ny
aXB0KTsKKyAgICAgICAgdmFyIGRhdGEgPSB7IHJlbW92ZWRJdGVtczogW10sIGFkZGVkSXRlbXM6
IFt1aVNvdXJjZUNvZGVdLCBzY3JpcHRJZHM6IFtzY3JpcHQuc2NyaXB0SWRdIH07CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5n
LkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgZGF0YSk7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNuaXBwZXR9IHNuaXBwZXQKKyAgICAgKi8K
KyAgICBfcmVsZWFzZVNuaXBwZXRTY3JpcHQ6IGZ1bmN0aW9uKHNuaXBwZXQpCisgICAgeworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU25pcHBldC5nZXQo
c25pcHBldCk7CisgICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNv
ZGUuZ2V0KHVpU291cmNlQ29kZSk7CisgICAgICAgIGlmICghc2NyaXB0KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGRlbGV0ZSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtz
Y3JpcHQuc2NyaXB0SWRdOworICAgICAgICBkZWxldGUgdGhpcy5fc25pcHBldEZvclNjcmlwdElk
W3NjcmlwdC5zY3JpcHRJZF07CisgICAgICAgIHRoaXMuX3NjcmlwdEZvclVJU291cmNlQ29kZS5y
ZW1vdmUodWlTb3VyY2VDb2RlKTsKKworICAgICAgICB0aGlzLl9jcmVhdGVVSVNvdXJjZUNvZGVG
b3JTY3JpcHQoc2NyaXB0KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX3NuaXBwZXRSZW1vdmVkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBzbmlwcGV0ID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuU25pcHBldH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQuZ2V0KHNuaXBwZXQpOworICAgICAgICB0
aGlzLl9yZWxlYXNlU25pcHBldFNjcmlwdChzbmlwcGV0KTsKKyAgICAgICAgdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU25pcHBldC5yZW1vdmUoc25pcHBldCk7CisgICAgICAgIHRoaXMuX3NuaXBwZXRG
b3JVSVNvdXJjZUNvZGUucmVtb3ZlKHVpU291cmNlQ29kZSk7CisgICAgICAgIHZhciBkYXRhID0g
eyByZW1vdmVkSXRlbXM6IFt1aVNvdXJjZUNvZGVdLCBhZGRlZEl0ZW1zOiBbXSwgc2NyaXB0SWRz
OiBbXSB9OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIGRhdGEpOwor
ICAgIH0sCisKKyAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fc25p
cHBldEZvclNjcmlwdElkID0ge307CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlw
dElkID0ge307CisgICAgICAgIHRoaXMuX3NjcmlwdEZvclVJU291cmNlQ29kZSA9IG5ldyBNYXAo
KTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLnByb3RvdHlwZTsKKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU3RhdGljQ29u
dGVudFByb3ZpZGVyfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU25pcHBldH0gc25pcHBldAor
ICovCitXZWJJbnNwZWN0b3IuU25pcHBldENvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKHNuaXBw
ZXQpCit7CisgICAgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlci5jYWxsKHRoaXMs
ICJ0ZXh0L2phdmFzY3JpcHQiLCBzbmlwcGV0LmNvbnRlbnQpOworfQorCitXZWJJbnNwZWN0b3Iu
U25pcHBldENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlN0YXRpY0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGU7CisKKy8qKgorICogQHR5cGUgez9XZWJJ
bnNwZWN0b3IuU25pcHBldHNNb2RlbH0KKyAqLworV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwg
PSBudWxsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131669</attachid>
            <date>2012-03-13 10:56:51 -0700</date>
            <delta_ts>2012-03-13 11:51:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80890-20120313215650.patch</filename>
            <type>text/plain</type>
            <size>13229</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ3ODkxZGU4NWFjOGYz
MjI5YTQwN2IwZjU2OThmODY5NWFmYTQ0NS4uY2YwODc3MjRjZDVhYjZiOTk4YjdkYzUzY2U2YWE0
ZTdlMzU2ZTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTEyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBTbmlwcGV0c1NjcmlwdE1hcHBpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDg5MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRN
YXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuYWRkU2NyaXB0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX21h
cHBpbmdGb3JTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU25pcHBldHNN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsLnByb3RvdHlwZS5z
bmlwcGV0Rm9ySWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwucHJvdG90
eXBlLnNuaXBwZXRGb3JTb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRz
U2NyaXB0TWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBw
aW5nLnByb3RvdHlwZS51aVNvdXJjZUNvZGVMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
bmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fc25pcHBldEFkZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9y
ZWxlYXNlU25pcHBldFNjcmlwdC5nZXQgaWYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9zbmlwcGV0
RGVsZXRlZC5nZXQgdGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fc25pcHBldERlbGV0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNuaXBwZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIpOgorCiAyMDEyLTAzLTEzICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBzbmlwcGV0cyBtb2RlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0TWFwcGluZy5qcwppbmRleCAzMDk0ZDkzZTA4MzNkNjM0OGYxNzEyYmIxMTdj
NzhlOGYyMDhhOTkyLi41ZGM1Nzk4NTg5Mzk0MGU2N2UxODhkY2UzYTcwZmI1YWQ4NmFkODc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBp
bmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBw
aW5nLmpzCkBAIC03MCwxMCArNzAsMTggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogV2ViSW5z
cGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX21hcHBp
bmdzID0gW107CisgICAgCiAgICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKLSAgICB0aGlzLl9yZXNvdXJjZU1hcHBpbmcu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlTb3Vy
Y2VDb2RlTGlzdENoYW5nZWQsIHRoaXMuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0
aGlzKTsKICAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3Jlc291cmNlTWFwcGluZyk7CiAK
KyAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0
LmlzRW5hYmxlZCgpKSB7CisgICAgICAgIHRoaXMuX3NuaXBwZXRzTWFwcGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgIHRoaXMuX21hcHBpbmdz
LnB1c2godGhpcy5fc25pcHBldHNNYXBwaW5nKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKQorICAgICAgICB0aGlzLl9tYXBwaW5n
c1tpXS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5V
SVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcy5faGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5n
ZWQsIHRoaXMpOworICAgIAogICAgIHRoaXMuX21hcHBpbmdGb3JTY3JpcHRJZCA9IHt9OwogICAg
IHRoaXMuX21hcHBpbmdGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CiAgICAgdGhpcy5fbGl2
ZUxvY2F0aW9uc0ZvclNjcmlwdElkID0ge307CkBAIC0xNTUsMTMgKzE2MywyNiBAQCBXZWJJbnNw
ZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhp
cy5fbGl2ZUxvY2F0aW9uc0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBbXTsKIAotICAg
ICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX3Jlc291cmNlTWFwcGluZzsKLQorICAgICAgICB2YXIg
bWFwcGluZyA9IHRoaXMuX21hcHBpbmdGb3JTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgdGhpcy5f
bWFwcGluZ0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBtYXBwaW5nOwogICAgICAgICBt
YXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOwogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAorICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5TY3JpcHRNYXBwaW5nfQorICAgICAqLworICAgIF9tYXBwaW5nRm9yU2NyaXB0OiBmdW5j
dGlvbihzY3JpcHQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRz
U2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuc25pcHBldEZvclNvdXJjZVVSTChzY3JpcHQuc291
cmNlVVJMKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBldHNNYXBwaW5nOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlTWFw
cGluZzsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZl
bnR9IGV2ZW50CiAgICAgICovCiAgICAgX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkOiBm
dW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU25pcHBldHNNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU25pcHBldHNNb2RlbC5qcwppbmRleCBmNWVkZjRmNzFhNmEwMjUwZTdkYTA0YmU3M2MyMGI5
YjMxZWM5Yzk5Li45ZWM3NWIzYTIxNjRhNzBmY2JjMmZkYzdiYmJiMWJiOTZhZGQyODQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NuaXBwZXRzTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TbmlwcGV0c01vZGVs
LmpzCkBAIC00Myw3ICs0Myw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsID0gZnVuY3Rp
b24oKQogV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwuRXZlbnRUeXBlcyA9IHsKICAgICBTbmlw
cGV0QWRkZWQ6ICJTbmlwcGV0QWRkZWQiLAogICAgIFNuaXBwZXRSZW5hbWVkOiAiU25pcHBldFJl
bmFtZWQiLAotICAgIFNuaXBwZXREZWxldGVkOiAiU25pcHBldERlbGV0ZWQiLAorICAgIFNuaXBw
ZXRSZW1vdmVkOiAiU25pcHBldFJlbW92ZWQiLAogfQogCiBXZWJJbnNwZWN0b3IuU25pcHBldHNN
b2RlbC5wcm90b3R5cGUgPSB7CkBAIC04MSw3ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0
c01vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChzbmlwcGV0LmlkID09PSB0aGlz
Ll9zbmlwcGV0c1tpXS5pZCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3NuaXBwZXRzLnNwbGlj
ZShpLCAxKTsKICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlU2V0dGluZ3MoKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU25pcHBl
dHNNb2RlbC5FdmVudFR5cGVzLlNuaXBwZXREZWxldGVkLCBzbmlwcGV0KTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU25pcHBldHNN
b2RlbC5FdmVudFR5cGVzLlNuaXBwZXRSZW1vdmVkLCBzbmlwcGV0KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTM0LDYgKzEzNCwxNiBAQCBX
ZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgc25pcHBldEZvcklk
OiBmdW5jdGlvbihzbmlwcGV0SWQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBl
dHNbc25pcHBldElkXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IHNvdXJjZVVSTAorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TbmlwcGV0fQorICAgICAq
LworICAgIHNuaXBwZXRGb3JTb3VyY2VVUkw6IGZ1bmN0aW9uKHNvdXJjZVVSTCkKKyAgICB7Cisg
ICAgICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgcmV0dXJuIG51bGw7
CiAgICAgfQogfQogCkBAIC0xNTUsNiArMTY1LDggQEAgV2ViSW5zcGVjdG9yLlNuaXBwZXQgPSBm
dW5jdGlvbihtb2RlbCwgaWQsIG5hbWUsIGNvbnRlbnQpCiAgICAgdGhpcy5fY29udGVudCA9IGNv
bnRlbnQgfHwgIiI7CiB9CiAKK1dlYkluc3BlY3Rvci5TbmlwcGV0LmV2YWx1YXRlZFNuaXBwZXRF
eHRyYUxpbmVzQ291bnQgPSAyOworCiAvKioKICAqIEBwYXJhbSB7T2JqZWN0fSBzZXJpYWxpemVk
U25pcHBldAogICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNuaXBwZXR9CkBAIC0yMjEsMyArMjMz
LDE5NCBAQCBXZWJJbnNwZWN0b3IuU25pcHBldC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5TbmlwcGV0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuU2NyaXB0TWFwcGluZ30KKyAqLworV2ViSW5zcGVjdG9yLlNuaXBwZXRzU2NyaXB0TWFwcGlu
ZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9zbmlwcGV0Rm9yU2NyaXB0SWQgPSB7fTsKKyAg
ICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OworICAgIHRoaXMuX3NjcmlwdEZv
clVJU291cmNlQ29kZSA9IG5ldyBNYXAoKTsKKyAgICB0aGlzLl9zbmlwcGV0Rm9yVUlTb3VyY2VD
b2RlID0gbmV3IE1hcCgpOworICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQgPSBuZXcg
TWFwKCk7CisgICAgCisgICAgV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5FdmVudFR5cGVzLlNuaXBwZXRBZGRlZCwg
dGhpcy5fc25pcHBldEFkZGVkLmJpbmQodGhpcykpOworICAgIFdlYkluc3BlY3Rvci5zbmlwcGV0
c01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwuRXZlbnRU
eXBlcy5TbmlwcGV0UmVtb3ZlZCwgdGhpcy5fc25pcHBldFJlbW92ZWQuYmluZCh0aGlzKSk7Cit9
CisKK1dlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlID0geworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24K
KyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0KKyAgICAgKi8KKyAgICBy
YXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCisgICAgeworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbcmF3
TG9jYXRpb24uc2NyaXB0SWRdOworCisgICAgICAgIHZhciBzbmlwcGV0ID0gdGhpcy5fc25pcHBl
dEZvclNjcmlwdElkW3Jhd0xvY2F0aW9uLnNjcmlwdElkXTsKKyAgICAgICAgaWYgKHNuaXBwZXQp
IHsKKyAgICAgICAgICAgIHZhciB1aUxpbmVOdW1iZXIgPSByYXdMb2NhdGlvbi5saW5lTnVtYmVy
IC0gV2ViSW5zcGVjdG9yLlNuaXBwZXQuZXZhbHVhdGVkU25pcHBldEV4dHJhTGluZXNDb3VudDsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VD
b2RlLCB1aUxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3Vy
Y2VDb2RlLCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIg
fHwgMCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1i
ZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCisgICAgICogQHJldHVybiB7
RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKi8KKyAgICB1aUxvY2F0aW9uVG9SYXdMb2Nh
dGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisg
ICAgeworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLmdl
dCh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAoIXNjcmlwdCkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgIHZhciBzbmlwcGV0ID0gdGhpcy5fc25pcHBldEZvclVJU291cmNl
Q29kZS5nZXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKHNuaXBwZXQpIHsKKyAgICAgICAg
ICAgIHZhciByYXdMaW5lTnVtYmVyID0gbGluZU51bWJlciArIFdlYkluc3BlY3Rvci5TbmlwcGV0
LmV2YWx1YXRlZFNuaXBwZXRFeHRyYUxpbmVzQ291bnQ7CisgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9jYXRpb24oc2NyaXB0LCByYXdMaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9uKHNjcmlwdCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJy
YXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQorICAgICAqLworICAgIHVpU291cmNlQ29k
ZUxpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgdWlTb3VyY2VDb2RlIGluIHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQu
dmFsdWVzKCkpCisgICAgICAgICAgICByZXN1bHQucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAg
ICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuX3VpU291cmNlQ29kZXNGb3JTY3JpcHRzKCkp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59CisgICAgICovCisgICAgX3Vp
U291cmNlQ29kZXNGb3JTY3JpcHRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVz
dWx0ID0gW107CisgICAgICAgIGZvciAodmFyIHNjcmlwdElkIGluIHRoaXMuX3VpU291cmNlQ29k
ZUZvclNjcmlwdElkKSB7CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlT
b3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0SWRdOworICAgICAgICAgICAgaWYgKHRoaXMuX3Nu
aXBwZXRGb3JVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICByZXN1bHQucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAgICovCisgICAgYWRkU2NyaXB0
OiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgc25pcHBldCA9IFdlYkluc3Bl
Y3Rvci5zbmlwcGV0c01vZGVsLnNuaXBwZXRGb3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCk7
CisgICAgICAgIGlmICghc25pcHBldCkgeworICAgICAgICAgICAgdGhpcy5fY3JlYXRlVUlTb3Vy
Y2VDb2RlRm9yU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgdGhpcy5fcmVsZWFzZVNuaXBwZXRTY3JpcHQoc25pcHBldCk7ICAgICAgICAKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQuZ2V0
KHNuaXBwZXQpOworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQu
c2NyaXB0SWRdID0gdWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9zbmlwcGV0Rm9yU2NyaXB0
SWRbc2NyaXB0LnNjcmlwdElkXSA9IHNuaXBwZXQ7CisgICAgICAgIHRoaXMuX3NjcmlwdEZvclVJ
U291cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzY3JpcHQpOworICAgICAgICB2YXIgZGF0YSA9
IHsgcmVtb3ZlZEl0ZW1zOiBbXSwgYWRkZWRJdGVtczogW10sIHNjcmlwdElkczogW3NjcmlwdC5z
Y3JpcHRJZF0gfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCBkYXRh
KTsgICAgICAgIAorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfc25pcHBldEFkZGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBzbmlwcGV0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
U25pcHBldH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZUlkID0gIiI7
IC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgdmFyIHVpU291cmNlQ29kZVVS
TCA9ICIiOyAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCisgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVJZCwgdWlT
b3VyY2VDb2RlVVJMLCBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIoc25p
cHBldCkpOworICAgICAgICB1aVNvdXJjZUNvZGUuaXNTbmlwcGV0ID0gdHJ1ZTsKKyAgICAgICAg
dWlTb3VyY2VDb2RlLmlzRWRpdGFibGUgPSB0cnVlOworICAgICAgICB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTbmlwcGV0LnB1dChzbmlwcGV0LCB1aVNvdXJjZUNvZGUpOworICAgICAgICB0aGlzLl9z
bmlwcGV0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNuaXBwZXQpOworICAgICAg
ICB2YXIgZGF0YSA9IHsgcmVtb3ZlZEl0ZW1zOiBbXSwgYWRkZWRJdGVtczogW3VpU291cmNlQ29k
ZV0sIHNjcmlwdElkczogW10gfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFu
Z2VkLCBkYXRhKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuU2NyaXB0fSBzY3JpcHQKKyAgICAgKi8KKyAgICBfY3JlYXRlVUlTb3VyY2VDb2RlRm9yU2Ny
aXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
bmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZVVSTCwgc2NyaXB0LnNv
dXJjZVVSTCwgbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIoc2NyaXB0KSk7
CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0g
PSB1aVNvdXJjZUNvZGU7CisgICAgICAgIHRoaXMuX3NjcmlwdEZvclVJU291cmNlQ29kZS5wdXQo
dWlTb3VyY2VDb2RlLCBzY3JpcHQpOworICAgICAgICB2YXIgZGF0YSA9IHsgcmVtb3ZlZEl0ZW1z
OiBbXSwgYWRkZWRJdGVtczogW3VpU291cmNlQ29kZV0sIHNjcmlwdElkczogW3NjcmlwdC5zY3Jp
cHRJZF0gfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCBkYXRhKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU25pcHBldH0g
c25pcHBldAorICAgICAqLworICAgIF9yZWxlYXNlU25pcHBldFNjcmlwdDogZnVuY3Rpb24oc25p
cHBldCkKKyAgICB7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTbmlwcGV0LmdldChzbmlwcGV0KTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3Nj
cmlwdEZvclVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKCFzY3Jp
cHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX3VpU291cmNl
Q29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF07CisgICAgICAgIGRlbGV0ZSB0aGlzLl9z
bmlwcGV0Rm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXTsKKyAgICAgICAgdGhpcy5fc2NyaXB0
Rm9yVUlTb3VyY2VDb2RlLnJlbW92ZSh1aVNvdXJjZUNvZGUpOworCisgICAgICAgIHRoaXMuX2Ny
ZWF0ZVVJU291cmNlQ29kZUZvclNjcmlwdChzY3JpcHQpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfc25p
cHBldFJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHNuaXBwZXQg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TbmlwcGV0fSAqLyBldmVudC5kYXRhOworICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU25pcHBldC5nZXQoc25p
cHBldCk7CisgICAgICAgIHRoaXMuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KHNuaXBwZXQpOworICAg
ICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTbmlwcGV0LnJlbW92ZShzbmlwcGV0KTsKKyAgICAg
ICAgdGhpcy5fc25pcHBldEZvclVJU291cmNlQ29kZS5yZW1vdmUodWlTb3VyY2VDb2RlKTsKKyAg
ICAgICAgdmFyIGRhdGEgPSB7IHJlbW92ZWRJdGVtczogW3VpU291cmNlQ29kZV0sIGFkZGVkSXRl
bXM6IFtdLCBzY3JpcHRJZHM6IFtdIH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0
Q2hhbmdlZCwgZGF0YSk7CisgICAgfSwKKworICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgcmVtb3ZlZFVJU291cmNlQ29kZXMgPSB0aGlzLl91aVNvdXJjZUNvZGVzRm9y
U2NyaXB0cygpOworICAgICAgICB0aGlzLl9zbmlwcGV0Rm9yU2NyaXB0SWQgPSB7fTsKKyAgICAg
ICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWQgPSB7fTsKKyAgICAgICAgdGhpcy5fc2Ny
aXB0Rm9yVUlTb3VyY2VDb2RlID0gbmV3IE1hcCgpOworICAgICAgICB2YXIgZGF0YSA9IHsgcmVt
b3ZlZEl0ZW1zOiByZW1vdmVkVUlTb3VyY2VDb2RlcywgYWRkZWRJdGVtczogW10sIHNjcmlwdElk
czogW10gfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCBkYXRhKTsK
KyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLnByb3RvdHlwZTsKKworLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVu
dFByb3ZpZGVyfQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU25pcHBldH0gc25pcHBldAorICov
CitXZWJJbnNwZWN0b3IuU25pcHBldENvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKHNuaXBwZXQp
Cit7CisgICAgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlci5jYWxsKHRoaXMsICJ0
ZXh0L2phdmFzY3JpcHQiLCBzbmlwcGV0LmNvbnRlbnQpOworfQorCitXZWJJbnNwZWN0b3IuU25p
cHBldENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0
YXRpY0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGU7CisKKy8qKgorICogQHR5cGUgez9XZWJJbnNw
ZWN0b3IuU25pcHBldHNNb2RlbH0KKyAqLworV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwgPSBu
dWxsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131686</attachid>
            <date>2012-03-13 11:51:20 -0700</date>
            <delta_ts>2012-03-14 02:04:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80890-20120313225118.patch</filename>
            <type>text/plain</type>
            <size>13279</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ3ODkxZGU4NWFjOGYz
MjI5YTQwN2IwZjU2OThmODY5NWFmYTQ0NS4uY2YwODc3MjRjZDVhYjZiOTk4YjdkYzUzY2U2YWE0
ZTdlMzU2ZTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTEyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBTbmlwcGV0c1NjcmlwdE1hcHBpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDg5MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRN
YXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuYWRkU2NyaXB0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX21h
cHBpbmdGb3JTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU25pcHBldHNN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsLnByb3RvdHlwZS5z
bmlwcGV0Rm9ySWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwucHJvdG90
eXBlLnNuaXBwZXRGb3JTb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRz
U2NyaXB0TWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBw
aW5nLnByb3RvdHlwZS51aVNvdXJjZUNvZGVMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
bmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fc25pcHBldEFkZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9y
ZWxlYXNlU25pcHBldFNjcmlwdC5nZXQgaWYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9zbmlwcGV0
RGVsZXRlZC5nZXQgdGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fc25pcHBldERlbGV0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNuaXBwZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIpOgorCiAyMDEyLTAzLTEzICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBzbmlwcGV0cyBtb2RlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0TWFwcGluZy5qcwppbmRleCAzMDk0ZDkzZTA4MzNkNjM0OGYxNzEyYmIxMTdj
NzhlOGYyMDhhOTkyLi41ZGM1Nzk4NTg5Mzk0MGU2N2UxODhkY2UzYTcwZmI1YWQ4NmFkODc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBp
bmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBw
aW5nLmpzCkBAIC03MCwxMCArNzAsMTggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogV2ViSW5z
cGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX21hcHBp
bmdzID0gW107CisgICAgCiAgICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKLSAgICB0aGlzLl9yZXNvdXJjZU1hcHBpbmcu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlTb3Vy
Y2VDb2RlTGlzdENoYW5nZWQsIHRoaXMuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0
aGlzKTsKICAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3Jlc291cmNlTWFwcGluZyk7CiAK
KyAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0
LmlzRW5hYmxlZCgpKSB7CisgICAgICAgIHRoaXMuX3NuaXBwZXRzTWFwcGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgIHRoaXMuX21hcHBpbmdz
LnB1c2godGhpcy5fc25pcHBldHNNYXBwaW5nKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKQorICAgICAgICB0aGlzLl9tYXBwaW5n
c1tpXS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5V
SVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcy5faGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5n
ZWQsIHRoaXMpOworICAgIAogICAgIHRoaXMuX21hcHBpbmdGb3JTY3JpcHRJZCA9IHt9OwogICAg
IHRoaXMuX21hcHBpbmdGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CiAgICAgdGhpcy5fbGl2
ZUxvY2F0aW9uc0ZvclNjcmlwdElkID0ge307CkBAIC0xNTUsMTMgKzE2MywyNiBAQCBXZWJJbnNw
ZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhp
cy5fbGl2ZUxvY2F0aW9uc0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBbXTsKIAotICAg
ICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX3Jlc291cmNlTWFwcGluZzsKLQorICAgICAgICB2YXIg
bWFwcGluZyA9IHRoaXMuX21hcHBpbmdGb3JTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgdGhpcy5f
bWFwcGluZ0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBtYXBwaW5nOwogICAgICAgICBt
YXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOwogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAorICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5TY3JpcHRNYXBwaW5nfQorICAgICAqLworICAgIF9tYXBwaW5nRm9yU2NyaXB0OiBmdW5j
dGlvbihzY3JpcHQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRz
U2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuc25pcHBldEZvclNvdXJjZVVSTChzY3JpcHQuc291
cmNlVVJMKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBldHNNYXBwaW5nOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlTWFw
cGluZzsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZl
bnR9IGV2ZW50CiAgICAgICovCiAgICAgX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkOiBm
dW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU25pcHBldHNNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU25pcHBldHNNb2RlbC5qcwppbmRleCBmNWVkZjRmNzFhNmEwMjUwZTdkYTA0YmU3M2MyMGI5
YjMxZWM5Yzk5Li5mYjE3ODU5YjU1ZGRhYTFkNWZjOTg4ZmM1YmFhMWIzYmM1OTlkNTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NuaXBwZXRzTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TbmlwcGV0c01vZGVs
LmpzCkBAIC00Myw3ICs0Myw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsID0gZnVuY3Rp
b24oKQogV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwuRXZlbnRUeXBlcyA9IHsKICAgICBTbmlw
cGV0QWRkZWQ6ICJTbmlwcGV0QWRkZWQiLAogICAgIFNuaXBwZXRSZW5hbWVkOiAiU25pcHBldFJl
bmFtZWQiLAotICAgIFNuaXBwZXREZWxldGVkOiAiU25pcHBldERlbGV0ZWQiLAorICAgIFNuaXBw
ZXRSZW1vdmVkOiAiU25pcHBldFJlbW92ZWQiLAogfQogCiBXZWJJbnNwZWN0b3IuU25pcHBldHNN
b2RlbC5wcm90b3R5cGUgPSB7CkBAIC04MSw3ICs4MSw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0
c01vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChzbmlwcGV0LmlkID09PSB0aGlz
Ll9zbmlwcGV0c1tpXS5pZCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3NuaXBwZXRzLnNwbGlj
ZShpLCAxKTsKICAgICAgICAgICAgICAgICB0aGlzLl9zYXZlU2V0dGluZ3MoKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU25pcHBl
dHNNb2RlbC5FdmVudFR5cGVzLlNuaXBwZXREZWxldGVkLCBzbmlwcGV0KTsKKyAgICAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU25pcHBldHNN
b2RlbC5FdmVudFR5cGVzLlNuaXBwZXRSZW1vdmVkLCBzbmlwcGV0KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTM0LDYgKzEzNCwxNiBAQCBX
ZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgc25pcHBldEZvcklk
OiBmdW5jdGlvbihzbmlwcGV0SWQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBl
dHNbc25pcHBldElkXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9
IHNvdXJjZVVSTAorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TbmlwcGV0fQorICAgICAq
LworICAgIHNuaXBwZXRGb3JTb3VyY2VVUkw6IGZ1bmN0aW9uKHNvdXJjZVVSTCkKKyAgICB7Cisg
ICAgICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgcmV0dXJuIG51bGw7
CiAgICAgfQogfQogCkBAIC0xNTUsNiArMTY1LDggQEAgV2ViSW5zcGVjdG9yLlNuaXBwZXQgPSBm
dW5jdGlvbihtb2RlbCwgaWQsIG5hbWUsIGNvbnRlbnQpCiAgICAgdGhpcy5fY29udGVudCA9IGNv
bnRlbnQgfHwgIiI7CiB9CiAKK1dlYkluc3BlY3Rvci5TbmlwcGV0LmV2YWx1YXRlZFNuaXBwZXRF
eHRyYUxpbmVzQ291bnQgPSAyOworCiAvKioKICAqIEBwYXJhbSB7T2JqZWN0fSBzZXJpYWxpemVk
U25pcHBldAogICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNuaXBwZXR9CkBAIC0yMjEsMyArMjMz
LDE5NSBAQCBXZWJJbnNwZWN0b3IuU25pcHBldC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5TbmlwcGV0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuU2NyaXB0TWFwcGluZ30KKyAqLworV2ViSW5zcGVjdG9yLlNuaXBwZXRzU2NyaXB0TWFwcGlu
ZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9zbmlwcGV0Rm9yU2NyaXB0SWQgPSB7fTsKKyAg
ICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OworICAgIHRoaXMuX3NjcmlwdEZv
clVJU291cmNlQ29kZSA9IG5ldyBNYXAoKTsKKyAgICB0aGlzLl9zbmlwcGV0Rm9yVUlTb3VyY2VD
b2RlID0gbmV3IE1hcCgpOworICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQgPSBuZXcg
TWFwKCk7CisgICAgCisgICAgV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5FdmVudFR5cGVzLlNuaXBwZXRBZGRlZCwg
dGhpcy5fc25pcHBldEFkZGVkLmJpbmQodGhpcykpOworICAgIFdlYkluc3BlY3Rvci5zbmlwcGV0
c01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwuRXZlbnRU
eXBlcy5TbmlwcGV0UmVtb3ZlZCwgdGhpcy5fc25pcHBldFJlbW92ZWQuYmluZCh0aGlzKSk7Cit9
CisKK1dlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlID0geworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24K
KyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0KKyAgICAgKi8KKyAgICBy
YXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCisgICAgeworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbcmF3
TG9jYXRpb24uc2NyaXB0SWRdOworCisgICAgICAgIHZhciBzbmlwcGV0ID0gdGhpcy5fc25pcHBl
dEZvclNjcmlwdElkW3Jhd0xvY2F0aW9uLnNjcmlwdElkXTsKKyAgICAgICAgaWYgKHNuaXBwZXQp
IHsKKyAgICAgICAgICAgIHZhciB1aUxpbmVOdW1iZXIgPSByYXdMb2NhdGlvbi5saW5lTnVtYmVy
IC0gV2ViSW5zcGVjdG9yLlNuaXBwZXQuZXZhbHVhdGVkU25pcHBldEV4dHJhTGluZXNDb3VudDsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VD
b2RlLCB1aUxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3Vy
Y2VDb2RlLCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIg
fHwgMCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1i
ZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCisgICAgICogQHJldHVybiB7
RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKi8KKyAgICB1aUxvY2F0aW9uVG9SYXdMb2Nh
dGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisg
ICAgeworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLmdl
dCh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAoIXNjcmlwdCkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgIHZhciBzbmlwcGV0ID0gdGhpcy5fc25pcHBldEZvclVJU291cmNl
Q29kZS5nZXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKHNuaXBwZXQpIHsKKyAgICAgICAg
ICAgIHZhciByYXdMaW5lTnVtYmVyID0gbGluZU51bWJlciArIFdlYkluc3BlY3Rvci5TbmlwcGV0
LmV2YWx1YXRlZFNuaXBwZXRFeHRyYUxpbmVzQ291bnQ7CisgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9jYXRpb24oc2NyaXB0LCByYXdMaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9uKHNjcmlwdCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJy
YXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQorICAgICAqLworICAgIHVpU291cmNlQ29k
ZUxpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgdWlTb3VyY2VDb2RlIGluIHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQu
dmFsdWVzKCkpCisgICAgICAgICAgICByZXN1bHQucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAg
ICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuX3VpU291cmNlQ29kZXNGb3JTY3JpcHRzKCkp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59CisgICAgICovCisgICAgX3Vp
U291cmNlQ29kZXNGb3JTY3JpcHRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVz
dWx0ID0gW107CisgICAgICAgIGZvciAodmFyIHNjcmlwdElkIGluIHRoaXMuX3VpU291cmNlQ29k
ZUZvclNjcmlwdElkKSB7CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlT
b3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0SWRdOworICAgICAgICAgICAgaWYgKHRoaXMuX3Nu
aXBwZXRGb3JVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICByZXN1bHQucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAgICovCisgICAgYWRkU2NyaXB0
OiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgc25pcHBldCA9IFdlYkluc3Bl
Y3Rvci5zbmlwcGV0c01vZGVsLnNuaXBwZXRGb3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCk7
CisgICAgICAgIGlmICghc25pcHBldCkgeworICAgICAgICAgICAgdGhpcy5fY3JlYXRlVUlTb3Vy
Y2VDb2RlRm9yU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgdGhpcy5fcmVsZWFzZVNuaXBwZXRTY3JpcHQoc25pcHBldCk7ICAgICAgICAKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQuZ2V0
KHNuaXBwZXQpOworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQu
c2NyaXB0SWRdID0gdWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9zbmlwcGV0Rm9yU2NyaXB0
SWRbc2NyaXB0LnNjcmlwdElkXSA9IHNuaXBwZXQ7CisgICAgICAgIHRoaXMuX3NjcmlwdEZvclVJ
U291cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzY3JpcHQpOworICAgICAgICB2YXIgZGF0YSA9
IHsgcmVtb3ZlZEl0ZW1zOiBbXSwgYWRkZWRJdGVtczogW10sIHNjcmlwdElkczogW3NjcmlwdC5z
Y3JpcHRJZF0gfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCBkYXRh
KTsgICAgICAgIAorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfc25pcHBldEFkZGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciBzbmlwcGV0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
U25pcHBldH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZUlkID0gIiI7
IC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgdmFyIHVpU291cmNlQ29kZVVS
TCA9ICIiOyAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCisgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVJZCwgdWlT
b3VyY2VDb2RlVVJMLCBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIoc25p
cHBldCkpOworICAgICAgICB1aVNvdXJjZUNvZGUuaXNTbmlwcGV0ID0gdHJ1ZTsKKyAgICAgICAg
dWlTb3VyY2VDb2RlLmlzRWRpdGFibGUgPSB0cnVlOworICAgICAgICB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTbmlwcGV0LnB1dChzbmlwcGV0LCB1aVNvdXJjZUNvZGUpOworICAgICAgICB0aGlzLl9z
bmlwcGV0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNuaXBwZXQpOworICAgICAg
ICB2YXIgZGF0YSA9IHsgcmVtb3ZlZEl0ZW1zOiBbXSwgYWRkZWRJdGVtczogW3VpU291cmNlQ29k
ZV0sIHNjcmlwdElkczogW10gfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFu
Z2VkLCBkYXRhKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuU2NyaXB0fSBzY3JpcHQKKyAgICAgKi8KKyAgICBfY3JlYXRlVUlTb3VyY2VDb2RlRm9yU2Ny
aXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
bmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZVVSTCwgc2NyaXB0LnNv
dXJjZVVSTCwgbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIoc2NyaXB0KSk7
CisgICAgICAgIHVpU291cmNlQ29kZS5pc1NuaXBwZXRFdmFsdWF0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291
cmNlQ29kZTsKKyAgICAgICAgdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJj
ZUNvZGUsIHNjcmlwdCk7CisgICAgICAgIHZhciBkYXRhID0geyByZW1vdmVkSXRlbXM6IFtdLCBh
ZGRlZEl0ZW1zOiBbdWlTb3VyY2VDb2RlXSwgc2NyaXB0SWRzOiBbc2NyaXB0LnNjcmlwdElkXSB9
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2Ny
aXB0TWFwcGluZy5FdmVudHMuVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIGRhdGEpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TbmlwcGV0fSBzbmlwcGV0
CisgICAgICovCisgICAgX3JlbGVhc2VTbmlwcGV0U2NyaXB0OiBmdW5jdGlvbihzbmlwcGV0KQor
ICAgIHsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclNu
aXBwZXQuZ2V0KHNuaXBwZXQpOworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9y
VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAoIXNjcmlwdCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkZWxldGUgdGhpcy5fdWlTb3VyY2VDb2RlRm9y
U2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NuaXBwZXRG
b3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdOworICAgICAgICB0aGlzLl9zY3JpcHRGb3JVSVNv
dXJjZUNvZGUucmVtb3ZlKHVpU291cmNlQ29kZSk7CisKKyAgICAgICAgdGhpcy5fY3JlYXRlVUlT
b3VyY2VDb2RlRm9yU2NyaXB0KHNjcmlwdCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9zbmlwcGV0UmVt
b3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgc25pcHBldCA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlNuaXBwZXR9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciB1
aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTbmlwcGV0LmdldChzbmlwcGV0KTsK
KyAgICAgICAgdGhpcy5fcmVsZWFzZVNuaXBwZXRTY3JpcHQoc25pcHBldCk7CisgICAgICAgIHRo
aXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQucmVtb3ZlKHNuaXBwZXQpOworICAgICAgICB0aGlz
Ll9zbmlwcGV0Rm9yVUlTb3VyY2VDb2RlLnJlbW92ZSh1aVNvdXJjZUNvZGUpOworICAgICAgICB2
YXIgZGF0YSA9IHsgcmVtb3ZlZEl0ZW1zOiBbdWlTb3VyY2VDb2RlXSwgYWRkZWRJdGVtczogW10s
IHNjcmlwdElkczogW10gfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2Vk
LCBkYXRhKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciByZW1vdmVkVUlTb3VyY2VDb2RlcyA9IHRoaXMuX3VpU291cmNlQ29kZXNGb3JTY3JpcHRz
KCk7CisgICAgICAgIHRoaXMuX3NuaXBwZXRGb3JTY3JpcHRJZCA9IHt9OworICAgICAgICB0aGlz
Ll91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OworICAgICAgICB0aGlzLl9zY3JpcHRGb3JV
SVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CisgICAgICAgIHZhciBkYXRhID0geyByZW1vdmVkSXRl
bXM6IHJlbW92ZWRVSVNvdXJjZUNvZGVzLCBhZGRlZEl0ZW1zOiBbXSwgc2NyaXB0SWRzOiBbXSB9
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2Ny
aXB0TWFwcGluZy5FdmVudHMuVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIGRhdGEpOworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLlNuaXBwZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJvdG90eXBlOworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlk
ZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TbmlwcGV0fSBzbmlwcGV0CisgKi8KK1dlYklu
c3BlY3Rvci5TbmlwcGV0Q29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oc25pcHBldCkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyLmNhbGwodGhpcywgInRleHQvamF2
YXNjcmlwdCIsIHNuaXBwZXQuY29udGVudCk7Cit9CisKK1dlYkluc3BlY3Rvci5TbmlwcGV0Q29u
dGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3RhdGljQ29u
dGVudFByb3ZpZGVyLnByb3RvdHlwZTsKKworLyoqCisgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5T
bmlwcGV0c01vZGVsfQorICovCitXZWJJbnNwZWN0b3Iuc25pcHBldHNNb2RlbCA9IG51bGw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131808</attachid>
            <date>2012-03-14 02:04:28 -0700</date>
            <delta_ts>2012-03-14 02:21:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80890-20120314130426.patch</filename>
            <type>text/plain</type>
            <size>13525</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhlM2NhMzUzOGFlOTVl
MjI1Y2RiMGM4MDgwNWVjNzRkMzEzNDIwYy4uZTg5YzFhZGE2NjE2MWFkNmQ3N2VlOGM1NDg0ZmQ3
YzUzZjY0YmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTEyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBTbmlwcGV0c1NjcmlwdE1hcHBpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDg5MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRN
YXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuYWRkU2NyaXB0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX21h
cHBpbmdGb3JTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU25pcHBldHNN
b2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsLnByb3RvdHlwZS5z
bmlwcGV0Rm9ySWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwucHJvdG90
eXBlLnNuaXBwZXRGb3JTb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBwZXRz
U2NyaXB0TWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBw
aW5nLnByb3RvdHlwZS51aVNvdXJjZUNvZGVMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
bmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU25pcHBldHNTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fc25pcHBldEFkZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9y
ZWxlYXNlU25pcHBldFNjcmlwdC5nZXQgaWYpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3JlbGVhc2VTbmlwcGV0U2NyaXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9zbmlwcGV0
RGVsZXRlZC5nZXQgdGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fc25pcHBldERlbGV0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNuaXBwZXRzU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIpOgorCiAyMDEyLTAzLTE0ICBQZXRlciBSeWJp
biAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUeXBl
QnVpbGRlcjogSW50cm9kdWNlIE9wdE91dHB1dCBjbGFzcyBmb3Igb3B0aW9uYWwgb3V0cHV0IHBh
cmFtZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0TWFwcGluZy5qcwppbmRleCAzMDk0ZDkzZTA4MzNkNjM0OGYxNzEyYmIxMTdjNzhlOGYyMDhh
OTkyLi42Mjg3MjViNmNlMDJkZDg3ZTJmMWI1NGRkNzUzNTk5NDU2MTRmMGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBpbmcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzCkBA
IC03MCwxMCArNzAsMTggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogV2ViSW5zcGVjdG9yLk1h
aW5TY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX21hcHBpbmdzID0gW107
CisgICAgCiAgICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNjcmlwdE1hcHBpbmcoKTsKLSAgICB0aGlzLl9yZXNvdXJjZU1hcHBpbmcuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlTb3VyY2VDb2RlTGlz
dENoYW5nZWQsIHRoaXMuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0aGlzKTsKICAg
ICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3Jlc291cmNlTWFwcGluZyk7CiAKKyAgICBpZiAo
V2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxl
ZCgpKSB7CisgICAgICAgIHRoaXMuX3NuaXBwZXRzTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3Iu
U25pcHBldHNTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgIHRoaXMuX21hcHBpbmdzLnB1c2godGhp
cy5fc25pcHBldHNNYXBwaW5nKTsKKyAgICB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKQorICAgICAgICB0aGlzLl9tYXBwaW5nc1tpXS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNv
ZGVMaXN0Q2hhbmdlZCwgdGhpcy5faGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIHRoaXMp
OworICAgIAogICAgIHRoaXMuX21hcHBpbmdGb3JTY3JpcHRJZCA9IHt9OwogICAgIHRoaXMuX21h
cHBpbmdGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CiAgICAgdGhpcy5fbGl2ZUxvY2F0aW9u
c0ZvclNjcmlwdElkID0ge307CkBAIC0xNTUsMTMgKzE2MywyNiBAQCBXZWJJbnNwZWN0b3IuTWFp
blNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5fbGl2ZUxv
Y2F0aW9uc0ZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBbXTsKIAotICAgICAgICB2YXIg
bWFwcGluZyA9IHRoaXMuX3Jlc291cmNlTWFwcGluZzsKLQorICAgICAgICB2YXIgbWFwcGluZyA9
IHRoaXMuX21hcHBpbmdGb3JTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgdGhpcy5fbWFwcGluZ0Zv
clNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBtYXBwaW5nOwogICAgICAgICBtYXBwaW5nLmFk
ZFNjcmlwdChzY3JpcHQpOwogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5TY3JpcHR9IHNjcmlwdAorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5TY3Jp
cHRNYXBwaW5nfQorICAgICAqLworICAgIF9tYXBwaW5nRm9yU2NyaXB0OiBmdW5jdGlvbihzY3Jp
cHQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmV4cGVyaW1lbnRzU2V0dGluZ3Mu
c25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLnNuaXBwZXRzTW9kZWwuc25pcHBldElkRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwp
KQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zbmlwcGV0c01hcHBpbmc7CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VNYXBwaW5nOwor
ICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZl
bnQKICAgICAgKi8KICAgICBfaGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
bmlwcGV0c01vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tbmlw
cGV0c01vZGVsLmpzCmluZGV4IGY1ZWRmNGY3MWE2YTAyNTBlN2RhMDRiZTczYzIwYjliMzFlYzlj
OTkuLmJiMzEwYjY1MDdmZDk5MThjOGJlMTg4YzUxOTYwOGRhZDcyZmRkNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU25pcHBldHNNb2RlbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NuaXBwZXRzTW9kZWwuanMKQEAg
LTQzLDcgKzQzLDcgQEAgV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwgPSBmdW5jdGlvbigpCiBX
ZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5FdmVudFR5cGVzID0gewogICAgIFNuaXBwZXRBZGRl
ZDogIlNuaXBwZXRBZGRlZCIsCiAgICAgU25pcHBldFJlbmFtZWQ6ICJTbmlwcGV0UmVuYW1lZCIs
Ci0gICAgU25pcHBldERlbGV0ZWQ6ICJTbmlwcGV0RGVsZXRlZCIsCisgICAgU25pcHBldFJlbW92
ZWQ6ICJTbmlwcGV0UmVtb3ZlZCIsCiB9CiAKIFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsLnBy
b3RvdHlwZSA9IHsKQEAgLTgxLDcgKzgxLDcgQEAgV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHNuaXBwZXQuaWQgPT09IHRoaXMuX3NuaXBw
ZXRzW2ldLmlkKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fc25pcHBldHMuc3BsaWNlKGksIDEp
OwogICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVTZXR0aW5ncygpOwotICAgICAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVs
LkV2ZW50VHlwZXMuU25pcHBldERlbGV0ZWQsIHNuaXBwZXQpOworICAgICAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsLkV2
ZW50VHlwZXMuU25pcHBldFJlbW92ZWQsIHNuaXBwZXQpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMzQsNiArMTM0LDI2IEBAIFdlYkluc3Bl
Y3Rvci5TbmlwcGV0c01vZGVsLnByb3RvdHlwZSA9IHsKICAgICBzbmlwcGV0Rm9ySWQ6IGZ1bmN0
aW9uKHNuaXBwZXRJZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zbmlwcGV0c1tzbmlw
cGV0SWRdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNl
VVJMCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIHNuaXBwZXRJZEZvclNv
dXJjZVVSTDogZnVuY3Rpb24oc291cmNlVVJMKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IHRv
IGJlIGltcGxlbWVudGVkLgorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAorICAgICAqIEByZXR1cm4ge1dlYklu
c3BlY3Rvci5TbmlwcGV0fQorICAgICAqLworICAgIHNuaXBwZXRGb3JTb3VyY2VVUkw6IGZ1bmN0
aW9uKHNvdXJjZVVSTCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRl
ZC4KKyAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogfQogCkBAIC0xNTUsNiArMTc1LDggQEAg
V2ViSW5zcGVjdG9yLlNuaXBwZXQgPSBmdW5jdGlvbihtb2RlbCwgaWQsIG5hbWUsIGNvbnRlbnQp
CiAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQgfHwgIiI7CiB9CiAKK1dlYkluc3BlY3Rvci5T
bmlwcGV0LmV2YWx1YXRlZFNuaXBwZXRFeHRyYUxpbmVzQ291bnQgPSAyOworCiAvKioKICAqIEBw
YXJhbSB7T2JqZWN0fSBzZXJpYWxpemVkU25pcHBldAogICogQHJldHVybiB7V2ViSW5zcGVjdG9y
LlNuaXBwZXR9CkBAIC0yMjEsMyArMjQzLDE5NSBAQCBXZWJJbnNwZWN0b3IuU25pcHBldC5wcm90
b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5TbmlwcGV0LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZ30KKyAqLworV2ViSW5zcGVj
dG9yLlNuaXBwZXRzU2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9zbmlw
cGV0Rm9yU2NyaXB0SWQgPSB7fTsKKyAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9
IHt9OworICAgIHRoaXMuX3NjcmlwdEZvclVJU291cmNlQ29kZSA9IG5ldyBNYXAoKTsKKyAgICB0
aGlzLl9zbmlwcGV0Rm9yVUlTb3VyY2VDb2RlID0gbmV3IE1hcCgpOworICAgIHRoaXMuX3VpU291
cmNlQ29kZUZvclNuaXBwZXQgPSBuZXcgTWFwKCk7CisgICAgCisgICAgV2ViSW5zcGVjdG9yLnNu
aXBwZXRzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU25pcHBldHNNb2RlbC5F
dmVudFR5cGVzLlNuaXBwZXRBZGRlZCwgdGhpcy5fc25pcHBldEFkZGVkLmJpbmQodGhpcykpOwor
ICAgIFdlYkluc3BlY3Rvci5zbmlwcGV0c01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlNuaXBwZXRzTW9kZWwuRXZlbnRUeXBlcy5TbmlwcGV0UmVtb3ZlZCwgdGhpcy5fc25pcHBl
dFJlbW92ZWQuYmluZCh0aGlzKSk7Cit9CisKK1dlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1h
cHBpbmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2Vu
dC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlM
b2NhdGlvbn0KKyAgICAgKi8KKyAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24o
cmF3TG9jYXRpb24pCisgICAgeworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlT
b3VyY2VDb2RlRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOworCisgICAgICAgIHZh
ciBzbmlwcGV0ID0gdGhpcy5fc25pcHBldEZvclNjcmlwdElkW3Jhd0xvY2F0aW9uLnNjcmlwdElk
XTsKKyAgICAgICAgaWYgKHNuaXBwZXQpIHsKKyAgICAgICAgICAgIHZhciB1aUxpbmVOdW1iZXIg
PSByYXdMb2NhdGlvbi5saW5lTnVtYmVyIC0gV2ViSW5zcGVjdG9yLlNuaXBwZXQuZXZhbHVhdGVk
U25pcHBldEV4dHJhTGluZXNDb3VudDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCB1aUxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNv
bHVtbk51bWJlciB8fCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCBy
YXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICog
QHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1u
TnVtYmVyCisgICAgICogQHJldHVybiB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKi8K
KyAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5f
c2NyaXB0Rm9yVUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAoIXNj
cmlwdCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHZhciBzbmlwcGV0ID0g
dGhpcy5fc25pcHBldEZvclVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAg
aWYgKHNuaXBwZXQpIHsKKyAgICAgICAgICAgIHZhciByYXdMaW5lTnVtYmVyID0gbGluZU51bWJl
ciArIFdlYkluc3BlY3Rvci5TbmlwcGV0LmV2YWx1YXRlZFNuaXBwZXRFeHRyYUxpbmVzQ291bnQ7
CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlUmF3
TG9jYXRpb24oc2NyaXB0LCByYXdMaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xv
Y2F0aW9uKHNjcmlwdCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQor
ICAgICAqLworICAgIHVpU291cmNlQ29kZUxpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgdWlTb3VyY2VDb2RlIGluIHRoaXMu
X3VpU291cmNlQ29kZUZvclNuaXBwZXQudmFsdWVzKCkpCisgICAgICAgICAgICByZXN1bHQucHVz
aCh1aVNvdXJjZUNvZGUpOworICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuX3Jl
bGVhc2VkVUlTb3VyY2VDb2RlcygpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGU+fQorICAgICAqLworICAgIF9yZWxlYXNlZFVJU291cmNlQ29kZXM6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgc2NyaXB0SWQg
aW4gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWQpIHsKKyAgICAgICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHRJZF07CisgICAg
ICAgICAgICBpZiAodGhpcy5fc25pcHBldEZvclVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2Rl
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHVp
U291cmNlQ29kZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKKyAg
ICAgKi8KKyAgICBhZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAgICAgIHZh
ciBzbmlwcGV0ID0gV2ViSW5zcGVjdG9yLnNuaXBwZXRzTW9kZWwuc25pcHBldEZvclNvdXJjZVVS
TChzY3JpcHQuc291cmNlVVJMKTsKKyAgICAgICAgaWYgKCFzbmlwcGV0KSB7CisgICAgICAgICAg
ICB0aGlzLl9jcmVhdGVVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yZWxlYXNlU25pcHBldFNjcmlwdChz
bmlwcGV0KTsgICAgICAgIAorICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU25pcHBldC5nZXQoc25pcHBldCk7CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29k
ZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSB1aVNvdXJjZUNvZGU7CisgICAgICAgIHRo
aXMuX3NuaXBwZXRGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gc25pcHBldDsKKyAgICAg
ICAgdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNjcmlwdCk7
CisgICAgICAgIHZhciBkYXRhID0geyByZW1vdmVkSXRlbXM6IFtdLCBhZGRlZEl0ZW1zOiBbXSwg
c2NyaXB0SWRzOiBbc2NyaXB0LnNjcmlwdElkXSB9OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlTb3VyY2VD
b2RlTGlzdENoYW5nZWQsIGRhdGEpOyAgICAgICAgCisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9zbmlwcGV0
QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHNuaXBwZXQgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5TbmlwcGV0fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIg
dWlTb3VyY2VDb2RlSWQgPSAiIjsgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgorICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlVVJMID0gIiI7IC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4K
KyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
KHVpU291cmNlQ29kZUlkLCB1aVNvdXJjZUNvZGVVUkwsIG5ldyBXZWJJbnNwZWN0b3IuU25pcHBl
dENvbnRlbnRQcm92aWRlcihzbmlwcGV0KSk7CisgICAgICAgIHVpU291cmNlQ29kZS5pc1NuaXBw
ZXQgPSB0cnVlOworICAgICAgICB1aVNvdXJjZUNvZGUuaXNFZGl0YWJsZSA9IHRydWU7CisgICAg
ICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclNuaXBwZXQucHV0KHNuaXBwZXQsIHVpU291cmNlQ29k
ZSk7CisgICAgICAgIHRoaXMuX3NuaXBwZXRGb3JVSVNvdXJjZUNvZGUucHV0KHVpU291cmNlQ29k
ZSwgc25pcHBldCk7CisgICAgICAgIHZhciBkYXRhID0geyByZW1vdmVkSXRlbXM6IFtdLCBhZGRl
ZEl0ZW1zOiBbdWlTb3VyY2VDb2RlXSwgc2NyaXB0SWRzOiBbXSB9OworICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMu
VUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIGRhdGEpOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAorICAgICAqLworICAgIF9jcmVh
dGVVSVNvdXJjZUNvZGVGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZShzY3JpcHQu
c291cmNlVVJMLCBzY3JpcHQuc291cmNlVVJMLCBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRl
bnRQcm92aWRlcihzY3JpcHQpKTsKKyAgICAgICAgdWlTb3VyY2VDb2RlLmlzU25pcHBldEV2YWx1
YXRpb24gPSB0cnVlOworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3Jp
cHQuc2NyaXB0SWRdID0gdWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9zY3JpcHRGb3JVSVNv
dXJjZUNvZGUucHV0KHVpU291cmNlQ29kZSwgc2NyaXB0KTsKKyAgICAgICAgdmFyIGRhdGEgPSB7
IHJlbW92ZWRJdGVtczogW10sIGFkZGVkSXRlbXM6IFt1aVNvdXJjZUNvZGVdLCBzY3JpcHRJZHM6
IFtzY3JpcHQuc2NyaXB0SWRdIH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNvZGVMaXN0Q2hh
bmdlZCwgZGF0YSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNuaXBwZXR9IHNuaXBwZXQKKyAgICAgKi8KKyAgICBfcmVsZWFzZVNuaXBwZXRTY3JpcHQ6
IGZ1bmN0aW9uKHNuaXBwZXQpCisgICAgeworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhp
cy5fdWlTb3VyY2VDb2RlRm9yU25pcHBldC5nZXQoc25pcHBldCk7CisgICAgICAgIHZhciBzY3Jp
cHQgPSB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7CisgICAg
ICAgIGlmICghc2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlbGV0ZSB0
aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdOworICAgICAgICBk
ZWxldGUgdGhpcy5fc25pcHBldEZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF07CisgICAgICAg
IHRoaXMuX3NjcmlwdEZvclVJU291cmNlQ29kZS5yZW1vdmUodWlTb3VyY2VDb2RlKTsKKworICAg
ICAgICB0aGlzLl9jcmVhdGVVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAg
ICovCisgICAgX3NuaXBwZXRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBzbmlwcGV0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU25pcHBldH0gKi8gZXZlbnQu
ZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclNu
aXBwZXQuZ2V0KHNuaXBwZXQpOworICAgICAgICB0aGlzLl9yZWxlYXNlU25pcHBldFNjcmlwdChz
bmlwcGV0KTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU25pcHBldC5yZW1vdmUoc25p
cHBldCk7CisgICAgICAgIHRoaXMuX3NuaXBwZXRGb3JVSVNvdXJjZUNvZGUucmVtb3ZlKHVpU291
cmNlQ29kZSk7CisgICAgICAgIHZhciBkYXRhID0geyByZW1vdmVkSXRlbXM6IFt1aVNvdXJjZUNv
ZGVdLCBhZGRlZEl0ZW1zOiBbXSwgc2NyaXB0SWRzOiBbXSB9OworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlT
b3VyY2VDb2RlTGlzdENoYW5nZWQsIGRhdGEpOworICAgIH0sCisKKyAgICByZXNldDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlbW92ZWRVSVNvdXJjZUNvZGVzID0gdGhpcy5fcmVs
ZWFzZWRVSVNvdXJjZUNvZGVzKCk7CisgICAgICAgIHRoaXMuX3NuaXBwZXRGb3JTY3JpcHRJZCA9
IHt9OworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OworICAgICAg
ICB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CisgICAgICAgIHZhciBk
YXRhID0geyByZW1vdmVkSXRlbXM6IHJlbW92ZWRVSVNvdXJjZUNvZGVzLCBhZGRlZEl0ZW1zOiBb
XSwgc2NyaXB0SWRzOiBbXSB9OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZy5FdmVudHMuVUlTb3VyY2VDb2RlTGlzdENoYW5n
ZWQsIGRhdGEpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlNuaXBwZXRzU2NyaXB0TWFwcGlu
Zy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJvdG90
eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5T
dGF0aWNDb250ZW50UHJvdmlkZXJ9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TbmlwcGV0fSBz
bmlwcGV0CisgKi8KK1dlYkluc3BlY3Rvci5TbmlwcGV0Q29udGVudFByb3ZpZGVyID0gZnVuY3Rp
b24oc25pcHBldCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyLmNh
bGwodGhpcywgInRleHQvamF2YXNjcmlwdCIsIHNuaXBwZXQuY29udGVudCk7Cit9CisKK1dlYklu
c3BlY3Rvci5TbmlwcGV0Q29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZTsKKworLyoqCisgKiBAdHlw
ZSB7P1dlYkluc3BlY3Rvci5TbmlwcGV0c01vZGVsfQorICovCitXZWJJbnNwZWN0b3Iuc25pcHBl
dHNNb2RlbCA9IG51bGw7Cg==
</data>
<flag name="review"
          id="135243"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>