<?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>42345</bug_id>
          
          <creation_ts>2010-07-15 02:26:56 -0700</creation_ts>
          <short_desc>Web Inspector: pass all parameters to WebInspector.addConsoleMessage as a single payload object</short_desc>
          <delta_ts>2010-07-15 08:23:54 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251748</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 02:26:56 -0700</bug_when>
    <thetext>Web Inspector: pass all parameters to WebInspector.addConsoleMessage as a single payload object. This would simplify parameter addition/removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251749</commentid>
    <comment_count>1</comment_count>
      <attachid>61621</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 02:29:48 -0700</bug_when>
    <thetext>Created attachment 61621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251752</commentid>
    <comment_count>2</comment_count>
      <attachid>61621</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-15 02:33:51 -0700</bug_when>
    <thetext>Comment on attachment 61621
Patch

I&apos;d suggest that we remove ScriptArray as a whole instead. Ilya is almost there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251774</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 03:00:32 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 61621 [details])
&gt; I&apos;d suggest that we remove ScriptArray as a whole instead. Ilya is almost there.

At the present time we cannot serialize console parameters into InspectorObject&apos;s, because there is no way to get InspectorObject from JavaScript object. I think it should be addressed in a separate change .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251775</commentid>
    <comment_count>4</comment_count>
      <attachid>61621</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-15 03:07:25 -0700</bug_when>
    <thetext>Comment on attachment 61621
Patch

WebCore/inspector/ConsoleMessage.cpp: 
 +      frontend-&gt;addConsoleMessage(jsonObj, m_frames, arguments,  m_message);
m_frames, arguments are missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251779</commentid>
    <comment_count>5</comment_count>
      <attachid>61630</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 03:27:11 -0700</bug_when>
    <thetext>Created attachment 61630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251780</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 03:27:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 61621 [details])
&gt; WebCore/inspector/ConsoleMessage.cpp: 
&gt;  +      frontend-&gt;addConsoleMessage(jsonObj, m_frames, arguments,  m_message);
&gt; m_frames, arguments are missing.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251823</commentid>
    <comment_count>7</comment_count>
      <attachid>61630</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-15 05:17:14 -0700</bug_when>
    <thetext>Comment on attachment 61630
Patch

WebCore/inspector/front-end/ConsoleView.js:278
 +              msgCopy = new WebInspector.ConsoleMessage(msg.source, msg.type, msg.level, msg.line, msg.url, msg.groupLevel, count, msg.messageText, msg.parameters, msg.stackTrace);
I think you affect the repeatCount and repeatDelta properties.

WebCore/inspector/front-end/ConsoleView.js:658
 +      this.parameters = parameters;
These should be private.



WebCore/inspector/front-end/ConsoleView.js:676
 +                  var stack = this.stackTrace.slice();
No need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251834</commentid>
    <comment_count>8</comment_count>
      <attachid>61646</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 06:16:44 -0700</bug_when>
    <thetext>Created attachment 61646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251835</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 06:17:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 61630 [details])
&gt; WebCore/inspector/front-end/ConsoleView.js:278
&gt;  +              msgCopy = new WebInspector.ConsoleMessage(msg.source, msg.type, msg.level, msg.line, msg.url, msg.groupLevel, count, msg.messageText, msg.parameters, msg.stackTrace);
&gt; I think you affect the repeatCount and repeatDelta properties.
&gt;
Fixed.
 
&gt; WebCore/inspector/front-end/ConsoleView.js:658
&gt;  +      this.parameters = parameters;
&gt; These should be private.
&gt; 
Done.

&gt; 
&gt; 
&gt; WebCore/inspector/front-end/ConsoleView.js:676
&gt;  +                  var stack = this.stackTrace.slice();
&gt; No need.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251863</commentid>
    <comment_count>10</comment_count>
      <attachid>61646</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-15 07:19:58 -0700</bug_when>
    <thetext>Comment on attachment 61646
Patch

I think it is too risky to rename everything. Could you name only new members as private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251893</commentid>
    <comment_count>11</comment_count>
      <attachid>61664</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 08:06:05 -0700</bug_when>
    <thetext>Created attachment 61664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251895</commentid>
    <comment_count>12</comment_count>
      <attachid>61664</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-15 08:13:24 -0700</bug_when>
    <thetext>Comment on attachment 61664
Patch

WebCore/inspector/front-end/ConsoleView.js:685
 +                  this.formattedMessage = this._format([&quot;%O&quot;, this._parameters[0]]);
I am a bit concerned with the potential switch from &lt;non-undefined&gt;[0] to &lt;potentially-undefined&gt;[0].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251898</commentid>
    <comment_count>13</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 08:19:50 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 61664 [details])
&gt; WebCore/inspector/front-end/ConsoleView.js:685
&gt;  +                  this.formattedMessage = this._format([&quot;%O&quot;, this._parameters[0]]);
&gt; I am a bit concerned with the potential switch from &lt;non-undefined&gt;[0] to &lt;potentially-undefined&gt;[0].

Added explicit check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251900</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-15 08:23:54 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/ScriptArray.cpp
	M	WebCore/bindings/js/ScriptArray.h
	M	WebCore/bindings/v8/ScriptArray.cpp
	M	WebCore/bindings/v8/ScriptArray.h
	M	WebCore/inspector/ConsoleMessage.cpp
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/InjectedScriptAccess.js
	M	WebCore/inspector/front-end/Resource.js
	M	WebCore/inspector/front-end/inspector.js
Committed r63427</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61621</attachid>
            <date>2010-07-15 02:29:48 -0700</date>
            <delta_ts>2010-07-15 03:27:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42345-20100715132946.patch</filename>
            <type>text/plain</type>
            <size>19288</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODA5ZDE0NDI5OGJiNzBlMTJhY2RmYWVlNDI5NDZjMzZjYTE0Yjk1ZS4uZTVkMDU5MmRhZjY5ZGQ0
