<?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>95443</bug_id>
          
          <creation_ts>2012-08-30 04:24:48 -0700</creation_ts>
          <short_desc>Web Inspector: [WebGL] Save gl.getError() status before taking a WebGL state snapshot and restore it afterwards</short_desc>
          <delta_ts>2012-09-04 04:29:32 -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>
          <dependson>95533</dependson>
          <blocked>95733</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>apavlov</cc>
    
    <cc>benvanik</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>708492</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-30 04:24:48 -0700</bug_when>
    <thetext>Patch to follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708528</commentid>
    <comment_count>1</comment_count>
      <attachid>161451</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-30 05:40:54 -0700</bug_when>
    <thetext>Created attachment 161451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708626</commentid>
    <comment_count>2</comment_count>
      <attachid>161451</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-30 08:06:28 -0700</bug_when>
    <thetext>Comment on attachment 161451
Patch

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

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:43
&gt; +    TypedArrayClasses: (function(typeNames) {

Why did this change?

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1529
&gt; +    var wrapFunctions = WebGLRenderingContextResource._WrapFunctions;

Can we make wrapFunctions changes in a separate patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709351</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-31 00:47:16 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1529
&gt; &gt; +    var wrapFunctions = WebGLRenderingContextResource._WrapFunctions;
&gt; 
&gt; Can we make wrapFunctions changes in a separate patch?

Moved this to https://bugs.webkit.org/show_bug.cgi?id=95533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709418</commentid>
    <comment_count>4</comment_count>
      <attachid>161644</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-31 02:29:45 -0700</bug_when>
    <thetext>Created attachment 161644
Rebased and reduced patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709480</commentid>
    <comment_count>5</comment_count>
      <attachid>161644</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-31 04:21:29 -0700</bug_when>
    <thetext>Comment on attachment 161644
Rebased and reduced patch

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

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:-1113
&gt; -            // FIXME: Call while(gl.getError() != gl.NO_ERROR) {...} to check if a particular parameter is supported.

Why did this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709503</commentid>
    <comment_count>6</comment_count>
      <attachid>161644</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-31 05:08:43 -0700</bug_when>
    <thetext>Comment on attachment 161644
Rebased and reduced patch

How can we test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709685</commentid>
    <comment_count>7</comment_count>
      <attachid>161712</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-31 09:06:36 -0700</bug_when>
    <thetext>Created attachment 161712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710711</commentid>
    <comment_count>8</comment_count>
      <attachid>161712</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-03 10:40:23 -0700</bug_when>
    <thetext>Comment on attachment 161712
Patch

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

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1123
&gt; +            Object.keys(this._customErrors).forEach(function(key) {

Please extract this function and give it a name.

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1124
&gt; +                var error = +key;

+key?

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1127
&gt; +            this._customErrors = null;

delete this._customErrors;

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1145
&gt; +            this._customErrors = null;

delete this._customErrors;

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1147
&gt; +            this._customErrors = Object.create(null);

this._customErrors = {};

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1174
&gt; +        this._customErrors = null;

delete this._customErrors;

&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:23
&gt; +    a.forEach(function(elm, index) {

elm -&gt; element

&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:77
&gt; +    errors.forEach(function(error) {

I don&apos;t think this one is needed, we should not verify WebGL spec here.

&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:129
&gt; +    InspectorTest.runTestSuite([

Why do you need runTestSuite?

&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:149
&gt; +&lt;p&gt;

Please add a link to the bug here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710714</commentid>
    <comment_count>9</comment_count>
      <attachid>161712</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-03 10:45:19 -0700</bug_when>
    <thetext>Comment on attachment 161712
Patch

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

&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:64
&gt; +    rawgl = glResource.wrappedObject();

rawGL

&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:74
&gt; +    errors.forEach(function(error) {

We prefer not to inline functions. Maybe extract generateWebGLErrors instead?

&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:135
&gt; +                InspectorTest.evaluateInConsole(&quot;createAndRunWebGLProgram()&quot;, step2);

I would replace step2 with next since you are just asserting that the function ended there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710872</commentid>
    <comment_count>10</comment_count>
      <attachid>161712</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-04 01:10:14 -0700</bug_when>
    <thetext>Comment on attachment 161712
Patch

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

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1123
&gt;&gt; +            Object.keys(this._customErrors).forEach(function(key) {
&gt; 
&gt; Please extract this function and give it a name.

Replaced with for..in loop

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1124
&gt;&gt; +                var error = +key;
&gt; 
&gt; +key?

var error = +key; // Convert to Number.

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1127
&gt;&gt; +            this._customErrors = null;
&gt; 
&gt; delete this._customErrors;

done

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1145
&gt;&gt; +            this._customErrors = null;
&gt; 
&gt; delete this._customErrors;

done

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1147
&gt;&gt; +            this._customErrors = Object.create(null);
&gt; 
&gt; this._customErrors = {};

done

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:1174
&gt;&gt; +        this._customErrors = null;
&gt; 
&gt; delete this._customErrors;

done

&gt;&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:23
&gt;&gt; +    a.forEach(function(elm, index) {
&gt; 
&gt; elm -&gt; element

done

&gt;&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:64
&gt;&gt; +    rawgl = glResource.wrappedObject();
&gt; 
&gt; rawGL

done

&gt;&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:74
&gt;&gt; +    errors.forEach(function(error) {
&gt; 
&gt; We prefer not to inline functions. Maybe extract generateWebGLErrors instead?

errors.forEach(generateWebGLError.bind(this, rawGL));

&gt;&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:77
&gt;&gt; +    errors.forEach(function(error) {
&gt; 
&gt; I don&apos;t think this one is needed, we should not verify WebGL spec here.

removed.

&gt;&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:129
&gt;&gt; +    InspectorTest.runTestSuite([
&gt; 
&gt; Why do you need runTestSuite?

removed

&gt;&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:135
&gt;&gt; +                InspectorTest.evaluateInConsole(&quot;createAndRunWebGLProgram()&quot;, step2);
&gt; 
&gt; I would replace step2 with next since you are just asserting that the function ended there.

I need to check the return value also (asynchronously) - this will mean there were no exceptions thrown.

&gt;&gt; LayoutTests/inspector/profiler/webgl/webgl-profiler-get-error.html:149
&gt;&gt; +&lt;p&gt;
&gt; 
&gt; Please add a link to the bug here.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710875</commentid>
    <comment_count>11</comment_count>
      <attachid>161984</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-04 01:12:49 -0700</bug_when>
    <thetext>Created attachment 161984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710893</commentid>
    <comment_count>12</comment_count>
      <attachid>161987</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-09-04 01:41:45 -0700</bug_when>
    <thetext>Created attachment 161987
+key -&gt; Number(key)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710917</commentid>
    <comment_count>13</comment_count>
      <attachid>161987</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 02:37:17 -0700</bug_when>
    <thetext>Comment on attachment 161987
+key -&gt; Number(key)

Clearing flags on attachment: 161987

Committed r127452: &lt;http://trac.webkit.org/changeset/127452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710918</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 02:37:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161451</attachid>
            <date>2012-08-30 05:40:54 -0700</date>
            <delta_ts>2012-08-31 02:29:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95443-20120830164042.patch</filename>
            <type>text/plain</type>
            <size>19231</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEwNTlhMmNiNjZmZWJl
NjZmNjY3NmI1ZTlhZWY2M2MxZmRlYjM4My4uZmFiNWU1NGQ1MDk4ZGM4ZDU4ZmRhYjU4ZWQwYjVj
ZjY4YmFiZGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTMwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gU2F2ZSBnbC5nZXRFcnJvcigpIHN0YXR1cyBiZWZvcmUgdGFraW5nIGEgV2Vi
R0wgc3RhdGUgc25hcHNob3QgYW5kIHJlc3RvcmUgaXQgYWZ0ZXJ3YXJkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYXZlIGdsLmdldEVycm9yKCkgc3Rh
dHVzIGJlZm9yZSB0YWtpbmcgdGhlIEdMIHNuYXBzaG90IGFuZCByZXN0b3JlIGl0IGFmdGVyd2Fy
ZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJj
ZS5qczoKKyAgICAgICAgKC4pOgorCiAyMDEyLTA4LTMwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBh
cm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgV2luQ0UgYWZ0ZXIgcjEy
Njk3NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFdlYkdMTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0V2ViR0xNb2R1bGVTb3VyY2UuanMKaW5kZXggMjRlMjk1Zjc1OTY5Y2ZjZGRiM2EwN2M4
ZjExZGVhNWNlNThmNTE2My4uODg0YTQ1MzVlMzYzMjEyMDZkMWU1ZDYwNTQ3ZDhlMDliMzc3NmNm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2Vi
R0xNb2R1bGVTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0V2ViR0xNb2R1bGVTb3VyY2UuanMKQEAgLTQwLDcgKzQwLDcgQEAgdmFyIFR5cGVVdGls
cyA9IHsKICAgICAgKiBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3R5cGVkYXJyYXkv
c3BlY3MvbGF0ZXN0LyM3CiAgICAgICogQHR5cGUge0FycmF5LjxGdW5jdGlvbj59CiAgICAgICov
Ci0gICAgdHlwZWRBcnJheUNsYXNzZXM6IChmdW5jdGlvbih0eXBlTmFtZXMpIHsKKyAgICBUeXBl
ZEFycmF5Q2xhc3NlczogKGZ1bmN0aW9uKHR5cGVOYW1lcykgewogICAgICAgICB2YXIgcmVzdWx0
ID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZU5hbWVzLmxlbmd0aDsgaSA8
IG47ICsraSkgewogICAgICAgICAgICAgaWYgKGluc3BlY3RlZFdpbmRvd1t0eXBlTmFtZXNbaV1d
KQpAQCAtNTUsNyArNTUsNyBAQCB2YXIgVHlwZVV0aWxzID0gewogICAgICAqLwogICAgIHR5cGVk
QXJyYXlDbGFzczogZnVuY3Rpb24oYXJyYXkpCiAgICAgewotICAgICAgICB2YXIgY2xhc3NlcyA9
IFR5cGVVdGlscy50eXBlZEFycmF5Q2xhc3NlczsKKyAgICAgICAgdmFyIGNsYXNzZXMgPSBUeXBl
VXRpbHMuVHlwZWRBcnJheUNsYXNzZXM7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gY2xh
c3Nlcy5sZW5ndGg7IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgIGlmIChhcnJheSBpbnN0YW5j
ZW9mIGNsYXNzZXNbaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzZXNbaV07CkBAIC05
Myw3ICs5Myw3IEBAIHZhciBUeXBlVXRpbHMgPSB7CiAKICAgICAgICAgaWYgKG9iaiBpbnN0YW5j
ZW9mIEhUTUxDYW52YXNFbGVtZW50KSB7CiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqLmNs
b25lTm9kZSh0cnVlKTsKLSAgICAgICAgICAgIHZhciBjb250ZXh0ID0gcmVzdWx0LmdldENvbnRl
eHQoIjJkIik7CisgICAgICAgICAgICB2YXIgY29udGV4dCA9IFJlc291cmNlLndyYXBwZWRPYmpl
Y3QocmVzdWx0LmdldENvbnRleHQoIjJkIikpOwogICAgICAgICAgICAgY29udGV4dC5kcmF3SW1h
Z2Uob2JqLCAwLCAwKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAg
LTEyMSwxNCArMTIxLDExIEBAIHZhciBUeXBlVXRpbHMgPSB7CiAgICAgICovCiAgICAgX2R1bW15
Q2FudmFzMmRDb250ZXh0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dCA9
IFR5cGVVdGlscy5fZHVtbXlDYW52YXMyZENvbnRleHQ7CisgICAgICAgIHZhciBjb250ZXh0ID0g
VHlwZVV0aWxzLl9kdW1teUNhbnZhczJkQ29udGV4dEluc3RhbmNlOwogICAgICAgICBpZiAoIWNv
bnRleHQpIHsKICAgICAgICAgICAgIHZhciBjYW52YXMgPSBpbnNwZWN0ZWRXaW5kb3cuZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgICAgICAgICBjb250ZXh0ID0gY2FudmFz
LmdldENvbnRleHQoIjJkIik7Ci0gICAgICAgICAgICB2YXIgY29udGV4dFJlc291cmNlID0gUmVz
b3VyY2UuZm9yT2JqZWN0KGNvbnRleHQpOwotICAgICAgICAgICAgaWYgKGNvbnRleHRSZXNvdXJj
ZSkKLSAgICAgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dFJlc291cmNlLndyYXBwZWRPYmpl
Y3QoKTsKLSAgICAgICAgICAgIFR5cGVVdGlscy5fZHVtbXlDYW52YXMyZENvbnRleHQgPSBjb250
ZXh0OworICAgICAgICAgICAgY29udGV4dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEfSAqLyBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KGNhbnZhcy5nZXRDb250ZXh0KCIyZCIp
KTsKKyAgICAgICAgICAgIFR5cGVVdGlscy5fZHVtbXlDYW52YXMyZENvbnRleHRJbnN0YW5jZSA9
IGNvbnRleHQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICAgfQpAQCAt
MjM1LDYgKzIzMiwxNCBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc3VsdDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSByZXN1bHQKKyAg
ICAgKi8KKyAgICBzZXRSZXN1bHQ6IGZ1bmN0aW9uKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3Jlc3VsdCA9IHJlc3VsdDsKKyAgICB9LAorCiAgICAgZnJlZXplOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fZnJlZXplZCkKQEAgLTM4NCw2ICszODksMTYgQEAgUmVz
b3VyY2UuZm9yT2JqZWN0ID0gZnVuY3Rpb24ob2JqKQogCiAvKioKICAqIEBwYXJhbSB7UmVzb3Vy
Y2V8Kn0gb2JqCisgKiBAcmV0dXJuIHsqfQorICovCitSZXNvdXJjZS53cmFwcGVkT2JqZWN0ID0g
ZnVuY3Rpb24ob2JqKQoreworICAgIHZhciByZXNvdXJjZSA9IFJlc291cmNlLmZvck9iamVjdChv
YmopOworICAgIHJldHVybiByZXNvdXJjZSA/IHJlc291cmNlLndyYXBwZWRPYmplY3QoKSA6IG9i
ajsKK30KKworLyoqCisgKiBAcGFyYW0ge1Jlc291cmNlfCp9IG9iagogICogQHBhcmFtIHtDYWNo
ZX0gY2FjaGUKICAqIEByZXR1cm4ge1JlcGxheWFibGVSZXNvdXJjZXwqfQogICovCkBAIC03NjYs
OSArNzgxLDEyIEBAIFdlYkdMUHJvZ3JhbVJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICBfcG9wdWxhdGVSZXBsYXlhYmxlRGF0YTogZnVuY3Rpb24oZGF0YSwgY2FjaGUpCiAgICAg
ewotICAgICAgICB2YXIgZ2wgPSBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5mb3JPYmpl
Y3QodGhpcykud3JhcHBlZE9iamVjdCgpOworICAgICAgICB2YXIgZ2xSZXNvdXJjZSA9IFdlYkdM
UmVuZGVyaW5nQ29udGV4dFJlc291cmNlLmZvck9iamVjdCh0aGlzKTsKKyAgICAgICAgdmFyIGds
ID0gZ2xSZXNvdXJjZS53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIHZhciBwcm9ncmFtID0gdGhp
cy53cmFwcGVkT2JqZWN0KCk7CiAKKyAgICAgICAgdmFyIG9yaWdpbmFsRXJyb3JzID0gZ2xSZXNv
dXJjZS5nZXRBbGxFcnJvcnMoKTsKKwogICAgICAgICB2YXIgdW5pZm9ybXMgPSBbXTsKICAgICAg
ICAgdmFyIHVuaWZvcm1zQ291bnQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGds
LkFDVElWRV9VTklGT1JNUyk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5pZm9ybXND
b3VudDsgKytpKSB7CkBAIC03ODYsNiArODA0LDggQEAgV2ViR0xQcm9ncmFtUmVzb3VyY2UucHJv
dG90eXBlID0gewogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgZGF0YS51bmlm
b3JtcyA9IHVuaWZvcm1zOworCisgICAgICAgIGdsUmVzb3VyY2UucmVzdG9yZUVycm9ycyhvcmln
aW5hbEVycm9ycyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtOTcxLDggKzk5MSwxMCBAQCBXZWJH
TFJlbmRlcmJ1ZmZlclJlc291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJHTEJvdW5kUmVz
b3VyY2UucHJvdG90eXBlOwogZnVuY3Rpb24gV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2Uo
Z2xDb250ZXh0LCByZXBsYXlDb250ZXh0Q2FsbGJhY2spCiB7CiAgICAgUmVzb3VyY2UuY2FsbCh0
aGlzLCBnbENvbnRleHQpOwotICAgIHRoaXMuX3Byb3h5T2JqZWN0ID0gbnVsbDsKICAgICB0aGlz
Ll9yZXBsYXlDb250ZXh0Q2FsbGJhY2sgPSByZXBsYXlDb250ZXh0Q2FsbGJhY2s7CisgICAgdGhp
cy5fcHJveHlPYmplY3QgPSBudWxsOworICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxudW1iZXIsIGJv
b2xlYW4+fSAqLworICAgIHRoaXMuX2N1c3RvbUVycm9ycyA9IG51bGw7CiB9CiAKIC8qKgpAQCAt
MTA4Nyw2ICsxMTA5LDc5IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPG51bWJlcj59
CisgICAgICovCisgICAgZ2V0QWxsRXJyb3JzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgZXJyb3JzID0gW107CisgICAgICAgIHZhciBnbCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOwor
ICAgICAgICBpZiAoZ2wpIHsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJy
b3IgPT09IGdsLk5PX0VSUk9SKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB0aGlzLmNsZWFyRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAgIGVycm9ycy5w
dXNoKGVycm9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5f
Y3VzdG9tRXJyb3JzKSB7CisgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jdXN0b21FcnJv
cnMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CisgICAgICAgICAgICAgICAgdmFyIGVycm9yID0g
K2tleTsKKyAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnJvcik7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVycm9ycyA9IG51bGw7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGVycm9yczsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtB
cnJheS48bnVtYmVyPn0gZXJyb3JzCisgICAgICovCisgICAgcmVzdG9yZUVycm9yczogZnVuY3Rp
b24oZXJyb3JzKQorICAgIHsKKyAgICAgICAgdmFyIGdsID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7
CisgICAgICAgIGlmIChnbCkgeworICAgICAgICAgICAgdmFyIHdhc0Vycm9yID0gZmFsc2U7Cisg
ICAgICAgICAgICB3aGlsZSAoZ2wuZ2V0RXJyb3IoKSAhPT0gZ2wuTk9fRVJST1IpCisgICAgICAg
ICAgICAgICAgd2FzRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXdh
c0Vycm9yLCAiRXJyb3Iocykgd2hpbGUgY2FwdHVyaW5nIGN1cnJlbnQgV2ViR0wgc3RhdGUuIik7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFlcnJvcnMubGVuZ3RoKQorICAgICAgICAgICAgdGhp
cy5fY3VzdG9tRXJyb3JzID0gbnVsbDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlz
Ll9jdXN0b21FcnJvcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIG4gPSBlcnJvcnMubGVuZ3RoOyBpIDwgbjsgKytpKQorICAgICAgICAgICAgICAg
IHRoaXMuX2N1c3RvbUVycm9yc1tlcnJvcnNbaV1dID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3IKKyAgICAgKi8KKyAgICBj
bGVhckVycm9yOiBmdW5jdGlvbihlcnJvcikKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jdXN0
b21FcnJvcnMpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VzdG9tRXJyb3JzW2Vycm9yXTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAg
IG5leHRFcnJvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2N1c3RvbUVy
cm9ycykgeworICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX2N1c3RvbUVycm9ycykg
eworICAgICAgICAgICAgICAgIHZhciBlcnJvciA9ICtrZXk7CisgICAgICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuX2N1c3RvbUVycm9yc1tlcnJvcl07CisgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMuX2N1c3RvbUVycm9y
cyA9IG51bGw7CisgICAgICAgIHZhciBnbCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOworICAgICAg
ICByZXR1cm4gZ2wgPyBnbC5OT19FUlJPUiA6IDA7CisgICAgfSwKKworICAgIC8qKgogICAgICAq
IEBvdmVycmlkZQogICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhCiAgICAgICogQHBhcmFtIHtD
YWNoZX0gY2FjaGUKQEAgLTEwOTYsNyArMTE5MSw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJl
c291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGdsID0gdGhpcy53cmFwcGVkT2JqZWN0
KCk7CiAgICAgICAgIGRhdGEucmVwbGF5Q29udGV4dENhbGxiYWNrID0gdGhpcy5fcmVwbGF5Q29u
dGV4dENhbGxiYWNrOwogCi0gICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoZSBnZXRFcnJvcigpIHN0
YXR1cyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0YWtpbmcgdGhlIEdMIHN0YXRlIHNuYXBzaG90Lgor
ICAgICAgICB2YXIgb3JpZ2luYWxFcnJvcnMgPSB0aGlzLmdldEFsbEVycm9ycygpOwogCiAgICAg
ICAgIC8vIFRha2UgYSBmdWxsIEdMIHN0YXRlIHNuYXBzaG90LgogICAgICAgICB2YXIgZ2xTdGF0
ZSA9IHt9OwpAQCAtMTEwNSw3ICsxMjAwLDYgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3Vy
Y2UucHJvdG90eXBlID0gewogICAgICAgICB9KTsKICAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0UmVzb3VyY2UuU3RhdGVQYXJhbWV0ZXJzLmZvckVhY2goZnVuY3Rpb24ocGFyYW1ldGVyKSB7
CiAgICAgICAgICAgICBnbFN0YXRlW3BhcmFtZXRlcl0gPSBSZXNvdXJjZS50b1JlcGxheWFibGUo
Z2wuZ2V0UGFyYW1ldGVyKGdsW3BhcmFtZXRlcl0pLCBjYWNoZSk7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogQ2FsbCB3aGlsZShnbC5nZXRFcnJvcigpICE9IGdsLk5PX0VSUk9SKSB7Li4ufSB0byBj
aGVjayBpZiBhIHBhcnRpY3VsYXIgcGFyYW1ldGVyIGlzIHN1cHBvcnRlZC4KICAgICAgICAgfSk7
CiAKICAgICAgICAgLy8gVkVSVEVYX0FUVFJJQl9BUlJBWVMKQEAgLTExMzgsNiArMTIzMiw4IEBA
IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgZ2wu
YWN0aXZlVGV4dHVyZShjdXJyZW50VGV4dHVyZUJpbmRpbmcpOwogCiAgICAgICAgIGRhdGEuZ2xT
dGF0ZSA9IGdsU3RhdGU7CisKKyAgICAgICAgdGhpcy5yZXN0b3JlRXJyb3JzKG9yaWdpbmFsRXJy
b3JzKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xMTQ3LDEyICsxMjQzLDExIEBAIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfZG9SZXBs
YXlDYWxsczogZnVuY3Rpb24oZGF0YSwgY2FjaGUpCiAgICAgewotICAgICAgICB0aGlzLl9wcm94
eU9iamVjdCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjayA9IGRh
dGEucmVwbGF5Q29udGV4dENhbGxiYWNrOworICAgICAgICB0aGlzLl9wcm94eU9iamVjdCA9IG51
bGw7CisgICAgICAgIHRoaXMuX2N1c3RvbUVycm9ycyA9IG51bGw7CiAKLSAgICAgICAgdmFyIGNv
bnRleHQgPSB0aGlzLl9yZXBsYXlDb250ZXh0Q2FsbGJhY2soKTsKLSAgICAgICAgdmFyIGNvbnRl
eHRSZXNvdXJjZSA9IFJlc291cmNlLmZvck9iamVjdChjb250ZXh0KTsKLSAgICAgICAgdmFyIGds
ID0gY29udGV4dFJlc291cmNlID8gY29udGV4dFJlc291cmNlLndyYXBwZWRPYmplY3QoKSA6IGNv
bnRleHQ7CisgICAgICAgIHZhciBnbCA9IFJlc291cmNlLndyYXBwZWRPYmplY3QodGhpcy5fcmVw
bGF5Q29udGV4dENhbGxiYWNrKCkpOwogICAgICAgICB0aGlzLnNldFdyYXBwZWRPYmplY3QoZ2wp
OwogCiAgICAgICAgIHZhciBnbFN0YXRlID0gZGF0YS5nbFN0YXRlOwpAQCAtMTI5MSwzNiArMTM4
NiwzOCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAg
ICovCiAgICAgX3dyYXBPYmplY3Q6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBnbENv
bnRleHQgPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKLSAgICAgICAgdmFyIHByb3h5ID0gT2JqZWN0
LmNyZWF0ZShnbENvbnRleHQuX19wcm90b19fKTsgLy8gSW4gb3JkZXIgdG8gZW11bGF0ZSAiaW5z
dGFuY2VvZiIuCisgICAgICAgIHZhciBnbCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOworICAgICAg
ICB2YXIgcHJveHkgPSBPYmplY3QuY3JlYXRlKGdsLl9fcHJvdG9fXyk7IC8vIEluIG9yZGVyIHRv
IGVtdWxhdGUgImluc3RhbmNlb2YiLgogCiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAg
ICAgdmFyIGN1c3RvbVdyYXBGdW5jdGlvbnMgPSBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJj
ZS53cmFwRnVuY3Rpb25zKCk7CiAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9w
ZXJ0eSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHR5cGVvZiBnbENvbnRleHRbcHJvcGVy
dHldID09PSAiZnVuY3Rpb24iKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGN1c3RvbVdyYXBGdW5j
dGlvbiA9IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5jdGlvbnNbcHJvcGVy
dHldOworICAgICAgICAgICAgaWYgKHR5cGVvZiBnbFtwcm9wZXJ0eV0gPT09ICJmdW5jdGlvbiIp
IHsKKyAgICAgICAgICAgICAgICB2YXIgY3VzdG9tV3JhcEZ1bmN0aW9uID0gY3VzdG9tV3JhcEZ1
bmN0aW9uc1twcm9wZXJ0eV07CiAgICAgICAgICAgICAgICAgaWYgKGN1c3RvbVdyYXBGdW5jdGlv
bikKLSAgICAgICAgICAgICAgICAgICAgcHJveHlbcHJvcGVydHldID0gc2VsZi5fd3JhcEN1c3Rv
bUZ1bmN0aW9uKHNlbGYsIGdsQ29udGV4dCwgZ2xDb250ZXh0W3Byb3BlcnR5XSwgcHJvcGVydHks
IGN1c3RvbVdyYXBGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgICAgIHByb3h5W3Byb3BlcnR5
XSA9IHNlbGYuX3dyYXBDdXN0b21GdW5jdGlvbihzZWxmLCBnbCwgZ2xbcHJvcGVydHldLCBwcm9w
ZXJ0eSwgY3VzdG9tV3JhcEZ1bmN0aW9uKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHByb3h5W3Byb3BlcnR5XSA9IHNlbGYuX3dyYXBGdW5jdGlvbihzZWxmLCBn
bENvbnRleHQsIGdsQ29udGV4dFtwcm9wZXJ0eV0sIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAg
ICAgICAgcHJveHlbcHJvcGVydHldID0gc2VsZi5fd3JhcEZ1bmN0aW9uKHNlbGYsIGdsLCBnbFtw
cm9wZXJ0eV0sIHByb3BlcnR5KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoL15bQS1aMC05X10r
JC8udGVzdChwcm9wZXJ0eSkpIHsKICAgICAgICAgICAgICAgICAvLyBGYXN0IGFjY2VzcyB0byBl
bnVtcyBhbmQgY29uc3RhbnRzLgotICAgICAgICAgICAgICAgIHByb3h5W3Byb3BlcnR5XSA9IGds
Q29udGV4dFtwcm9wZXJ0eV07CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9m
IGdsW3Byb3BlcnR5XSA9PT0gIm51bWJlciIsICJFeHBlY3RlZCBhIG51bWJlciBmb3IgcHJvcGVy
dHkgIiArIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBwcm94eVtwcm9wZXJ0eV0gPSBnbFtw
cm9wZXJ0eV07CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShwcm94eSwgcHJvcGVydHksIHsKICAgICAgICAgICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBnbENvbnRleHRbcHJvcGVydHldOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdsW3Byb3BlcnR5XTsKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAg
ICAgICAgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xDb250ZXh0W3Byb3BlcnR5XSA9IHZhbHVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xbcHJvcGVydHldID0gdmFsdWU7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIGZvciAodmFyIHByb3BlcnR5IGluIGdsQ29udGV4dCkKKyAgICAgICAgZm9yICh2YXIg
cHJvcGVydHkgaW4gZ2wpCiAgICAgICAgICAgICBwcm9jZXNzUHJvcGVydHkocHJvcGVydHkpOwog
CiAgICAgICAgIHJldHVybiBwcm94eTsKQEAgLTEzMzIsNyArMTQyOSw3IEBAIFdlYkdMUmVuZGVy
aW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBvcmlnaW5hbEZ1bmN0aW9uCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZ1bmN0aW9uTmFtZQog
ICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbVdyYXBGdW5jdGlvbgotICAgICAqIEByZXR1
cm4geyp9CisgICAgICogQHJldHVybiB7RnVuY3Rpb259CiAgICAgICovCiAgICAgX3dyYXBDdXN0
b21GdW5jdGlvbjogZnVuY3Rpb24ocmVzb3VyY2UsIG9yaWdpbmFsT2JqZWN0LCBvcmlnaW5hbEZ1
bmN0aW9uLCBmdW5jdGlvbk5hbWUsIGN1c3RvbVdyYXBGdW5jdGlvbikKICAgICB7CkBAIC0xMzU0
LDcgKzE0NTEsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHR9IG9yaWdpbmFsT2JqZWN0CiAg
ICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3JpZ2luYWxGdW5jdGlvbgogICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBmdW5jdGlvbk5hbWUKLSAgICAgKiBAcmV0dXJuIHsqfQorICAgICAqIEByZXR1cm4g
e0Z1bmN0aW9ufQogICAgICAqLwogICAgIF93cmFwRnVuY3Rpb246IGZ1bmN0aW9uKHJlc291cmNl
LCBvcmlnaW5hbE9iamVjdCwgb3JpZ2luYWxGdW5jdGlvbiwgZnVuY3Rpb25OYW1lKQogICAgIHsK
QEAgLTE0MTEsODEgKzE1MDgsMTE1IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldy
YXBGdW5jdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fY2FsbCkKICAgICAg
ICAgICAgIHRoaXMuX2NhbGwgPSBuZXcgQ2FsbCh0aGlzLl9nbFJlc291cmNlLCB0aGlzLl9mdW5j
dGlvbk5hbWUsIHRoaXMuX2FyZ3MsIHRoaXMucmVzdWx0KCkpOwogICAgICAgICByZXR1cm4gdGhp
cy5fY2FsbDsKLSAgICB9Ci19Ci0KLVdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBG
dW5jdGlvbnMgPSB7Ci0gICAgX19wcm90b19fOiBudWxsCi19CisgICAgfSwKIAotLyoqCi0gKiBA
cGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZQotICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb3VyY2VD
b25zdHJ1Y3RvcgotICovCi1mdW5jdGlvbiBjcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbihtZXRo
b2ROYW1lLCByZXNvdXJjZUNvbnN0cnVjdG9yKQotewotICAgIC8qKiBAdGhpcyBXZWJHTFJlbmRl
cmluZ0NvbnRleHRSZXNvdXJjZS5XcmFwRnVuY3Rpb24gKi8KLSAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRSZXNvdXJjZS5XcmFwRnVuY3Rpb25zW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKQorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7Kn0gcmVzdWx0CisgICAgICovCisgICAgX292ZXJyaWRlUmVz
dWx0OiBmdW5jdGlvbihyZXN1bHQpCiAgICAgewotICAgICAgICB2YXIgd3JhcHBlZE9iamVjdCA9
IHRoaXMucmVzdWx0KCk7Ci0gICAgICAgIGlmICghd3JhcHBlZE9iamVjdCkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IHJlc291cmNlQ29uc3RydWN0b3Io
d3JhcHBlZE9iamVjdCk7Ci0gICAgICAgIHZhciBtYW5hZ2VyID0gdGhpcy5fZ2xSZXNvdXJjZS5t
YW5hZ2VyKCk7Ci0gICAgICAgIGlmIChtYW5hZ2VyKQotICAgICAgICAgICAgbWFuYWdlci5yZWdp
c3RlclJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgcmVzb3VyY2UucHVzaENhbGwodGhpcy5j
YWxsKCkpOworICAgICAgICB2YXIgY2FsbCA9IHRoaXMuY2FsbCgpOworICAgICAgICBjYWxsLnNl
dFJlc3VsdChyZXN1bHQpOworICAgICAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7CiAgICAgfQog
fQotY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24oImNyZWF0ZUJ1ZmZlciIsIFdlYkdMQnVmZmVy
UmVzb3VyY2UpOwotY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24oImNyZWF0ZVNoYWRlciIsIFdl
YkdMU2hhZGVyUmVzb3VyY2UpOwotY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24oImNyZWF0ZVBy
b2dyYW0iLCBXZWJHTFByb2dyYW1SZXNvdXJjZSk7Ci1jcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlv
bigiY3JlYXRlVGV4dHVyZSIsIFdlYkdMVGV4dHVyZVJlc291cmNlKTsKLWNyZWF0ZVJlc291cmNl
V3JhcEZ1bmN0aW9uKCJjcmVhdGVGcmFtZWJ1ZmZlciIsIFdlYkdMRnJhbWVidWZmZXJSZXNvdXJj
ZSk7Ci1jcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlUmVuZGVyYnVmZmVyIiwgV2Vi
R0xSZW5kZXJidWZmZXJSZXNvdXJjZSk7Ci1jcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiZ2V0
VW5pZm9ybUxvY2F0aW9uIiwgUmVzb3VyY2UpOwogCiAvKioKLSAqIEBwYXJhbSB7c3RyaW5nfSBt
ZXRob2ROYW1lCisgKiBAcmV0dXJuIHtPYmplY3QuPHN0cmluZywgRnVuY3Rpb24+fQogICovCi1m
dW5jdGlvbiBjdXN0b21XcmFwRnVuY3Rpb24obWV0aG9kTmFtZSkKK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dFJlc291cmNlLndyYXBGdW5jdGlvbnMgPSBmdW5jdGlvbigpCiB7Ci0gICAgdmFyIGN1c3Rv
bVB1c2hDYWxsID0gInB1c2hDYWxsXyIgKyBtZXRob2ROYW1lOwotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7T2JqZWN0fG51bWJlcn0gdGFyZ2V0Ci0gICAgICogQHRoaXMgV2ViR0xSZW5kZXJpbmdD
b250ZXh0UmVzb3VyY2UuV3JhcEZ1bmN0aW9uCi0gICAgICovCi0gICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0UmVzb3VyY2UuV3JhcEZ1bmN0aW9uc1ttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKHRhcmdl
dCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2dsUmVzb3VyY2UuY3VycmVu
dEJpbmRpbmcodGFyZ2V0KTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgaWYgKHJlc291cmNlW2N1c3RvbVB1c2hDYWxsXSkKLSAgICAgICAgICAg
IHJlc291cmNlW2N1c3RvbVB1c2hDYWxsXS5jYWxsKHJlc291cmNlLCB0aGlzLmNhbGwoKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc291cmNlLnB1c2hDYWxsKHRoaXMuY2FsbCgpKTsK
KyAgICB2YXIgd3JhcEZ1bmN0aW9ucyA9IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLl9X
cmFwRnVuY3Rpb25zOworICAgIGlmICghd3JhcEZ1bmN0aW9ucykgeworICAgICAgICB3cmFwRnVu
Y3Rpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKworICAgICAgICAvKioKKyAgICAgICAgICog
QHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUKKyAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0g
cmVzb3VyY2VDb25zdHJ1Y3RvcgorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY3JlYXRl
UmVzb3VyY2VXcmFwRnVuY3Rpb24obWV0aG9kTmFtZSwgcmVzb3VyY2VDb25zdHJ1Y3RvcikKKyAg
ICAgICAgeworICAgICAgICAgICAgLyoqIEB0aGlzIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291
cmNlLldyYXBGdW5jdGlvbiAqLworICAgICAgICAgICAgd3JhcEZ1bmN0aW9uc1ttZXRob2ROYW1l
XSA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgd3JhcHBl
ZE9iamVjdCA9IHRoaXMucmVzdWx0KCk7CisgICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVkT2Jq
ZWN0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdmFyIHJl
c291cmNlID0gbmV3IHJlc291cmNlQ29uc3RydWN0b3Iod3JhcHBlZE9iamVjdCk7CisgICAgICAg
ICAgICAgICAgdmFyIG1hbmFnZXIgPSB0aGlzLl9nbFJlc291cmNlLm1hbmFnZXIoKTsKKyAgICAg
ICAgICAgICAgICBpZiAobWFuYWdlcikKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5yZWdp
c3RlclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5wdXNoQ2Fs
bCh0aGlzLmNhbGwoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY3JlYXRl
UmVzb3VyY2VXcmFwRnVuY3Rpb24oImNyZWF0ZUJ1ZmZlciIsIFdlYkdMQnVmZmVyUmVzb3VyY2Up
OworICAgICAgICBjcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlU2hhZGVyIiwgV2Vi
R0xTaGFkZXJSZXNvdXJjZSk7CisgICAgICAgIGNyZWF0ZVJlc291cmNlV3JhcEZ1bmN0aW9uKCJj
cmVhdGVQcm9ncmFtIiwgV2ViR0xQcm9ncmFtUmVzb3VyY2UpOworICAgICAgICBjcmVhdGVSZXNv
dXJjZVdyYXBGdW5jdGlvbigiY3JlYXRlVGV4dHVyZSIsIFdlYkdMVGV4dHVyZVJlc291cmNlKTsK
KyAgICAgICAgY3JlYXRlUmVzb3VyY2VXcmFwRnVuY3Rpb24oImNyZWF0ZUZyYW1lYnVmZmVyIiwg
V2ViR0xGcmFtZWJ1ZmZlclJlc291cmNlKTsKKyAgICAgICAgY3JlYXRlUmVzb3VyY2VXcmFwRnVu
Y3Rpb24oImNyZWF0ZVJlbmRlcmJ1ZmZlciIsIFdlYkdMUmVuZGVyYnVmZmVyUmVzb3VyY2UpOwor
ICAgICAgICBjcmVhdGVSZXNvdXJjZVdyYXBGdW5jdGlvbigiZ2V0VW5pZm9ybUxvY2F0aW9uIiwg
UmVzb3VyY2UpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0
aG9kTmFtZQorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY3VzdG9tV3JhcEZ1bmN0aW9u
KG1ldGhvZE5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBjdXN0b21QdXNoQ2FsbCA9
ICJwdXNoQ2FsbF8iICsgbWV0aG9kTmFtZTsKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAg
ICogQHBhcmFtIHtPYmplY3R8bnVtYmVyfSB0YXJnZXQKKyAgICAgICAgICAgICAqIEB0aGlzIFdl
YkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5jdGlvbgorICAgICAgICAgICAgICov
CisgICAgICAgICAgICB3cmFwRnVuY3Rpb25zW21ldGhvZE5hbWVdID0gZnVuY3Rpb24odGFyZ2V0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2ds
UmVzb3VyY2UuY3VycmVudEJpbmRpbmcodGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoIXJl
c291cmNlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgaWYg
KHJlc291cmNlW2N1c3RvbVB1c2hDYWxsXSkKKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vb
Y3VzdG9tUHVzaENhbGxdLmNhbGwocmVzb3VyY2UsIHRoaXMuY2FsbCgpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlLnB1c2hDYWxsKHRoaXMuY2Fs
bCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjdXN0b21XcmFwRnVuY3Rp
b24oImF0dGFjaFNoYWRlciIpOworICAgICAgICBjdXN0b21XcmFwRnVuY3Rpb24oImJpbmRBdHRy
aWJMb2NhdGlvbiIpOworICAgICAgICBjdXN0b21XcmFwRnVuY3Rpb24oImNvbXBpbGVTaGFkZXIi
KTsKKyAgICAgICAgY3VzdG9tV3JhcEZ1bmN0aW9uKCJkZXRhY2hTaGFkZXIiKTsKKyAgICAgICAg
Y3VzdG9tV3JhcEZ1bmN0aW9uKCJsaW5rUHJvZ3JhbSIpOworICAgICAgICBjdXN0b21XcmFwRnVu
Y3Rpb24oInNoYWRlclNvdXJjZSIpOworICAgICAgICBjdXN0b21XcmFwRnVuY3Rpb24oImJ1ZmZl
ckRhdGEiKTsKKyAgICAgICAgY3VzdG9tV3JhcEZ1bmN0aW9uKCJidWZmZXJTdWJEYXRhIik7Cisg
ICAgICAgIGN1c3RvbVdyYXBGdW5jdGlvbigiY29tcHJlc3NlZFRleEltYWdlMkQiKTsKKyAgICAg
ICAgY3VzdG9tV3JhcEZ1bmN0aW9uKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIpOworICAgICAg
ICBjdXN0b21XcmFwRnVuY3Rpb24oImNvcHlUZXhJbWFnZTJEIik7CisgICAgICAgIGN1c3RvbVdy
YXBGdW5jdGlvbigiY29weVRleFN1YkltYWdlMkQiKTsKKyAgICAgICAgY3VzdG9tV3JhcEZ1bmN0
aW9uKCJnZW5lcmF0ZU1pcG1hcCIpOworICAgICAgICBjdXN0b21XcmFwRnVuY3Rpb24oInRleElt
YWdlMkQiKTsKKyAgICAgICAgY3VzdG9tV3JhcEZ1bmN0aW9uKCJ0ZXhTdWJJbWFnZTJEIik7Cisg
ICAgICAgIGN1c3RvbVdyYXBGdW5jdGlvbigidGV4UGFyYW1ldGVyZiIpOworICAgICAgICBjdXN0
b21XcmFwRnVuY3Rpb24oInRleFBhcmFtZXRlcmkiKTsKKyAgICAgICAgY3VzdG9tV3JhcEZ1bmN0
aW9uKCJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIpOworICAgICAgICBjdXN0b21XcmFwRnVuY3Rp
b24oImZyYW1lYnVmZmVyVGV4dHVyZTJEIik7CisgICAgICAgIGN1c3RvbVdyYXBGdW5jdGlvbigi
cmVuZGVyYnVmZmVyU3RvcmFnZSIpOworCisgICAgICAgIC8qKiBAdGhpcyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRSZXNvdXJjZS5XcmFwRnVuY3Rpb24gKi8KKyAgICAgICAgd3JhcEZ1bmN0aW9uc1si
Z2V0RXJyb3IiXSA9IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGdsID0g
dGhpcy5fb3JpZ2luYWxPYmplY3Q7CisgICAgICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLnJlc3Vs
dCgpOworICAgICAgICAgICAgaWYgKGVycm9yICE9PSBnbC5OT19FUlJPUikKKyAgICAgICAgICAg
ICAgICB0aGlzLl9nbFJlc291cmNlLmNsZWFyRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSB0aGlzLl9nbFJlc291cmNlLm5leHRFcnJvcigp
OworICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX292ZXJyaWRlUmVzdWx0KGVycm9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLl9XcmFwRnVu
Y3Rpb25zID0gd3JhcEZ1bmN0aW9uczsKICAgICB9CisgICAgcmV0dXJuIHdyYXBGdW5jdGlvbnM7
CiB9Ci1jdXN0b21XcmFwRnVuY3Rpb24oImF0dGFjaFNoYWRlciIpOwotY3VzdG9tV3JhcEZ1bmN0
aW9uKCJiaW5kQXR0cmliTG9jYXRpb24iKTsKLWN1c3RvbVdyYXBGdW5jdGlvbigiY29tcGlsZVNo
YWRlciIpOwotY3VzdG9tV3JhcEZ1bmN0aW9uKCJkZXRhY2hTaGFkZXIiKTsKLWN1c3RvbVdyYXBG
dW5jdGlvbigibGlua1Byb2dyYW0iKTsKLWN1c3RvbVdyYXBGdW5jdGlvbigic2hhZGVyU291cmNl
Iik7Ci1jdXN0b21XcmFwRnVuY3Rpb24oImJ1ZmZlckRhdGEiKTsKLWN1c3RvbVdyYXBGdW5jdGlv
bigiYnVmZmVyU3ViRGF0YSIpOwotY3VzdG9tV3JhcEZ1bmN0aW9uKCJjb21wcmVzc2VkVGV4SW1h
Z2UyRCIpOwotY3VzdG9tV3JhcEZ1bmN0aW9uKCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIpOwot
Y3VzdG9tV3JhcEZ1bmN0aW9uKCJjb3B5VGV4SW1hZ2UyRCIpOwotY3VzdG9tV3JhcEZ1bmN0aW9u
KCJjb3B5VGV4U3ViSW1hZ2UyRCIpOwotY3VzdG9tV3JhcEZ1bmN0aW9uKCJnZW5lcmF0ZU1pcG1h
cCIpOwotY3VzdG9tV3JhcEZ1bmN0aW9uKCJ0ZXhJbWFnZTJEIik7Ci1jdXN0b21XcmFwRnVuY3Rp
b24oInRleFN1YkltYWdlMkQiKTsKLWN1c3RvbVdyYXBGdW5jdGlvbigidGV4UGFyYW1ldGVyZiIp
OwotY3VzdG9tV3JhcEZ1bmN0aW9uKCJ0ZXhQYXJhbWV0ZXJpIik7Ci1jdXN0b21XcmFwRnVuY3Rp
b24oImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIik7Ci1jdXN0b21XcmFwRnVuY3Rpb24oImZyYW1l
YnVmZmVyVGV4dHVyZTJEIik7Ci1jdXN0b21XcmFwRnVuY3Rpb24oInJlbmRlcmJ1ZmZlclN0b3Jh
Z2UiKTsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKQEAgLTE4MDgsNyArMTkzOSw3IEBAIEluamVj
dGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBjYW52YXMgPSBvcmlnaW5h
bEdsQ29udGV4dC5jYW52YXMuY2xvbmVOb2RlKHRydWUpOwogICAgICAgICAgICAgLy8gRklYTUU6
IFBhc3Mgb3JpZ2luYWwgY29udGV4dCBpZCBpbnN0ZWFkIG9mICJleHBlcmltZW50YWwtd2ViZ2wi
LgogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3Mgb3JpZ2luYWwgQ29udGV4dEF0dHJpYnV0ZXMg
dG8gdGhlIGdldENvbnRleHQoKSBtZXRob2QuCi0gICAgICAgICAgICByZXBsYXlDb250ZXh0ID0g
Y2FudmFzLmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIpOworICAgICAgICAgICAgcmVw
bGF5Q29udGV4dCA9IC8qKiBAdHlwZSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSAqLyBSZXNvdXJj
ZS53cmFwcGVkT2JqZWN0KGNhbnZhcy5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSk7
CiAgICAgICAgICAgICBvcmlnaW5hbEdsQ29udGV4dFsiX19yZXBsYXlDb250ZXh0Il0gPSByZXBs
YXlDb250ZXh0OwogICAgICAgICAgICAgdGhpcy5fcmVwbGF5Q29udGV4dCA9IHJlcGxheUNvbnRl
eHQ7CiAgICAgICAgIH0gZWxzZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161644</attachid>
            <date>2012-08-31 02:29:45 -0700</date>
            <delta_ts>2012-08-31 09:06:30 -0700</delta_ts>
            <desc>Rebased and reduced patch</desc>
            <filename>bug-95443-20120831132932.patch</filename>
            <type>text/plain</type>
            <size>6417</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM2OTZiNTA4ZjJmNjIx
NTQ3MDgwZmYwMzg0OGU1NjlmOWMwMjgyOS4uOWI3Y2Q2NmQ3ZmEwN2IzMDZkODJlMDQ3MTQ3YTcy
ZDNjZmFmMTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTMwICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gU2F2ZSBnbC5nZXRFcnJvcigpIHN0YXR1cyBiZWZvcmUgdGFraW5nIGEgV2Vi
R0wgc3RhdGUgc25hcHNob3QgYW5kIHJlc3RvcmUgaXQgYWZ0ZXJ3YXJkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYXZlIGdsLmdldEVycm9yKCkgc3Rh
dHVzIGJlZm9yZSB0YWtpbmcgdGhlIEdMIHNuYXBzaG90IGFuZCByZXN0b3JlIGl0IGFmdGVyd2Fy
ZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJj
ZS5qczoKKyAgICAgICAgKC4pOgorCiAyMDEyLTA4LTMxICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRy
ZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtXZWJHTF0gTWFrZSB3
cmFwIGZ1bmN0aW9ucyBpbml0aWFsaXphdGlvbiBsYXp5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCmlu
ZGV4IGI5MzU4NmEwODg2YzAyY2IyNmQ3MjhjM2UxMWY2NWUyZmM4MjQ1NDcuLmRiMjUyNmUyMzEy
NmU4N2Q5ZDc5YTAwMzZiZmJhNGNiMmVjNTE5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCkBA
IC0yMzIsNiArMjMyLDE0IEBAIENhbGwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzdWx0OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IHJlc3VsdAor
ICAgICAqLworICAgIHNldFJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVzdWx0ID0gcmVzdWx0OworICAgIH0sCisKICAgICBmcmVlemU6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9mcmVlemVkKQpAQCAtNzcyLDYgKzc4MCw4IEBAIFdl
YkdMUHJvZ3JhbVJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGdsID0gZ2xSZXNv
dXJjZS53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIHZhciBwcm9ncmFtID0gdGhpcy53cmFwcGVk
T2JqZWN0KCk7CiAKKyAgICAgICAgdmFyIG9yaWdpbmFsRXJyb3JzID0gZ2xSZXNvdXJjZS5nZXRB
bGxFcnJvcnMoKTsKKwogICAgICAgICB2YXIgdW5pZm9ybXMgPSBbXTsKICAgICAgICAgdmFyIHVu
aWZvcm1zQ291bnQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElWRV9V
TklGT1JNUyk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5pZm9ybXNDb3VudDsgKytp
KSB7CkBAIC03ODksNiArNzk5LDggQEAgV2ViR0xQcm9ncmFtUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgZGF0YS51bmlmb3JtcyA9IHVu
aWZvcm1zOworCisgICAgICAgIGdsUmVzb3VyY2UucmVzdG9yZUVycm9ycyhvcmlnaW5hbEVycm9y
cyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA5Miw2ICsxMTA0LDc5IEBAIFdlYkdMUmVuZGVy
aW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAg
ICogQHJldHVybiB7QXJyYXkuPG51bWJlcj59CisgICAgICovCisgICAgZ2V0QWxsRXJyb3JzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZXJyb3JzID0gW107CisgICAgICAgIHZhciBn
bCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOworICAgICAgICBpZiAoZ2wpIHsKKyAgICAgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0RXJyb3Io
KTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPT09IGdsLk5PX0VSUk9SKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAodGhpcy5fY3VzdG9tRXJyb3JzKSB7CisgICAgICAgICAgICBP
YmplY3Qua2V5cyh0aGlzLl9jdXN0b21FcnJvcnMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGVycm9yID0gK2tleTsKKyAgICAgICAgICAgICAgICBlcnJvcnMu
cHVzaChlcnJvcik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVy
cm9ycyA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVycm9yczsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gZXJyb3JzCisgICAgICov
CisgICAgcmVzdG9yZUVycm9yczogZnVuY3Rpb24oZXJyb3JzKQorICAgIHsKKyAgICAgICAgdmFy
IGdsID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CisgICAgICAgIGlmIChnbCkgeworICAgICAgICAg
ICAgdmFyIHdhc0Vycm9yID0gZmFsc2U7CisgICAgICAgICAgICB3aGlsZSAoZ2wuZ2V0RXJyb3Io
KSAhPT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICAgICAgd2FzRXJyb3IgPSB0cnVlOworICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIXdhc0Vycm9yLCAiRXJyb3Iocykgd2hpbGUgY2FwdHVy
aW5nIGN1cnJlbnQgV2ViR0wgc3RhdGUuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFlcnJv
cnMubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fY3VzdG9tRXJyb3JzID0gbnVsbDsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9jdXN0b21FcnJvcnMgPSBPYmplY3QuY3JlYXRl
KG51bGwpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBlcnJvcnMubGVuZ3RoOyBp
IDwgbjsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVycm9yc1tlcnJvcnNbaV1d
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gZXJyb3IKKyAgICAgKi8KKyAgICBjbGVhckVycm9yOiBmdW5jdGlvbihlcnJvcikKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9jdXN0b21FcnJvcnMpCisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fY3VzdG9tRXJyb3JzW2Vycm9yXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7bnVtYmVyfQorICAgICAqLworICAgIG5leHRFcnJvcjogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX2N1c3RvbUVycm9ycykgeworICAgICAgICAgICAgZm9yICh2YXIg
a2V5IGluIHRoaXMuX2N1c3RvbUVycm9ycykgeworICAgICAgICAgICAgICAgIHZhciBlcnJvciA9
ICtrZXk7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2N1c3RvbUVycm9yc1tlcnJvcl07
CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHRoaXMuX2N1c3RvbUVycm9ycyA9IG51bGw7CisgICAgICAgIHZhciBnbCA9IHRo
aXMud3JhcHBlZE9iamVjdCgpOworICAgICAgICByZXR1cm4gZ2wgPyBnbC5OT19FUlJPUiA6IDA7
CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBvdmVycmlkZQogICAgICAqIEBwYXJhbSB7T2Jq
ZWN0fSBkYXRhCiAgICAgICogQHBhcmFtIHtDYWNoZX0gY2FjaGUKQEAgLTExMDEsNyArMTE4Niw3
IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dmFyIGdsID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIGRhdGEucmVwbGF5Q29udGV4
dENhbGxiYWNrID0gdGhpcy5fcmVwbGF5Q29udGV4dENhbGxiYWNrOwogCi0gICAgICAgIC8vIEZJ
WE1FOiBTYXZlIHRoZSBnZXRFcnJvcigpIHN0YXR1cyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0YWtp
bmcgdGhlIEdMIHN0YXRlIHNuYXBzaG90LgorICAgICAgICB2YXIgb3JpZ2luYWxFcnJvcnMgPSB0
aGlzLmdldEFsbEVycm9ycygpOwogCiAgICAgICAgIC8vIFRha2UgYSBmdWxsIEdMIHN0YXRlIHNu
YXBzaG90LgogICAgICAgICB2YXIgZ2xTdGF0ZSA9IHt9OwpAQCAtMTExMCw3ICsxMTk1LDYgQEAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB9KTsK
ICAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuU3RhdGVQYXJhbWV0ZXJzLmZv
ckVhY2goZnVuY3Rpb24ocGFyYW1ldGVyKSB7CiAgICAgICAgICAgICBnbFN0YXRlW3BhcmFtZXRl
cl0gPSBSZXNvdXJjZS50b1JlcGxheWFibGUoZ2wuZ2V0UGFyYW1ldGVyKGdsW3BhcmFtZXRlcl0p
LCBjYWNoZSk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2FsbCB3aGlsZShnbC5nZXRFcnJvcigp
ICE9IGdsLk5PX0VSUk9SKSB7Li4ufSB0byBjaGVjayBpZiBhIHBhcnRpY3VsYXIgcGFyYW1ldGVy
IGlzIHN1cHBvcnRlZC4KICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVkVSVEVYX0FUVFJJQl9B
UlJBWVMKQEAgLTExNDMsNiArMTIyNyw4IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShjdXJyZW50VGV4dHVyZUJp
bmRpbmcpOwogCiAgICAgICAgIGRhdGEuZ2xTdGF0ZSA9IGdsU3RhdGU7CisKKyAgICAgICAgdGhp
cy5yZXN0b3JlRXJyb3JzKG9yaWdpbmFsRXJyb3JzKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0x
NDE3LDYgKzE1MDMsMTYgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuV3JhcEZ1bmN0
aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9jYWxsKQogICAgICAgICAgICAg
dGhpcy5fY2FsbCA9IG5ldyBDYWxsKHRoaXMuX2dsUmVzb3VyY2UsIHRoaXMuX2Z1bmN0aW9uTmFt
ZSwgdGhpcy5fYXJncywgdGhpcy5yZXN1bHQoKSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9jYWxs
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IHJlc3VsdAorICAgICAqLwor
ICAgIF9vdmVycmlkZVJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFy
IGNhbGwgPSB0aGlzLmNhbGwoKTsKKyAgICAgICAgY2FsbC5zZXRSZXN1bHQocmVzdWx0KTsKKyAg
ICAgICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0OwogICAgIH0KIH0KIApAQCAtMTQ5OCw2ICsxNTk0
LDIwIEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLndyYXBGdW5jdGlvbnMgPSBmdW5j
dGlvbigpCiAgICAgICAgIGN1c3RvbVdyYXBGdW5jdGlvbigiZnJhbWVidWZmZXJUZXh0dXJlMkQi
KTsKICAgICAgICAgY3VzdG9tV3JhcEZ1bmN0aW9uKCJyZW5kZXJidWZmZXJTdG9yYWdlIik7CiAK
KyAgICAgICAgLyoqIEB0aGlzIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5j
dGlvbiAqLworICAgICAgICB3cmFwRnVuY3Rpb25zWyJnZXRFcnJvciJdID0gZnVuY3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgZ2wgPSB0aGlzLl9vcmlnaW5hbE9iamVjdDsKKyAg
ICAgICAgICAgIHZhciBlcnJvciA9IHRoaXMucmVzdWx0KCk7CisgICAgICAgICAgICBpZiAoZXJy
b3IgIT09IGdsLk5PX0VSUk9SKQorICAgICAgICAgICAgICAgIHRoaXMuX2dsUmVzb3VyY2UuY2xl
YXJFcnJvcihlcnJvcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJv
ciA9IHRoaXMuX2dsUmVzb3VyY2UubmV4dEVycm9yKCk7CisgICAgICAgICAgICAgICAgaWYgKGVy
cm9yICE9PSBnbC5OT19FUlJPUikKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVS
ZXN1bHQoZXJyb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuX3dyYXBGdW5jdGlvbnMgPSB3cmFwRnVuY3Rpb25zOwog
ICAgIH0KICAgICByZXR1cm4gd3JhcEZ1bmN0aW9uczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161712</attachid>
            <date>2012-08-31 09:06:36 -0700</date>
            <delta_ts>2012-09-04 01:12:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95443-20120831200623.patch</filename>
            <type>text/plain</type>
            <size>14319</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM2OTZiNTA4ZjJmNjIx
NTQ3MDgwZmYwMzg0OGU1NjlmOWMwMjgyOS4uNjQ2Y2QzYTJmYTA0NTBiM2E5NzJkYjRiNDc3ODI5
Y2ExN2Q0YTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDEyLTA4LTMxICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gU2F2ZSBnbC5nZXRFcnJvcigpIHN0YXR1cyBiZWZvcmUgdGFraW5nIGEgV2Vi
R0wgc3RhdGUgc25hcHNob3QgYW5kIHJlc3RvcmUgaXQgYWZ0ZXJ3YXJkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYXZlIGdsLmdldEVycm9yKCkgc3Rh
dHVzIGJlZm9yZSB0YWtpbmcgdGhlIEdMIHNuYXBzaG90IGFuZCByZXN0b3JlIGl0IGFmdGVyd2Fy
ZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJj
ZS5qczoKKyAgICAgICAgKC4pOgorCisyMDEyLTA4LTMxICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRy
ZXlAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtXZWJHTF0gTWFrZSB3
cmFwIGZ1bmN0aW9ucyBpbml0aWFsaXphdGlvbiBsYXp5CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUzMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCmlu
ZGV4IGI5MzU4NmEwODg2YzAyY2IyNmQ3MjhjM2UxMWY2NWUyZmM4MjQ1NDcuLmRiMjUyNmUyMzEy
NmU4N2Q5ZDc5YTAwMzZiZmJhNGNiMmVjNTE5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCkBA
IC0yMzIsNiArMjMyLDE0IEBAIENhbGwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzdWx0OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IHJlc3VsdAor
ICAgICAqLworICAgIHNldFJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVzdWx0ID0gcmVzdWx0OworICAgIH0sCisKICAgICBmcmVlemU6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9mcmVlemVkKQpAQCAtNzcyLDYgKzc4MCw4IEBAIFdl
YkdMUHJvZ3JhbVJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGdsID0gZ2xSZXNv
dXJjZS53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIHZhciBwcm9ncmFtID0gdGhpcy53cmFwcGVk
T2JqZWN0KCk7CiAKKyAgICAgICAgdmFyIG9yaWdpbmFsRXJyb3JzID0gZ2xSZXNvdXJjZS5nZXRB
bGxFcnJvcnMoKTsKKwogICAgICAgICB2YXIgdW5pZm9ybXMgPSBbXTsKICAgICAgICAgdmFyIHVu
aWZvcm1zQ291bnQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElWRV9V
TklGT1JNUyk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5pZm9ybXNDb3VudDsgKytp
KSB7CkBAIC03ODksNiArNzk5LDggQEAgV2ViR0xQcm9ncmFtUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgZGF0YS51bmlmb3JtcyA9IHVu
aWZvcm1zOworCisgICAgICAgIGdsUmVzb3VyY2UucmVzdG9yZUVycm9ycyhvcmlnaW5hbEVycm9y
cyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA5Miw2ICsxMTA0LDc5IEBAIFdlYkdMUmVuZGVy
aW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAg
ICogQHJldHVybiB7QXJyYXkuPG51bWJlcj59CisgICAgICovCisgICAgZ2V0QWxsRXJyb3JzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZXJyb3JzID0gW107CisgICAgICAgIHZhciBn
bCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOworICAgICAgICBpZiAoZ2wpIHsKKyAgICAgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0RXJyb3Io
KTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPT09IGdsLk5PX0VSUk9SKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAodGhpcy5fY3VzdG9tRXJyb3JzKSB7CisgICAgICAgICAgICBP
YmplY3Qua2V5cyh0aGlzLl9jdXN0b21FcnJvcnMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGVycm9yID0gK2tleTsKKyAgICAgICAgICAgICAgICBlcnJvcnMu
cHVzaChlcnJvcik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVy
cm9ycyA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVycm9yczsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48bnVtYmVyPn0gZXJyb3JzCisgICAgICov
CisgICAgcmVzdG9yZUVycm9yczogZnVuY3Rpb24oZXJyb3JzKQorICAgIHsKKyAgICAgICAgdmFy
IGdsID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CisgICAgICAgIGlmIChnbCkgeworICAgICAgICAg
ICAgdmFyIHdhc0Vycm9yID0gZmFsc2U7CisgICAgICAgICAgICB3aGlsZSAoZ2wuZ2V0RXJyb3Io
KSAhPT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICAgICAgd2FzRXJyb3IgPSB0cnVlOworICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIXdhc0Vycm9yLCAiRXJyb3Iocykgd2hpbGUgY2FwdHVy
aW5nIGN1cnJlbnQgV2ViR0wgc3RhdGUuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFlcnJv
cnMubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fY3VzdG9tRXJyb3JzID0gbnVsbDsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9jdXN0b21FcnJvcnMgPSBPYmplY3QuY3JlYXRl
KG51bGwpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBlcnJvcnMubGVuZ3RoOyBp
IDwgbjsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVycm9yc1tlcnJvcnNbaV1d
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gZXJyb3IKKyAgICAgKi8KKyAgICBjbGVhckVycm9yOiBmdW5jdGlvbihlcnJvcikKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9jdXN0b21FcnJvcnMpCisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fY3VzdG9tRXJyb3JzW2Vycm9yXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJl
dHVybiB7bnVtYmVyfQorICAgICAqLworICAgIG5leHRFcnJvcjogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX2N1c3RvbUVycm9ycykgeworICAgICAgICAgICAgZm9yICh2YXIg
a2V5IGluIHRoaXMuX2N1c3RvbUVycm9ycykgeworICAgICAgICAgICAgICAgIHZhciBlcnJvciA9
ICtrZXk7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2N1c3RvbUVycm9yc1tlcnJvcl07
CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHRoaXMuX2N1c3RvbUVycm9ycyA9IG51bGw7CisgICAgICAgIHZhciBnbCA9IHRo
aXMud3JhcHBlZE9iamVjdCgpOworICAgICAgICByZXR1cm4gZ2wgPyBnbC5OT19FUlJPUiA6IDA7
CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBvdmVycmlkZQogICAgICAqIEBwYXJhbSB7T2Jq
ZWN0fSBkYXRhCiAgICAgICogQHBhcmFtIHtDYWNoZX0gY2FjaGUKQEAgLTExMDEsNyArMTE4Niw3
IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dmFyIGdsID0gdGhpcy53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIGRhdGEucmVwbGF5Q29udGV4
dENhbGxiYWNrID0gdGhpcy5fcmVwbGF5Q29udGV4dENhbGxiYWNrOwogCi0gICAgICAgIC8vIEZJ
WE1FOiBTYXZlIHRoZSBnZXRFcnJvcigpIHN0YXR1cyBhbmQgcmVzdG9yZSBpdCBhZnRlciB0YWtp
bmcgdGhlIEdMIHN0YXRlIHNuYXBzaG90LgorICAgICAgICB2YXIgb3JpZ2luYWxFcnJvcnMgPSB0
aGlzLmdldEFsbEVycm9ycygpOwogCiAgICAgICAgIC8vIFRha2UgYSBmdWxsIEdMIHN0YXRlIHNu
YXBzaG90LgogICAgICAgICB2YXIgZ2xTdGF0ZSA9IHt9OwpAQCAtMTExMCw3ICsxMTk1LDYgQEAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAgICB9KTsK
ICAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuU3RhdGVQYXJhbWV0ZXJzLmZv
ckVhY2goZnVuY3Rpb24ocGFyYW1ldGVyKSB7CiAgICAgICAgICAgICBnbFN0YXRlW3BhcmFtZXRl
cl0gPSBSZXNvdXJjZS50b1JlcGxheWFibGUoZ2wuZ2V0UGFyYW1ldGVyKGdsW3BhcmFtZXRlcl0p
LCBjYWNoZSk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2FsbCB3aGlsZShnbC5nZXRFcnJvcigp
ICE9IGdsLk5PX0VSUk9SKSB7Li4ufSB0byBjaGVjayBpZiBhIHBhcnRpY3VsYXIgcGFyYW1ldGVy
IGlzIHN1cHBvcnRlZC4KICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gVkVSVEVYX0FUVFJJQl9B
UlJBWVMKQEAgLTExNDMsNiArMTIyNyw4IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShjdXJyZW50VGV4dHVyZUJp
bmRpbmcpOwogCiAgICAgICAgIGRhdGEuZ2xTdGF0ZSA9IGdsU3RhdGU7CisKKyAgICAgICAgdGhp
cy5yZXN0b3JlRXJyb3JzKG9yaWdpbmFsRXJyb3JzKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0x
NDE3LDYgKzE1MDMsMTYgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuV3JhcEZ1bmN0
aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9jYWxsKQogICAgICAgICAgICAg
dGhpcy5fY2FsbCA9IG5ldyBDYWxsKHRoaXMuX2dsUmVzb3VyY2UsIHRoaXMuX2Z1bmN0aW9uTmFt
ZSwgdGhpcy5fYXJncywgdGhpcy5yZXN1bHQoKSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9jYWxs
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IHJlc3VsdAorICAgICAqLwor
ICAgIF9vdmVycmlkZVJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFy
IGNhbGwgPSB0aGlzLmNhbGwoKTsKKyAgICAgICAgY2FsbC5zZXRSZXN1bHQocmVzdWx0KTsKKyAg
ICAgICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0OwogICAgIH0KIH0KIApAQCAtMTQ5OCw2ICsxNTk0
LDIwIEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLndyYXBGdW5jdGlvbnMgPSBmdW5j
dGlvbigpCiAgICAgICAgIGN1c3RvbVdyYXBGdW5jdGlvbigiZnJhbWVidWZmZXJUZXh0dXJlMkQi
KTsKICAgICAgICAgY3VzdG9tV3JhcEZ1bmN0aW9uKCJyZW5kZXJidWZmZXJTdG9yYWdlIik7CiAK
KyAgICAgICAgLyoqIEB0aGlzIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5j
dGlvbiAqLworICAgICAgICB3cmFwRnVuY3Rpb25zWyJnZXRFcnJvciJdID0gZnVuY3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgZ2wgPSB0aGlzLl9vcmlnaW5hbE9iamVjdDsKKyAg
ICAgICAgICAgIHZhciBlcnJvciA9IHRoaXMucmVzdWx0KCk7CisgICAgICAgICAgICBpZiAoZXJy
b3IgIT09IGdsLk5PX0VSUk9SKQorICAgICAgICAgICAgICAgIHRoaXMuX2dsUmVzb3VyY2UuY2xl
YXJFcnJvcihlcnJvcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJv
ciA9IHRoaXMuX2dsUmVzb3VyY2UubmV4dEVycm9yKCk7CisgICAgICAgICAgICAgICAgaWYgKGVy
cm9yICE9PSBnbC5OT19FUlJPUikKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVS
ZXN1bHQoZXJyb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0UmVzb3VyY2UuX3dyYXBGdW5jdGlvbnMgPSB3cmFwRnVuY3Rpb25zOwog
ICAgIH0KICAgICByZXR1cm4gd3JhcEZ1bmN0aW9uczsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMzc4OTFjNGI1MDBhMWJl
ZTk4NTE3ZGJkOGU2Yjg2MGY3ZjU3Nzc1Li42Y2JkZjYwZDc2NTBiZTAwY2RiNGE2OGExNDFmODFj
NzIzODJhODY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTItMDgtMzEgIEFuZHJleSBBZGFp
a2luICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW1dl
YkdMXSBTYXZlIGdsLmdldEVycm9yKCkgc3RhdHVzIGJlZm9yZSB0YWtpbmcgYSBXZWJHTCBzdGF0
ZSBzbmFwc2hvdCBhbmQgcmVzdG9yZSBpdCBhZnRlcndhcmRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSB0ZXN0IHRvIGNoZWNrIHRoYXQgd2Ug
cHJvcGVybHkgc2F2ZSB0aGUgV2ViR0wgZ2V0RXJyb3IoKSBzdGF0dXMgd2hpbGUgZG9pbmcgdGhl
IGluc3RydW1lbnRhdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci93ZWJnbC93
ZWJnbC1wcm9maWxlci1nZXQtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci10
ZXN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGluaXRpYWxpemVfV2ViR0xQcm9maWxlclRlc3QuSW5z
cGVjdG9yVGVzdC5lbmFibGVXZWJHTEFnZW50KToKKyAgICAgICAgKGluaXRpYWxpemVfV2ViR0xQ
cm9maWxlclRlc3QpOgorICAgICAgICAoY3JlYXRlV2ViR0xDb250ZXh0KToKKworMjAxMi0wOC0z
MSAgQW5kcmV5IEFkYWlraW4gIDxhYW5kcmV5QGNocm9taXVtLm9yZz4KKwogICAgICAgICBbUXRd
IE5ldyBpbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wtcHJvZmlsZXItYXBpLWNoYW5nZXMuaHRtbCB0
aW1lcyBvdXQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MTgzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJn
bC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWdldC1lcnJvci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTRmN2U0ZDFiY2QwN2FhY2IyNzBiM2MwYmY5YTVlZmI2NzY5ODNiZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93
ZWJnbC1wcm9maWxlci1nZXQtZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVz
dHMgV2ViR0wgZ2V0RXJyb3IoKSBzdGF0dXMuCisKKworUnVubmluZzogY2hlY2tHZXRFcnJvclN0
YXR1cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wv
d2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgx
NTEyY2I4NDFmYjFkMzIxNjc1NGZkNjcwNmM5MmJmNTllN2ZjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQt
ZXJyb3IuaHRtbApAQCAtMCwwICsxLDE1NCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJ3ZWJnbC1wcm9maWxlci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK3ZhciBnbDsKK3ZhciByYXdnbDsKK3ZhciBnbFJlc291cmNlOworCitm
dW5jdGlvbiBhc3NlcnROb0Vycm9ycyhnbCkKK3sKKyAgICBjb25zb2xlLmFzc2VydChnbC5nZXRF
cnJvcigpID09PSBnbC5OT19FUlJPUiwgIk5vIEdMIGVycm9yIHdhcyBleHBlY3RlZCBhdCB0aGlz
IHRpbWUiKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0RXF1YWxBcnJheXMoYSwgYikKK3sKKyAgICBj
b25zb2xlLmFzc2VydChhLmxlbmd0aCA9PT0gYi5sZW5ndGgsICJhc3NlcnRFcXVhbEFycmF5czog
YS5sZW5ndGg9IiArIGEubGVuZ3RoICsgIiwgYi5sZW5ndGg9IiArIGIubGVuZ3RoKTsKKyAgICBh
ID0gYS5zbGljZSgpOworICAgIGIgPSBiLnNsaWNlKCk7CisgICAgYS5zb3J0KCk7CisgICAgYi5z
b3J0KCk7CisgICAgYS5mb3JFYWNoKGZ1bmN0aW9uKGVsbSwgaW5kZXgpIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoYVtpbmRleF0gPT09IGJbaW5kZXhdLCAiYXNzZXJ0RXF1YWxBcnJheXM6IGRp
ZmZlcmVudCB2YWx1ZXMgYXQgaW5kZXggIiArIGluZGV4KTsKKyAgICB9KTsKK30KKworZnVuY3Rp
b24gZ2VuZXJhdGVXZWJHTEVycm9yKGdsLCBlcnJvcikKK3sKKyAgICBzd2l0Y2ggKGVycm9yKSB7
CisgICAgY2FzZSBnbC5JTlZBTElEX0VOVU06CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKDEyMywg
MjM0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBnbC5JTlZBTElEX1ZBTFVFOgorICAgICAg
ICBnbC5waXhlbFN0b3JlaShnbC5QQUNLX0FMSUdOTUVOVCwgMjM0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBnbC5JTlZBTElEX09QRVJBVElPTjoKKyAgICBkZWZhdWx0OgorICAgICAgICBn
bC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFX0NVQkVfTUFQKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBnZXRBbGxFcnJvcnMoZ2wpCit7CisgICAgdmFyIGVycm9ycyA9
IFtdOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHZhciBlcnJvciA9IGdsLmdldEVycm9y
KCk7CisgICAgICAgIGlmIChlcnJvciA9PT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpOworICAgIH0KKyAgICByZXR1cm4gZXJyb3Jz
OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRSdW5XZWJHTFByb2dyYW0oKQoreworICAgIGdsID0g
Y3JlYXRlV2ViR0xDb250ZXh0KCk7CisgICAgY29uc29sZS5hc3NlcnQoZ2wsICJGYWlsZWQgdG8g
Y3JlYXRlIFdlYkdMIGNvbnRleHQiKTsKKworICAgIGdsUmVzb3VyY2UgPSBnbFsiX19yZXNvdXJj
ZU9iamVjdCJdOworICAgIGNvbnNvbGUuYXNzZXJ0KGdsUmVzb3VyY2UsICJXZWJHTCBjb250ZXh0
IGlzIG5vdCB3cmFwcGVkIik7CisKKyAgICByYXdnbCA9IGdsUmVzb3VyY2Uud3JhcHBlZE9iamVj
dCgpOworICAgIGNvbnNvbGUuYXNzZXJ0KHJhd2dsLCAiTm8gcmF3IFdlYkdMIGNvbnRleHQgZm91
bmQiKTsKKyAgICBjb25zb2xlLmFzc2VydChnbCAhPT0gcmF3Z2wsICJQcm94eSBhbmQgUkFXIGNv
bnRleHRzIHNob3VsZCBub3QgYmUgdGhlIHNhbWUiKTsKKworICAgIGFzc2VydE5vRXJyb3JzKGds
KTsKKyAgICBhc3NlcnROb0Vycm9ycyhyYXdnbCk7CisKKyAgICAvLyAxKSBHZW5lcmF0ZSBlcnJv
cnMgZGlyZWN0bHkgb24gdGhlIFJBVyBjb250ZXh0CisgICAgLy8gMikgUGljayB0aGVtIHZpYSBw
cm94eS4KKyAgICB2YXIgZXJyb3JzID0gW3Jhd2dsLklOVkFMSURfRU5VTSwgcmF3Z2wuSU5WQUxJ
RF9WQUxVRSwgcmF3Z2wuSU5WQUxJRF9PUEVSQVRJT05dOworICAgIGVycm9ycy5mb3JFYWNoKGZ1
bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGdlbmVyYXRlV2ViR0xFcnJvcihyYXdnbCwgZXJyb3Ip
OworICAgIH0pOworICAgIGVycm9ycy5mb3JFYWNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAg
IGdlbmVyYXRlV2ViR0xFcnJvcihyYXdnbCwgZXJyb3IpOyAvLyBSZXBlYXQ6IHRoaXMgc2hvdWxk
IG5vdCBtb2RpZnkgdGhlIGludGVybmFsIGVycm9yIHN0YXRlLgorICAgIH0pOworICAgIGFzc2Vy
dEVxdWFsQXJyYXlzKGVycm9ycywgZ2V0QWxsRXJyb3JzKGdsKSk7CisgICAgYXNzZXJ0Tm9FcnJv
cnMoZ2wpOworICAgIGFzc2VydE5vRXJyb3JzKHJhd2dsKTsKKworICAgIC8vIDEpIEdlbmVyYXRl
IGVycm9ycyBvbiBSQVcgY29udGV4dAorICAgIC8vIDIpIENvbnZlcnQgUmVzb3VyY2UgdG8gYSBS
ZXBsYXlhYmxlID0+IHRoaXMgc2hvdWxkIGNsZWFuIHVwIHRoZSBSQVcgY29udGV4dCBhbmQgc2F2
ZSB0aGUgZXJyb3JzIGluIHByb3h5CisgICAgLy8gMykgQ2hlY2sgdGhhdCBSQVcgY29udGV4dCBu
byBsb25nZXIgaGF2ZSBlcnJvcnMKKyAgICAvLyA0KSBDaGVjayB0aGF0IHByb3h5IHN0aWxsIGhh
cyB0aGUgb3JpZ2luYWwgZXJyb3JzIHNhdmVkCisgICAgdmFyIGVycm9ycyA9IFtyYXdnbC5JTlZB
TElEX0VOVU0sIHJhd2dsLklOVkFMSURfVkFMVUUsIHJhd2dsLklOVkFMSURfT1BFUkFUSU9OXTsK
KyAgICBlcnJvcnMuZm9yRWFjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICBnZW5lcmF0ZVdl
YkdMRXJyb3IocmF3Z2wsIGVycm9yKTsKKyAgICB9KTsKKyAgICB2YXIgY2FjaGUgPSB7CisgICAg
ICAgIHB1dDogZnVuY3Rpb24oKSB7fSwKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHt9CisgICAg
fTsKKyAgICBnbFJlc291cmNlLnRvUmVwbGF5YWJsZShjYWNoZSk7CisgICAgYXNzZXJ0Tm9FcnJv
cnMocmF3Z2wpOworICAgIGFzc2VydEVxdWFsQXJyYXlzKGVycm9ycywgZ2V0QWxsRXJyb3JzKGds
KSk7CisgICAgYXNzZXJ0Tm9FcnJvcnMoZ2wpOworCisgICAgLy8gMSkgUmVwZWF0IDEtMyBzdGVw
cyBmcm9tIHRoZSBhYm92ZQorICAgIC8vIDIpIENoZWNrIHByb3h5IGFuZCBSQVcgZXJyb3JzIGlu
dGVybGVhdmVkCisgICAgdmFyIGVycm9ycyA9IFtyYXdnbC5JTlZBTElEX0VOVU0sIHJhd2dsLklO
VkFMSURfVkFMVUUsIHJhd2dsLklOVkFMSURfT1BFUkFUSU9OXTsKKyAgICBlcnJvcnMuZm9yRWFj
aChmdW5jdGlvbihlcnJvcikgeworICAgICAgICBnZW5lcmF0ZVdlYkdMRXJyb3IocmF3Z2wsIGVy
cm9yKTsKKyAgICB9KTsKKyAgICB2YXIgY2FjaGUgPSB7CisgICAgICAgIHB1dDogZnVuY3Rpb24o
KSB7fSwKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHt9CisgICAgfTsKKyAgICBnbFJlc291cmNl
LnRvUmVwbGF5YWJsZShjYWNoZSk7CisgICAgYXNzZXJ0Tm9FcnJvcnMocmF3Z2wpOworCisgICAg
dmFyIHZhbHVlID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICBjb25zb2xlLmFzc2VydCh2YWx1ZSAhPT0g
Z2wuTk9fRVJST1IsICJBbiBlcnJvciB3YXMgZXhwZWN0ZWQiKTsKKyAgICBlcnJvcnMuZm9yRWFj
aChmdW5jdGlvbihlcnJvcikgeworICAgICAgICBnZW5lcmF0ZVdlYkdMRXJyb3IocmF3Z2wsIGVy
cm9yKTsgLy8gR2VuZXJhdGUgYWdhaW4gaW4gdGhlIFJBVyBjb250ZXh0LgorICAgIH0pOworICAg
IC8vIE5vdyB3ZSAiaGF2ZSIgMiBlcnJvcnMgbGVmdCBpbiB0aGUgcHJveHkgYW5kIDMgbmV3IGVy
cm9ycyBpbiB0aGUgUkFXIGNvbnRleHQgPT4gc2hvdWxkIHJldHVybiAzIGVycm9ycyBmcm9tIHRo
ZSBwcm94eS4KKyAgICBhc3NlcnRFcXVhbEFycmF5cyhlcnJvcnMsIGdldEFsbEVycm9ycyhnbCkp
OworICAgIGFzc2VydE5vRXJyb3JzKGdsKTsKKyAgICBhc3NlcnROb0Vycm9ycyhyYXdnbCk7CisK
KyAgICByZXR1cm4gIlNVQ0NFU1MiOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNw
ZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrR2V0RXJyb3JT
dGF0dXMobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5lbmFibGVX
ZWJHTEFnZW50KHN0ZXAxKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJj
cmVhdGVBbmRSdW5XZWJHTFByb2dyYW0oKSIsIHN0ZXAyKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAyKGVycm9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJcIlNVQ0NFU1NcIiIsIGVycm9yKTsKKyAg
ICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBdKTsK
K30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4K
K1Rlc3RzIFdlYkdMIGdldEVycm9yKCkgc3RhdHVzLgorCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wt
cHJvZmlsZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93
ZWJnbC1wcm9maWxlci10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3YmY1NjBmMTkwNzRkODI2NzUzYjVi
MzRkYjM1YTAyYTk4ZjIwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qcwpAQCAtMCwwICsxLDM3IEBA
Cit2YXIgaW5pdGlhbGl6ZV9XZWJHTFByb2ZpbGVyVGVzdCA9IGZ1bmN0aW9uKCkgeworCitJbnNw
ZWN0b3JUZXN0LmVuYWJsZVdlYkdMQWdlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBm
dW5jdGlvbiB3ZWJHTEFnZW50RW5hYmxlZChlcnJvcikKKyAgICB7CisgICAgICAgIGlmICghZXJy
b3IpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNhbGxiYWNrKSgpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlMRUQg
dG8gZW5hYmxlIFdlYkdMQWdlbnQ6ICIgKyBlcnJvcik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorICAgIHRyeSB7CisgICAgICAg
IFdlYkdMQWdlbnQuZW5hYmxlKHdlYkdMQWdlbnRFbmFibGVkKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFeGNlcHRpb24gd2hpbGUgZW5hYmxp
bmcgV2ViR0xBZ2VudCIsIGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
OworICAgIH0KK307CisKK307CisKK2Z1bmN0aW9uIGNyZWF0ZVdlYkdMQ29udGV4dChvcHRfY2Fu
dmFzKQoreworICAgIHZhciBjYW52YXMgPSBvcHRfY2FudmFzIHx8IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOworICAgIHZhciBjb250ZXh0SWRzID0gWyJleHBlcmltZW50YWwtd2Vi
Z2wiLCAid2Via2l0LTNkIiwgIjNkIl07CisgICAgZm9yICh2YXIgaSA9IDAsIGNvbnRleHRJZDsg
Y29udGV4dElkID0gY29udGV4dElkc1tpXTsgKytpKSB7CisgICAgICAgIHZhciBnbCA9IGNhbnZh
cy5nZXRDb250ZXh0KGNvbnRleHRJZCk7CisgICAgICAgIGlmIChnbCkKKyAgICAgICAgICAgIHJl
dHVybiBnbDsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFi
bGVkIiwgIjEiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161984</attachid>
            <date>2012-09-04 01:12:49 -0700</date>
            <delta_ts>2012-09-04 01:41:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95443-20120904121232.patch</filename>
            <type>text/plain</type>
            <size>13935</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM2OTZiNTA4ZjJmNjIx
NTQ3MDgwZmYwMzg0OGU1NjlmOWMwMjgyOS4uNjQ2Y2QzYTJmYTA0NTBiM2E5NzJkYjRiNDc3ODI5
Y2ExN2Q0YTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDEyLTA4LTMxICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gU2F2ZSBnbC5nZXRFcnJvcigpIHN0YXR1cyBiZWZvcmUgdGFraW5nIGEgV2Vi
R0wgc3RhdGUgc25hcHNob3QgYW5kIHJlc3RvcmUgaXQgYWZ0ZXJ3YXJkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYXZlIGdsLmdldEVycm9yKCkgc3Rh
dHVzIGJlZm9yZSB0YWtpbmcgdGhlIEdMIHNuYXBzaG90IGFuZCByZXN0b3JlIGl0IGFmdGVyd2Fy
ZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJj
ZS5qczoKKyAgICAgICAgKC4pOgorCisyMDEyLTA4LTMxICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRy
ZXlAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtXZWJHTF0gTWFrZSB3
cmFwIGZ1bmN0aW9ucyBpbml0aWFsaXphdGlvbiBsYXp5CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUzMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCmlu
ZGV4IGI5MzU4NmEwODg2YzAyY2IyNmQ3MjhjM2UxMWY2NWUyZmM4MjQ1NDcuLmE3YWVmM2U2YjU4
N2UxYzMxOTdkMTdmNmQwZTkxYjBmN2RiMTE5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCkBA
IC0yMzIsNiArMjMyLDE0IEBAIENhbGwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzdWx0OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IHJlc3VsdAor
ICAgICAqLworICAgIHNldFJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVzdWx0ID0gcmVzdWx0OworICAgIH0sCisKICAgICBmcmVlemU6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9mcmVlemVkKQpAQCAtNzcyLDYgKzc4MCw4IEBAIFdl
YkdMUHJvZ3JhbVJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGdsID0gZ2xSZXNv
dXJjZS53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIHZhciBwcm9ncmFtID0gdGhpcy53cmFwcGVk
T2JqZWN0KCk7CiAKKyAgICAgICAgdmFyIG9yaWdpbmFsRXJyb3JzID0gZ2xSZXNvdXJjZS5nZXRB
bGxFcnJvcnMoKTsKKwogICAgICAgICB2YXIgdW5pZm9ybXMgPSBbXTsKICAgICAgICAgdmFyIHVu
aWZvcm1zQ291bnQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElWRV9V
TklGT1JNUyk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5pZm9ybXNDb3VudDsgKytp
KSB7CkBAIC03ODksNiArNzk5LDggQEAgV2ViR0xQcm9ncmFtUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgZGF0YS51bmlmb3JtcyA9IHVu
aWZvcm1zOworCisgICAgICAgIGdsUmVzb3VyY2UucmVzdG9yZUVycm9ycyhvcmlnaW5hbEVycm9y
cyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA5Miw2ICsxMTA0LDc5IEBAIFdlYkdMUmVuZGVy
aW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAg
ICogQHJldHVybiB7QXJyYXkuPG51bWJlcj59CisgICAgICovCisgICAgZ2V0QWxsRXJyb3JzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZXJyb3JzID0gW107CisgICAgICAgIHZhciBn
bCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOworICAgICAgICBpZiAoZ2wpIHsKKyAgICAgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0RXJyb3Io
KTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPT09IGdsLk5PX0VSUk9SKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAodGhpcy5fY3VzdG9tRXJyb3JzKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBrZXkgaW4gdGhpcy5fY3VzdG9tRXJyb3JzKSB7CisgICAgICAgICAgICAgICAgdmFy
IGVycm9yID0gK2tleTsgLy8gQ29udmVydCB0byBOdW1iZXIuCisgICAgICAgICAgICAgICAgZXJy
b3JzLnB1c2goZXJyb3IpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X2N1c3RvbUVycm9yczsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZXJyb3JzOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxudW1iZXI+fSBlcnJvcnMKKyAgICAg
Ki8KKyAgICByZXN0b3JlRXJyb3JzOiBmdW5jdGlvbihlcnJvcnMpCisgICAgeworICAgICAgICB2
YXIgZ2wgPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKKyAgICAgICAgaWYgKGdsKSB7CisgICAgICAg
ICAgICB2YXIgd2FzRXJyb3IgPSBmYWxzZTsKKyAgICAgICAgICAgIHdoaWxlIChnbC5nZXRFcnJv
cigpICE9PSBnbC5OT19FUlJPUikKKyAgICAgICAgICAgICAgICB3YXNFcnJvciA9IHRydWU7Cisg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydCghd2FzRXJyb3IsICJFcnJvcihzKSB3aGlsZSBjYXB0
dXJpbmcgY3VycmVudCBXZWJHTCBzdGF0ZS4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWVy
cm9ycy5sZW5ndGgpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VzdG9tRXJyb3JzOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVycm9ycyA9IHt9OworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBlcnJvcnMubGVuZ3RoOyBpIDwgbjsgKytpKQorICAg
ICAgICAgICAgICAgIHRoaXMuX2N1c3RvbUVycm9yc1tlcnJvcnNbaV1dID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3IKKyAg
ICAgKi8KKyAgICBjbGVhckVycm9yOiBmdW5jdGlvbihlcnJvcikKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLl9jdXN0b21FcnJvcnMpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VzdG9tRXJy
b3JzW2Vycm9yXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQor
ICAgICAqLworICAgIG5leHRFcnJvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX2N1c3RvbUVycm9ycykgeworICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX2N1
c3RvbUVycm9ycykgeworICAgICAgICAgICAgICAgIHZhciBlcnJvciA9ICtrZXk7IC8vIENvbnZl
cnQgdG8gTnVtYmVyLgorICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jdXN0b21FcnJvcnNb
ZXJyb3JdOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBkZWxldGUgdGhpcy5fY3VzdG9tRXJyb3JzOworICAgICAgICB2YXIg
Z2wgPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKKyAgICAgICAgcmV0dXJuIGdsID8gZ2wuTk9fRVJS
T1IgOiAwOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAb3ZlcnJpZGUKICAgICAgKiBAcGFy
YW0ge09iamVjdH0gZGF0YQogICAgICAqIEBwYXJhbSB7Q2FjaGV9IGNhY2hlCkBAIC0xMTAxLDcg
KzExODYsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHZhciBnbCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOwogICAgICAgICBkYXRhLnJlcGxh
eUNvbnRleHRDYWxsYmFjayA9IHRoaXMuX3JlcGxheUNvbnRleHRDYWxsYmFjazsKIAotICAgICAg
ICAvLyBGSVhNRTogU2F2ZSB0aGUgZ2V0RXJyb3IoKSBzdGF0dXMgYW5kIHJlc3RvcmUgaXQgYWZ0
ZXIgdGFraW5nIHRoZSBHTCBzdGF0ZSBzbmFwc2hvdC4KKyAgICAgICAgdmFyIG9yaWdpbmFsRXJy
b3JzID0gdGhpcy5nZXRBbGxFcnJvcnMoKTsKIAogICAgICAgICAvLyBUYWtlIGEgZnVsbCBHTCBz
dGF0ZSBzbmFwc2hvdC4KICAgICAgICAgdmFyIGdsU3RhdGUgPSB7fTsKQEAgLTExMTAsNyArMTE5
NSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfSk7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLlN0YXRlUGFyYW1l
dGVycy5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtZXRlcikgewogICAgICAgICAgICAgZ2xTdGF0ZVtw
YXJhbWV0ZXJdID0gUmVzb3VyY2UudG9SZXBsYXlhYmxlKGdsLmdldFBhcmFtZXRlcihnbFtwYXJh
bWV0ZXJdKSwgY2FjaGUpOwotICAgICAgICAgICAgLy8gRklYTUU6IENhbGwgd2hpbGUoZ2wuZ2V0
RXJyb3IoKSAhPSBnbC5OT19FUlJPUikgey4uLn0gdG8gY2hlY2sgaWYgYSBwYXJ0aWN1bGFyIHBh
cmFtZXRlciBpcyBzdXBwb3J0ZWQuCiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIFZFUlRFWF9B
VFRSSUJfQVJSQVlTCkBAIC0xMTQzLDYgKzEyMjcsOCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRS
ZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGdsLmFjdGl2ZVRleHR1cmUoY3VycmVudFRl
eHR1cmVCaW5kaW5nKTsKIAogICAgICAgICBkYXRhLmdsU3RhdGUgPSBnbFN0YXRlOworCisgICAg
ICAgIHRoaXMucmVzdG9yZUVycm9ycyhvcmlnaW5hbEVycm9ycyk7CiAgICAgfSwKIAogICAgIC8q
KgpAQCAtMTQxNyw2ICsxNTAzLDE2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldy
YXBGdW5jdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fY2FsbCkKICAgICAg
ICAgICAgIHRoaXMuX2NhbGwgPSBuZXcgQ2FsbCh0aGlzLl9nbFJlc291cmNlLCB0aGlzLl9mdW5j
dGlvbk5hbWUsIHRoaXMuX2FyZ3MsIHRoaXMucmVzdWx0KCkpOwogICAgICAgICByZXR1cm4gdGhp
cy5fY2FsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSByZXN1bHQKKyAg
ICAgKi8KKyAgICBfb3ZlcnJpZGVSZXN1bHQ6IGZ1bmN0aW9uKHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHZhciBjYWxsID0gdGhpcy5jYWxsKCk7CisgICAgICAgIGNhbGwuc2V0UmVzdWx0KHJlc3Vs
dCk7CisgICAgICAgIHRoaXMuX3Jlc3VsdCA9IHJlc3VsdDsKICAgICB9CiB9CiAKQEAgLTE0OTgs
NiArMTU5NCwyMCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS53cmFwRnVuY3Rpb25z
ID0gZnVuY3Rpb24oKQogICAgICAgICBjdXN0b21XcmFwRnVuY3Rpb24oImZyYW1lYnVmZmVyVGV4
dHVyZTJEIik7CiAgICAgICAgIGN1c3RvbVdyYXBGdW5jdGlvbigicmVuZGVyYnVmZmVyU3RvcmFn
ZSIpOwogCisgICAgICAgIC8qKiBAdGhpcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5X
cmFwRnVuY3Rpb24gKi8KKyAgICAgICAgd3JhcEZ1bmN0aW9uc1siZ2V0RXJyb3IiXSA9IGZ1bmN0
aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGdsID0gdGhpcy5fb3JpZ2luYWxPYmpl
Y3Q7CisgICAgICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLnJlc3VsdCgpOworICAgICAgICAgICAg
aWYgKGVycm9yICE9PSBnbC5OT19FUlJPUikKKyAgICAgICAgICAgICAgICB0aGlzLl9nbFJlc291
cmNlLmNsZWFyRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgZXJyb3IgPSB0aGlzLl9nbFJlc291cmNlLm5leHRFcnJvcigpOworICAgICAgICAgICAgICAg
IGlmIChlcnJvciAhPT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX292
ZXJyaWRlUmVzdWx0KGVycm9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLl93cmFwRnVuY3Rpb25zID0gd3JhcEZ1bmN0
aW9uczsKICAgICB9CiAgICAgcmV0dXJuIHdyYXBGdW5jdGlvbnM7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTM3ODkxYzRi
NTAwYTFiZWU5ODUxN2RiZDhlNmI4NjBmN2Y1Nzc3NS4uNmNiZGY2MGQ3NjUwYmUwMGNkYjRhNjhh
MTQxZjgxYzcyMzgyYTg2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEyLTA4LTMxICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gU2F2ZSBnbC5nZXRFcnJvcigpIHN0YXR1cyBiZWZvcmUgdGFraW5nIGEgV2Vi
R0wgc3RhdGUgc25hcHNob3QgYW5kIHJlc3RvcmUgaXQgYWZ0ZXJ3YXJkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgdGVzdCB0byBjaGVjayB0
aGF0IHdlIHByb3Blcmx5IHNhdmUgdGhlIFdlYkdMIGdldEVycm9yKCkgc3RhdHVzIHdoaWxlIGRv
aW5nIHRoZSBpbnN0cnVtZW50YXRpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIv
d2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWdldC1lcnJvci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJv
ZmlsZXItdGVzdC5qczogQWRkZWQuCisgICAgICAgIChpbml0aWFsaXplX1dlYkdMUHJvZmlsZXJU
ZXN0Lkluc3BlY3RvclRlc3QuZW5hYmxlV2ViR0xBZ2VudCk6CisgICAgICAgIChpbml0aWFsaXpl
X1dlYkdMUHJvZmlsZXJUZXN0KToKKyAgICAgICAgKGNyZWF0ZVdlYkdMQ29udGV4dCk6CisKKzIw
MTItMDgtMzEgIEFuZHJleSBBZGFpa2luICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgW1F0XSBOZXcgaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2Vz
Lmh0bWwgdGltZXMgb3V0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTE4MwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3ItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjNWFhYTRhMTE1MDRkMTZhMDUxYTdlODY0NTAzNTk4ODUy
MTYyZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIv
d2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMg
QEAKK1Rlc3RzIFdlYkdMIGdldEVycm9yKCkgc3RhdHVzLgorCitCdWcgOTU0NDMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1n
ZXQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJn
bC1wcm9maWxlci1nZXQtZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzdlZWMxOWI5OGU5N2NlYWEy
ZjVjYTkxMjEzZWU4NDE2YjM0YzFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXByb2ZpbGVyLWdldC1lcnJvci5odG1sCkBAIC0w
LDAgKzEsMTM4IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IndlYmdsLXByb2ZpbGVyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwor
dmFyIGdsOwordmFyIHJhd0dMOwordmFyIGdsUmVzb3VyY2U7CisKK2Z1bmN0aW9uIGFzc2VydE5v
RXJyb3JzKGdsKQoreworICAgIGNvbnNvbGUuYXNzZXJ0KGdsLmdldEVycm9yKCkgPT09IGdsLk5P
X0VSUk9SLCAiTm8gR0wgZXJyb3Igd2FzIGV4cGVjdGVkIGF0IHRoaXMgdGltZSIpOworfQorCitm
dW5jdGlvbiBhc3NlcnRFcXVhbEFycmF5cyhhLCBiKQoreworICAgIGNvbnNvbGUuYXNzZXJ0KGEu
bGVuZ3RoID09PSBiLmxlbmd0aCwgImFzc2VydEVxdWFsQXJyYXlzOiBhLmxlbmd0aD0iICsgYS5s
ZW5ndGggKyAiLCBiLmxlbmd0aD0iICsgYi5sZW5ndGgpOworICAgIGEgPSBhLnNsaWNlKCk7Cisg
ICAgYiA9IGIuc2xpY2UoKTsKKyAgICBhLnNvcnQoKTsKKyAgICBiLnNvcnQoKTsKKyAgICBhLmZv
ckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgpIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
YVtpbmRleF0gPT09IGJbaW5kZXhdLCAiYXNzZXJ0RXF1YWxBcnJheXM6IGRpZmZlcmVudCB2YWx1
ZXMgYXQgaW5kZXggIiArIGluZGV4KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVX
ZWJHTEVycm9yKGdsLCBlcnJvcikKK3sKKyAgICBzd2l0Y2ggKGVycm9yKSB7CisgICAgY2FzZSBn
bC5JTlZBTElEX0VOVU06CisgICAgICAgIGdsLnBpeGVsU3RvcmVpKDEyMywgMjM0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBnbC5JTlZBTElEX1ZBTFVFOgorICAgICAgICBnbC5waXhlbFN0
b3JlaShnbC5QQUNLX0FMSUdOTUVOVCwgMjM0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBn
bC5JTlZBTElEX09QRVJBVElPTjoKKyAgICBkZWZhdWx0OgorICAgICAgICBnbC5nZW5lcmF0ZU1p
cG1hcChnbC5URVhUVVJFX0NVQkVfTUFQKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitm
dW5jdGlvbiBnZXRBbGxFcnJvcnMoZ2wpCit7CisgICAgdmFyIGVycm9ycyA9IFtdOworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIHZhciBlcnJvciA9IGdsLmdldEVycm9yKCk7CisgICAgICAg
IGlmIChlcnJvciA9PT0gZ2wuTk9fRVJST1IpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZXJyb3JzLnB1c2goZXJyb3IpOworICAgIH0KKyAgICByZXR1cm4gZXJyb3JzOworfQorCitmdW5j
dGlvbiBjcmVhdGVBbmRSdW5XZWJHTFByb2dyYW0oKQoreworICAgIGdsID0gY3JlYXRlV2ViR0xD
b250ZXh0KCk7CisgICAgY29uc29sZS5hc3NlcnQoZ2wsICJGYWlsZWQgdG8gY3JlYXRlIFdlYkdM
IGNvbnRleHQiKTsKKworICAgIGdsUmVzb3VyY2UgPSBnbFsiX19yZXNvdXJjZU9iamVjdCJdOwor
ICAgIGNvbnNvbGUuYXNzZXJ0KGdsUmVzb3VyY2UsICJXZWJHTCBjb250ZXh0IGlzIG5vdCB3cmFw
cGVkIik7CisKKyAgICByYXdHTCA9IGdsUmVzb3VyY2Uud3JhcHBlZE9iamVjdCgpOworICAgIGNv
bnNvbGUuYXNzZXJ0KHJhd0dMLCAiTm8gcmF3IFdlYkdMIGNvbnRleHQgZm91bmQiKTsKKyAgICBj
b25zb2xlLmFzc2VydChnbCAhPT0gcmF3R0wsICJQcm94eSBhbmQgUkFXIGNvbnRleHRzIHNob3Vs
ZCBub3QgYmUgdGhlIHNhbWUiKTsKKworICAgIGFzc2VydE5vRXJyb3JzKGdsKTsKKyAgICBhc3Nl
cnROb0Vycm9ycyhyYXdHTCk7CisKKyAgICAvLyAxKSBHZW5lcmF0ZSBlcnJvcnMgZGlyZWN0bHkg
b24gdGhlIFJBVyBjb250ZXh0CisgICAgLy8gMikgUGljayB0aGVtIHZpYSBwcm94eS4KKyAgICB2
YXIgZXJyb3JzID0gW3Jhd0dMLklOVkFMSURfRU5VTSwgcmF3R0wuSU5WQUxJRF9WQUxVRSwgcmF3
R0wuSU5WQUxJRF9PUEVSQVRJT05dOworICAgIGVycm9ycy5mb3JFYWNoKGdlbmVyYXRlV2ViR0xF
cnJvci5iaW5kKHRoaXMsIHJhd0dMKSk7CisgICAgYXNzZXJ0RXF1YWxBcnJheXMoZXJyb3JzLCBn
ZXRBbGxFcnJvcnMoZ2wpKTsKKyAgICBhc3NlcnROb0Vycm9ycyhnbCk7CisgICAgYXNzZXJ0Tm9F
cnJvcnMocmF3R0wpOworCisgICAgLy8gMSkgR2VuZXJhdGUgZXJyb3JzIG9uIFJBVyBjb250ZXh0
CisgICAgLy8gMikgQ29udmVydCBSZXNvdXJjZSB0byBhIFJlcGxheWFibGUgPT4gdGhpcyBzaG91
bGQgY2xlYW4gdXAgdGhlIFJBVyBjb250ZXh0IGFuZCBzYXZlIHRoZSBlcnJvcnMgaW4gcHJveHkK
KyAgICAvLyAzKSBDaGVjayB0aGF0IFJBVyBjb250ZXh0IG5vIGxvbmdlciBoYXZlIGVycm9ycwor
ICAgIC8vIDQpIENoZWNrIHRoYXQgcHJveHkgc3RpbGwgaGFzIHRoZSBvcmlnaW5hbCBlcnJvcnMg
c2F2ZWQKKyAgICB2YXIgZXJyb3JzID0gW3Jhd0dMLklOVkFMSURfRU5VTSwgcmF3R0wuSU5WQUxJ
RF9WQUxVRSwgcmF3R0wuSU5WQUxJRF9PUEVSQVRJT05dOworICAgIGVycm9ycy5mb3JFYWNoKGdl
bmVyYXRlV2ViR0xFcnJvci5iaW5kKHRoaXMsIHJhd0dMKSk7CisgICAgdmFyIGNhY2hlID0gewor
ICAgICAgICBwdXQ6IGZ1bmN0aW9uKCkge30sCisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7fQor
ICAgIH07CisgICAgZ2xSZXNvdXJjZS50b1JlcGxheWFibGUoY2FjaGUpOworICAgIGFzc2VydE5v
RXJyb3JzKHJhd0dMKTsKKyAgICBhc3NlcnRFcXVhbEFycmF5cyhlcnJvcnMsIGdldEFsbEVycm9y
cyhnbCkpOworICAgIGFzc2VydE5vRXJyb3JzKGdsKTsKKworICAgIC8vIDEpIFJlcGVhdCAxLTMg
c3RlcHMgZnJvbSB0aGUgYWJvdmUKKyAgICAvLyAyKSBDaGVjayBwcm94eSBhbmQgUkFXIGVycm9y
cyBpbnRlcmxlYXZlZAorICAgIHZhciBlcnJvcnMgPSBbcmF3R0wuSU5WQUxJRF9FTlVNLCByYXdH
TC5JTlZBTElEX1ZBTFVFLCByYXdHTC5JTlZBTElEX09QRVJBVElPTl07CisgICAgZXJyb3JzLmZv
ckVhY2goZ2VuZXJhdGVXZWJHTEVycm9yLmJpbmQodGhpcywgcmF3R0wpKTsKKyAgICB2YXIgY2Fj
aGUgPSB7CisgICAgICAgIHB1dDogZnVuY3Rpb24oKSB7fSwKKyAgICAgICAgZ2V0OiBmdW5jdGlv
bigpIHt9CisgICAgfTsKKyAgICBnbFJlc291cmNlLnRvUmVwbGF5YWJsZShjYWNoZSk7CisgICAg
YXNzZXJ0Tm9FcnJvcnMocmF3R0wpOworCisgICAgdmFyIHZhbHVlID0gZ2wuZ2V0RXJyb3IoKTsK
KyAgICBjb25zb2xlLmFzc2VydCh2YWx1ZSAhPT0gZ2wuTk9fRVJST1IsICJBbiBlcnJvciB3YXMg
ZXhwZWN0ZWQiKTsKKyAgICBlcnJvcnMuZm9yRWFjaChnZW5lcmF0ZVdlYkdMRXJyb3IuYmluZCh0
aGlzLCByYXdHTCkpOyAvLyBHZW5lcmF0ZSBhZ2FpbiBpbiB0aGUgUkFXIGNvbnRleHQuCisgICAg
Ly8gTm93IHdlICJoYXZlIiAyIGVycm9ycyBsZWZ0IGluIHRoZSBwcm94eSBhbmQgMyBuZXcgZXJy
b3JzIGluIHRoZSBSQVcgY29udGV4dCA9PiBzaG91bGQgcmV0dXJuIDMgZXJyb3JzIGZyb20gdGhl
IHByb3h5LgorICAgIGFzc2VydEVxdWFsQXJyYXlzKGVycm9ycywgZ2V0QWxsRXJyb3JzKGdsKSk7
CisgICAgYXNzZXJ0Tm9FcnJvcnMoZ2wpOworICAgIGFzc2VydE5vRXJyb3JzKHJhd0dMKTsKKwor
ICAgIHJldHVybiAiU1VDQ0VTUyI7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3Bl
Y3RvclRlc3QuZW5hYmxlV2ViR0xBZ2VudChzdGVwMSk7CisgICAgZnVuY3Rpb24gc3RlcDEoKQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgiY3JlYXRlQW5k
UnVuV2ViR0xQcm9ncmFtKCkiLCBzdGVwMik7CisgICAgfQorICAgIGZ1bmN0aW9uIHN0ZXAyKGVy
cm9yKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIlwiU1VDQ0VT
U1wiIiwgZXJyb3IpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
IH0KK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
cD4KK1Rlc3RzIFdlYkdMIGdldEVycm9yKCkgc3RhdHVzLgorPC9wPgorPGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDQzIj5CdWcgOTU0NDM8L2E+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmls
ZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9w
cm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3YmY1NjBm
MTkwNzRkODI2NzUzYjViMzRkYjM1YTAyYTk4ZjIwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qcwpA
QCAtMCwwICsxLDM3IEBACit2YXIgaW5pdGlhbGl6ZV9XZWJHTFByb2ZpbGVyVGVzdCA9IGZ1bmN0
aW9uKCkgeworCitJbnNwZWN0b3JUZXN0LmVuYWJsZVdlYkdMQWdlbnQgPSBmdW5jdGlvbihjYWxs
YmFjaykKK3sKKyAgICBmdW5jdGlvbiB3ZWJHTEFnZW50RW5hYmxlZChlcnJvcikKKyAgICB7Cisg
ICAgICAgIGlmICghZXJyb3IpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNhZmVXcmFwKGNh
bGxiYWNrKSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJGQUlMRUQgdG8gZW5hYmxlIFdlYkdMQWdlbnQ6ICIgKyBlcnJvcik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorICAg
IHRyeSB7CisgICAgICAgIFdlYkdMQWdlbnQuZW5hYmxlKHdlYkdMQWdlbnRFbmFibGVkKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFeGNlcHRp
b24gd2hpbGUgZW5hYmxpbmcgV2ViR0xBZ2VudCIsIGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK307CisKK307CisKK2Z1bmN0aW9uIGNyZWF0ZVdlYkdM
Q29udGV4dChvcHRfY2FudmFzKQoreworICAgIHZhciBjYW52YXMgPSBvcHRfY2FudmFzIHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIHZhciBjb250ZXh0SWRzID0gWyJl
eHBlcmltZW50YWwtd2ViZ2wiLCAid2Via2l0LTNkIiwgIjNkIl07CisgICAgZm9yICh2YXIgaSA9
IDAsIGNvbnRleHRJZDsgY29udGV4dElkID0gY29udGV4dElkc1tpXTsgKytpKSB7CisgICAgICAg
IHZhciBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KGNvbnRleHRJZCk7CisgICAgICAgIGlmIChnbCkK
KyAgICAgICAgICAgIHJldHVybiBnbDsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161987</attachid>
            <date>2012-09-04 01:41:45 -0700</date>
            <delta_ts>2012-09-04 02:37:17 -0700</delta_ts>
            <desc>+key -&gt; Number(key)</desc>
            <filename>bug-95443-20120904124128.patch</filename>
            <type>text/plain</type>
            <size>14141</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM2OTZiNTA4ZjJmNjIx
NTQ3MDgwZmYwMzg0OGU1NjlmOWMwMjgyOS4uNjQ2Y2QzYTJmYTA0NTBiM2E5NzJkYjRiNDc3ODI5
Y2ExN2Q0YTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDEyLTA4LTMxICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gU2F2ZSBnbC5nZXRFcnJvcigpIHN0YXR1cyBiZWZvcmUgdGFraW5nIGEgV2Vi
R0wgc3RhdGUgc25hcHNob3QgYW5kIHJlc3RvcmUgaXQgYWZ0ZXJ3YXJkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYXZlIGdsLmdldEVycm9yKCkgc3Rh
dHVzIGJlZm9yZSB0YWtpbmcgdGhlIEdMIHNuYXBzaG90IGFuZCByZXN0b3JlIGl0IGFmdGVyd2Fy
ZHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJj
ZS5qczoKKyAgICAgICAgKC4pOgorCisyMDEyLTA4LTMxICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRy
ZXlAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtXZWJHTF0gTWFrZSB3
cmFwIGZ1bmN0aW9ucyBpbml0aWFsaXphdGlvbiBsYXp5CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUzMwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCmlu
ZGV4IGI5MzU4NmEwODg2YzAyY2IyNmQ3MjhjM2UxMWY2NWUyZmM4MjQ1NDcuLmVmMmYxNWYxNWQ4
YTQ0NmU3NzJjZWYzMDEwZDM3NTQyOWMyMzc4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFdlYkdMTW9kdWxlU291cmNlLmpzCkBA
IC0yMzIsNiArMjMyLDE0IEBAIENhbGwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzdWx0OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IHJlc3VsdAor
ICAgICAqLworICAgIHNldFJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAg
dGhpcy5fcmVzdWx0ID0gcmVzdWx0OworICAgIH0sCisKICAgICBmcmVlemU6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9mcmVlemVkKQpAQCAtNzcyLDYgKzc4MCw4IEBAIFdl
YkdMUHJvZ3JhbVJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGdsID0gZ2xSZXNv
dXJjZS53cmFwcGVkT2JqZWN0KCk7CiAgICAgICAgIHZhciBwcm9ncmFtID0gdGhpcy53cmFwcGVk
T2JqZWN0KCk7CiAKKyAgICAgICAgdmFyIG9yaWdpbmFsRXJyb3JzID0gZ2xSZXNvdXJjZS5nZXRB
bGxFcnJvcnMoKTsKKwogICAgICAgICB2YXIgdW5pZm9ybXMgPSBbXTsKICAgICAgICAgdmFyIHVu
aWZvcm1zQ291bnQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIGdsLkFDVElWRV9V
TklGT1JNUyk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5pZm9ybXNDb3VudDsgKytp
KSB7CkBAIC03ODksNiArNzk5LDggQEAgV2ViR0xQcm9ncmFtUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgZGF0YS51bmlmb3JtcyA9IHVu
aWZvcm1zOworCisgICAgICAgIGdsUmVzb3VyY2UucmVzdG9yZUVycm9ycyhvcmlnaW5hbEVycm9y
cyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA5Miw2ICsxMTA0LDc5IEBAIFdlYkdMUmVuZGVy
aW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAg
ICogQHJldHVybiB7QXJyYXkuPG51bWJlcj59CisgICAgICovCisgICAgZ2V0QWxsRXJyb3JzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgZXJyb3JzID0gW107CisgICAgICAgIHZhciBn
bCA9IHRoaXMud3JhcHBlZE9iamVjdCgpOworICAgICAgICBpZiAoZ2wpIHsKKyAgICAgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0RXJyb3Io
KTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPT09IGdsLk5PX0VSUk9SKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycm9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAodGhpcy5fY3VzdG9tRXJyb3JzKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBrZXkgaW4gdGhpcy5fY3VzdG9tRXJyb3JzKSB7CisgICAgICAgICAgICAgICAgdmFy
IGVycm9yID0gTnVtYmVyKGtleSk7CisgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goZXJyb3Ip
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2N1c3RvbUVycm9yczsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gZXJyb3JzOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0FycmF5LjxudW1iZXI+fSBlcnJvcnMKKyAgICAgKi8KKyAgICByZXN0b3Jl
RXJyb3JzOiBmdW5jdGlvbihlcnJvcnMpCisgICAgeworICAgICAgICB2YXIgZ2wgPSB0aGlzLndy
YXBwZWRPYmplY3QoKTsKKyAgICAgICAgaWYgKGdsKSB7CisgICAgICAgICAgICB2YXIgd2FzRXJy
b3IgPSBmYWxzZTsKKyAgICAgICAgICAgIHdoaWxlIChnbC5nZXRFcnJvcigpICE9PSBnbC5OT19F
UlJPUikKKyAgICAgICAgICAgICAgICB3YXNFcnJvciA9IHRydWU7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCghd2FzRXJyb3IsICJFcnJvcihzKSB3aGlsZSBjYXB0dXJpbmcgY3VycmVudCBX
ZWJHTCBzdGF0ZS4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWVycm9ycy5sZW5ndGgpCisg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VzdG9tRXJyb3JzOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHRoaXMuX2N1c3RvbUVycm9ycyA9IHt9OworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDAsIG4gPSBlcnJvcnMubGVuZ3RoOyBpIDwgbjsgKytpKQorICAgICAgICAgICAgICAgIHRo
aXMuX2N1c3RvbUVycm9yc1tlcnJvcnNbaV1dID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3IKKyAgICAgKi8KKyAgICBjbGVh
ckVycm9yOiBmdW5jdGlvbihlcnJvcikKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jdXN0b21F
cnJvcnMpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VzdG9tRXJyb3JzW2Vycm9yXTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLworICAgIG5l
eHRFcnJvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2N1c3RvbUVycm9y
cykgeworICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX2N1c3RvbUVycm9ycykgewor
ICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IE51bWJlcihrZXkpOworICAgICAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9jdXN0b21FcnJvcnNbZXJyb3JdOworICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkZWxldGUgdGhpcy5f
Y3VzdG9tRXJyb3JzOworICAgICAgICB2YXIgZ2wgPSB0aGlzLndyYXBwZWRPYmplY3QoKTsKKyAg
ICAgICAgcmV0dXJuIGdsID8gZ2wuTk9fRVJST1IgOiAwOworICAgIH0sCisKKyAgICAvKioKICAg
ICAgKiBAb3ZlcnJpZGUKICAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YQogICAgICAqIEBwYXJh
bSB7Q2FjaGV9IGNhY2hlCkBAIC0xMTAxLDcgKzExODYsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBnbCA9IHRoaXMud3JhcHBlZE9i
amVjdCgpOwogICAgICAgICBkYXRhLnJlcGxheUNvbnRleHRDYWxsYmFjayA9IHRoaXMuX3JlcGxh
eUNvbnRleHRDYWxsYmFjazsKIAotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGUgZ2V0RXJyb3Io
KSBzdGF0dXMgYW5kIHJlc3RvcmUgaXQgYWZ0ZXIgdGFraW5nIHRoZSBHTCBzdGF0ZSBzbmFwc2hv
dC4KKyAgICAgICAgdmFyIG9yaWdpbmFsRXJyb3JzID0gdGhpcy5nZXRBbGxFcnJvcnMoKTsKIAog
ICAgICAgICAvLyBUYWtlIGEgZnVsbCBHTCBzdGF0ZSBzbmFwc2hvdC4KICAgICAgICAgdmFyIGds
U3RhdGUgPSB7fTsKQEAgLTExMTAsNyArMTE5NSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJl
c291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfSk7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dFJlc291cmNlLlN0YXRlUGFyYW1ldGVycy5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtZXRl
cikgewogICAgICAgICAgICAgZ2xTdGF0ZVtwYXJhbWV0ZXJdID0gUmVzb3VyY2UudG9SZXBsYXlh
YmxlKGdsLmdldFBhcmFtZXRlcihnbFtwYXJhbWV0ZXJdKSwgY2FjaGUpOwotICAgICAgICAgICAg
Ly8gRklYTUU6IENhbGwgd2hpbGUoZ2wuZ2V0RXJyb3IoKSAhPSBnbC5OT19FUlJPUikgey4uLn0g
dG8gY2hlY2sgaWYgYSBwYXJ0aWN1bGFyIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQuCiAgICAgICAg
IH0pOwogCiAgICAgICAgIC8vIFZFUlRFWF9BVFRSSUJfQVJSQVlTCkBAIC0xMTQzLDYgKzEyMjcs
OCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGdsLmFjdGl2ZVRleHR1cmUoY3VycmVudFRleHR1cmVCaW5kaW5nKTsKIAogICAgICAgICBkYXRh
LmdsU3RhdGUgPSBnbFN0YXRlOworCisgICAgICAgIHRoaXMucmVzdG9yZUVycm9ycyhvcmlnaW5h
bEVycm9ycyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTQxNyw2ICsxNTAzLDE2IEBAIFdlYkdM
UmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5jdGlvbi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGlmICghdGhpcy5fY2FsbCkKICAgICAgICAgICAgIHRoaXMuX2NhbGwgPSBuZXcgQ2FsbCh0
aGlzLl9nbFJlc291cmNlLCB0aGlzLl9mdW5jdGlvbk5hbWUsIHRoaXMuX2FyZ3MsIHRoaXMucmVz
dWx0KCkpOwogICAgICAgICByZXR1cm4gdGhpcy5fY2FsbDsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHsqfSByZXN1bHQKKyAgICAgKi8KKyAgICBfb3ZlcnJpZGVSZXN1bHQ6IGZ1
bmN0aW9uKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHZhciBjYWxsID0gdGhpcy5jYWxsKCk7Cisg
ICAgICAgIGNhbGwuc2V0UmVzdWx0KHJlc3VsdCk7CisgICAgICAgIHRoaXMuX3Jlc3VsdCA9IHJl
c3VsdDsKICAgICB9CiB9CiAKQEAgLTE0OTgsNiArMTU5NCwyMCBAQCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRSZXNvdXJjZS53cmFwRnVuY3Rpb25zID0gZnVuY3Rpb24oKQogICAgICAgICBjdXN0b21X
cmFwRnVuY3Rpb24oImZyYW1lYnVmZmVyVGV4dHVyZTJEIik7CiAgICAgICAgIGN1c3RvbVdyYXBG
dW5jdGlvbigicmVuZGVyYnVmZmVyU3RvcmFnZSIpOwogCisgICAgICAgIC8qKiBAdGhpcyBXZWJH
TFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5XcmFwRnVuY3Rpb24gKi8KKyAgICAgICAgd3JhcEZ1
bmN0aW9uc1siZ2V0RXJyb3IiXSA9IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGdsID0gdGhpcy5fb3JpZ2luYWxPYmplY3Q7CisgICAgICAgICAgICB2YXIgZXJyb3IgPSB0
aGlzLnJlc3VsdCgpOworICAgICAgICAgICAgaWYgKGVycm9yICE9PSBnbC5OT19FUlJPUikKKyAg
ICAgICAgICAgICAgICB0aGlzLl9nbFJlc291cmNlLmNsZWFyRXJyb3IoZXJyb3IpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZXJyb3IgPSB0aGlzLl9nbFJlc291cmNlLm5l
eHRFcnJvcigpOworICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPT0gZ2wuTk9fRVJST1IpCisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX292ZXJyaWRlUmVzdWx0KGVycm9yKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNl
Ll93cmFwRnVuY3Rpb25zID0gd3JhcEZ1bmN0aW9uczsKICAgICB9CiAgICAgcmV0dXJuIHdyYXBG
dW5jdGlvbnM7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMTM3ODkxYzRiNTAwYTFiZWU5ODUxN2RiZDhlNmI4NjBmN2Y1Nzc3
NS4uNmNiZGY2MGQ3NjUwYmUwMGNkYjRhNjhhMTQxZjgxYzcyMzgyYTg2NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDIxIEBACiAyMDEyLTA4LTMxICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0u
b3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtXZWJHTF0gU2F2ZSBnbC5nZXRFcnJvcigp
IHN0YXR1cyBiZWZvcmUgdGFraW5nIGEgV2ViR0wgc3RhdGUgc25hcHNob3QgYW5kIHJlc3RvcmUg
aXQgYWZ0ZXJ3YXJkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTU0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRzIGEgdGVzdCB0byBjaGVjayB0aGF0IHdlIHByb3Blcmx5IHNhdmUgdGhlIFdlYkdM
IGdldEVycm9yKCkgc3RhdHVzIHdoaWxlIGRvaW5nIHRoZSBpbnN0cnVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9y
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmds
L3dlYmdsLXByb2ZpbGVyLWdldC1lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItdGVzdC5qczogQWRkZWQuCisgICAgICAg
IChpbml0aWFsaXplX1dlYkdMUHJvZmlsZXJUZXN0Lkluc3BlY3RvclRlc3QuZW5hYmxlV2ViR0xB
Z2VudCk6CisgICAgICAgIChpbml0aWFsaXplX1dlYkdMUHJvZmlsZXJUZXN0KToKKyAgICAgICAg
KGNyZWF0ZVdlYkdMQ29udGV4dCk6CisKKzIwMTItMDgtMzEgIEFuZHJleSBBZGFpa2luICA8YWFu
ZHJleUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW1F0XSBOZXcgaW5zcGVjdG9yL3Byb2ZpbGVy
L3dlYmdsLXByb2ZpbGVyLWFwaS1jaGFuZ2VzLmh0bWwgdGltZXMgb3V0CiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE4MwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVy
cm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93
ZWJnbC1wcm9maWxlci1nZXQtZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjNWFhYTRh
MTE1MDRkMTZhMDUxYTdlODY0NTAzNTk4ODUyMTYyZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvd2ViZ2wvd2ViZ2wtcHJvZmlsZXItZ2V0LWVycm9y
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3RzIFdlYkdMIGdldEVycm9yKCkgc3Rh
dHVzLgorCitCdWcgOTU0NDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci1nZXQtZXJyb3IuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YjY1ODU2NGJkYjM1OTEwMWUyZGVmMThmMzMyMjk1ZmQ3YTkyYzkwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXBy
b2ZpbGVyLWdldC1lcnJvci5odG1sCkBAIC0wLDAgKzEsMTQwIEBACis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IndlYmdsLXByb2ZpbGVyLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFyIGdsOwordmFyIHJhd0dMOwordmFyIGdsUmVz
b3VyY2U7CisKK2Z1bmN0aW9uIGFzc2VydE5vRXJyb3JzKGdsKQoreworICAgIGNvbnNvbGUuYXNz
ZXJ0KGdsLmdldEVycm9yKCkgPT09IGdsLk5PX0VSUk9SLCAiTm8gR0wgZXJyb3Igd2FzIGV4cGVj
dGVkIGF0IHRoaXMgdGltZSIpOworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbEFycmF5cyhhLCBi
KQoreworICAgIGNvbnNvbGUuYXNzZXJ0KGEubGVuZ3RoID09PSBiLmxlbmd0aCwgImFzc2VydEVx
dWFsQXJyYXlzOiBhLmxlbmd0aD0iICsgYS5sZW5ndGggKyAiLCBiLmxlbmd0aD0iICsgYi5sZW5n
dGgpOworICAgIGEgPSBhLnNsaWNlKCk7CisgICAgYiA9IGIuc2xpY2UoKTsKKyAgICBhLnNvcnQo
KTsKKyAgICBiLnNvcnQoKTsKKyAgICBhLmZvckVhY2goZnVuY3Rpb24oZWxlbWVudCwgaW5kZXgp
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYVtpbmRleF0gPT09IGJbaW5kZXhdLCAiYXNzZXJ0
RXF1YWxBcnJheXM6IGRpZmZlcmVudCB2YWx1ZXMgYXQgaW5kZXggIiArIGluZGV4KTsKKyAgICB9
KTsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVXZWJHTEVycm9yKGdsLCBlcnJvcikKK3sKKyAgICBz
d2l0Y2ggKGVycm9yKSB7CisgICAgY2FzZSBnbC5JTlZBTElEX0VOVU06CisgICAgICAgIGdsLnBp
eGVsU3RvcmVpKDEyMywgMjM0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBnbC5JTlZBTElE
X1ZBTFVFOgorICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5QQUNLX0FMSUdOTUVOVCwgMjM0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBnbC5JTlZBTElEX09QRVJBVElPTjoKKyAgICBkZWZh
dWx0OgorICAgICAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFX0NVQkVfTUFQKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCitmdW5jdGlvbiBnZXRBbGxFcnJvcnMoZ2wpCit7Cisg
ICAgdmFyIGVycm9ycyA9IFtdOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHZhciBlcnJv
ciA9IGdsLmdldEVycm9yKCk7CisgICAgICAgIGlmIChlcnJvciA9PT0gZ2wuTk9fRVJST1IpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGVycm9yID09
PSAibnVtYmVyIiwgImdldEVycm9yKCkgc2hvdWxkIHJldHVybiBhIG51bWJlciBpbnN0ZWFkIG9m
IGEgIiArICh0eXBlb2YgZXJyb3IpKTsKKyAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpOworICAg
IH0KKyAgICByZXR1cm4gZXJyb3JzOworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRSdW5XZWJHTFBy
b2dyYW0oKQoreworICAgIGdsID0gY3JlYXRlV2ViR0xDb250ZXh0KCk7CisgICAgY29uc29sZS5h
c3NlcnQoZ2wsICJGYWlsZWQgdG8gY3JlYXRlIFdlYkdMIGNvbnRleHQiKTsKKworICAgIGdsUmVz
b3VyY2UgPSBnbFsiX19yZXNvdXJjZU9iamVjdCJdOworICAgIGNvbnNvbGUuYXNzZXJ0KGdsUmVz
b3VyY2UsICJXZWJHTCBjb250ZXh0IGlzIG5vdCB3cmFwcGVkIik7CisKKyAgICByYXdHTCA9IGds
UmVzb3VyY2Uud3JhcHBlZE9iamVjdCgpOworICAgIGNvbnNvbGUuYXNzZXJ0KHJhd0dMLCAiTm8g
cmF3IFdlYkdMIGNvbnRleHQgZm91bmQiKTsKKyAgICBjb25zb2xlLmFzc2VydChnbCAhPT0gcmF3
R0wsICJQcm94eSBhbmQgUkFXIGNvbnRleHRzIHNob3VsZCBub3QgYmUgdGhlIHNhbWUiKTsKKwor
ICAgIGFzc2VydE5vRXJyb3JzKGdsKTsKKyAgICBhc3NlcnROb0Vycm9ycyhyYXdHTCk7CisKKyAg
ICAvLyAxKSBHZW5lcmF0ZSBlcnJvcnMgZGlyZWN0bHkgb24gdGhlIFJBVyBjb250ZXh0CisgICAg
Ly8gMikgUGljayB0aGVtIHZpYSBwcm94eS4KKyAgICB2YXIgZXJyb3JzID0gW3Jhd0dMLklOVkFM
SURfRU5VTSwgcmF3R0wuSU5WQUxJRF9WQUxVRSwgcmF3R0wuSU5WQUxJRF9PUEVSQVRJT05dOwor
ICAgIGVycm9ycy5mb3JFYWNoKGdlbmVyYXRlV2ViR0xFcnJvci5iaW5kKHRoaXMsIHJhd0dMKSk7
CisgICAgYXNzZXJ0RXF1YWxBcnJheXMoZXJyb3JzLCBnZXRBbGxFcnJvcnMoZ2wpKTsKKyAgICBh
c3NlcnROb0Vycm9ycyhnbCk7CisgICAgYXNzZXJ0Tm9FcnJvcnMocmF3R0wpOworCisgICAgLy8g
MSkgR2VuZXJhdGUgZXJyb3JzIG9uIFJBVyBjb250ZXh0CisgICAgLy8gMikgQ29udmVydCBSZXNv
dXJjZSB0byBhIFJlcGxheWFibGUgPT4gdGhpcyBzaG91bGQgY2xlYW4gdXAgdGhlIFJBVyBjb250
ZXh0IGFuZCBzYXZlIHRoZSBlcnJvcnMgaW4gcHJveHkKKyAgICAvLyAzKSBDaGVjayB0aGF0IFJB
VyBjb250ZXh0IG5vIGxvbmdlciBoYXZlIGVycm9ycworICAgIC8vIDQpIENoZWNrIHRoYXQgcHJv
eHkgc3RpbGwgaGFzIHRoZSBvcmlnaW5hbCBlcnJvcnMgc2F2ZWQKKyAgICB2YXIgZXJyb3JzID0g
W3Jhd0dMLklOVkFMSURfRU5VTSwgcmF3R0wuSU5WQUxJRF9WQUxVRSwgcmF3R0wuSU5WQUxJRF9P
UEVSQVRJT05dOworICAgIGVycm9ycy5mb3JFYWNoKGdlbmVyYXRlV2ViR0xFcnJvci5iaW5kKHRo
aXMsIHJhd0dMKSk7CisgICAgdmFyIGNhY2hlID0geworICAgICAgICBwdXQ6IGZ1bmN0aW9uKCkg
e30sCisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7fQorICAgIH07CisgICAgZ2xSZXNvdXJjZS50
b1JlcGxheWFibGUoY2FjaGUpOworICAgIGFzc2VydE5vRXJyb3JzKHJhd0dMKTsKKyAgICBhc3Nl
cnRFcXVhbEFycmF5cyhlcnJvcnMsIGdldEFsbEVycm9ycyhnbCkpOworICAgIGFzc2VydE5vRXJy
b3JzKGdsKTsKKworICAgIC8vIDEpIFJlcGVhdCAxLTMgc3RlcHMgZnJvbSB0aGUgYWJvdmUKKyAg
ICAvLyAyKSBDaGVjayBwcm94eSBhbmQgUkFXIGVycm9ycyBpbnRlcmxlYXZlZAorICAgIHZhciBl
cnJvcnMgPSBbcmF3R0wuSU5WQUxJRF9FTlVNLCByYXdHTC5JTlZBTElEX1ZBTFVFLCByYXdHTC5J
TlZBTElEX09QRVJBVElPTl07CisgICAgZXJyb3JzLmZvckVhY2goZ2VuZXJhdGVXZWJHTEVycm9y
LmJpbmQodGhpcywgcmF3R0wpKTsKKyAgICB2YXIgY2FjaGUgPSB7CisgICAgICAgIHB1dDogZnVu
Y3Rpb24oKSB7fSwKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHt9CisgICAgfTsKKyAgICBnbFJl
c291cmNlLnRvUmVwbGF5YWJsZShjYWNoZSk7CisgICAgYXNzZXJ0Tm9FcnJvcnMocmF3R0wpOwor
CisgICAgdmFyIHZhbHVlID0gZ2wuZ2V0RXJyb3IoKTsKKyAgICBjb25zb2xlLmFzc2VydCh0eXBl
b2YgdmFsdWUgPT09ICJudW1iZXIiLCAiZ2V0RXJyb3IoKSBzaG91bGQgcmV0dXJuIGEgbnVtYmVy
IGluc3RlYWQgb2YgYSAiICsgKHR5cGVvZiB2YWx1ZSkpOworICAgIGNvbnNvbGUuYXNzZXJ0KHZh
bHVlICE9PSBnbC5OT19FUlJPUiwgIkFuIGVycm9yIHdhcyBleHBlY3RlZCIpOworICAgIGVycm9y
cy5mb3JFYWNoKGdlbmVyYXRlV2ViR0xFcnJvci5iaW5kKHRoaXMsIHJhd0dMKSk7IC8vIEdlbmVy
YXRlIGFnYWluIGluIHRoZSBSQVcgY29udGV4dC4KKyAgICAvLyBOb3cgd2UgImhhdmUiIDIgZXJy
b3JzIGxlZnQgaW4gdGhlIHByb3h5IGFuZCAzIG5ldyBlcnJvcnMgaW4gdGhlIFJBVyBjb250ZXh0
ID0+IHNob3VsZCByZXR1cm4gMyBlcnJvcnMgZnJvbSB0aGUgcHJveHkuCisgICAgYXNzZXJ0RXF1
YWxBcnJheXMoZXJyb3JzLCBnZXRBbGxFcnJvcnMoZ2wpKTsKKyAgICBhc3NlcnROb0Vycm9ycyhn
bCk7CisgICAgYXNzZXJ0Tm9FcnJvcnMocmF3R0wpOworCisgICAgcmV0dXJuICJTVUNDRVNTIjsK
K30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5lbmFibGVXZWJHTEFn
ZW50KHN0ZXAxKTsKKyAgICBmdW5jdGlvbiBzdGVwMSgpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJjcmVhdGVBbmRSdW5XZWJHTFByb2dyYW0oKSIsIHN0
ZXAyKTsKKyAgICB9CisgICAgZnVuY3Rpb24gc3RlcDIoZXJyb3IpCisgICAgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiXCJTVUNDRVNTXCIiLCBlcnJvcik7CisgICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgV2ViR0wgZ2V0RXJy
b3IoKSBzdGF0dXMuCis8L3A+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTU0NDMiPkJ1ZyA5NTQ0MzwvYT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci93ZWJnbC93ZWJnbC1wcm9maWxl
ci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL3dlYmdsL3dlYmdsLXBy
b2ZpbGVyLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdiZjU2MGYxOTA3NGQ4MjY3NTNiNWIzNGRiMzVh
MDJhOThmMjBmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci93ZWJnbC93ZWJnbC1wcm9maWxlci10ZXN0LmpzCkBAIC0wLDAgKzEsMzcgQEAKK3ZhciBp
bml0aWFsaXplX1dlYkdMUHJvZmlsZXJUZXN0ID0gZnVuY3Rpb24oKSB7CisKK0luc3BlY3RvclRl
c3QuZW5hYmxlV2ViR0xBZ2VudCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQoreworICAgIGZ1bmN0aW9u
IHdlYkdMQWdlbnRFbmFibGVkKGVycm9yKQorICAgIHsKKyAgICAgICAgaWYgKCFlcnJvcikKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3Quc2FmZVdyYXAoY2FsbGJhY2spKCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZBSUxFRCB0byBlbmFi
bGUgV2ViR0xBZ2VudDogIiArIGVycm9yKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgV2ViR0xB
Z2VudC5lbmFibGUod2ViR0xBZ2VudEVuYWJsZWQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4Y2VwdGlvbiB3aGlsZSBlbmFibGluZyBXZWJH
TEFnZW50IiwgZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
fQorfTsKKworfTsKKworZnVuY3Rpb24gY3JlYXRlV2ViR0xDb250ZXh0KG9wdF9jYW52YXMpCit7
CisgICAgdmFyIGNhbnZhcyA9IG9wdF9jYW52YXMgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
Y2FudmFzIik7CisgICAgdmFyIGNvbnRleHRJZHMgPSBbImV4cGVyaW1lbnRhbC13ZWJnbCIsICJ3
ZWJraXQtM2QiLCAiM2QiXTsKKyAgICBmb3IgKHZhciBpID0gMCwgY29udGV4dElkOyBjb250ZXh0
SWQgPSBjb250ZXh0SWRzW2ldOyArK2kpIHsKKyAgICAgICAgdmFyIGdsID0gY2FudmFzLmdldENv
bnRleHQoY29udGV4dElkKTsKKyAgICAgICAgaWYgKGdsKQorICAgICAgICAgICAgcmV0dXJuIGds
OworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAi
MSIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>