YWM5NWI0ZjUyMDg3NTA2OGU3MDBmNzFjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNy0xNSAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXNzIGFsbCBwYXJh
bWV0ZXJzIHRvIFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSBhcyBhIHNpbmdsZSBwYXls
b2FkIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIzNDUKKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgY29uc29sZSB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdEFycmF5Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0QXJyYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJyYXk6OnNldCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0QXJyYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
cHJvdG90eXBlLnVwZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
LmNyZWF0ZVRleHRNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFu
ZFJlc3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLmdlbmVyYXRl
U3R5bGVzaGVldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlw
dEFjY2Vzcy5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxl
ci5JbmplY3RlZFNjcmlwdEFjY2Vzcy5wcm90b3R5cGUubWV0aG9kTmFtZS5teUNhbGxiYWNrKToK
KyAgICAgICAgKEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlci5JbmplY3RlZFNj
cmlwdEFjY2Vzcy5wcm90b3R5cGUubWV0aG9kTmFtZSk6CisgICAgICAgIChJbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9j
aGVja1dhcm5pbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IubG9nLmxvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZyk6
CisKIDIwMTAtMDctMTQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEFycmF5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwCmlu
ZGV4IGNhZWNjNDA1MWQ0ZDJkYjI5ZDJhZjg5ZmIxYTc3ZDA4Y2FjMjI4YzYuLmY3MGU5YTU2MzEz
Y2MyYzA2MjgyNWI3OGFmNTIwMWE5MDlmMmM0ZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QXJyYXkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QXJy
YXkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTY3JpcHRBcnJheS5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIApAQCAtNjIsNiArNjMsMTkgQEAgYm9vbCBTY3Jp
cHRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTY3JpcHRPYmplY3QmIHZhbHVlKQog
ICAgIHJldHVybiBoYW5kbGVFeGNlcHRpb24obV9zY3JpcHRTdGF0ZSk7CiB9CiAKK2Jvb2wgU2Ny
aXB0QXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1
ZSkKK3sKKyAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShtX3NjcmlwdFN0YXRlLCB2YWx1ZSk7CisgICAgaWYgKHNjcmlwdFZhbHVlLmhhc05vVmFs
dWUoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Cisg
ICAganNBcnJheSgpLT5wdXQobV9zY3JpcHRTdGF0ZSwgaW5kZXgsIHNjcmlwdFZhbHVlLmpzVmFs
dWUoKSk7CisgICAgcmV0dXJuIGhhbmRsZUV4Y2VwdGlvbihtX3NjcmlwdFN0YXRlKTsKK30KKwog
Ym9vbCBTY3JpcHRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIHZhbHVl
KQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmggYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEFycmF5LmgKaW5kZXggOTI0MDM2ODFlY2U1NmYxNjc2MTJlNmE3YmZhZWI3MTQ0MGM0
NDM5Yy4uMmJhZGQwOWNmZGQ3OTVhOTdhNzEzOGM0YWZmY2NkN2MxNGUyMDNhOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5oCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QXJyYXkuaApAQCAtMzcsMjMgKzM3LDI1IEBACiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0FycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIFNjcmlwdEFy
cmF5IDogcHVibGljIFNjcmlwdE9iamVjdCB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRB
cnJheShTY3JpcHRTdGF0ZSosIEpTQzo6SlNBcnJheSopOwotICAgICAgICBTY3JpcHRBcnJheSgp
IHt9Ci0gICAgICAgIEpTQzo6SlNBcnJheSoganNBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGFzQXJy
YXkoanNWYWx1ZSgpKTsgfQotCi0gICAgICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25z
dCBTY3JpcHRPYmplY3QmKTsKLSAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0
IFN0cmluZyYpOwotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlKTsKLSAg
ICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGxvbmcgbG9uZyk7Ci0gICAgICAgIGJvb2wg
c2V0KHVuc2lnbmVkIGluZGV4LCBpbnQpOwotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRl
eCwgYm9vbCk7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpOwotCi0gICAgICAgIHN0YXRpYyBT
Y3JpcHRBcnJheSBjcmVhdGVOZXcoU2NyaXB0U3RhdGUqKTsKLSAgICB9OworY2xhc3MgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOworCitjbGFzcyBTY3JpcHRBcnJheSA6IHB1YmxpYyBTY3JpcHRPYmpl
Y3QgeworcHVibGljOgorICAgIFNjcmlwdEFycmF5KFNjcmlwdFN0YXRlKiwgSlNDOjpKU0FycmF5
Kik7CisgICAgU2NyaXB0QXJyYXkoKSB7fQorICAgIEpTQzo6SlNBcnJheSoganNBcnJheSgpIGNv
bnN0IHsgcmV0dXJuIGFzQXJyYXkoanNWYWx1ZSgpKTsgfQorCisgICAgYm9vbCBzZXQodW5zaWdu
ZWQgaW5kZXgsIGNvbnN0IFNjcmlwdE9iamVjdCYpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGlu
ZGV4LCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKKyAgICBib29sIHNldCh1bnNpZ25lZCBpbmRl
eCwgY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSk7
CisgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGxvbmcgbG9uZyk7CisgICAgYm9vbCBzZXQo
dW5zaWduZWQgaW5kZXgsIGludCk7CisgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGJvb2wp
OworICAgIHVuc2lnbmVkIGxlbmd0aCgpOworCisgICAgc3RhdGljIFNjcmlwdEFycmF5IGNyZWF0
ZU5ldyhTY3JpcHRTdGF0ZSopOworfTsKIH0KIAogI2VuZGlmIC8vIFNjcmlwdEFycmF5X2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0QXJyYXkuY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRBcnJheS5jcHAKaW5kZXggYTE5OWE2YzZhNTg2NzQwN2ViODMyZWZk
MmRmODNhYTdjNGZhODQzMC4uMGM0OGE2ZTY5YjZjMDJmMmY1MGYxMzhlNjE0Yjg2MmVjNzExZWMy
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAog
I2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKQEAgLTU3LDYgKzU4LDE5IEBAIGJvb2wgU2NyaXB0QXJyYXk6OnNl
dCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKICAgICByZXR1cm4g
c2NvcGUuc3VjY2VzcygpOwogfQogCitib29sIFNjcmlwdEFycmF5OjpzZXQodW5zaWduZWQgaW5k
ZXgsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCit7CisgICAgU2NyaXB0VmFsdWUgc2Ny
aXB0VmFsdWUgPSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUobV9zY3JpcHRTdGF0ZSwgdmFsdWUp
OworICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBTY3JpcHRT
Y29wZSBzY29wZShtX3NjcmlwdFN0YXRlKTsKKyAgICB2OE9iamVjdCgpLT5TZXQodjg6OkludGVn
ZXI6Ok5ldyhpbmRleCksIHNjcmlwdFZhbHVlLnY4VmFsdWUoKSk7CisgICAgcmV0dXJuIHNjb3Bl
LnN1Y2Nlc3MoKTsKK30KKwogYm9vbCBTY3JpcHRBcnJheTo6c2V0KHVuc2lnbmVkIGluZGV4LCBj
b25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIFNjcmlwdFNjb3BlIHNjb3BlKG1fc2NyaXB0U3Rh
dGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5oIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5oCmluZGV4IDlmNDBmYmYwNDg0NWVmMzY5M2Vh
MTZmMjg4NGQ2MDg0OTM2MDdiMmMuLjAyZTdjYWMwZDkxNGVmODc2NjNhZTk5NGFiODU5ZmJjNTA5
MTVlYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0QXJyYXkuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmgKQEAgLTM3LDYgKzM3LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdFN0YXRlOworICAgIGNsYXNzIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogICAgIGNsYXNzIFNjcmlwdEFycmF5IDogcHVibGljIFNj
cmlwdE9iamVjdCB7CiAgICAgcHVibGljOgpAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNjcmlwdEFycmF5KCkge30KIAogICAgICAgICBib29s
IHNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgICAgIGJvb2wg
c2V0KHVuc2lnbmVkIGluZGV4LCBTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKICAgICAgICAgYm9v
bCBzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOwogICAgICAgICBib29sIHNldCh1
bnNpZ25lZCBpbmRleCwgZG91YmxlKTsKICAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgs
IGxvbmcgbG9uZyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2Fn
ZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggOTM0ZTJl
OTY2MTdlMzZmMTQyZmMzNWM5MGFjYTA0YWEyNTZiYThmZC4uZTQ1NTc0MzQyZWZkZWUyODg5MTYz
MGEwMjM2ZjE5NDhkNTc4MzU1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApA
QCAtOTMsMTUgKzkzLDIwIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvCiAgICAganNvbk9iai5z
ZXQoInVybCIsIG1fdXJsKTsKICAgICBqc29uT2JqLnNldCgiZ3JvdXBMZXZlbCIsIHN0YXRpY19j
YXN0PGludD4obV9ncm91cExldmVsKSk7CiAgICAganNvbk9iai5zZXQoInJlcGVhdENvdW50Iiwg
c3RhdGljX2Nhc3Q8aW50PihtX3JlcGVhdENvdW50KSk7Ci0gICAgVmVjdG9yPFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+ID4gYXJndW1lbnRzOworICAgIGpzb25PYmouc2V0KCJtZXNzYWdl
IiwgbV9tZXNzYWdlKTsKICAgICBpZiAoIW1fYXJndW1lbnRzLmlzRW1wdHkoKSkgeworICAgICAg
ICBTY3JpcHRBcnJheSBqc29uQXJncyA9IGZyb250ZW5kLT5uZXdTY3JpcHRBcnJheSgpOwogICAg
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0SG9zdC0+
aW5qZWN0ZWRTY3JpcHRGb3IobV9zY3JpcHRTdGF0ZS5nZXQoKSk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0gaW5qZWN0ZWRT
Y3JpcHQud3JhcEZvckNvbnNvbGUobV9hcmd1bWVudHNbaV0pOwotICAgICAgICAgICAgYXJndW1l
bnRzLmFwcGVuZChzZXJpYWxpemVkVmFsdWUpOworICAgICAgICAgICAgaWYgKCFqc29uQXJncy5z
ZXQoaSwgc2VyaWFsaXplZFZhbHVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0gICAKLSAgICBmcm9udGVuZC0+YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9i
aiwgbV9mcmFtZXMsIGFyZ3VtZW50cywgIG1fbWVzc2FnZSk7CisgICAgICAgIGpzb25PYmouc2V0
KCJhcmd1bWVudHMiLCBqc29uQXJncyk7CisgICAgfQorICAgIGZyb250ZW5kLT5hZGRDb25zb2xl
TWVzc2FnZShqc29uT2JqKTsKIH0KIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0
Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCmluZGV4IGY5YTI5YjZlNzgxN2UxYTZiNDQyMjU0ZTg2
MGQ3NTQ5NjU1MzZmMjUuLjU5MjU3NDEyN2RhYTkyYzE5NzZmOTdjZmFmMjk2Mjg4ODdiNDc4MzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKQEAgLTMyLDcgKzMyLDYg
QEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJDb25zb2xlTWVzc2FnZS5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKQEAgLTExMiwyNiArMTExLDExIEBAIHZvaWQgSW5z
cGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KHVuc2lnbmVk
IGNvdW50KQogICAgIGZ1bmN0aW9uLmNhbGwoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGcm9udGVu
ZDo6YWRkQ29uc29sZU1lc3NhZ2UoY29uc3QgU2NyaXB0T2JqZWN0JiBtZXNzYWdlT2JqLCBjb25z
dCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJhbWVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gPiYgYXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2
b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRDb25zb2xlTWVzc2FnZShjb25zdCBTY3JpcHRPYmpl
Y3QmIG1lc3NhZ2VPYmopCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2Vi
SW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsgCiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoImFk
ZENvbnNvbGVNZXNzYWdlIik7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobWVzc2FnZU9i
aik7Ci0gICAgaWYgKCFmcmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBmcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChmcmFtZXNbaV0pOwotICAgIH0gZWxzZSBpZiAoIWFyZ3VtZW50cy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50cy5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUoc2NyaXB0U3RhdGUoKSwgYXJndW1lbnRzW2ldLmdldCgpKTsKLSAgICAg
ICAgICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzY3JpcHRWYWx1ZSk7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCht
ZXNzYWdlKTsKLSAgICB9CiAgICAgZnVuY3Rpb24uY2FsbCgpOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCBlMzJmNDBjYWE5YTQxMzUwMWIxYjVjZWZjM2U3Yjlj
MTU5OWE4N2FkLi5lNjU2N2JlM2NhMjUyZGU0ZGViYjgzZjMwOTNhMWU3Yjk4M2IwYWRjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHBvcHVsYXRlU2Vzc2lvblNldHRpbmdzKGNvbnN0
IFN0cmluZyYgc2V0dGluZ3MpOwogCiAgICAgICAgIHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VF
eHBpcmVkQ291bnQodW5zaWduZWQgY291bnQpOwotICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0
cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
ID4mIGFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCBhZGRD
b25zb2xlTWVzc2FnZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmopOwogICAgICAgICB2
b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQodW5zaWduZWQgY291bnQpOwogICAg
ICAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCA4YmI3MWU2NWE2ZmFkZGYxYmZjZDk1YmE4ZTI2
NWFjODQ3ZGI1MTdjLi4zMjI5ZGY1NmRiYzRlMGU2ZWVjYzE5NGJkMzZhNWQ1NzBmMDBiMTQ2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC0yNzUsOSAr
Mjc1LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIG1zZy5fdXBkYXRlUmVwZWF0Q291bnQoKTsKICAgICAgICAgICAgIHRoaXMuX2luY3JlbWVu
dEVycm9yV2FybmluZ0NvdW50KG1zZyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
c2dDb3B5ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShtc2cuc291cmNlLCBtc2cu
dHlwZSwgbXNnLmxldmVsLCBtc2cubGluZSwgbXNnLnVybCwgbXNnLmdyb3VwTGV2ZWwsIGNvdW50
IC0gcHJldlJlcGVhdENvdW50KTsKLSAgICAgICAgICAgIG1zZ0NvcHkudG90YWxSZXBlYXRDb3Vu
dCA9IGNvdW50OwotICAgICAgICAgICAgbXNnQ29weS5zZXRNZXNzYWdlQm9keShtc2cuYXJncyk7
CisgICAgICAgICAgICBtc2dDb3B5ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSht
c2cuc291cmNlLCBtc2cudHlwZSwgbXNnLmxldmVsLCBtc2cubGluZSwgbXNnLnVybCwgbXNnLmdy
b3VwTGV2ZWwsIGNvdW50LCBtc2cubWVzc2FnZVRleHQsIG1zZy5wYXJhbWV0ZXJzKTsKICAgICAg
ICAgICAgIHRoaXMuYWRkTWVzc2FnZShtc2dDb3B5KTsKICAgICAgICAgfQogICAgIH0sCkBAIC02
NDUsNyArNjQzLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKIAog
V2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuVmlldy5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9IGZ1bmN0
aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgZ3JvdXBMZXZlbCwgcmVwZWF0Q291
bnQpCitXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUs
IGxldmVsLCBsaW5lLCB1cmwsIGdyb3VwTGV2ZWwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBwYXJh
bWV0ZXJzKQogewogICAgIHRoaXMuc291cmNlID0gc291cmNlOwogICAgIHRoaXMudHlwZSA9IHR5
cGU7CkBAIC02NTYsMTkgKzY1NCwyNSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBm
dW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIGdyb3VwTGV2ZQogICAgIHRo
aXMucmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsKICAgICB0aGlzLnJlcGVhdERlbHRhID0gcmVw
ZWF0Q291bnQ7CiAgICAgdGhpcy50b3RhbFJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7Ci0gICAg
aWYgKGFyZ3VtZW50cy5sZW5ndGggPiA3KQotICAgICAgICB0aGlzLnNldE1lc3NhZ2VCb2R5KEFy
cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgNykpOworICAgIHRoaXMubWVzc2Fn
ZVRleHQgPSBtZXNzYWdlOworICAgIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAg
dGhpcy5fZm9ybWF0TWVzc2FnZSgpOworfQorCitXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
Y3JlYXRlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBsZXZlbCkKK3sKKyAgICBsZXZlbCA9
IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOwor
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVsbCwgbnVsbCwgMSwgbnVsbCwgW3RleHRd
KTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKLSAgICBz
ZXRNZXNzYWdlQm9keTogZnVuY3Rpb24oYXJncykKKyAgICBfZm9ybWF0TWVzc2FnZTogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgdGhpcy5hcmdzID0gYXJnczsKICAgICAgICAgc3dpdGNoICh0
aGlzLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VUeXBlLlRyYWNlOgogICAgICAgICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0g
ImNvbnNvbGUtZm9ybWF0dGVkLXRyYWNlIHNvdXJjZS1jb2RlIjsKLSAgICAgICAgICAgICAgICB2
YXIgc3RhY2sgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKTsKKyAgICAgICAgICAg
ICAgICB2YXIgc3RhY2sgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLnBhcmFtZXRl
cnMpOwogICAgICAgICAgICAgICAgIHZhciBmdW5jTmFtZXMgPSBzdGFjay5tYXAoZnVuY3Rpb24o
ZikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZiB8fCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC02NzYs
OSArNjgwLDEwIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gc3BhbjsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VUeXBlLk9iamVjdDoKLSAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3Nh
Z2UgPSB0aGlzLl9mb3JtYXQoWyIlTyIsIGFyZ3NbMF1dKTsKKyAgICAgICAgICAgICAgICB0aGlz
LmZvcm1hdHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3JtYXQoWyIlTyIsIHRoaXMucGFyYW1ldGVyc1sw
XV0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB2YXIgYXJncyA9IHRoaXMucGFyYW1ldGVycyB8fCBbdGhpcy5tZXNzYWdlVGV4
dF07CiAgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0
KGFyZ3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDAxLDE0ICsx
MDA2LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kLnByb3RvdHlwZSA9IHsKICAgICB9
CiB9CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBs
ZXZlbCkKLXsKLSAgICBsZXZlbCA9IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5NZXNzYWdlTGV2ZWwuTG9nOwotICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jYWxs
KHRoaXMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVsbCwg
bnVsbCwgMSwgdGV4dCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5Db25zb2xlVGV4dE1lc3NhZ2UucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGU7
Ci0KIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdCA9IGZ1bmN0aW9uKHJlc3VsdCwg
ZXhjZXB0aW9uLCBvcmlnaW5hdGluZ0NvbW1hbmQpCiB7CiAgICAgdmFyIGxldmVsID0gKGV4Y2Vw
dGlvbiA/IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IgOiBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZyk7CkBAIC0xMDIzLDcg
KzEwMjAsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5jdGlvbihy
ZXN1bHQsIGV4Y2VwdGlvbiwgb3JpZ2luYXRpbmdDb21tYQogCiAgICAgdGhpcy5vcmlnaW5hdGlu
Z0NvbW1hbmQgPSBvcmlnaW5hdGluZ0NvbW1hbmQ7CiAKLSAgICBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNv
dXJjZS5KUywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdCwg
bGV2ZWwsIGxpbmUsIHVybCwgbnVsbCwgMSwgbWVzc2FnZSk7CisgICAgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1
bHQsIGxldmVsLCBsaW5lLCB1cmwsIG51bGwsIDEsIG51bGwsIFttZXNzYWdlXSk7CiB9CiAKIFdl
Ykluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IGU1NTI5NGExNzhmODAz
ZGYxY2MyNjkxYzhhZjJjNGUyNGEzODYwMmEuLjQ4ZWI0YzBiOWJhMjE2ZTNmODUxODExOTYyYTFl
OGJmZmViYjU2MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCkBAIC00NTMsNyArNDUzLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dDb25zb2xl
KCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UobmV3IFdlYkluc3Bl
Y3Rvci5Db25zb2xlVGV4dE1lc3NhZ2UoYnVpbGRlci5qb2luKCJcbiIpKSk7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
LmNyZWF0ZVRleHRNZXNzYWdlKGJ1aWxkZXIuam9pbigiXG4iKSkpOwogICAgIH0sCiAKICAgICBn
ZXQgcm9vdERPTU5vZGUoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luamVjdGVkU2NyaXB0QWNjZXNzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lu
amVjdGVkU2NyaXB0QWNjZXNzLmpzCmluZGV4IDkwZGFhYjdjMzIyNGY2NzM3NzIzNmFmZTJiNTI4
ZmNlMmIxMjYyNGMuLjBlNGNjMmVjYTAxYTQ1OGE5YmZlM2ZiZjY3YTY2NjIyNDJiOTk3MzMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vz
cy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nl
c3MuanMKQEAgLTU4LDcgKzU4LDcgQEAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5k
bGVyID0gZnVuY3Rpb24obWV0aG9kTmFtZSwgYXN5bmMpCiAgICAgICAgICAgICBpZiAoIWlzRXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVzc2FnZShuZXcg
V2ViSW5zcGVjdG9yLkNvbnNvbGVUZXh0TWVzc2FnZSgiRXJyb3IgZGlzcGF0Y2hpbmc6ICIgKyBt
ZXRob2ROYW1lKSk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVz
c2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UoIkVycm9y
IGRpc3BhdGNoaW5nOiAiICsgbWV0aG9kTmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIHZhciBj
YWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChteUNhbGxiYWNrKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IDJhZTIzYTBmOTMzNTg4M2U0ZmY5
YjQxZjgzY2Y2MjZhNzVlYzk3ZDAuLjg0NjhiZDNiM2U0MTk5YTNiYmNhNzUxZTFlMWYxOGRlMmE4
ZWNjNzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTU4Nyw5
ICs1ODcsMTMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBpZiAoIXRoaXMuX21pbWVUeXBlSXNDb25zaXN0ZW50V2l0aFR5cGUoKSkKICAgICAg
ICAgICAgICAgICAgICAgbXNnID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5PdGhlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2cs
IAotICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VMZXZlbC5XYXJuaW5nLCAtMSwgdGhpcy51cmwsIG51bGwsIDEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuV2FybmluZ3MuSW5jb3JyZWN0
TUlNRVR5cGUubWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLnRvU3RyaW5nKHRoaXMudHlwZSksIHRoaXMubWltZVR5cGUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2
ZWwuV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy51cmwsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5zcHJp
bnRmKFdlYkluc3BlY3Rvci5XYXJuaW5ncy5JbmNvcnJlY3RNSU1FVHlwZS5tZXNzYWdlLCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS50b1N0cmluZyh0aGlzLnR5cGUpLCB0aGlzLm1pbWVUeXBl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmlu
ZGV4IDdjMjU1YmJiOTVkZDAzYjQ1Zjk5ZDM3ZjNhMDEzZjc3MWFhOGFjNjIuLmQ4OWFhYWE5NmJm
MTQ1M2RjN2RkNTE0ZGZlOTYwMzI4ZDUwMmZjZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwpAQCAtMTQ2MywxMCArMTQ2MywxMCBAQCBXZWJJbnNwZWN0b3IuZGlk
Q29tbWl0TG9hZCA9IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci51cGRhdGVDb25zb2xlTWVzc2Fn
ZUV4cGlyZWRDb3VudCA9IGZ1bmN0aW9uKGNvdW50KQogewogICAgIHZhciBtZXNzYWdlID0gU3Ry
aW5nLnNwcmludGYoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBjb25zb2xlIG1lc3NhZ2VzIGFy
ZSBub3Qgc2hvd24uIiksIGNvdW50KTsKLSAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNz
YWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVRleHRNZXNzYWdlKG1lc3NhZ2UsIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZykpOworICAgIFdlYkluc3Bl
Y3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0
ZVRleHRNZXNzYWdlKG1lc3NhZ2UsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
TGV2ZWwuV2FybmluZykpOwogfQogCi1XZWJJbnNwZWN0b3IuYWRkQ29uc29sZU1lc3NhZ2UgPSBm
dW5jdGlvbihwYXlsb2FkLCBvcHRfYXJncykKK1dlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2Fn
ZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7CiAgICAgdmFyIGNvbnNvbGVNZXNzYWdlID0gbmV3IFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSgKICAgICAgICAgcGF5bG9hZC5zb3VyY2UsCkBAIC0x
NDc1LDggKzE0NzUsOSBAQCBXZWJJbnNwZWN0b3IuYWRkQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlv
bihwYXlsb2FkLCBvcHRfYXJncykKICAgICAgICAgcGF5bG9hZC5saW5lLAogICAgICAgICBwYXls
b2FkLnVybCwKICAgICAgICAgcGF5bG9hZC5ncm91cExldmVsLAotICAgICAgICBwYXlsb2FkLnJl
cGVhdENvdW50KTsKLSAgICBjb25zb2xlTWVzc2FnZS5zZXRNZXNzYWdlQm9keShBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsKKyAgICAgICAgcGF5bG9hZC5yZXBlYXRD
b3VudCwKKyAgICAgICAgcGF5bG9hZC5tZXNzYWdlLAorICAgICAgICBwYXlsb2FkLmFyZ3VtZW50
cyk7CiAgICAgdGhpcy5jb25zb2xlLmFkZE1lc3NhZ2UoY29uc29sZU1lc3NhZ2UpOwogfQogCkBA
IC0xNTQ0LDcgKzE1NDUsOCBAQCBXZWJJbnNwZWN0b3IubG9nID0gZnVuY3Rpb24obWVzc2FnZSwg
bWVzc2FnZUxldmVsKQogICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgIG51bGwsCiAgICAg
ICAgICAgICByZXBlYXRDb3VudCwKLSAgICAgICAgICAgIG1lc3NhZ2UpOworICAgICAgICAgICAg
bnVsbCwKKyAgICAgICAgICAgIFttZXNzYWdlXSk7CiAKICAgICAgICAgc2VsZi5jb25zb2xlLmFk
ZE1lc3NhZ2UobXNnKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61630</attachid>
            <date>2010-07-15 03:27:11 -0700</date>
            <delta_ts>2010-07-15 06:16:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42345-20100715142708.patch</filename>
            <type>text/plain</type>
            <size>20662</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjAwNjVhYzU3Y2QyOWQ3YTQyMjhmMTQ1ZDk3ZTg3YmZkMjRjMzRjOC4uOTI3YWZjOTc4NTA3MjEx
MjQ2N2QxYjhhNjJkODgyNzdmNWY0ZmU2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNy0xNSAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXNzIGFsbCBwYXJh
bWV0ZXJzIHRvIFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSBhcyBhIHNpbmdsZSBwYXls
b2FkIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIzNDUKKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgY29uc29sZSB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdEFycmF5Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0QXJyYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJyYXk6OnNldCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0QXJyYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
cHJvdG90eXBlLnVwZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
LmNyZWF0ZVRleHRNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFu
ZFJlc3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLmdlbmVyYXRl
U3R5bGVzaGVldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlw
dEFjY2Vzcy5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxl
ci5JbmplY3RlZFNjcmlwdEFjY2Vzcy5wcm90b3R5cGUubWV0aG9kTmFtZS5teUNhbGxiYWNrKToK
KyAgICAgICAgKEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlci5JbmplY3RlZFNj
cmlwdEFjY2Vzcy5wcm90b3R5cGUubWV0aG9kTmFtZSk6CisgICAgICAgIChJbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9j
aGVja1dhcm5pbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IubG9nLmxvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZyk6
CisKIDIwMTAtMDctMTUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgdGhlIHNvcnRpbmcgaW4gdGhlIFhjb2RlIHByb2plY3QgZmlsZXMuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QXJyYXkuY3BwCmluZGV4IGNhZWNjNDA1MWQ0ZDJkYjI5ZDJhZjg5ZmIxYTc3ZDA4
Y2FjMjI4YzYuLjExOWQzMDM2YjI1MWRmZTMyMzMzMGIyNWEwYWUzNzhjNjc1OGQ5NTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKIAorI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgorCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKQEAgLTYyLDYgKzY0LDE5IEBAIGJvb2wgU2NyaXB0QXJyYXk6OnNldCh1
bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKICAgICByZXR1cm4gaGFu
ZGxlRXhjZXB0aW9uKG1fc2NyaXB0U3RhdGUpOwogfQogCitib29sIFNjcmlwdEFycmF5OjpzZXQo
dW5zaWduZWQgaW5kZXgsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCit7CisgICAgU2Ny
aXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUobV9zY3JpcHRT
dGF0ZSwgdmFsdWUpOworICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIGpzQXJyYXkoKS0+
cHV0KG1fc2NyaXB0U3RhdGUsIGluZGV4LCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpOworICAgIHJl
dHVybiBoYW5kbGVFeGNlcHRpb24obV9zY3JpcHRTdGF0ZSk7Cit9CisKIGJvb2wgU2NyaXB0QXJy
YXk6OnNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRBcnJheS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5o
CmluZGV4IDkyNDAzNjgxZWNlNTZmMTY3NjEyZTZhN2JmYWViNzE0NDBjNDQzOWMuLjJiYWRkMDlj
ZmRkNzk1YTk3YTcxMzhjNGFmZmNjZDdjMTRlMjAzYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QXJyYXkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFy
cmF5LmgKQEAgLTM3LDIzICszNywyNSBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBTY3JpcHRBcnJheSA6IHB1YmxpYyBT
Y3JpcHRPYmplY3QgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0QXJyYXkoU2NyaXB0U3Rh
dGUqLCBKU0M6OkpTQXJyYXkqKTsKLSAgICAgICAgU2NyaXB0QXJyYXkoKSB7fQotICAgICAgICBK
U0M6OkpTQXJyYXkqIGpzQXJyYXkoKSBjb25zdCB7IHJldHVybiBhc0FycmF5KGpzVmFsdWUoKSk7
IH0KLQotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0
Jik7Ci0gICAgICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAg
ICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSk7Ci0gICAgICAgIGJvb2wgc2V0
KHVuc2lnbmVkIGluZGV4LCBsb25nIGxvbmcpOwotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBp
bmRleCwgaW50KTsKLSAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGJvb2wpOwotICAg
ICAgICB1bnNpZ25lZCBsZW5ndGgoKTsKLQotICAgICAgICBzdGF0aWMgU2NyaXB0QXJyYXkgY3Jl
YXRlTmV3KFNjcmlwdFN0YXRlKik7Ci0gICAgfTsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKKworY2xhc3MgU2NyaXB0QXJyYXkgOiBwdWJsaWMgU2NyaXB0T2JqZWN0IHsKK3B1YmxpYzoK
KyAgICBTY3JpcHRBcnJheShTY3JpcHRTdGF0ZSosIEpTQzo6SlNBcnJheSopOworICAgIFNjcmlw
dEFycmF5KCkge30KKyAgICBKU0M6OkpTQXJyYXkqIGpzQXJyYXkoKSBjb25zdCB7IHJldHVybiBh
c0FycmF5KGpzVmFsdWUoKSk7IH0KKworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25z
dCBTY3JpcHRPYmplY3QmKTsKKyAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKik7CisgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUpOworICAgIGJvb2wgc2V0
KHVuc2lnbmVkIGluZGV4LCBsb25nIGxvbmcpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4
LCBpbnQpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBib29sKTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGgoKTsKKworICAgIHN0YXRpYyBTY3JpcHRBcnJheSBjcmVhdGVOZXcoU2NyaXB0U3Rh
dGUqKTsKK307CiB9CiAKICNlbmRpZiAvLyBTY3JpcHRBcnJheV9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0QXJyYXkuY3BwCmluZGV4IGExOTlhNmM2YTU4Njc0MDdlYjgzMmVmZDJkZjgzYWE3YzRmYTg0
MzAuLjcxMTliMjdjNmQ4ZTMwOGZhMDgxMDgxM2RmZDVkYTMwNGNjYzc4YTIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0QXJyYXkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0QXJyYXkuY3BwCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgogCi0jaW5jbHVkZSAiU2NyaXB0U2NvcGUu
aCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTU3LDYgKzU3LDE5IEBA
IGJvb2wgU2NyaXB0QXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0
JiB2YWx1ZSkKICAgICByZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQogCitib29sIFNjcmlwdEFy
cmF5OjpzZXQodW5zaWduZWQgaW5kZXgsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCit7
CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
bV9zY3JpcHRTdGF0ZSwgdmFsdWUpOworICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBTY3JpcHRTY29wZSBzY29wZShtX3NjcmlwdFN0YXRlKTsKKyAgICB2OE9i
amVjdCgpLT5TZXQodjg6OkludGVnZXI6Ok5ldyhpbmRleCksIHNjcmlwdFZhbHVlLnY4VmFsdWUo
KSk7CisgICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3MoKTsKK30KKwogYm9vbCBTY3JpcHRBcnJheTo6
c2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIFNjcmlwdFNj
b3BlIHNjb3BlKG1fc2NyaXB0U3RhdGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRBcnJheS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5oCmluZGV4
IDlmNDBmYmYwNDg0NWVmMzY5M2VhMTZmMjg4NGQ2MDg0OTM2MDdiMmMuLjlhYTg3NjQ2OGJiMDlh
OGUxMzgzZGUzNWYxNTExOTRlODc4MmU5YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0QXJyYXkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmgK
QEAgLTM2LDI0ICszNiwyNiBAQAogI2luY2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICBjbGFzcyBTY3JpcHRTdGF0ZTsKLQotICAgIGNsYXNzIFNjcmlwdEFycmF5IDogcHVi
bGljIFNjcmlwdE9iamVjdCB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRBcnJheShTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIHY4OjpIYW5kbGU8djg6OkFycmF5Pik7Ci0gICAgICAgIFNj
cmlwdEFycmF5KCkge307Ci0gICAgICAgIHZpcnR1YWwgflNjcmlwdEFycmF5KCkge30KLQotICAg
ICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0gICAg
ICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgYm9v
bCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSk7Ci0gICAgICAgIGJvb2wgc2V0KHVuc2lnbmVk
IGluZGV4LCBsb25nIGxvbmcpOwotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgaW50
KTsKLSAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGJvb2wpOwotICAgICAgICB1bnNp
Z25lZCBsZW5ndGgoKTsKLQotICAgICAgICBzdGF0aWMgU2NyaXB0QXJyYXkgY3JlYXRlTmV3KFNj
cmlwdFN0YXRlKik7Ci0gICAgfTsKK2NsYXNzIFNjcmlwdFN0YXRlOworY2xhc3MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOworCitjbGFzcyBTY3JpcHRBcnJheSA6IHB1YmxpYyBTY3JpcHRPYmplY3Qg
eworcHVibGljOgorICAgIFNjcmlwdEFycmF5KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdjg6
OkhhbmRsZTx2ODo6QXJyYXk+KTsKKyAgICBTY3JpcHRBcnJheSgpIHt9OworICAgIHZpcnR1YWwg
flNjcmlwdEFycmF5KCkge30KKworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBT
Y3JpcHRPYmplY3QmKTsKKyAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKik7CisgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYp
OworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUpOworICAgIGJvb2wgc2V0KHVu
c2lnbmVkIGluZGV4LCBsb25nIGxvbmcpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBp
bnQpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBib29sKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGgoKTsKKworICAgIHN0YXRpYyBTY3JpcHRBcnJheSBjcmVhdGVOZXcoU2NyaXB0U3RhdGUq
KTsKK307CiB9CiAKICNlbmRpZiAvLyBTY3JpcHRBcnJheV9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5jcHAKaW5kZXggOTM0ZTJlOTY2MTdlMzZmMTQyZmMzNWM5MGFjYTA0YWEyNTZiYThm
ZC4uYzQ1OGVhYWFiOGNkZDNjMzJkZTQyYTg5NmZmYjMxYTg4ODIyYWI4ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtOTMsMTUgKzkzLDI2IEBAIHZvaWQgQ29uc29sZU1l
c3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3Rl
ZFNjcmlwdEhvCiAgICAganNvbk9iai5zZXQoInVybCIsIG1fdXJsKTsKICAgICBqc29uT2JqLnNl
dCgiZ3JvdXBMZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9ncm91cExldmVsKSk7CiAgICAganNv
bk9iai5zZXQoInJlcGVhdENvdW50Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3JlcGVhdENvdW50KSk7
Ci0gICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gYXJndW1lbnRzOwor
ICAgIGpzb25PYmouc2V0KCJtZXNzYWdlIiwgbV9tZXNzYWdlKTsKICAgICBpZiAoIW1fYXJndW1l
bnRzLmlzRW1wdHkoKSkgeworICAgICAgICBTY3JpcHRBcnJheSBqc29uQXJncyA9IGZyb250ZW5k
LT5uZXdTY3JpcHRBcnJheSgpOwogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9zY3JpcHRTdGF0ZS5n
ZXQoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcEZvckNvbnNvbGUobV9hcmd1bWVudHNb
aV0pOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChzZXJpYWxpemVkVmFsdWUpOworICAg
ICAgICAgICAgaWYgKCFqc29uQXJncy5zZXQoaSwgc2VyaWFsaXplZFZhbHVlLmdldCgpKSkgewor
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gICAKLSAgICBmcm9udGVuZC0+
YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9iaiwgbV9mcmFtZXMsIGFyZ3VtZW50cywgIG1fbWVzc2Fn
ZSk7CisgICAgICAgIGpzb25PYmouc2V0KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3MpOworICAgIH0K
KyAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgeworICAgICAgICBTY3JpcHRBcnJheSBqc29u
RnJhbWVzID0gZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGpzb25GcmFt
ZXMuc2V0KGksIG1fZnJhbWVzW2ldKTsKKyAgICAgICAganNvbk9iai5zZXQoInN0YWNrVHJhY2Ui
LCBqc29uRnJhbWVzKTsKKyAgICB9CisgICAgZnJvbnRlbmQtPmFkZENvbnNvbGVNZXNzYWdlKGpz
b25PYmopOwogfQogCiB2b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29u
c29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5jcHAKaW5kZXggZjlhMjliNmU3ODE3ZTFhNmI0NDIyNTRlODYwZDc1NDk2NTUz
NmYyNS4uNTkyNTc0MTI3ZGFhOTJjMTk3NmY5N2NmYWYyOTYyODg4N2I0NzgzNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0SG9zdC5oIgpAQCAtMTEyLDI2ICsxMTEsMTEgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZDo6dXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQodW5zaWduZWQgY291bnQpCiAg
ICAgZnVuY3Rpb24uY2FsbCgpOwogfQogCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRDb25z
b2xlTWVzc2FnZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxT
Y3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+JiBhcmd1bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2Fn
ZU9iaikKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3Is
ICJkaXNwYXRjaCIpOyAKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgiYWRkQ29uc29sZU1l
c3NhZ2UiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtZXNzYWdlT2JqKTsKLSAgICBp
ZiAoIWZyYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGZyYW1lc1tpXSk7Ci0gICAgfSBlbHNlIGlmICghYXJndW1lbnRzLmlzRW1wdHkoKSkgewotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShzY3JpcHRTdGF0ZSgpLCBhcmd1bWVudHNbaV0uZ2V0KCkpOwotICAgICAgICAgICAgaWYg
KHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNjcmlwdFZhbHVlKTsKLSAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2UpOwot
ICAgIH0KICAgICBmdW5jdGlvbi5jYWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5oCmluZGV4IGUzMmY0MGNhYTlhNDEzNTAxYjFiNWNlZmMzZTdiOWMxNTk5YTg3YWQu
LmU2NTY3YmUzY2EyNTJkZTRkZWJiODNmMzA5M2ExZTdiOTgzYjBhZGMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgcG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBz
ZXR0aW5ncyk7CiAKICAgICAgICAgdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3Vu
dCh1bnNpZ25lZCBjb3VudCk7Ci0gICAgICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoY29uc3Qg
U2NyaXB0T2JqZWN0JiBtZXNzYWdlT2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJh
bWVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgYXJndW1l
bnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaik7CiAgICAgICAgIHZvaWQgdXBkYXRl
Q29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudCh1bnNpZ25lZCBjb3VudCk7CiAgICAgICAgIHZvaWQg
Y2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVWaWV3LmpzCmluZGV4IDhiYjcxZTY1YTZmYWRkZjFiZmNkOTViYThlMjY1YWM4NDdkYjUx
N2MuLmIxYTE1MDQ4MTE5YjVhZjVmNTRjNTliMmJkZDMxZDY1OGEzMDI4OWMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKQEAgLTI3NSw5ICsyNzUsNyBAQCBX
ZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgbXNnLl91
cGRhdGVSZXBlYXRDb3VudCgpOwogICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50RXJyb3JXYXJu
aW5nQ291bnQobXNnKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1zZ0NvcHkgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKG1zZy5zb3VyY2UsIG1zZy50eXBlLCBtc2cu
bGV2ZWwsIG1zZy5saW5lLCBtc2cudXJsLCBtc2cuZ3JvdXBMZXZlbCwgY291bnQgLSBwcmV2UmVw
ZWF0Q291bnQpOwotICAgICAgICAgICAgbXNnQ29weS50b3RhbFJlcGVhdENvdW50ID0gY291bnQ7
Ci0gICAgICAgICAgICBtc2dDb3B5LnNldE1lc3NhZ2VCb2R5KG1zZy5hcmdzKTsKKyAgICAgICAg
ICAgIG1zZ0NvcHkgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKG1zZy5zb3VyY2Us
IG1zZy50eXBlLCBtc2cubGV2ZWwsIG1zZy5saW5lLCBtc2cudXJsLCBtc2cuZ3JvdXBMZXZlbCwg
Y291bnQsIG1zZy5tZXNzYWdlVGV4dCwgbXNnLnBhcmFtZXRlcnMsIG1zZy5zdGFja1RyYWNlKTsK
ICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZShtc2dDb3B5KTsKICAgICAgICAgfQogICAgIH0s
CkBAIC02NDUsNyArNjQzLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9
IHsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSA9
IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgZ3JvdXBMZXZlbCwgcmVw
ZWF0Q291bnQpCitXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2Us
IHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIGdyb3VwTGV2ZWwsIHJlcGVhdENvdW50LCBtZXNzYWdl
LCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlKQogewogICAgIHRoaXMuc291cmNlID0gc291cmNlOwog
ICAgIHRoaXMudHlwZSA9IHR5cGU7CkBAIC02NTYsMTkgKzY1NCwyNiBAQCBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmws
IGdyb3VwTGV2ZQogICAgIHRoaXMucmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsKICAgICB0aGlz
LnJlcGVhdERlbHRhID0gcmVwZWF0Q291bnQ7CiAgICAgdGhpcy50b3RhbFJlcGVhdENvdW50ID0g
cmVwZWF0Q291bnQ7Ci0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiA3KQotICAgICAgICB0aGlz
LnNldE1lc3NhZ2VCb2R5KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgNykp
OworICAgIHRoaXMubWVzc2FnZVRleHQgPSBtZXNzYWdlOworICAgIHRoaXMucGFyYW1ldGVycyA9
IHBhcmFtZXRlcnM7CisgICAgdGhpcy5zdGFja1RyYWNlID0gc3RhY2tUcmFjZTsKKyAgICB0aGlz
Ll9mb3JtYXRNZXNzYWdlKCk7Cit9CisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVh
dGVUZXh0TWVzc2FnZSA9IGZ1bmN0aW9uKHRleHQsIGxldmVsKQoreworICAgIGxldmVsID0gbGV2
ZWwgfHwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2c7CisgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlVHlwZS5Mb2csIGxldmVsLCAwLCBudWxsLCBudWxsLCAxLCBudWxsLCBbdGV4dF0sIG51
bGwpOwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gewotICAg
IHNldE1lc3NhZ2VCb2R5OiBmdW5jdGlvbihhcmdzKQorICAgIF9mb3JtYXRNZXNzYWdlOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB0aGlzLmFyZ3MgPSBhcmdzOwogICAgICAgICBzd2l0Y2gg
KHRoaXMudHlwZSkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuVHJhY2U6CiAgICAgICAgICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgc3Bhbi5jbGFzc05hbWUg
PSAiY29uc29sZS1mb3JtYXR0ZWQtdHJhY2Ugc291cmNlLWNvZGUiOwotICAgICAgICAgICAgICAg
IHZhciBzdGFjayA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpOworICAgICAgICAg
ICAgICAgIHZhciBzdGFjayA9IHRoaXMuc3RhY2tUcmFjZS5zbGljZSgpOwogICAgICAgICAgICAg
ICAgIHZhciBmdW5jTmFtZXMgPSBzdGFjay5tYXAoZnVuY3Rpb24oZikgewogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZiB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVu
Y3Rpb24pIik7CiAgICAgICAgICAgICAgICAgfSk7CkBAIC02NzYsOSArNjgxLDEwIEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdGhp
cy5mb3JtYXR0ZWRNZXNzYWdlID0gc3BhbjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLk9iamVj
dDoKLSAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3JtYXQo
WyIlTyIsIGFyZ3NbMF1dKTsKKyAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3NhZ2Ug
PSB0aGlzLl9mb3JtYXQoWyIlTyIsIHRoaXMucGFyYW1ldGVyc1swXV0pOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB2YXIgYXJn
cyA9IHRoaXMucGFyYW1ldGVycyB8fCBbdGhpcy5tZXNzYWdlVGV4dF07CiAgICAgICAgICAgICAg
ICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0KGFyZ3MpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDAxLDE0ICsxMDA3LDYgQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVDb21tYW5kLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rv
ci5Db25zb2xlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBsZXZlbCkKLXsKLSAgICBsZXZl
bCA9IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9n
OwotICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVsbCwgbnVsbCwgMSwgdGV4dCk7Ci19
Ci0KLVdlYkluc3BlY3Rvci5Db25zb2xlVGV4dE1lc3NhZ2UucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGU7Ci0KIFdlYkluc3BlY3Rvci5D
b25zb2xlQ29tbWFuZFJlc3VsdCA9IGZ1bmN0aW9uKHJlc3VsdCwgZXhjZXB0aW9uLCBvcmlnaW5h
dGluZ0NvbW1hbmQpCiB7CiAgICAgdmFyIGxldmVsID0gKGV4Y2VwdGlvbiA/IFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IgOiBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZyk7CkBAIC0xMDIzLDcgKzEwMjEsNyBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5jdGlvbihyZXN1bHQsIGV4Y2VwdGlvbiwg
b3JpZ2luYXRpbmdDb21tYQogCiAgICAgdGhpcy5vcmlnaW5hdGluZ0NvbW1hbmQgPSBvcmlnaW5h
dGluZ0NvbW1hbmQ7CiAKLSAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY2FsbCh0aGlz
LCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdCwgbGV2ZWwsIGxpbmUsIHVybCwg
bnVsbCwgMSwgbWVzc2FnZSk7CisgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNhbGwo
dGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQsIGxldmVsLCBsaW5lLCB1
cmwsIG51bGwsIDEsIG51bGwsIFttZXNzYWdlXSk7CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xl
Q29tbWFuZFJlc3VsdC5wcm90b3R5cGUgPSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IGU1NTI5NGExNzhmODAzZGYxY2MyNjkxYzhhZjJjNGUy
NGEzODYwMmEuLjQ4ZWI0YzBiOWJhMjE2ZTNmODUxODExOTYyYTFlOGJmZmViYjU2MzQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC00NTMsNyAr
NDUzLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dDb25zb2xlKCk7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UobmV3IFdlYkluc3BlY3Rvci5Db25zb2xlVGV4dE1l
c3NhZ2UoYnVpbGRlci5qb2luKCJcbiIpKSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xl
LmFkZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZVRleHRNZXNzYWdl
KGJ1aWxkZXIuam9pbigiXG4iKSkpOwogICAgIH0sCiAKICAgICBnZXQgcm9vdERPTU5vZGUoKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0QWNj
ZXNzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0QWNjZXNz
LmpzCmluZGV4IDkwZGFhYjdjMzIyNGY2NzM3NzIzNmFmZTJiNTI4ZmNlMmIxMjYyNGMuLjBlNGNj
MmVjYTAxYTQ1OGE5YmZlM2ZiZjY3YTY2NjIyNDJiOTk3MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuanMKQEAgLTU4LDcgKzU4
LDcgQEAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyID0gZnVuY3Rpb24obWV0
aG9kTmFtZSwgYXN5bmMpCiAgICAgICAgICAgICBpZiAoIWlzRXhjZXB0aW9uKQogICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVzc2FnZShuZXcgV2ViSW5zcGVjdG9yLkNvbnNv
bGVUZXh0TWVzc2FnZSgiRXJyb3IgZGlzcGF0Y2hpbmc6ICIgKyBtZXRob2ROYW1lKSk7CisgICAg
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVzc2FnZShXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UoIkVycm9yIGRpc3BhdGNoaW5nOiAiICsg
bWV0aG9kTmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0
b3IuQ2FsbGJhY2sud3JhcChteUNhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlLmpzCmluZGV4IDJhZTIzYTBmOTMzNTg4M2U0ZmY5YjQxZjgzY2Y2MjZhNzVlYzk3
ZDAuLjU5NWI3MWJiNDRlYzU1NTE3MTU0ZDRmNTc1OGMwMGEzMWZiMTNjNGIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTU4Nyw5ICs1ODcsMTQgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBpZiAoIXRoaXMu
X21pbWVUeXBlSXNDb25zaXN0ZW50V2l0aFR5cGUoKSkKICAgICAgICAgICAgICAgICAgICAgbXNn
ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVNvdXJjZS5PdGhlciwKICAgICAgICAgICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2csIAotICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5n
LCAtMSwgdGhpcy51cmwsIG51bGwsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcu
c3ByaW50ZihXZWJJbnNwZWN0b3IuV2FybmluZ3MuSW5jb3JyZWN0TUlNRVR5cGUubWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLnRvU3Ry
aW5nKHRoaXMudHlwZSksIHRoaXMubWltZVR5cGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cmws
CisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAg
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5zcHJpbnRmKFdlYkluc3BlY3Rvci5X
YXJuaW5ncy5JbmNvcnJlY3RNSU1FVHlwZS5tZXNzYWdlLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZS50b1N0cmluZyh0aGlzLnR5cGUpLCB0aGlzLm1pbWVUeXBlKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwppbmRleCA3YzI1NWJiYjk1ZGQwM2I0NWY5OWQzN2YzYTAxM2Y3NzFhYThhYzYy
Li41ZmFhYmJjZDQ0YmM1OWJmMWYxMGE1MDg0NzAyODYzNjk4NmNiNzA2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTE0NjMsMTAgKzE0NjMsMTAgQEAgV2Vi
SW5zcGVjdG9yLmRpZENvbW1pdExvYWQgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3IudXBkYXRl
Q29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQgPSBmdW5jdGlvbihjb3VudCkKIHsKICAgICB2YXIg
bWVzc2FnZSA9IFN0cmluZy5zcHJpbnRmKFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgY29uc29s
ZSBtZXNzYWdlcyBhcmUgbm90IHNob3duLiIpLCBjb3VudCk7Ci0gICAgV2ViSW5zcGVjdG9yLmNv
bnNvbGUuYWRkTWVzc2FnZShuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVUZXh0TWVzc2FnZShtZXNz
YWdlLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcpKTsK
KyAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5jcmVhdGVUZXh0TWVzc2FnZShtZXNzYWdlLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcpKTsKIH0KIAotV2ViSW5zcGVjdG9yLmFkZENvbnNv
bGVNZXNzYWdlID0gZnVuY3Rpb24ocGF5bG9hZCwgb3B0X2FyZ3MpCitXZWJJbnNwZWN0b3IuYWRk
Q29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihwYXlsb2FkKQogewogICAgIHZhciBjb25zb2xlTWVz
c2FnZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoCiAgICAgICAgIHBheWxvYWQu
c291cmNlLApAQCAtMTQ3NSw4ICsxNDc1LDEwIEBAIFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVz
c2FnZSA9IGZ1bmN0aW9uKHBheWxvYWQsIG9wdF9hcmdzKQogICAgICAgICBwYXlsb2FkLmxpbmUs
CiAgICAgICAgIHBheWxvYWQudXJsLAogICAgICAgICBwYXlsb2FkLmdyb3VwTGV2ZWwsCi0gICAg
ICAgIHBheWxvYWQucmVwZWF0Q291bnQpOwotICAgIGNvbnNvbGVNZXNzYWdlLnNldE1lc3NhZ2VC
b2R5KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOworICAgICAgICBw
YXlsb2FkLnJlcGVhdENvdW50LAorICAgICAgICBwYXlsb2FkLm1lc3NhZ2UsCisgICAgICAgIHBh
eWxvYWQucGFyYW1ldGVycywKKyAgICAgICAgcGF5bG9hZC5zdGFja1RyYWNlKTsKICAgICB0aGlz
LmNvbnNvbGUuYWRkTWVzc2FnZShjb25zb2xlTWVzc2FnZSk7CiB9CiAKQEAgLTE1NDQsNyArMTU0
Niw5IEBAIFdlYkluc3BlY3Rvci5sb2cgPSBmdW5jdGlvbihtZXNzYWdlLCBtZXNzYWdlTGV2ZWwp
CiAgICAgICAgICAgICBudWxsLAogICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgIHJlcGVh
dENvdW50LAotICAgICAgICAgICAgbWVzc2FnZSk7CisgICAgICAgICAgICBudWxsLAorICAgICAg
ICAgICAgW21lc3NhZ2VdLAorICAgICAgICAgICAgbnVsbCk7CiAKICAgICAgICAgc2VsZi5jb25z
b2xlLmFkZE1lc3NhZ2UobXNnKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61646</attachid>
            <date>2010-07-15 06:16:44 -0700</date>
            <delta_ts>2010-07-15 08:05:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42345-20100715171641.patch</filename>
            <type>text/plain</type>
            <size>32707</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjAwNjVhYzU3Y2QyOWQ3YTQyMjhmMTQ1ZDk3ZTg3YmZkMjRjMzRjOC4uOTI3YWZjOTc4NTA3MjEx
MjQ2N2QxYjhhNjJkODgyNzdmNWY0ZmU2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wNy0xNSAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXNzIGFsbCBwYXJh
bWV0ZXJzIHRvIFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSBhcyBhIHNpbmdsZSBwYXls
b2FkIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIzNDUKKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgY29uc29sZSB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdEFycmF5Lmg6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0QXJyYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJyYXk6OnNldCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0QXJyYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
cHJvdG90eXBlLnVwZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
LmNyZWF0ZVRleHRNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFu
ZFJlc3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLmdlbmVyYXRl
U3R5bGVzaGVldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlw
dEFjY2Vzcy5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxl
ci5JbmplY3RlZFNjcmlwdEFjY2Vzcy5wcm90b3R5cGUubWV0aG9kTmFtZS5teUNhbGxiYWNrKToK
KyAgICAgICAgKEluamVjdGVkU2NyaXB0QWNjZXNzLl9pbnN0YWxsSGFuZGxlci5JbmplY3RlZFNj
cmlwdEFjY2Vzcy5wcm90b3R5cGUubWV0aG9kTmFtZSk6CisgICAgICAgIChJbmplY3RlZFNjcmlw
dEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9j
aGVja1dhcm5pbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IubG9nLmxvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZyk6
CisKIDIwMTAtMDctMTUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgdGhlIHNvcnRpbmcgaW4gdGhlIFhjb2RlIHByb2plY3QgZmlsZXMuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QXJyYXkuY3BwCmluZGV4IGNhZWNjNDA1MWQ0ZDJkYjI5ZDJhZjg5ZmIxYTc3ZDA4
Y2FjMjI4YzYuLjExOWQzMDM2YjI1MWRmZTMyMzMzMGIyNWEwYWUzNzhjNjc1OGQ5NTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKIAorI2luY2x1ZGUgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgorCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKQEAgLTYyLDYgKzY0LDE5IEBAIGJvb2wgU2NyaXB0QXJyYXk6OnNldCh1
bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKICAgICByZXR1cm4gaGFu
ZGxlRXhjZXB0aW9uKG1fc2NyaXB0U3RhdGUpOwogfQogCitib29sIFNjcmlwdEFycmF5OjpzZXQo
dW5zaWduZWQgaW5kZXgsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCit7CisgICAgU2Ny
aXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUobV9zY3JpcHRT
dGF0ZSwgdmFsdWUpOworICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIGpzQXJyYXkoKS0+
cHV0KG1fc2NyaXB0U3RhdGUsIGluZGV4LCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpOworICAgIHJl
dHVybiBoYW5kbGVFeGNlcHRpb24obV9zY3JpcHRTdGF0ZSk7Cit9CisKIGJvb2wgU2NyaXB0QXJy
YXk6OnNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRBcnJheS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5o
CmluZGV4IDkyNDAzNjgxZWNlNTZmMTY3NjEyZTZhN2JmYWViNzE0NDBjNDQzOWMuLjJiYWRkMDlj
ZmRkNzk1YTk3YTcxMzhjNGFmZmNjZDdjMTRlMjAzYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QXJyYXkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFy
cmF5LmgKQEAgLTM3LDIzICszNywyNSBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBTY3JpcHRBcnJheSA6IHB1YmxpYyBT
Y3JpcHRPYmplY3QgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0QXJyYXkoU2NyaXB0U3Rh
dGUqLCBKU0M6OkpTQXJyYXkqKTsKLSAgICAgICAgU2NyaXB0QXJyYXkoKSB7fQotICAgICAgICBK
U0M6OkpTQXJyYXkqIGpzQXJyYXkoKSBjb25zdCB7IHJldHVybiBhc0FycmF5KGpzVmFsdWUoKSk7
IH0KLQotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0
Jik7Ci0gICAgICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAg
ICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSk7Ci0gICAgICAgIGJvb2wgc2V0
KHVuc2lnbmVkIGluZGV4LCBsb25nIGxvbmcpOwotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBp
bmRleCwgaW50KTsKLSAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGJvb2wpOwotICAg
ICAgICB1bnNpZ25lZCBsZW5ndGgoKTsKLQotICAgICAgICBzdGF0aWMgU2NyaXB0QXJyYXkgY3Jl
YXRlTmV3KFNjcmlwdFN0YXRlKik7Ci0gICAgfTsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKKworY2xhc3MgU2NyaXB0QXJyYXkgOiBwdWJsaWMgU2NyaXB0T2JqZWN0IHsKK3B1YmxpYzoK
KyAgICBTY3JpcHRBcnJheShTY3JpcHRTdGF0ZSosIEpTQzo6SlNBcnJheSopOworICAgIFNjcmlw
dEFycmF5KCkge30KKyAgICBKU0M6OkpTQXJyYXkqIGpzQXJyYXkoKSBjb25zdCB7IHJldHVybiBh
c0FycmF5KGpzVmFsdWUoKSk7IH0KKworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25z
dCBTY3JpcHRPYmplY3QmKTsKKyAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKik7CisgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUpOworICAgIGJvb2wgc2V0
KHVuc2lnbmVkIGluZGV4LCBsb25nIGxvbmcpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4
LCBpbnQpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBib29sKTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGgoKTsKKworICAgIHN0YXRpYyBTY3JpcHRBcnJheSBjcmVhdGVOZXcoU2NyaXB0U3Rh
dGUqKTsKK307CiB9CiAKICNlbmRpZiAvLyBTY3JpcHRBcnJheV9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0QXJyYXkuY3BwCmluZGV4IGExOTlhNmM2YTU4Njc0MDdlYjgzMmVmZDJkZjgzYWE3YzRmYTg0
MzAuLjcxMTliMjdjNmQ4ZTMwOGZhMDgxMDgxM2RmZDVkYTMwNGNjYzc4YTIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0QXJyYXkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0QXJyYXkuY3BwCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgogCi0jaW5jbHVkZSAiU2NyaXB0U2NvcGUu
aCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTU3LDYgKzU3LDE5IEBA
IGJvb2wgU2NyaXB0QXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0
JiB2YWx1ZSkKICAgICByZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQogCitib29sIFNjcmlwdEFy
cmF5OjpzZXQodW5zaWduZWQgaW5kZXgsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCit7
CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUo
bV9zY3JpcHRTdGF0ZSwgdmFsdWUpOworICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBTY3JpcHRTY29wZSBzY29wZShtX3NjcmlwdFN0YXRlKTsKKyAgICB2OE9i
amVjdCgpLT5TZXQodjg6OkludGVnZXI6Ok5ldyhpbmRleCksIHNjcmlwdFZhbHVlLnY4VmFsdWUo
KSk7CisgICAgcmV0dXJuIHNjb3BlLnN1Y2Nlc3MoKTsKK30KKwogYm9vbCBTY3JpcHRBcnJheTo6
c2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIFNjcmlwdFNj
b3BlIHNjb3BlKG1fc2NyaXB0U3RhdGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRBcnJheS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5oCmluZGV4
IDlmNDBmYmYwNDg0NWVmMzY5M2VhMTZmMjg4NGQ2MDg0OTM2MDdiMmMuLjlhYTg3NjQ2OGJiMDlh
OGUxMzgzZGUzNWYxNTExOTRlODc4MmU5YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0QXJyYXkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmgK
QEAgLTM2LDI0ICszNiwyNiBAQAogI2luY2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICBjbGFzcyBTY3JpcHRTdGF0ZTsKLQotICAgIGNsYXNzIFNjcmlwdEFycmF5IDogcHVi
bGljIFNjcmlwdE9iamVjdCB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRBcnJheShTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUsIHY4OjpIYW5kbGU8djg6OkFycmF5Pik7Ci0gICAgICAgIFNj
cmlwdEFycmF5KCkge307Ci0gICAgICAgIHZpcnR1YWwgflNjcmlwdEFycmF5KCkge30KLQotICAg
ICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0gICAg
ICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgYm9v
bCBzZXQodW5zaWduZWQgaW5kZXgsIGRvdWJsZSk7Ci0gICAgICAgIGJvb2wgc2V0KHVuc2lnbmVk
IGluZGV4LCBsb25nIGxvbmcpOwotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgaW50
KTsKLSAgICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGJvb2wpOwotICAgICAgICB1bnNp
Z25lZCBsZW5ndGgoKTsKLQotICAgICAgICBzdGF0aWMgU2NyaXB0QXJyYXkgY3JlYXRlTmV3KFNj
cmlwdFN0YXRlKik7Ci0gICAgfTsKK2NsYXNzIFNjcmlwdFN0YXRlOworY2xhc3MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOworCitjbGFzcyBTY3JpcHRBcnJheSA6IHB1YmxpYyBTY3JpcHRPYmplY3Qg
eworcHVibGljOgorICAgIFNjcmlwdEFycmF5KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdjg6
OkhhbmRsZTx2ODo6QXJyYXk+KTsKKyAgICBTY3JpcHRBcnJheSgpIHt9OworICAgIHZpcnR1YWwg
flNjcmlwdEFycmF5KCkge30KKworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBT
Y3JpcHRPYmplY3QmKTsKKyAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKik7CisgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYp
OworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUpOworICAgIGJvb2wgc2V0KHVu
c2lnbmVkIGluZGV4LCBsb25nIGxvbmcpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBp
bnQpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBib29sKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGgoKTsKKworICAgIHN0YXRpYyBTY3JpcHRBcnJheSBjcmVhdGVOZXcoU2NyaXB0U3RhdGUq
KTsKK307CiB9CiAKICNlbmRpZiAvLyBTY3JpcHRBcnJheV9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xl
TWVzc2FnZS5jcHAKaW5kZXggOTM0ZTJlOTY2MTdlMzZmMTQyZmMzNWM5MGFjYTA0YWEyNTZiYThm
ZC4uYzQ1OGVhYWFiOGNkZDNjMzJkZTQyYTg5NmZmYjMxYTg4ODIyYWI4ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtOTMsMTUgKzkzLDI2IEBAIHZvaWQgQ29uc29sZU1l
c3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3Rl
ZFNjcmlwdEhvCiAgICAganNvbk9iai5zZXQoInVybCIsIG1fdXJsKTsKICAgICBqc29uT2JqLnNl
dCgiZ3JvdXBMZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9ncm91cExldmVsKSk7CiAgICAganNv
bk9iai5zZXQoInJlcGVhdENvdW50Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3JlcGVhdENvdW50KSk7
Ci0gICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gYXJndW1lbnRzOwor
ICAgIGpzb25PYmouc2V0KCJtZXNzYWdlIiwgbV9tZXNzYWdlKTsKICAgICBpZiAoIW1fYXJndW1l
bnRzLmlzRW1wdHkoKSkgeworICAgICAgICBTY3JpcHRBcnJheSBqc29uQXJncyA9IGZyb250ZW5k
LT5uZXdTY3JpcHRBcnJheSgpOwogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9zY3JpcHRTdGF0ZS5n
ZXQoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2Vy
aWFsaXplZFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcEZvckNvbnNvbGUobV9hcmd1bWVudHNb
aV0pOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChzZXJpYWxpemVkVmFsdWUpOworICAg
ICAgICAgICAgaWYgKCFqc29uQXJncy5zZXQoaSwgc2VyaWFsaXplZFZhbHVlLmdldCgpKSkgewor
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gICAKLSAgICBmcm9udGVuZC0+
YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9iaiwgbV9mcmFtZXMsIGFyZ3VtZW50cywgIG1fbWVzc2Fn
ZSk7CisgICAgICAgIGpzb25PYmouc2V0KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3MpOworICAgIH0K
KyAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgeworICAgICAgICBTY3JpcHRBcnJheSBqc29u
RnJhbWVzID0gZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGpzb25GcmFt
ZXMuc2V0KGksIG1fZnJhbWVzW2ldKTsKKyAgICAgICAganNvbk9iai5zZXQoInN0YWNrVHJhY2Ui
LCBqc29uRnJhbWVzKTsKKyAgICB9CisgICAgZnJvbnRlbmQtPmFkZENvbnNvbGVNZXNzYWdlKGpz
b25PYmopOwogfQogCiB2b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29u
c29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5jcHAKaW5kZXggZjlhMjliNmU3ODE3ZTFhNmI0NDIyNTRlODYwZDc1NDk2NTUz
NmYyNS4uNTkyNTc0MTI3ZGFhOTJjMTk3NmY5N2NmYWYyOTYyODg4N2I0NzgzNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0SG9zdC5oIgpAQCAtMTEyLDI2ICsxMTEsMTEgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZDo6dXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQodW5zaWduZWQgY291bnQpCiAg
ICAgZnVuY3Rpb24uY2FsbCgpOwogfQogCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRDb25z
b2xlTWVzc2FnZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxT
Y3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+JiBhcmd1bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgSW5zcGVj
dG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2Fn
ZU9iaikKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3Is
ICJkaXNwYXRjaCIpOyAKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgiYWRkQ29uc29sZU1l
c3NhZ2UiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtZXNzYWdlT2JqKTsKLSAgICBp
ZiAoIWZyYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGZyYW1lc1tpXSk7Ci0gICAgfSBlbHNlIGlmICghYXJndW1lbnRzLmlzRW1wdHkoKSkgewotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBTY3JpcHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShzY3JpcHRTdGF0ZSgpLCBhcmd1bWVudHNbaV0uZ2V0KCkpOwotICAgICAgICAgICAgaWYg
KHNjcmlwdFZhbHVlLmhhc05vVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNjcmlwdFZhbHVlKTsKLSAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2UpOwot
ICAgIH0KICAgICBmdW5jdGlvbi5jYWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5oCmluZGV4IGUzMmY0MGNhYTlhNDEzNTAxYjFiNWNlZmMzZTdiOWMxNTk5YTg3YWQu
LmU2NTY3YmUzY2EyNTJkZTRkZWJiODNmMzA5M2ExZTdiOTgzYjBhZGMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgcG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBz
ZXR0aW5ncyk7CiAKICAgICAgICAgdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3Vu
dCh1bnNpZ25lZCBjb3VudCk7Ci0gICAgICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoY29uc3Qg
U2NyaXB0T2JqZWN0JiBtZXNzYWdlT2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJh
bWVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgYXJndW1l
bnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaik7CiAgICAgICAgIHZvaWQgdXBkYXRl
Q29uc29sZU1lc3NhZ2VSZXBlYXRDb3VudCh1bnNpZ25lZCBjb3VudCk7CiAgICAgICAgIHZvaWQg
Y2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVWaWV3LmpzCmluZGV4IDhiYjcxZTY1YTZmYWRkZjFiZmNkOTViYThlMjY1YWM4NDdkYjUx
N2MuLjFhNmM0ZmIzZWY2MjdkOGQwYTZiY2YzMDY1ODcxYzYyOWQ5YjUwNmUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKQEAgLTUwLDcgKzUwLDcgQEAgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVWaWV3ID0gZnVuY3Rpb24oZHJhd2VyKQogICAgIHRoaXMucHJvbXB0
ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KHRoaXMucHJvbXB0RWxlbWVudCwgdGhpcy5j
b21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENoYXJhY3RlcnMgKyAiLiIpOwog
ICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoImxv
YWRlZCIsIHRoaXMuX3NldHRpbmdzTG9hZGVkLCB0aGlzKTsKIAotICAgIHRoaXMudG9wR3JvdXAg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cChudWxsLCAwKTsKKyAgICB0aGlzLnRvcEdy
b3VwID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAobnVsbCk7CiAgICAgdGhpcy5tZXNz
YWdlc0VsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMudG9wR3JvdXAuZWxlbWVudCwgdGhpcy5wcm9t
cHRFbGVtZW50KTsKICAgICB0aGlzLmdyb3VwTGV2ZWwgPSAwOwogICAgIHRoaXMuY3VycmVudEdy
b3VwID0gdGhpcy50b3BHcm91cDsKQEAgLTIyNSw4ICsyMjUsOCBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50RXJyb3JX
YXJuaW5nQ291bnQobXNnKTsKIAogICAgICAgICAgICAgLy8gQWRkIG1lc3NhZ2UgdG8gdGhlIHJl
c291cmNlIHBhbmVsCi0gICAgICAgICAgICBpZiAobXNnLnVybCBpbiBXZWJJbnNwZWN0b3IucmVz
b3VyY2VVUkxNYXApIHsKLSAgICAgICAgICAgICAgICBtc2cucmVzb3VyY2UgPSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VVUkxNYXBbbXNnLnVybF07CisgICAgICAgICAgICBpZiAobXNnLl91cmwgaW4g
V2ViSW5zcGVjdG9yLnJlc291cmNlVVJMTWFwKSB7CisgICAgICAgICAgICAgICAgbXNnLnJlc291
cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMTWFwW21zZy5fdXJsXTsKICAgICAgICAgICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpCiAgICAgICAgICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZE1lc3NhZ2VUb1Jlc291cmNlKG1z
Zy5yZXNvdXJjZSwgbXNnKTsKICAgICAgICAgICAgIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCBXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMubWVzc2Fn
ZXMucHVzaChtc2cpOwogCi0gICAgICAgIGlmIChtc2cudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkVuZEdyb3VwKSB7CisgICAgICAgIGlmIChtc2cuX3R5
cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5FbmRHcm91cCkg
ewogICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBMZXZlbCA8IDEpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0yNDksMTAgKzI0OSwxMCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgICAgICB0aGlzLmN1cnJlbnRHcm91cCA9IHRoaXMuY3Vy
cmVudEdyb3VwLnBhcmVudEdyb3VwOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYg
KG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3Rh
cnRHcm91cCB8fCBtc2cudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VUeXBlLlN0YXJ0R3JvdXBDb2xsYXBzZWQpIHsKKyAgICAgICAgICAgIGlmIChtc2cuX3R5cGUg
PT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwIHx8
IG1zZy5fdHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0
YXJ0R3JvdXBDb2xsYXBzZWQpIHsKICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwTGV2ZWwrKzsK
IAotICAgICAgICAgICAgICAgIHZhciBncm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUdy
b3VwKHRoaXMuY3VycmVudEdyb3VwLCB0aGlzLmdyb3VwTGV2ZWwpOworICAgICAgICAgICAgICAg
IHZhciBncm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwKHRoaXMuY3VycmVudEdy
b3VwKTsKICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRHcm91cC5tZXNzYWdlc0VsZW1lbnQu
YXBwZW5kQ2hpbGQoZ3JvdXAuZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50
R3JvdXAgPSBncm91cDsKICAgICAgICAgICAgIH0KQEAgLTI2NiwzMCArMjY2LDMwIEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgdXBkYXRlTWVzc2FnZVJlcGVh
dENvdW50OiBmdW5jdGlvbihjb3VudCkKICAgICB7CiAgICAgICAgIHZhciBtc2cgPSB0aGlzLnBy
ZXZpb3VzTWVzc2FnZTsKLSAgICAgICAgdmFyIHByZXZSZXBlYXRDb3VudCA9IG1zZy50b3RhbFJl
cGVhdENvdW50OworICAgICAgICB2YXIgcHJldlJlcGVhdENvdW50ID0gbXNnLl90b3RhbFJlcGVh
dENvdW50OwogICAgICAgICAKICAgICAgICAgaWYgKCF0aGlzLmNvbW1hbmRTaW5jZVByZXZpb3Vz
TWVzc2FnZSkgewotICAgICAgICAgICAgbXNnLnJlcGVhdERlbHRhID0gY291bnQgLSBwcmV2UmVw
ZWF0Q291bnQ7Ci0gICAgICAgICAgICBtc2cucmVwZWF0Q291bnQgPSBtc2cucmVwZWF0Q291bnQg
KyBtc2cucmVwZWF0RGVsdGE7Ci0gICAgICAgICAgICBtc2cudG90YWxSZXBlYXRDb3VudCA9IGNv
dW50OworICAgICAgICAgICAgbXNnLl9yZXBlYXREZWx0YSA9IGNvdW50IC0gcHJldlJlcGVhdENv
dW50OworICAgICAgICAgICAgbXNnLl9yZXBlYXRDb3VudCA9IG1zZy5fcmVwZWF0Q291bnQgKyBt
c2cuX3JlcGVhdERlbHRhOworICAgICAgICAgICAgbXNnLl90b3RhbFJlcGVhdENvdW50ID0gY291
bnQ7CiAgICAgICAgICAgICBtc2cuX3VwZGF0ZVJlcGVhdENvdW50KCk7CiAgICAgICAgICAgICB0
aGlzLl9pbmNyZW1lbnRFcnJvcldhcm5pbmdDb3VudChtc2cpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbXNnQ29weSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UobXNn
LnNvdXJjZSwgbXNnLnR5cGUsIG1zZy5sZXZlbCwgbXNnLmxpbmUsIG1zZy51cmwsIG1zZy5ncm91
cExldmVsLCBjb3VudCAtIHByZXZSZXBlYXRDb3VudCk7Ci0gICAgICAgICAgICBtc2dDb3B5LnRv
dGFsUmVwZWF0Q291bnQgPSBjb3VudDsKLSAgICAgICAgICAgIG1zZ0NvcHkuc2V0TWVzc2FnZUJv
ZHkobXNnLmFyZ3MpOworICAgICAgICAgICAgdmFyIG1zZ0NvcHkgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlKG1zZy5fc291cmNlLCBtc2cuX3R5cGUsIG1zZy5fbGV2ZWwsIG1zZy5f
bGluZSwgbXNnLl91cmwsIG1zZy5fZ3JvdXBMZXZlbCwgY291bnQgLSBwcmV2UmVwZWF0Q291bnQs
IG1zZy5fbWVzc2FnZVRleHQsIG1zZy5fcGFyYW1ldGVycywgbXNnLl9zdGFja1RyYWNlKTsKKyAg
ICAgICAgICAgIG1zZ0NvcHkuX3RvdGFsUmVwZWF0Q291bnQgPSBjb3VudDsKKyAgICAgICAgICAg
IG1zZ0NvcHkuX2Zvcm1hdE1lc3NhZ2UoKTsKICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZSht
c2dDb3B5KTsKICAgICAgICAgfQogICAgIH0sCiAKICAgICBfaW5jcmVtZW50RXJyb3JXYXJuaW5n
Q291bnQ6IGZ1bmN0aW9uKG1zZykKICAgICB7Ci0gICAgICAgIHN3aXRjaCAobXNnLmxldmVsKSB7
CisgICAgICAgIHN3aXRjaCAobXNnLl9sZXZlbCkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6Ci0gICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLndhcm5pbmdzICs9IG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3Iud2FybmluZ3MgKz0gbXNnLl9yZXBlYXREZWx0YTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZXJy
b3JzICs9IG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZXJy
b3JzICs9IG1zZy5fcmVwZWF0RGVsdGE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9LApAQCAtNjQ1LDQwICs2NDUsNDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgZ3Jv
dXBMZXZlbCwgcmVwZWF0Q291bnQpCitXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5j
dGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIGdyb3VwTGV2ZWwsIHJlcGVhdENv
dW50LCBtZXNzYWdlLCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlKQogewotICAgIHRoaXMuc291cmNl
ID0gc291cmNlOwotICAgIHRoaXMudHlwZSA9IHR5cGU7Ci0gICAgdGhpcy5sZXZlbCA9IGxldmVs
OwotICAgIHRoaXMubGluZSA9IGxpbmU7Ci0gICAgdGhpcy51cmwgPSB1cmw7Ci0gICAgdGhpcy5n
cm91cExldmVsID0gZ3JvdXBMZXZlbDsKLSAgICB0aGlzLnJlcGVhdENvdW50ID0gcmVwZWF0Q291
bnQ7Ci0gICAgdGhpcy5yZXBlYXREZWx0YSA9IHJlcGVhdENvdW50OwotICAgIHRoaXMudG90YWxS
ZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OwotICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gNykK
LSAgICAgICAgdGhpcy5zZXRNZXNzYWdlQm9keShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh
cmd1bWVudHMsIDcpKTsKKyAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7CisgICAgdGhpcy5fdHlw
ZSA9IHR5cGU7CisgICAgdGhpcy5fbGV2ZWwgPSBsZXZlbDsKKyAgICB0aGlzLl9saW5lID0gbGlu
ZTsKKyAgICB0aGlzLl91cmwgPSB1cmw7CisgICAgdGhpcy5fZ3JvdXBMZXZlbCA9IGdyb3VwTGV2
ZWw7CisgICAgdGhpcy5fcmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsKKyAgICB0aGlzLl9yZXBl
YXREZWx0YSA9IHJlcGVhdENvdW50OworICAgIHRoaXMuX3RvdGFsUmVwZWF0Q291bnQgPSByZXBl
YXRDb3VudDsKKyAgICB0aGlzLl9tZXNzYWdlVGV4dCA9IG1lc3NhZ2U7CisgICAgdGhpcy5fcGFy
YW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgdGhpcy5fc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7
CisgICAgdGhpcy5fZm9ybWF0TWVzc2FnZSgpOworfQorCitXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBsZXZlbCkKK3sKKyAgICBs
ZXZlbCA9IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwu
TG9nOworICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVsbCwgbnVsbCwgMSwgbnVsbCwg
W3RleHRdLCBudWxsKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlw
ZSA9IHsKLSAgICBzZXRNZXNzYWdlQm9keTogZnVuY3Rpb24oYXJncykKKyAgICBfZm9ybWF0TWVz
c2FnZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5hcmdzID0gYXJnczsKLSAgICAg
ICAgc3dpdGNoICh0aGlzLnR5cGUpIHsKKyAgICAgICAgc3dpdGNoICh0aGlzLl90eXBlKSB7CiAg
ICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5U
cmFjZToKICAgICAgICAgICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKICAgICAgICAgICAgICAgICBzcGFuLmNsYXNzTmFtZSA9ICJjb25zb2xlLWZvcm1h
dHRlZC10cmFjZSBzb3VyY2UtY29kZSI7Ci0gICAgICAgICAgICAgICAgdmFyIHN0YWNrID0gQXJy
YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7Ci0gICAgICAgICAgICAgICAgdmFyIGZ1bmNO
YW1lcyA9IHN0YWNrLm1hcChmdW5jdGlvbihmKSB7CisgICAgICAgICAgICAgICAgdmFyIGZ1bmNO
YW1lcyA9IHRoaXMuX3N0YWNrVHJhY2UubWFwKGZ1bmN0aW9uKGYpIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGYgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0
aW9uKSIpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIHNwYW4uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZnVuY05hbWVzLmpvaW4oIlxuIikpKTsKICAg
ICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UgPSBzcGFuOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVR5cGUuT2JqZWN0OgotICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2Fn
ZSA9IHRoaXMuX2Zvcm1hdChbIiVPIiwgYXJnc1swXV0pOworICAgICAgICAgICAgICAgIHRoaXMu
Zm9ybWF0dGVkTWVzc2FnZSA9IHRoaXMuX2Zvcm1hdChbIiVPIiwgdGhpcy5fcGFyYW1ldGVyc1sw
XV0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICB2YXIgYXJncyA9IHRoaXMuX3BhcmFtZXRlcnMgfHwgW3RoaXMuX21lc3NhZ2VU
ZXh0XTsKICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3Jt
YXQoYXJncyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY4OSw3ICs2
OTYsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gewogCiAgICAg
aXNFcnJvck9yV2FybmluZzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlz
LmxldmVsID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5p
bmcgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VM
ZXZlbC5FcnJvcik7CisgICAgICAgIHJldHVybiAodGhpcy5fbGV2ZWwgPT09IFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8fCB0aGlzLl9sZXZlbCA9PT0g
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcik7CiAgICAgfSwK
IAogICAgIF9mb3JtYXQ6IGZ1bmN0aW9uKHBhcmFtZXRlcnMpCkBAIC03MDYsNyArNzEzLDcgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICBwYXJhbWV0ZXJzW2ldID0gV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5LndyYXBQcmltaXRpdmVW
YWx1ZShwYXJhbWV0ZXJzW2ldKTsKIAogICAgICAgICAvLyBUaGVyZSBjYW4gYmUgc3RyaW5nIGxv
ZyBhbmQgc3RyaW5nIGV2YWwgcmVzdWx0LiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW0gYmFz
ZWQgb24gbWVzc2FnZSB0eXBlLgotICAgICAgICB2YXIgc2hvdWxkRm9ybWF0TWVzc2FnZSA9IE9i
amVjdC5wcm94eVR5cGUocGFyYW1ldGVyc1swXSkgPT09ICJzdHJpbmciICYmIHRoaXMudHlwZSAh
PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdDsKKyAgICAg
ICAgdmFyIHNob3VsZEZvcm1hdE1lc3NhZ2UgPSBPYmplY3QucHJveHlUeXBlKHBhcmFtZXRlcnNb
MF0pID09PSAic3RyaW5nIiAmJiB0aGlzLl90eXBlICE9PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0OwogCiAgICAgICAgIC8vIE11bHRpcGxlIHBhcmFtZXRl
cnMgd2l0aCB0aGUgZmlyc3QgYmVpbmcgYSBmb3JtYXQgc3RyaW5nLiBTYXZlIHVudXNlZCBzdWJz
dGl0dXRpb25zLgogICAgICAgICBpZiAoc2hvdWxkRm9ybWF0TWVzc2FnZSkgewpAQCAtNzc0LDcg
Kzc4MSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7CiAKLSAgICAgICAgc3dpdGNoICh0aGlzLnNv
dXJjZSkgeworICAgICAgICBzd2l0Y2ggKHRoaXMuX3NvdXJjZSkgewogICAgICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5IVE1MOgogICAgICAg
ICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1odG1sLXNvdXJjZSIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzk1LDcgKzgwMiw3IEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBzd2l0Y2ggKHRoaXMubGV2ZWwpIHsKKyAgICAgICAgc3dpdGNoICh0
aGlzLl9sZXZlbCkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZUxldmVsLlRpcDoKICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xh
c3MoImNvbnNvbGUtdGlwLWxldmVsIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MTMs
NyArODIwLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwIHx8
IHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0
YXJ0R3JvdXBDb2xsYXBzZWQpCisgICAgICAgIGlmICh0aGlzLl90eXBlID09PSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cCB8fCB0aGlzLl90eXBlID09
PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxh
cHNlZCkKICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29uc29sZS1ncm91cC10
aXRsZSIpOwogCiAgICAgICAgIGlmICh0aGlzLmVsZW1lbnRzVHJlZU91dGxpbmUpIHsKQEAgLTgy
MiwzMSArODI5LDMxIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0
aGlzLnVybCAmJiB0aGlzLnVybCAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgaWYgKHRoaXMu
X3VybCAmJiB0aGlzLl91cmwgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgICB2YXIgdXJs
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICAgICAgIHVybEVs
ZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS11cmwgd2Via2l0LWh0bWwtcmVzb3Vy
Y2UtbGluayI7Ci0gICAgICAgICAgICB1cmxFbGVtZW50LmhyZWYgPSB0aGlzLnVybDsKLSAgICAg
ICAgICAgIHVybEVsZW1lbnQubGluZU51bWJlciA9IHRoaXMubGluZTsKKyAgICAgICAgICAgIHVy
bEVsZW1lbnQuaHJlZiA9IHRoaXMuX3VybDsKKyAgICAgICAgICAgIHVybEVsZW1lbnQubGluZU51
bWJlciA9IHRoaXMuX2xpbmU7CiAKLSAgICAgICAgICAgIGlmICh0aGlzLnNvdXJjZSA9PT0gV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMpCisgICAgICAgICAgICBp
ZiAodGhpcy5fc291cmNlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNv
dXJjZS5KUykKICAgICAgICAgICAgICAgICB1cmxFbGVtZW50LnByZWZlcnJlZFBhbmVsID0gInNj
cmlwdHMiOwogCi0gICAgICAgICAgICBpZiAodGhpcy5saW5lID4gMCkKLSAgICAgICAgICAgICAg
ICB1cmxFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJM
KHRoaXMudXJsKSArICI6IiArIHRoaXMubGluZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9saW5l
ID4gMCkKKyAgICAgICAgICAgICAgICB1cmxFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVj
dG9yLmRpc3BsYXlOYW1lRm9yVVJMKHRoaXMuX3VybCkgKyAiOiIgKyB0aGlzLl9saW5lOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwodGhpcy51cmwpOworICAgICAgICAgICAgICAg
IHVybEVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwo
dGhpcy5fdXJsKTsKIAogICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBtZXNzYWdlVGV4dEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5jbGFz
c05hbWUgPSAiY29uc29sZS1tZXNzYWdlLXRleHQgc291cmNlLWNvZGUiOwotICAgICAgICBpZiAo
dGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuQXNz
ZXJ0KQorICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VUeXBlLkFzc2VydCkKICAgICAgICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkFzc2VydGlvbiBmYWlsZWQ6ICIpKSk7CiAgICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLmZvcm1hdHRlZE1lc3NhZ2UpOwogICAgICAgICBlbGVtZW50LmFwcGVuZENo
aWxkKG1lc3NhZ2VUZXh0RWxlbWVudCk7CiAKLSAgICAgICAgaWYgKHRoaXMucmVwZWF0Q291bnQg
PiAxKQorICAgICAgICBpZiAodGhpcy5fcmVwZWF0Q291bnQgPiAxKQogICAgICAgICAgICAgdGhp
cy5fdXBkYXRlUmVwZWF0Q291bnQoKTsKIAogICAgICAgICByZXR1cm4gZWxlbWVudDsKQEAgLTg2
MCwxMyArODY3LDEzIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLnJlcGVhdENvdW50
RWxlbWVudCwgdGhpcy5fZWxlbWVudC5maXJzdENoaWxkKTsKICAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYWRkU3R5bGVDbGFzcygicmVwZWF0ZWQtbWVzc2FnZSIpOwogICAgICAgICB9Ci0gICAg
ICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5yZXBlYXRDb3Vu
dDsKKyAgICAgICAgdGhpcy5yZXBlYXRDb3VudEVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9y
ZXBlYXRDb3VudDsKICAgICB9LAogCiAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHZhciBzb3VyY2VTdHJpbmc7Ci0gICAgICAgIHN3aXRjaCAodGhpcy5zb3VyY2UpIHsK
KyAgICAgICAgc3dpdGNoICh0aGlzLl9zb3VyY2UpIHsKICAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSFRNTDoKICAgICAgICAgICAgICAg
ICBzb3VyY2VTdHJpbmcgPSAiSFRNTCI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04ODgs
NyArODk1LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHZhciB0eXBlU3RyaW5nOwotICAgICAgICBzd2l0Y2ggKHRoaXMu
dHlwZSkgeworICAgICAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHsKICAgICAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxvZzoKICAgICAgICAgICAg
ICAgICB0eXBlU3RyaW5nID0gIkxvZyI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MTQs
NyArOTIxLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgdmFyIGxldmVsU3RyaW5nOwotICAgICAgICBzd2l0
Y2ggKHRoaXMubGV2ZWwpIHsKKyAgICAgICAgc3dpdGNoICh0aGlzLl9sZXZlbCkgewogICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLlRpcDoK
ICAgICAgICAgICAgICAgICBsZXZlbFN0cmluZyA9ICJUaXAiOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtOTMyLDcgKzkzOSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBy
ZXR1cm4gc291cmNlU3RyaW5nICsgIiAiICsgdHlwZVN0cmluZyArICIgIiArIGxldmVsU3RyaW5n
ICsgIjogIiArIHRoaXMuZm9ybWF0dGVkTWVzc2FnZS50ZXh0Q29udGVudCArICJcbiIgKyB0aGlz
LnVybCArICIgbGluZSAiICsgdGhpcy5saW5lOworICAgICAgICByZXR1cm4gc291cmNlU3RyaW5n
ICsgIiAiICsgdHlwZVN0cmluZyArICIgIiArIGxldmVsU3RyaW5nICsgIjogIiArIHRoaXMuZm9y
bWF0dGVkTWVzc2FnZS50ZXh0Q29udGVudCArICJcbiIgKyB0aGlzLl91cmwgKyAiIGxpbmUgIiAr
IHRoaXMuX2xpbmU7CiAgICAgfSwKIAogICAgIGlzRXF1YWw6IGZ1bmN0aW9uKG1zZywgZGlzcmVn
dWFyZEdyb3VwKQpAQCAtOTQwLDE0ICs5NDcsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFtc2cpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgdmFyIHJldCA9ICh0aGlzLnNvdXJjZSA9PSBtc2cuc291cmNlKQot
ICAgICAgICAgICAgJiYgKHRoaXMudHlwZSA9PSBtc2cudHlwZSkKLSAgICAgICAgICAgICYmICh0
aGlzLmxldmVsID09IG1zZy5sZXZlbCkKLSAgICAgICAgICAgICYmICh0aGlzLmxpbmUgPT0gbXNn
LmxpbmUpCi0gICAgICAgICAgICAmJiAodGhpcy51cmwgPT0gbXNnLnVybCkKKyAgICAgICAgdmFy
IHJldCA9ICh0aGlzLl9zb3VyY2UgPT0gbXNnLl9zb3VyY2UpCisgICAgICAgICAgICAmJiAodGhp
cy5fdHlwZSA9PSBtc2cuX3R5cGUpCisgICAgICAgICAgICAmJiAodGhpcy5fbGV2ZWwgPT0gbXNn
Ll9sZXZlbCkKKyAgICAgICAgICAgICYmICh0aGlzLl9saW5lID09IG1zZy5fbGluZSkKKyAgICAg
ICAgICAgICYmICh0aGlzLl91cmwgPT0gbXNnLl91cmwpCiAgICAgICAgICAgICAmJiAodGhpcy5t
ZXNzYWdlID09IG1zZy5tZXNzYWdlKTsKIAotICAgICAgICByZXR1cm4gKGRpc3JlZ3VhcmRHcm91
cCA/IHJldCA6IChyZXQgJiYgKHRoaXMuZ3JvdXBMZXZlbCA9PSBtc2cuZ3JvdXBMZXZlbCkpKTsK
KyAgICAgICAgcmV0dXJuIChkaXNyZWd1YXJkR3JvdXAgPyByZXQgOiAocmV0ICYmICh0aGlzLl9n
cm91cExldmVsID09IG1zZy5fZ3JvdXBMZXZlbCkpKTsKICAgICB9CiB9CiAKQEAgLTEwMDEsMTQg
KzEwMDgsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQucHJvdG90eXBlID0gewogICAg
IH0KIH0KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVUZXh0TWVzc2FnZSA9IGZ1bmN0aW9uKHRleHQs
IGxldmVsKQotewotICAgIGxldmVsID0gbGV2ZWwgfHwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5Mb2c7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNh
bGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2csIGxldmVsLCAwLCBudWxs
LCBudWxsLCAxLCB0ZXh0KTsKLX0KLQotV2ViSW5zcGVjdG9yLkNvbnNvbGVUZXh0TWVzc2FnZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlw
ZTsKLQogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0ID0gZnVuY3Rpb24ocmVzdWx0
LCBleGNlcHRpb24sIG9yaWdpbmF0aW5nQ29tbWFuZCkKIHsKICAgICB2YXIgbGV2ZWwgPSAoZXhj
ZXB0aW9uID8gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvciA6
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nKTsKQEAgLTEwMjMs
NyArMTAyMiw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdCA9IGZ1bmN0aW9u
KHJlc3VsdCwgZXhjZXB0aW9uLCBvcmlnaW5hdGluZ0NvbW1hCiAKICAgICB0aGlzLm9yaWdpbmF0
aW5nQ29tbWFuZCA9IG9yaWdpbmF0aW5nQ29tbWFuZDsKIAotICAgIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
U291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0
LCBsZXZlbCwgbGluZSwgdXJsLCBudWxsLCAxLCBtZXNzYWdlKTsKKyAgICBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVNvdXJjZS5KUywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJl
c3VsdCwgbGV2ZWwsIGxpbmUsIHVybCwgbnVsbCwgMSwgbnVsbCwgW21lc3NhZ2VdKTsKIH0KIAog
V2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3RvdHlwZSA9IHsKQEAgLTEwMzcs
MTAgKzEwMzYsOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJvdG90eXBl
ID0gewogCiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGU7CiAKLVdlYkluc3Bl
Y3Rvci5Db25zb2xlR3JvdXAgPSBmdW5jdGlvbihwYXJlbnRHcm91cCwgbGV2ZWwpCitXZWJJbnNw
ZWN0b3IuQ29uc29sZUdyb3VwID0gZnVuY3Rpb24ocGFyZW50R3JvdXApCiB7CiAgICAgdGhpcy5w
YXJlbnRHcm91cCA9IHBhcmVudEdyb3VwOwotICAgIHRoaXMubGV2ZWwgPSBsZXZlbDsKIAogICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgZWxlbWVu
dC5jbGFzc05hbWUgPSAiY29uc29sZS1ncm91cCI7CkBAIC0xMDU4LDExICsxMDU2LDExIEBAIFdl
Ykluc3BlY3Rvci5Db25zb2xlR3JvdXAucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFy
IGVsZW1lbnQgPSBtc2cudG9NZXNzYWdlRWxlbWVudCgpOwogCi0gICAgICAgIGlmIChtc2cudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXAg
fHwgbXNnLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5T
dGFydEdyb3VwQ29sbGFwc2VkKSB7CisgICAgICAgIGlmIChtc2cuX3R5cGUgPT09IFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5TdGFydEdyb3VwIHx8IG1zZy5fdHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlN0YXJ0R3JvdXBDb2xs
YXBzZWQpIHsKICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LnBhcmVudE5vZGUuaW5z
ZXJ0QmVmb3JlKGVsZW1lbnQsIHRoaXMubWVzc2FnZXNFbGVtZW50KTsKICAgICAgICAgICAgIGVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90aXRsZUNsaWNrZWQuYmluZCh0
aGlzKSwgdHJ1ZSk7CiAgICAgICAgICAgICB2YXIgZ3JvdXBFbGVtZW50ID0gZWxlbWVudC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJjb25zb2xlLWdyb3VwIik7Ci0gICAgICAgICAgICBp
ZiAoZ3JvdXBFbGVtZW50ICYmIG1zZy50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZCkKKyAgICAgICAgICAgIGlmIChncm91
cEVsZW1lbnQgJiYgbXNnLl90eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVR5cGUuU3RhcnRHcm91cENvbGxhcHNlZCkKICAgICAgICAgICAgICAgICBncm91cEVsZW1l
bnQuYWRkU3R5bGVDbGFzcygiY29sbGFwc2VkIik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IGU1NTI5NGExNzhmODAz
ZGYxY2MyNjkxYzhhZjJjNGUyNGEzODYwMmEuLjQ4ZWI0YzBiOWJhMjE2ZTNmODUxODExOTYyYTFl
OGJmZmViYjU2MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCkBAIC00NTMsNyArNDUzLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dDb25zb2xl
KCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UobmV3IFdlYkluc3Bl
Y3Rvci5Db25zb2xlVGV4dE1lc3NhZ2UoYnVpbGRlci5qb2luKCJcbiIpKSk7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
LmNyZWF0ZVRleHRNZXNzYWdlKGJ1aWxkZXIuam9pbigiXG4iKSkpOwogICAgIH0sCiAKICAgICBn
ZXQgcm9vdERPTU5vZGUoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luamVjdGVkU2NyaXB0QWNjZXNzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lu
amVjdGVkU2NyaXB0QWNjZXNzLmpzCmluZGV4IDkwZGFhYjdjMzIyNGY2NzM3NzIzNmFmZTJiNTI4
ZmNlMmIxMjYyNGMuLjBlNGNjMmVjYTAxYTQ1OGE5YmZlM2ZiZjY3YTY2NjIyNDJiOTk3MzMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vz
cy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHRBY2Nl
c3MuanMKQEAgLTU4LDcgKzU4LDcgQEAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5k
bGVyID0gZnVuY3Rpb24obWV0aG9kTmFtZSwgYXN5bmMpCiAgICAgICAgICAgICBpZiAoIWlzRXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVzc2FnZShuZXcg
V2ViSW5zcGVjdG9yLkNvbnNvbGVUZXh0TWVzc2FnZSgiRXJyb3IgZGlzcGF0Y2hpbmc6ICIgKyBt
ZXRob2ROYW1lKSk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVz
c2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UoIkVycm9y
IGRpc3BhdGNoaW5nOiAiICsgbWV0aG9kTmFtZSkpOwogICAgICAgICB9CiAgICAgICAgIHZhciBj
YWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChteUNhbGxiYWNrKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IDJhZTIzYTBmOTMzNTg4M2U0ZmY5
YjQxZjgzY2Y2MjZhNzVlYzk3ZDAuLjU5NWI3MWJiNDRlYzU1NTE3MTU0ZDRmNTc1OGMwMGEzMWZi
MTNjNGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTU4Nyw5
ICs1ODcsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBpZiAoIXRoaXMuX21pbWVUeXBlSXNDb25zaXN0ZW50V2l0aFR5cGUoKSkKICAgICAg
ICAgICAgICAgICAgICAgbXNnID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZShXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5PdGhlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2cs
IAotICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VMZXZlbC5XYXJuaW5nLCAtMSwgdGhpcy51cmwsIG51bGwsIDEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuV2FybmluZ3MuSW5jb3JyZWN0
TUlNRVR5cGUubWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLnRvU3RyaW5nKHRoaXMudHlwZSksIHRoaXMubWltZVR5cGUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2
ZWwuV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy51cmwsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5zcHJp
bnRmKFdlYkluc3BlY3Rvci5XYXJuaW5ncy5JbmNvcnJlY3RNSU1FVHlwZS5tZXNzYWdlLCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS50b1N0cmluZyh0aGlzLnR5cGUpLCB0aGlzLm1pbWVUeXBl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICBudWxsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA3YzI1NWJiYjk1ZGQwM2I0NWY5OWQz
N2YzYTAxM2Y3NzFhYThhYzYyLi41ZmFhYmJjZDQ0YmM1OWJmMWYxMGE1MDg0NzAyODYzNjk4NmNi
NzA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTE0NjMs
MTAgKzE0NjMsMTAgQEAgV2ViSW5zcGVjdG9yLmRpZENvbW1pdExvYWQgPSBmdW5jdGlvbigpCiBX
ZWJJbnNwZWN0b3IudXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQgPSBmdW5jdGlvbihj
b3VudCkKIHsKICAgICB2YXIgbWVzc2FnZSA9IFN0cmluZy5zcHJpbnRmKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiJWQgY29uc29sZSBtZXNzYWdlcyBhcmUgbm90IHNob3duLiIpLCBjb3VudCk7Ci0g
ICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVzc2FnZShuZXcgV2ViSW5zcGVjdG9yLkNvbnNv
bGVUZXh0TWVzc2FnZShtZXNzYWdlLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLldhcm5pbmcpKTsKKyAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVzc2FnZShtZXNzYWdlLCBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcpKTsKIH0KIAotV2Vi
SW5zcGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24ocGF5bG9hZCwgb3B0X2FyZ3Mp
CitXZWJJbnNwZWN0b3IuYWRkQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihwYXlsb2FkKQogewog
ICAgIHZhciBjb25zb2xlTWVzc2FnZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uo
CiAgICAgICAgIHBheWxvYWQuc291cmNlLApAQCAtMTQ3NSw4ICsxNDc1LDEwIEBAIFdlYkluc3Bl
Y3Rvci5hZGRDb25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHBheWxvYWQsIG9wdF9hcmdzKQogICAg
ICAgICBwYXlsb2FkLmxpbmUsCiAgICAgICAgIHBheWxvYWQudXJsLAogICAgICAgICBwYXlsb2Fk
Lmdyb3VwTGV2ZWwsCi0gICAgICAgIHBheWxvYWQucmVwZWF0Q291bnQpOwotICAgIGNvbnNvbGVN
ZXNzYWdlLnNldE1lc3NhZ2VCb2R5KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50
cywgMSkpOworICAgICAgICBwYXlsb2FkLnJlcGVhdENvdW50LAorICAgICAgICBwYXlsb2FkLm1l
c3NhZ2UsCisgICAgICAgIHBheWxvYWQucGFyYW1ldGVycywKKyAgICAgICAgcGF5bG9hZC5zdGFj
a1RyYWNlKTsKICAgICB0aGlzLmNvbnNvbGUuYWRkTWVzc2FnZShjb25zb2xlTWVzc2FnZSk7CiB9
CiAKQEAgLTE1NDQsNyArMTU0Niw5IEBAIFdlYkluc3BlY3Rvci5sb2cgPSBmdW5jdGlvbihtZXNz
YWdlLCBtZXNzYWdlTGV2ZWwpCiAgICAgICAgICAgICBudWxsLAogICAgICAgICAgICAgbnVsbCwK
ICAgICAgICAgICAgIHJlcGVhdENvdW50LAotICAgICAgICAgICAgbWVzc2FnZSk7CisgICAgICAg
ICAgICBudWxsLAorICAgICAgICAgICAgW21lc3NhZ2VdLAorICAgICAgICAgICAgbnVsbCk7CiAK
ICAgICAgICAgc2VsZi5jb25zb2xlLmFkZE1lc3NhZ2UobXNnKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61664</attachid>
            <date>2010-07-15 08:06:05 -0700</date>
            <delta_ts>2010-07-15 08:13:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42345-20100715190603.patch</filename>
            <type>text/plain</type>
            <size>20978</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDVkNjczMzc1MDE3Y2EzYTZkZDE1Y2IyNTAwM2RkNWM4ZWFlYjlkYS4uZGUwN2JkNGU2YjQzN2I4
N2YwMDI3NzNhNDZhMDkyYzk4MGFmNWZmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMC0wNy0xNSAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwYXNzIGFsbCBwYXJh
bWV0ZXJzIHRvIFdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSBhcyBhIHNpbmdsZSBwYXls
b2FkIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIzNDUKKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgY29uc29sZSB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdEFycmF5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcnJheTo6U2Ny
aXB0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QXJyYXk6OmpzQXJyYXkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEFycmF5OjpzZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEFycmF5Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRBcnJheTo6U2NyaXB0QXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QXJyYXk6On5TY3JpcHRBcnJheSk6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjphZGRU
b0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnNvbGVWaWV3LnByb3RvdHlwZS51cGRhdGVNZXNzYWdlUmVwZWF0Q291bnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29u
c29sZUNvbW1hbmRSZXN1bHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlw
ZS5nZW5lcmF0ZVN0eWxlc2hlZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuanM6CisgICAgICAgIChJbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5z
dGFsbEhhbmRsZXIuSW5qZWN0ZWRTY3JpcHRBY2Nlc3MucHJvdG90eXBlLm1ldGhvZE5hbWUubXlD
YWxsYmFjayk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdEFjY2Vzcy5faW5zdGFsbEhhbmRsZXIu
SW5qZWN0ZWRTY3JpcHRBY2Nlc3MucHJvdG90eXBlLm1ldGhvZE5hbWUpOgorICAgICAgICAoSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuX2luc3RhbGxIYW5kbGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZS5fY2hlY2tXYXJuaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci51cGRhdGVDb25zb2xlTWVzc2FnZUV4
cGlyZWRDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuYWRkQ29uc29sZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZy5sb2dNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5sb2cpOgorCiAyMDEwLTA3LTE1ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUu
Y29tPgogCiAgICAgICAgIFRleHQgbGF5b3V0IGlzIHdyb25nIHdpdGggYSBTVkcgRm9udCB0aGF0
IGxhY2tzIDxtaXNzaW5nLWdseXBoPiBlbGVtZW50CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEFycmF5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QXJyYXku
Y3BwCmluZGV4IGNhZWNjNDA1MWQ0ZDJkYjI5ZDJhZjg5ZmIxYTc3ZDA4Y2FjMjI4YzYuLjExOWQz
MDM2YjI1MWRmZTMyMzMzMGIyNWEwYWUzNzhjNjc1OGQ5NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0QXJyYXkuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2NyaXB0QXJyYXkuaCIKIAorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgorCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
QEAgLTYyLDYgKzY0LDE5IEBAIGJvb2wgU2NyaXB0QXJyYXk6OnNldCh1bnNpZ25lZCBpbmRleCwg
Y29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKICAgICByZXR1cm4gaGFuZGxlRXhjZXB0aW9uKG1f
c2NyaXB0U3RhdGUpOwogfQogCitib29sIFNjcmlwdEFycmF5OjpzZXQodW5zaWduZWQgaW5kZXgs
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCit7CisgICAgU2NyaXB0VmFsdWUgc2NyaXB0
VmFsdWUgPSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUobV9zY3JpcHRTdGF0ZSwgdmFsdWUpOwor
ICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIGpzQXJyYXkoKS0+cHV0KG1fc2NyaXB0U3Rh
dGUsIGluZGV4LCBzY3JpcHRWYWx1ZS5qc1ZhbHVlKCkpOworICAgIHJldHVybiBoYW5kbGVFeGNl
cHRpb24obV9zY3JpcHRTdGF0ZSk7Cit9CisKIGJvb2wgU2NyaXB0QXJyYXk6OnNldCh1bnNpZ25l
ZCBpbmRleCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRB
cnJheS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5oCmluZGV4IDkyNDAzNjgx
ZWNlNTZmMTY3NjEyZTZhN2JmYWViNzE0NDBjNDQzOWMuLjJiYWRkMDljZmRkNzk1YTk3YTcxMzhj
NGFmZmNjZDdjMTRlMjAzYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
QXJyYXkuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFycmF5LmgKQEAgLTM3LDIz
ICszNywyNSBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLSAgICBjbGFzcyBTY3JpcHRBcnJheSA6IHB1YmxpYyBTY3JpcHRPYmplY3Qgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgU2NyaXB0QXJyYXkoU2NyaXB0U3RhdGUqLCBKU0M6OkpTQXJy
YXkqKTsKLSAgICAgICAgU2NyaXB0QXJyYXkoKSB7fQotICAgICAgICBKU0M6OkpTQXJyYXkqIGpz
QXJyYXkoKSBjb25zdCB7IHJldHVybiBhc0FycmF5KGpzVmFsdWUoKSk7IH0KLQotICAgICAgICBi
b29sIHNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0gICAgICAgIGJv
b2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgYm9vbCBzZXQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSk7Ci0gICAgICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4
LCBsb25nIGxvbmcpOwotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgaW50KTsKLSAg
ICAgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGJvb2wpOwotICAgICAgICB1bnNpZ25lZCBs
ZW5ndGgoKTsKLQotICAgICAgICBzdGF0aWMgU2NyaXB0QXJyYXkgY3JlYXRlTmV3KFNjcmlwdFN0
YXRlKik7Ci0gICAgfTsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgU2Ny
aXB0QXJyYXkgOiBwdWJsaWMgU2NyaXB0T2JqZWN0IHsKK3B1YmxpYzoKKyAgICBTY3JpcHRBcnJh
eShTY3JpcHRTdGF0ZSosIEpTQzo6SlNBcnJheSopOworICAgIFNjcmlwdEFycmF5KCkge30KKyAg
ICBKU0M6OkpTQXJyYXkqIGpzQXJyYXkoKSBjb25zdCB7IHJldHVybiBhc0FycmF5KGpzVmFsdWUo
KSk7IH0KKworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTY3JpcHRPYmplY3Qm
KTsKKyAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7
CisgICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wg
c2V0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4
LCBsb25nIGxvbmcpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBpbnQpOworICAgIGJv
b2wgc2V0KHVuc2lnbmVkIGluZGV4LCBib29sKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKTsKKwor
ICAgIHN0YXRpYyBTY3JpcHRBcnJheSBjcmVhdGVOZXcoU2NyaXB0U3RhdGUqKTsKK307CiB9CiAK
ICNlbmRpZiAvLyBTY3JpcHRBcnJheV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdEFycmF5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0QXJyYXkuY3BwCmlu
ZGV4IGExOTlhNmM2YTU4Njc0MDdlYjgzMmVmZDJkZjgzYWE3YzRmYTg0MzAuLjcxMTliMjdjNmQ4
ZTMwOGZhMDgxMDgxM2RmZDVkYTMwNGNjYzc4YTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0QXJyYXkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0QXJy
YXkuY3BwCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTY3JpcHRBcnJheS5oIgogCi0jaW5jbHVkZSAiU2NyaXB0U2NvcGUuaCIKLSNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgotCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
ICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTU3LDYgKzU3LDE5IEBAIGJvb2wgU2NyaXB0QXJy
YXk6OnNldCh1bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0JiB2YWx1ZSkKICAgICBy
ZXR1cm4gc2NvcGUuc3VjY2VzcygpOwogfQogCitib29sIFNjcmlwdEFycmF5OjpzZXQodW5zaWdu
ZWQgaW5kZXgsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUpCit7CisgICAgU2NyaXB0VmFs
dWUgc2NyaXB0VmFsdWUgPSBTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUobV9zY3JpcHRTdGF0ZSwg
dmFsdWUpOworICAgIGlmIChzY3JpcHRWYWx1ZS5oYXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBT
Y3JpcHRTY29wZSBzY29wZShtX3NjcmlwdFN0YXRlKTsKKyAgICB2OE9iamVjdCgpLT5TZXQodjg6
OkludGVnZXI6Ok5ldyhpbmRleCksIHNjcmlwdFZhbHVlLnY4VmFsdWUoKSk7CisgICAgcmV0dXJu
IHNjb3BlLnN1Y2Nlc3MoKTsKK30KKwogYm9vbCBTY3JpcHRBcnJheTo6c2V0KHVuc2lnbmVkIGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIFNjcmlwdFNjb3BlIHNjb3BlKG1fc2Ny
aXB0U3RhdGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5o
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRBcnJheS5oCmluZGV4IDlmNDBmYmYwNDg0NWVm
MzY5M2VhMTZmMjg4NGQ2MDg0OTM2MDdiMmMuLjlhYTg3NjQ2OGJiMDlhOGUxMzgzZGUzNWYxNTEx
OTRlODc4MmU5YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0QXJyYXku
aAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEFycmF5LmgKQEAgLTM2LDI0ICszNiwy
NiBAQAogI2luY2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBT
Y3JpcHRTdGF0ZTsKLQotICAgIGNsYXNzIFNjcmlwdEFycmF5IDogcHVibGljIFNjcmlwdE9iamVj
dCB7Ci0gICAgcHVibGljOgotICAgICAgICBTY3JpcHRBcnJheShTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIHY4OjpIYW5kbGU8djg6OkFycmF5Pik7Ci0gICAgICAgIFNjcmlwdEFycmF5KCkge307
Ci0gICAgICAgIHZpcnR1YWwgflNjcmlwdEFycmF5KCkge30KLQotICAgICAgICBib29sIHNldCh1
bnNpZ25lZCBpbmRleCwgY29uc3QgU2NyaXB0T2JqZWN0Jik7Ci0gICAgICAgIGJvb2wgc2V0KHVu
c2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgYm9vbCBzZXQodW5zaWduZWQg
aW5kZXgsIGRvdWJsZSk7Ci0gICAgICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBsb25nIGxv
bmcpOwotICAgICAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgaW50KTsKLSAgICAgICAgYm9v
bCBzZXQodW5zaWduZWQgaW5kZXgsIGJvb2wpOwotICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKTsK
LQotICAgICAgICBzdGF0aWMgU2NyaXB0QXJyYXkgY3JlYXRlTmV3KFNjcmlwdFN0YXRlKik7Ci0g
ICAgfTsKK2NsYXNzIFNjcmlwdFN0YXRlOworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwor
CitjbGFzcyBTY3JpcHRBcnJheSA6IHB1YmxpYyBTY3JpcHRPYmplY3QgeworcHVibGljOgorICAg
IFNjcmlwdEFycmF5KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6QXJy
YXk+KTsKKyAgICBTY3JpcHRBcnJheSgpIHt9OworICAgIHZpcnR1YWwgflNjcmlwdEFycmF5KCkg
e30KKworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTY3JpcHRPYmplY3QmKTsK
KyAgICBib29sIHNldCh1bnNpZ25lZCBpbmRleCwgU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7Cisg
ICAgYm9vbCBzZXQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgc2V0
KHVuc2lnbmVkIGluZGV4LCBkb3VibGUpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBs
b25nIGxvbmcpOworICAgIGJvb2wgc2V0KHVuc2lnbmVkIGluZGV4LCBpbnQpOworICAgIGJvb2wg
c2V0KHVuc2lnbmVkIGluZGV4LCBib29sKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKTsKKworICAg
IHN0YXRpYyBTY3JpcHRBcnJheSBjcmVhdGVOZXcoU2NyaXB0U3RhdGUqKTsKK307CiB9CiAKICNl
bmRpZiAvLyBTY3JpcHRBcnJheV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5k
ZXggOTM0ZTJlOTY2MTdlMzZmMTQyZmMzNWM5MGFjYTA0YWEyNTZiYThmZC4uYzQ1OGVhYWFiOGNk
ZDNjMzJkZTQyYTg5NmZmYjMxYTg4ODIyYWI4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmNwcApAQCAtOTMsMTUgKzkzLDI2IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlwdEhvCiAgICAg
anNvbk9iai5zZXQoInVybCIsIG1fdXJsKTsKICAgICBqc29uT2JqLnNldCgiZ3JvdXBMZXZlbCIs
IHN0YXRpY19jYXN0PGludD4obV9ncm91cExldmVsKSk7CiAgICAganNvbk9iai5zZXQoInJlcGVh
dENvdW50Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3JlcGVhdENvdW50KSk7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gYXJndW1lbnRzOworICAgIGpzb25PYmouc2V0
KCJtZXNzYWdlIiwgbV9tZXNzYWdlKTsKICAgICBpZiAoIW1fYXJndW1lbnRzLmlzRW1wdHkoKSkg
eworICAgICAgICBTY3JpcHRBcnJheSBqc29uQXJncyA9IGZyb250ZW5kLT5uZXdTY3JpcHRBcnJh
eSgpOwogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2Ny
aXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9zY3JpcHRTdGF0ZS5nZXQoKSk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFZhbHVlID0g
aW5qZWN0ZWRTY3JpcHQud3JhcEZvckNvbnNvbGUobV9hcmd1bWVudHNbaV0pOwotICAgICAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZChzZXJpYWxpemVkVmFsdWUpOworICAgICAgICAgICAgaWYgKCFq
c29uQXJncy5zZXQoaSwgc2VyaWFsaXplZFZhbHVlLmdldCgpKSkgeworICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0gICAKLSAgICBmcm9udGVuZC0+YWRkQ29uc29sZU1lc3Nh
Z2UoanNvbk9iaiwgbV9mcmFtZXMsIGFyZ3VtZW50cywgIG1fbWVzc2FnZSk7CisgICAgICAgIGpz
b25PYmouc2V0KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3MpOworICAgIH0KKyAgICBpZiAoIW1fZnJh
bWVzLmlzRW1wdHkoKSkgeworICAgICAgICBTY3JpcHRBcnJheSBqc29uRnJhbWVzID0gZnJvbnRl
bmQtPm5ld1NjcmlwdEFycmF5KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2ZyYW1lcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGpzb25GcmFtZXMuc2V0KGksIG1fZnJh
bWVzW2ldKTsKKyAgICAgICAganNvbk9iai5zZXQoInN0YWNrVHJhY2UiLCBqc29uRnJhbWVzKTsK
KyAgICB9CisgICAgZnJvbnRlbmQtPmFkZENvbnNvbGVNZXNzYWdlKGpzb25PYmopOwogfQogCiB2
b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3JG
cm9udGVuZCogZnJvbnRlbmQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAK
aW5kZXggZjlhMjliNmU3ODE3ZTFhNmI0NDIyNTRlODYwZDc1NDk2NTUzNmYyNS4uNTkyNTc0MTI3
ZGFhOTJjMTk3NmY5N2NmYWYyOTYyODg4N2I0NzgzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kLmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKIAotI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5o
IgpAQCAtMTEyLDI2ICsxMTEsMTEgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlQ29u
c29sZU1lc3NhZ2VFeHBpcmVkQ291bnQodW5zaWduZWQgY291bnQpCiAgICAgZnVuY3Rpb24uY2Fs
bCgpOwogfQogCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjphZGRDb25zb2xlTWVzc2FnZShjb25z
dCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBm
cmFtZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiBhcmd1
bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFk
ZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaikKIHsKICAgICBT
Y3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIpOyAK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgiYWRkQ29uc29sZU1lc3NhZ2UiKTsKICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChtZXNzYWdlT2JqKTsKLSAgICBpZiAoIWZyYW1lcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lcy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZyYW1lc1tpXSk7Ci0g
ICAgfSBlbHNlIGlmICghYXJndW1lbnRzLmlzRW1wdHkoKSkgewotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTY3Jp
cHRWYWx1ZSBzY3JpcHRWYWx1ZSA9IFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShzY3JpcHRTdGF0
ZSgpLCBhcmd1bWVudHNbaV0uZ2V0KCkpOwotICAgICAgICAgICAgaWYgKHNjcmlwdFZhbHVlLmhh
c05vVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KHNjcmlwdFZhbHVlKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2UpOwotICAgIH0KICAgICBmdW5j
dGlvbi5jYWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4
IGUzMmY0MGNhYTlhNDEzNTAxYjFiNWNlZmMzZTdiOWMxNTk5YTg3YWQuLmU2NTY3YmUzY2EyNTJk
ZTRkZWJiODNmMzA5M2ExZTdiOTgzYjBhZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgcG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncyk7CiAKICAg
ICAgICAgdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCh1bnNpZ25lZCBjb3Vu
dCk7Ci0gICAgICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoY29uc3QgU2NyaXB0T2JqZWN0JiBt
ZXNzYWdlT2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJhbWVzLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgYXJndW1lbnRzLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlw
dE9iamVjdCYgbWVzc2FnZU9iaik7CiAgICAgICAgIHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VS
ZXBlYXRDb3VudCh1bnNpZ25lZCBjb3VudCk7CiAgICAgICAgIHZvaWQgY2xlYXJDb25zb2xlTWVz
c2FnZXMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNv
bGVWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmlu
ZGV4IDhiYjcxZTY1YTZmYWRkZjFiZmNkOTViYThlMjY1YWM4NDdkYjUxN2MuLmQ0ZDIxNWJhNDY3
MWI3NzY2MDI1OTViYTZhYmFlMGMwMDFmNjU5ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29uc29sZVZpZXcuanMKQEAgLTI3NSw5ICsyNzUsOSBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgbXNnLl91cGRhdGVSZXBlYXRDb3Vu
dCgpOwogICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50RXJyb3JXYXJuaW5nQ291bnQobXNnKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1zZ0NvcHkgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlKG1zZy5zb3VyY2UsIG1zZy50eXBlLCBtc2cubGV2ZWwsIG1zZy5saW5l
LCBtc2cudXJsLCBtc2cuZ3JvdXBMZXZlbCwgY291bnQgLSBwcmV2UmVwZWF0Q291bnQpOworICAg
ICAgICAgICAgdmFyIG1zZ0NvcHkgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKG1z
Zy5zb3VyY2UsIG1zZy50eXBlLCBtc2cubGV2ZWwsIG1zZy5saW5lLCBtc2cudXJsLCBtc2cuZ3Jv
dXBMZXZlbCwgY291bnQgLSBwcmV2UmVwZWF0Q291bnQsIG1zZy5fbWVzc2FnZVRleHQsIG1zZy5f
cGFyYW1ldGVycywgbXNnLl9zdGFja1RyYWNlKTsKICAgICAgICAgICAgIG1zZ0NvcHkudG90YWxS
ZXBlYXRDb3VudCA9IGNvdW50OwotICAgICAgICAgICAgbXNnQ29weS5zZXRNZXNzYWdlQm9keSht
c2cuYXJncyk7CisgICAgICAgICAgICBtc2dDb3B5Ll9mb3JtYXRNZXNzYWdlKCk7CiAgICAgICAg
ICAgICB0aGlzLmFkZE1lc3NhZ2UobXNnQ29weSk7CiAgICAgICAgIH0KICAgICB9LApAQCAtNjQ1
LDcgKzY0NSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAKIFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlZpZXcucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlv
bihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIGdyb3VwTGV2ZWwsIHJlcGVhdENvdW50
KQorV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBs
ZXZlbCwgbGluZSwgdXJsLCBncm91cExldmVsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1l
dGVycywgc3RhY2tUcmFjZSkKIHsKICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsKICAgICB0aGlz
LnR5cGUgPSB0eXBlOwpAQCAtNjU2LDI5ICs2NTYsMzYgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCBncm91cExl
dmUKICAgICB0aGlzLnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7CiAgICAgdGhpcy5yZXBlYXRE
ZWx0YSA9IHJlcGVhdENvdW50OwogICAgIHRoaXMudG90YWxSZXBlYXRDb3VudCA9IHJlcGVhdENv
dW50OwotICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gNykKLSAgICAgICAgdGhpcy5zZXRNZXNz
YWdlQm9keShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDcpKTsKKyAgICB0
aGlzLl9tZXNzYWdlVGV4dCA9IG1lc3NhZ2U7CisgICAgdGhpcy5fcGFyYW1ldGVycyA9IHBhcmFt
ZXRlcnM7CisgICAgdGhpcy5fc3RhY2tUcmFjZSA9IHN0YWNrVHJhY2U7CisgICAgdGhpcy5fZm9y
bWF0TWVzc2FnZSgpOworfQorCitXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4
dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBsZXZlbCkKK3sKKyAgICBsZXZlbCA9IGxldmVsIHx8
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOworICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVsbCwgbnVsbCwgMSwgbnVsbCwgW3RleHRdLCBudWxsKTsK
IH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKLSAgICBzZXRN
ZXNzYWdlQm9keTogZnVuY3Rpb24oYXJncykKKyAgICBfZm9ybWF0TWVzc2FnZTogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdGhpcy5hcmdzID0gYXJnczsKICAgICAgICAgc3dpdGNoICh0aGlz
LnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VUeXBlLlRyYWNlOgogICAgICAgICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gImNv
bnNvbGUtZm9ybWF0dGVkLXRyYWNlIHNvdXJjZS1jb2RlIjsKLSAgICAgICAgICAgICAgICB2YXIg
c3RhY2sgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKTsKLSAgICAgICAgICAgICAg
ICB2YXIgZnVuY05hbWVzID0gc3RhY2subWFwKGZ1bmN0aW9uKGYpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgZnVuY05hbWVzID0gdGhpcy5fc3RhY2tUcmFjZS5tYXAoZnVuY3Rpb24oZikgewogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZiB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9u
eW1vdXMgZnVuY3Rpb24pIik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAg
c3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmdW5jTmFtZXMuam9pbigi
XG4iKSkpOwogICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZSA9IHNwYW47CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5PYmplY3Q6Ci0gICAgICAgICAgICAgICAgdGhpcy5mb3Jt
YXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0KFsiJU8iLCBhcmdzWzBdXSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0KFsiJU8iLCB0aGlzLl9w
YXJhbWV0ZXJzWzBdXSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIHZhciBhcmdzID0gdGhpcy5fcGFyYW1ldGVycyB8fCBbdGhp
cy5fbWVzc2FnZVRleHRdOwogICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZSA9
IHRoaXMuX2Zvcm1hdChhcmdzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMTAwMSwxNCArMTAwOCw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZC5wcm90b3R5
cGUgPSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuQ29uc29sZVRleHRNZXNzYWdlID0gZnVu
Y3Rpb24odGV4dCwgbGV2ZWwpCi17Ci0gICAgbGV2ZWwgPSBsZXZlbCB8fCBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZzsKLSAgICBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNv
dXJjZS5KUywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxvZywgbGV2
ZWwsIDAsIG51bGwsIG51bGwsIDEsIHRleHQpOwotfQotCi1XZWJJbnNwZWN0b3IuQ29uc29sZVRl
eHRNZXNzYWdlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UucHJvdG90eXBlOwotCiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5j
dGlvbihyZXN1bHQsIGV4Y2VwdGlvbiwgb3JpZ2luYXRpbmdDb21tYW5kKQogewogICAgIHZhciBs
ZXZlbCA9IChleGNlcHRpb24gPyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxl
dmVsLkVycm9yIDogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2cp
OwpAQCAtMTAyMyw3ICsxMDIyLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0
ID0gZnVuY3Rpb24ocmVzdWx0LCBleGNlcHRpb24sIG9yaWdpbmF0aW5nQ29tbWEKIAogICAgIHRo
aXMub3JpZ2luYXRpbmdDb21tYW5kID0gb3JpZ2luYXRpbmdDb21tYW5kOwogCi0gICAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
VHlwZS5SZXN1bHQsIGxldmVsLCBsaW5lLCB1cmwsIG51bGwsIDEsIG1lc3NhZ2UpOworICAgIFdl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVR5cGUuUmVzdWx0LCBsZXZlbCwgbGluZSwgdXJsLCBudWxsLCAxLCBudWxsLCBbbWVzc2Fn
ZV0pOwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJvdG90eXBlID0g
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCBl
NTUyOTRhMTc4ZjgwM2RmMWNjMjY5MWM4YWYyYzRlMjRhMzg2MDJhLi40OGViNGMwYjliYTIxNmUz
Zjg1MTgxMTk2MmExZThiZmZlYmI1NjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtNDUzLDcgKzQ1Myw3IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5zaG93Q29uc29sZSgpOwotICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdl
KG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVRleHRNZXNzYWdlKGJ1aWxkZXIuam9pbigiXG4iKSkp
OworICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVzc2FnZShidWlsZGVyLmpvaW4oIlxuIikpKTsKICAg
ICB9LAogCiAgICAgZ2V0IHJvb3RET01Ob2RlKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdEFjY2Vzcy5qcwppbmRleCA5MGRhYWI3YzMyMjRmNjcz
NzcyMzZhZmUyYjUyOGZjZTJiMTI2MjRjLi4wZTRjYzJlY2EwMWE0NThhOWJmZTNmYmY2N2E2NjYy
MjQyYjk5NzMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0
ZWRTY3JpcHRBY2Nlc3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVj
dGVkU2NyaXB0QWNjZXNzLmpzCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0QWNjZXNz
Ll9pbnN0YWxsSGFuZGxlciA9IGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGFzeW5jKQogICAgICAgICAg
ICAgaWYgKCFpc0V4Y2VwdGlvbikKICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFk
ZE1lc3NhZ2UobmV3IFdlYkluc3BlY3Rvci5Db25zb2xlVGV4dE1lc3NhZ2UoIkVycm9yIGRpc3Bh
dGNoaW5nOiAiICsgbWV0aG9kTmFtZSkpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5j
b25zb2xlLmFkZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZVRleHRN
ZXNzYWdlKCJFcnJvciBkaXNwYXRjaGluZzogIiArIG1ldGhvZE5hbWUpKTsKICAgICAgICAgfQog
ICAgICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAobXlDYWxsYmFj
ayk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcwppbmRleCAyYWUyM2Ew
ZjkzMzU4ODNlNGZmOWI0MWY4M2NmNjI2YTc1ZWM5N2QwLi41OTViNzFiYjQ0ZWM1NTUxNzE1NGQ0
ZjU3NThjMDBhMzFmYjEzYzRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2UuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
LmpzCkBAIC01ODcsOSArNTg3LDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9taW1lVHlwZUlzQ29uc2lzdGVudFdpdGhU
eXBlKCkpCiAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVR5cGUuTG9nLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZywgLTEsIHRoaXMudXJsLCBudWxsLCAxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnNwcmludGYoV2ViSW5zcGVjdG9yLldhcm5p
bmdzLkluY29ycmVjdE1JTUVUeXBlLm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS50b1N0cmluZyh0aGlzLnR5cGUpLCB0aGlzLm1pbWVU
eXBlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZUxldmVsLldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJsLAorICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuV2FybmluZ3MuSW5jb3JyZWN0TUlNRVR5cGUu
bWVzc2FnZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUudG9TdHJpbmcodGhpcy50eXBlKSwg
dGhpcy5taW1lVHlwZSksCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggN2MyNTViYmI5
NWRkMDNiNDVmOTlkMzdmM2EwMTNmNzcxYWE4YWM2Mi4uNWZhYWJiY2Q0NGJjNTliZjFmMTBhNTA4
NDcwMjg2MzY5ODZjYjcwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCkBAIC0xNDYzLDEwICsxNDYzLDEwIEBAIFdlYkluc3BlY3Rvci5kaWRDb21taXRMb2FkID0g
ZnVuY3Rpb24oKQogV2ViSW5zcGVjdG9yLnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50
ID0gZnVuY3Rpb24oY291bnQpCiB7CiAgICAgdmFyIG1lc3NhZ2UgPSBTdHJpbmcuc3ByaW50ZihX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIGNvbnNvbGUgbWVzc2FnZXMgYXJlIG5vdCBzaG93bi4i
KSwgY291bnQpOwotICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UobmV3IFdlYklu
c3BlY3Rvci5Db25zb2xlVGV4dE1lc3NhZ2UobWVzc2FnZSwgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nKSk7CisgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUu
YWRkTWVzc2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2Uo
bWVzc2FnZSwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5n
KSk7CiB9CiAKLVdlYkluc3BlY3Rvci5hZGRDb25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHBheWxv
YWQsIG9wdF9hcmdzKQorV2ViSW5zcGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24o
cGF5bG9hZCkKIHsKICAgICB2YXIgY29uc29sZU1lc3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlKAogICAgICAgICBwYXlsb2FkLnNvdXJjZSwKQEAgLTE0NzUsOCArMTQ3NSwx
MCBAQCBXZWJJbnNwZWN0b3IuYWRkQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihwYXlsb2FkLCBv
cHRfYXJncykKICAgICAgICAgcGF5bG9hZC5saW5lLAogICAgICAgICBwYXlsb2FkLnVybCwKICAg
ICAgICAgcGF5bG9hZC5ncm91cExldmVsLAotICAgICAgICBwYXlsb2FkLnJlcGVhdENvdW50KTsK
LSAgICBjb25zb2xlTWVzc2FnZS5zZXRNZXNzYWdlQm9keShBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbChhcmd1bWVudHMsIDEpKTsKKyAgICAgICAgcGF5bG9hZC5yZXBlYXRDb3VudCwKKyAgICAg
ICAgcGF5bG9hZC5tZXNzYWdlLAorICAgICAgICBwYXlsb2FkLnBhcmFtZXRlcnMsCisgICAgICAg
IHBheWxvYWQuc3RhY2tUcmFjZSk7CiAgICAgdGhpcy5jb25zb2xlLmFkZE1lc3NhZ2UoY29uc29s
ZU1lc3NhZ2UpOwogfQogCkBAIC0xNTQ0LDcgKzE1NDYsOSBAQCBXZWJJbnNwZWN0b3IubG9nID0g
ZnVuY3Rpb24obWVzc2FnZSwgbWVzc2FnZUxldmVsKQogICAgICAgICAgICAgbnVsbCwKICAgICAg
ICAgICAgIG51bGwsCiAgICAgICAgICAgICByZXBlYXRDb3VudCwKLSAgICAgICAgICAgIG1lc3Nh
Z2UpOworICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgIFttZXNzYWdlXSwKKyAgICAgICAg
ICAgIG51bGwpOwogCiAgICAgICAgIHNlbGYuY29uc29sZS5hZGRNZXNzYWdlKG1zZyk7CiAgICAg
fQo=
</data>
<flag name="review"
          id="49726"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>