<?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>36612</bug_id>
          
          <creation_ts>2010-03-25 11:25:34 -0700</creation_ts>
          <short_desc>Web Inspector: don&apos;t crash when there are messages in console from previous iframe content</short_desc>
          <delta_ts>2010-03-29 00:35:03 -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>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204161</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-25 11:25:34 -0700</bug_when>
    <thetext>Web Inspector sometimes crashes when there are messages written to the console from iframe which has navigated to another domain by the time Web Inspector is open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204610</commentid>
    <comment_count>1</comment_count>
      <attachid>51747</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-26 09:18:45 -0700</bug_when>
    <thetext>Created attachment 51747
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204613</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-26 09:23:29 -0700</bug_when>
    <thetext>Attachment 51747 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/ScriptState.h:91:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204622</commentid>
    <comment_count>3</comment_count>
      <attachid>51749</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-26 09:30:48 -0700</bug_when>
    <thetext>Created attachment 51749
patch

Reformatted ScriptState.h to make style checker happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205160</commentid>
    <comment_count>4</comment_count>
      <attachid>51749</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-28 05:20:09 -0700</bug_when>
    <thetext>Comment on attachment 51749
patch

r+ with comments. please fix prior to landing.

&gt; +CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/inspector-enabled/resources/console-log-frame-after-navigation.html from frame with URL http://127.0.0.1:8000/inspector-enabled/resources/console-log-frame-before-navigation.html. Domains, protocols and ports must match.

I am not sure this will be an exact match on all platforms including chromium. Please test that.

&gt; +InjectedScript._toString = function(obj)
&gt; +{
&gt; +    // We don&apos;t use String(obj) because inspectedWindow.String is undefined if owning frame navigated to another page.
&gt; +    return &quot;&quot; + obj;

This looks like a hack. Does it happen in both engines? Should you file a bug against it and put fixme here? Otherwise looks like total hack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205309</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-29 00:07:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 51749 [details])
&gt; r+ with comments. please fix prior to landing.
&gt; 
&gt; &gt; +CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/inspector-enabled/resources/console-log-frame-after-navigation.html from frame with URL http://127.0.0.1:8000/inspector-enabled/resources/console-log-frame-before-navigation.html. Domains, protocols and ports must match.
&gt; 
&gt; I am not sure this will be an exact match on all platforms including chromium.
&gt; Please test that.
&gt;
This message doesn&apos;t appear in Chromium and looks as a bug to me because postMessage is designed for cross domain communication. We will need custom test expectations for chromium. I filed a bug on this: https://bugs.webkit.org/show_bug.cgi?id=36740
 
&gt; &gt; +InjectedScript._toString = function(obj)
&gt; &gt; +{
&gt; &gt; +    // We don&apos;t use String(obj) because inspectedWindow.String is undefined if owning frame navigated to another page.
&gt; &gt; +    return &quot;&quot; + obj;
&gt; 
&gt; This looks like a hack. Does it happen in both engines?
It&apos;s a workaround for JSC only, in v8 inspectedWindow.String is still defined after frame navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205314</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-03-29 00:35:03 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/http/tests/inspector-enabled/console-log-before-frame-navigation-expected.txt
	A	LayoutTests/http/tests/inspector-enabled/console-log-before-frame-navigation.html
	A	LayoutTests/http/tests/inspector-enabled/resources/console-log-before-frame-navigation.js
	A	LayoutTests/http/tests/inspector-enabled/resources/console-log-frame-after-navigation.html
	A	LayoutTests/http/tests/inspector-enabled/resources/console-log-frame-before-navigation.html
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/ScriptState.h
	M	WebCore/bindings/v8/ScriptState.h
	M	WebCore/inspector/ConsoleMessage.cpp
	M	WebCore/inspector/ConsoleMessage.h
	M	WebCore/inspector/front-end/InjectedScript.js
Committed r56708</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51747</attachid>
            <date>2010-03-26 09:18:45 -0700</date>
            <delta_ts>2010-03-26 09:30:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>console-message.patch</filename>
            <type>text/plain</type>
            <size>22203</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYWJhMTZiLi5kZjI0ZGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMDMt
MjYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG9uJ3Qg
Y3Jhc2ggd2hlbiB0aGVyZSBhcmUgbWVzc2FnZXMgaW4gY29uc29sZSBmcm9tIHByZXZpb3VzIGlm
cmFtZSBjb250ZW50LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjYxMgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9j
b25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3Jl
LWZyYW1lLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRp
b24uanM6IEFkZGVkLgorICAgICAgICAoZG9pdC5jYWxsYmFjayk6CisgICAgICAgIChkb2l0KToK
KyAgICAgICAgKHJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKGZyb250ZW5kX2R1bXBDb25zb2xl
TWVzc2FnZXMpOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3Vy
Y2VzL2NvbnNvbGUtbG9nLWZyYW1lLWFmdGVyLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29sZS1sb2ct
ZnJhbWUtYmVmb3JlLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisKKzIwMTAtMDMtMjUgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IFdlYiBJbnNwZWN0b3IgZG9lc24n
dCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBjb25zb2xlIG1lc3NhZ2VzIHdyaXR0ZW4gYmVmb3JlIGl0
IHdhcyBvcGVuIGZyb20gYSBmcmFtZSB3aGljaCBoYXMgYWxyZWFkeSBuYXZpZ2F0ZWQgc29tZXdo
ZXJlIGVsc2UuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM2NjEyCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnNv
bGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZyYW1lLWFm
dGVyLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29sZS1sb2ctZnJhbWUtYmVmb3JlLW5hdmlnYXRpb24u
aHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnNvbGUtbG9n
LWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzY2Vh
YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTogMjAxMAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3ItZW5hYmxlZC9yZXNvdXJj
ZXMvY29uc29sZS1sb2ctZnJhbWUtYWZ0ZXItbmF2aWdhdGlvbi5odG1sIGZyb20gZnJhbWUgd2l0
aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNlcy9j
b25zb2xlLWxvZy1mcmFtZS1iZWZvcmUtbmF2aWdhdGlvbi5odG1sLiBEb21haW5zLCBwcm90b2Nv
bHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK1Rlc3RzIHRoYXQgV2ViIEluc3BlY3RvciB3b24n
dCBjcmFzaCBpZiB0aGVyZSBhcmUgbWVzc2FnZXMgd3JpdHRlbiB0byBjb25zb2xlIGZyb20gYSBm
cmFtZSB3aGljaCBoYXMgYWxyZWFkeSBuYXZpZ2F0ZWQgdG8gYSBwYWdlIGZyb20gYSBkaWZmZXJl
bnQgZG9tYWluLgorCisKK1Nob3dpbmcgV2ViIEluc3BlY3Rvci4uLgorUmVjZWl2ZWQgY29uc29s
ZSBtZXNzYWdlczoKK01lc3NhZ2VbMF06CitVUkw6IAorTWVzc2FnZTogVW5zYWZlIEphdmFTY3Jp
cHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAw
L2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1hZnRlci1uYXZp
Z2F0aW9uLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5z
cGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0
aW9uLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworTWVz
c2FnZVsxXToKK1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci1lbmFibGVkL3Jl
c291cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1iZWZvcmUtbmF2aWdhdGlvbi5odG1sCitNZXNzYWdl
OiAyMDEwCitURVNUIENPTVBMRVRFLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnNvbGUt
bG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOWY1MGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRp
b24uaHRtbApAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9u
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitU
ZXN0cyB0aGF0IFdlYiBJbnNwZWN0b3Igd29uJ3QgY3Jhc2ggaWYgdGhlcmUgYXJlIG1lc3NhZ2Vz
IHdyaXR0ZW4gdG8gY29uc29sZSBmcm9tIGEgZnJhbWUgd2hpY2ggaGFzIGFscmVhZHkgbmF2aWdh
dGVkIHRvIGEgcGFnZSBmcm9tIGEgZGlmZmVyZW50IGRvbWFpbi4KKzwvcD4KKzxpZnJhbWUgaWQ9
InRoZUZyYW1lIiBzcmM9InJlc291cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1iZWZvcmUtbmF2aWdh
dGlvbi5odG1sIj48L2lmcmFtZT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNlcy9jb25zb2xlLWxvZy1iZWZv
cmUtZnJhbWUtbmF2aWdhdGlvbi5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
LWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNDhhZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNl
cy9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi5qcwpAQCAtMCwwICsxLDQzIEBA
CitmdW5jdGlvbiBkb2l0KCkKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAg
eworICAgICAgICBkZWJ1ZygiUmVjZWl2ZWQgY29uc29sZSBtZXNzYWdlczoiKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZh
ciByID0gcmVzdWx0W2ldOworICAgICAgICAgICAgZGVidWcoIk1lc3NhZ2VbIiArIGkgKyAiXToi
KTsKKyAgICAgICAgICAgIGRlYnVnKCJVUkw6ICIgKyByLnVybCk7CisgICAgICAgICAgICBkZWJ1
ZygiTWVzc2FnZTogIiArIHIubWVzc2FnZSk7CisgICAgICAgIH0KKyAgICAgICAgbm90aWZ5RG9u
ZSgpOworICAgICAgICBkZWJ1ZygiVEVTVCBDT01QTEVURS4iKTsKKyAgICB9CisgICAgZXZhbHVh
dGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxiYWNr
KTsKK30KKworZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICBpZiAoZXZlbnQu
ZGF0YSAhPSAiZnJhbWVSZWxvYWRlZCIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3Rl
ZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3Rvcigp
OworICAgIGRlYnVnKCJTaG93aW5nIFdlYiBJbnNwZWN0b3IuLi4iKTsKK30KKword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisvLyBG
cm9udGVuZCBmdW5jdGlvbnMuCisKK2Z1bmN0aW9uIGZyb250ZW5kX2R1bXBDb25zb2xlTWVzc2Fn
ZXMoKQoreworICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICB2YXIgbWVzc2FnZXMgPSBXZWJJbnNw
ZWN0b3IuY29uc29sZS5tZXNzYWdlczsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3NhZ2Vz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBtID0gbWVzc2FnZXNbaV07CisgICAgICAgIHJl
c3VsdC5wdXNoKHsgbWVzc2FnZTogbS5tZXNzYWdlLCB1cmw6IG0udXJsfSk7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci1lbmFibGVkL3Jlc291cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1hZnRlci1uYXZpZ2F0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL3Jlc291
cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1hZnRlci1uYXZpZ2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM3YzFjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9n
LWZyYW1lLWFmdGVyLW5hdmlnYXRpb24uaHRtbApAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGhhbmRsZUxvYWQoKSB7CisgICAgd2luZG93LnBhcmVu
dC5wb3N0TWVzc2FnZSgiZnJhbWVSZWxvYWRlZCIsICIqIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0iaGFuZGxlTG9hZCgpIj4KK05ldyBJbm5lciBDb250ZW50LgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29sZS1sb2ctZnJhbWUtYmVmb3JlLW5hdmlnYXRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2Vz
L2NvbnNvbGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ4ZjAwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZy
YW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVMb2FkKCkgeworICBjb25zb2xlLmxvZygyMDEw
KTsKKworICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmxvY2F0aW9uID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29s
ZS1sb2ctZnJhbWUtYWZ0ZXItbmF2aWdhdGlvbi5odG1sIjsKKyAgfSwgMCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaGFuZGxlTG9hZCgpIj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNTA2NmY3MS4uODQzMjk0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMC0wMy0yNiAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcm90ZWN0IGdsb2JhbCBvYmplY3QgZnJvbSBiZWluZyBH
QydlZCBpZiB0aGVyZSBhcmUgbWVzc2FnZXMgd3JpdHRlbiB0byBjb25zb2xlIGZyb20gdGhlIGlm
cmFtZSB3aXRoIHRoYXQgZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBXaGVudCBzZXJpYWxpemlu
ZyBvYmplY3RzIGluIHRoZSBpbmplY3RlZCBzY3JpcHQgY2hlY2sgdGhhdCBnbG9iYWwgb2JqZWN0
IHByb3BlcnRpZXMgYXJlIHN0aWxsIGRlZmluZWQgYmVmb3JlIHVzaW5nIHRoZW0gYXMgYXJndW1l
bnRzLiBUaGUgbWF5IGJlY29tZSB1bmRlZmluZWQgaWYgb3duaW5nIGZyYW1lIG5hdmlnYXRlZCB0
byBhIGRpZmZlcmVudCBkb21haW4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM2NjEyCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3Rl
Y3RlZFB0cjo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6On5TY3JpcHRTdGF0ZVByb3RlY3RlZFB0cik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3Nh
Z2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6CisgICAg
ICAgIChpbmplY3RlZFNjcmlwdENvbnN0cnVjdG9yKToKKyAgICAgICAgKGluamVjdGVkU2NyaXB0
Q29uc3RydWN0b3IuKToKKworMjAxMC0wMy0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcmV2ZW50IGdsb2JhbCBvYmplY3QgZnJvbSBiZWluZyBHQydlZCB3aGlsZSB0aGVyZSBh
cmUgY29uc29sZSBtZXNzYWdlcyBsb2dnZWQgZnJvbSB0aGUgcGFnZSB3aXRoIHRoYXQgZ2xvYmFs
IG9iamVjdC4KKworICAgICAgICBXaGVuIGRldGVybWluaW5nIG9iamVjdCB0eXBlIGluIHRoZSBp
bmplY3RlZCBzY3JpcHQgY2hlY2sgdGhhdCBiaW5kaW5ncyBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBj
bGVhcmVkIGZyb20gdGhlIGluc3BlY3RlZCB3aW5kb3cgb2JqZWN0IGR1ZSB0byBwYWdlIG5hdmln
YXRpb24gYW5kIGlmIHRoZXkgd2VyZSBjbGVhcmVkIHJldHVybiByZXN1bHQgb2YgdHlwZW9mIG9w
ZXJhdG9yIGFzIHRoZSByZXN1bHQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM2NjEyCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3Rl
Y3RlZFB0cjo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6On5TY3JpcHRTdGF0ZVByb3RlY3RlZFB0cik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3Nh
Z2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6IEF2b2lk
IGluc3RhbmNlb2YgY2hlY2tzIHdpdGggdW5kZWZpbmVkIHJpZ2h0IHBhcmFtZXRlci4KKyAgICAg
ICAgKGluamVjdGVkU2NyaXB0Q29uc3RydWN0b3IpOgorICAgICAgICAoaW5qZWN0ZWRTY3JpcHRD
b25zdHJ1Y3Rvci4pOgorCiAyMDEwLTAzLTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuaAppbmRleCAwYzdjNTc1Li5jYjFjYTNmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oCkBAIC0zMyw2ICszMyw4IEBACiAjZGVmaW5lIFNjcmlwdFN0YXRlX2gKIAog
I2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRE9NV3JhcHBlcldvcmxkOwpAQCAtNDYsNiArNDgsMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIC8vIEZvciBub3csIHRoZSBzZXBhcmF0aW9uIGlzIHB1cmVseSBieSBjb252ZW50
aW9uLgogICAgIHR5cGVkZWYgSlNDOjpFeGVjU3RhdGUgU2NyaXB0U3RhdGU7CiAKKyAgICBjbGFz
cyBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgcHVi
bGljOgorICAgICAgICBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cigpIHsgfQorICAgICAgICBTY3Jp
cHRTdGF0ZVByb3RlY3RlZFB0cihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpIDogbV9nbG9iYWxP
YmplY3Qoc2NyaXB0U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkgeyB9CisgICAgICAgIFNj
cmlwdFN0YXRlKiBnZXQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9nbG9iYWxPYmpl
Y3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIHByaXZhdGU6CisgICAgICAg
IEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0Owor
ICAgIH07CisKICAgICBTY3JpcHRTdGF0ZSogbWFpbldvcmxkU2NyaXB0U3RhdGUoRnJhbWUqKTsK
IAogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCos
IE5vZGUqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaAppbmRleCA1YzVjZTZjLi44NTAyNDkx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCkBAIC03OSw2ICs3OSwyNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIH5FbXB0eVNjcmlwdFN0YXRlKCkgeyB9CiAgICAgfTsKIAor
ICAgIGNsYXNzIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKCkgOiBtX3Njcmlw
dFN0YXRlKDApIHsgfQorICAgICAgICBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cihTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUpIDogbV9zY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgICAgICAgICAgLy8g
S2VlcCB0aGUgY29udGV4dCBmcm9tIGJlaW5nIEdDJ2VkLiBTY3JpcHRTdGF0ZSBpcyBndWFyYW50
ZWVkIHRvIGJlIGxpdmUgd2hpbGUgdGhlIGNvbnRleHQgaXMgbGl2ZS4KKyAgICAgICAgICAgIG1f
Y29udGV4dCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6TmV3KHNjcmlwdFN0YXRlLT5j
b250ZXh0KCkpOworICAgICAgICB9CisgICAgICAgIH5TY3JpcHRTdGF0ZVByb3RlY3RlZFB0cigp
IHsKKyAgICAgICAgICAgIGlmICghbV9jb250ZXh0LklzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgIG1fY29udGV4dC5EaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LkNsZWFy
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgU2NyaXB0U3RhdGUqIGdldCgp
IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBTY3JpcHRT
dGF0ZSogbV9zY3JpcHRTdGF0ZTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRleHQ+
IG1fY29udGV4dDsKKyAgICB9OworCiAgICAgU2NyaXB0U3RhdGUqIG1haW5Xb3JsZFNjcmlwdFN0
YXRlKEZyYW1lKik7CiAKICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGVGcm9tTm9kZShET01X
cmFwcGVyV29ybGQqLCBOb2RlKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5k
ZXggNDA1NDk5Ni4uOTM0ZTJlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApA
QCAtOTUsNyArOTUsNyBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRIbwogICAgIGpzb25PYmouc2V0
KCJyZXBlYXRDb3VudCIsIHN0YXRpY19jYXN0PGludD4obV9yZXBlYXRDb3VudCkpOwogICAgIFZl
Y3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+IGFyZ3VtZW50czsKICAgICBpZiAo
IW1fYXJndW1lbnRzLmlzRW1wdHkoKSkgewotICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9zY3JpcHRT
dGF0ZSk7CisgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRT
Y3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihtX3NjcmlwdFN0YXRlLmdldCgpKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUg
PSBpbmplY3RlZFNjcmlwdC53cmFwRm9yQ29uc29sZShtX2FyZ3VtZW50c1tpXSk7CiAgICAgICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKHNlcmlhbGl6ZWRWYWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuaAppbmRleCA1M2Y0MjU1Li43N2EwMTBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9tZXNzYWdl
OwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBtX2FyZ3Vt
ZW50czsKLSAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKKyAgICBTY3JpcHRTdGF0ZVBy
b3RlY3RlZFB0ciBtX3NjcmlwdFN0YXRlOwogI2VuZGlmCiAgICAgVmVjdG9yPFNjcmlwdFN0cmlu
Zz4gbV9mcmFtZXM7CiAgICAgdW5zaWduZWQgbV9saW5lOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCmluZGV4IDM5ZjBiMWEuLjBkYzdmZTUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKQEAgLTg1LDcg
Kzg1LDcgQEAgSW5qZWN0ZWRTY3JpcHQuZGlzcGF0Y2ggPSBmdW5jdGlvbihtZXRob2ROYW1lLCBh
cmdzLCBjYWxsSWQpCiAgICAgICAgIGFyZ3NBcnJheS5zcGxpY2UoMCwgMCwgY2FsbElkKTsgIC8v
IE1ldGhvZHMgdGhhdCBydW4gYXN5bmNocm9ub3VzbHkgaGF2ZSBhIGNhbGwgYmFjayBpZCBwYXJh
bWV0ZXIuCiAgICAgdmFyIHJlc3VsdCA9IEluamVjdGVkU2NyaXB0W21ldGhvZE5hbWVdLmFwcGx5
KEluamVjdGVkU2NyaXB0LCBhcmdzQXJyYXkpOwogICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAi
dW5kZWZpbmVkIikgewotICAgICAgICBJbmplY3RlZFNjcmlwdC5fd2luZG93KCkuY29uc29sZS5l
cnJvcigiV2ViIEluc3BlY3RvciBlcnJvcjogSW5qZWN0ZWRTY3JpcHQuJXMgcmV0dXJucyB1bmRl
ZmluZWQiLCBtZXRob2ROYW1lKTsKKyAgICAgICAgaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuZXJy
b3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEluamVjdGVkU2NyaXB0LiVzIHJldHVybnMgdW5kZWZp
bmVkIiwgbWV0aG9kTmFtZSk7CiAgICAgICAgIHJlc3VsdCA9IG51bGw7CiAgICAgfQogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0xNjYsMTMgKzE2NiwxMyBAQCBJbmplY3RlZFNjcmlwdC5zZXRQcm9w
ZXJ0eVZhbHVlID0gZnVuY3Rpb24ob2JqZWN0UHJveHksIHByb3BlcnR5TmFtZSwgZXhwcmVzc2lv
bgogICAgICAgICAvLyBUaGVyZSBpcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBoZXJlOiBldmFs
IGlzIG5vdyBoYXBwZW5pbmcgYWdhaW5zdCBnbG9iYWwgb2JqZWN0LAogICAgICAgICAvLyBub3Qg
Y2FsbCBmcmFtZSB3aGlsZSBvbiBhIGJyZWFrcG9pbnQuCiAgICAgICAgIC8vIFRPRE86IGJyaW5n
IGV2YWx1YXRpb24gYWdhaW5zdCBjYWxsIGZyYW1lIGJhY2suCi0gICAgICAgIHZhciByZXN1bHQg
PSBJbmplY3RlZFNjcmlwdC5fd2luZG93KCkuZXZhbCgiKCIgKyBleHByZXNzaW9uICsgIikiKTsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5ldmFsKCIoIiArIGV4cHJlc3Np
b24gKyAiKSIpOwogICAgICAgICAvLyBTdG9yZSB0aGUgcmVzdWx0IGluIHRoZSBwcm9wZXJ0eS4K
ICAgICAgICAgb2JqZWN0W3Byb3BlcnR5TmFtZV0gPSByZXN1bHQ7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0gY2F0Y2goZSkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFyIHJl
c3VsdCA9IEluamVjdGVkU2NyaXB0Ll93aW5kb3coKS5ldmFsKCJcIiIgKyBJbmplY3RlZFNjcmlw
dC5fZXNjYXBlQ2hhcmFjdGVycyhleHByZXNzaW9uLCAiXCIiKSArICJcIiIpOworICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IGluc3BlY3RlZFdpbmRvdy5ldmFsKCJcIiIgKyBJbmplY3RlZFNjcmlw
dC5fZXNjYXBlQ2hhcmFjdGVycyhleHByZXNzaW9uLCAiXCIiKSArICJcIiIpOwogICAgICAgICAg
ICAgb2JqZWN0W3Byb3BlcnR5TmFtZV0gPSByZXN1bHQ7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfSBjYXRjaChlKSB7CkBAIC0yNDQsMTIgKzI0NCwxMiBAQCBJbmplY3RlZFNj
cmlwdC5nZXRDb21wbGV0aW9ucyA9IGZ1bmN0aW9uKGV4cHJlc3Npb24sIGluY2x1ZGVJbnNwZWN0
b3JDb21tYW5kTGluZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFleHByZXNz
aW9uKQogICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSAidGhpcyI7Ci0gICAgICAgICAgICBl
eHByZXNzaW9uUmVzdWx0ID0gSW5qZWN0ZWRTY3JpcHQuX2V2YWx1YXRlT24oSW5qZWN0ZWRTY3Jp
cHQuX3dpbmRvdygpLmV2YWwsIEluamVjdGVkU2NyaXB0Ll93aW5kb3coKSwgZXhwcmVzc2lvbik7
CisgICAgICAgICAgICBleHByZXNzaW9uUmVzdWx0ID0gSW5qZWN0ZWRTY3JpcHQuX2V2YWx1YXRl
T24oaW5zcGVjdGVkV2luZG93LmV2YWwsIGluc3BlY3RlZFdpbmRvdywgZXhwcmVzc2lvbik7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHR5cGVvZiBleHByZXNzaW9uUmVzdWx0ID09ICJvYmplY3Qi
KQogICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHQuX3BvcHVsYXRlUHJvcGVydHlOYW1lcyhleHBy
ZXNzaW9uUmVzdWx0LCBwcm9wcyk7CiAgICAgICAgIGlmIChpbmNsdWRlSW5zcGVjdG9yQ29tbWFu
ZExpbmVBUEkpCi0gICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIEluamVjdGVkU2NyaXB0Ll93
aW5kb3coKS5jb25zb2xlLl9pbnNwZWN0b3JDb21tYW5kTGluZUFQSSkKKyAgICAgICAgICAgIGZv
ciAodmFyIHByb3AgaW4gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuX2luc3BlY3RvckNvbW1hbmRM
aW5lQVBJKQogICAgICAgICAgICAgICAgIGlmIChwcm9wLmNoYXJBdCgwKSAhPT0gJ18nKQogICAg
ICAgICAgICAgICAgICAgICBwcm9wc1twcm9wXSA9IHRydWU7CiAgICAgfSBjYXRjaChlKSB7CkBA
IC0yNTksNyArMjU5LDcgQEAgSW5qZWN0ZWRTY3JpcHQuZ2V0Q29tcGxldGlvbnMgPSBmdW5jdGlv
bihleHByZXNzaW9uLCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmUKIAogSW5qZWN0ZWRTY3Jp
cHQuZXZhbHVhdGUgPSBmdW5jdGlvbihleHByZXNzaW9uLCBvYmplY3RHcm91cCkKIHsKLSAgICBy
ZXR1cm4gSW5qZWN0ZWRTY3JpcHQuX2V2YWx1YXRlQW5kV3JhcChJbmplY3RlZFNjcmlwdC5fd2lu
ZG93KCkuZXZhbCwgSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLCBleHByZXNzaW9uLCBvYmplY3RH
cm91cCk7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZUFuZFdyYXAoaW5zcGVj
dGVkV2luZG93LmV2YWwsIGluc3BlY3RlZFdpbmRvdywgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAp
OwogfQogCiBJbmplY3RlZFNjcmlwdC5fZXZhbHVhdGVBbmRXcmFwID0gZnVuY3Rpb24oZXZhbEZ1
bmN0aW9uLCBvYmplY3QsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwKQpAQCAtMzAxLDggKzMwMSw4
IEBAIEluamVjdGVkU2NyaXB0LmFkZEluc3BlY3RlZE5vZGUgPSBmdW5jdGlvbihub2RlSWQpCiAg
ICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBJbmplY3RlZFNjcmlw
dC5fZW5zdXJlQ29tbWFuZExpbmVBUElJbnN0YWxsZWQoSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygp
LmV2YWwsIEluamVjdGVkU2NyaXB0Ll93aW5kb3coKSk7Ci0gICAgdmFyIGluc3BlY3RlZE5vZGVz
ID0gSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLmNvbnNvbGUuX2luc3BlY3RvckNvbW1hbmRMaW5l
QVBJLl9pbnNwZWN0ZWROb2RlczsKKyAgICBJbmplY3RlZFNjcmlwdC5fZW5zdXJlQ29tbWFuZExp
bmVBUElJbnN0YWxsZWQoaW5zcGVjdGVkV2luZG93LmV2YWwsIGluc3BlY3RlZFdpbmRvdyk7Cisg
ICAgdmFyIGluc3BlY3RlZE5vZGVzID0gaW5zcGVjdGVkV2luZG93LmNvbnNvbGUuX2luc3BlY3Rv
ckNvbW1hbmRMaW5lQVBJLl9pbnNwZWN0ZWROb2RlczsKICAgICBpbnNwZWN0ZWROb2Rlcy51bnNo
aWZ0KG5vZGUpOwogICAgIGlmIChpbnNwZWN0ZWROb2Rlcy5sZW5ndGggPj0gNSkKICAgICAgICAg
aW5zcGVjdGVkTm9kZXMucG9wKCk7CkBAIC00NjMsNyArNDYzLDcgQEAgSW5qZWN0ZWRTY3JpcHQu
cGVyZm9ybVNlYXJjaCA9IGZ1bmN0aW9uKHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIHJ1blN5bmNo
cm9ub3VzbHkKICAgICAgICAgICAgIGRlbGV0ZSBJbmplY3RlZFNjcmlwdC5fc2VhcmNoUmVzdWx0
c1tpXVtzZWFyY2hSZXN1bHRzUHJvcGVydHldOwogICAgIH0KIAotICAgIGNvbnN0IG1haW5GcmFt
ZURvY3VtZW50ID0gSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLmRvY3VtZW50OworICAgIGNvbnN0
IG1haW5GcmFtZURvY3VtZW50ID0gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50OwogICAgIGNvbnN0
IHNlYXJjaERvY3VtZW50cyA9IFttYWluRnJhbWVEb2N1bWVudF07CiAgICAgdmFyIHNlYXJjaEZ1
bmN0aW9uczsKICAgICBpZiAodGFnTmFtZVF1ZXJ5ICYmIHN0YXJ0VGFnRm91bmQgJiYgZW5kVGFn
Rm91bmQpCkBAIC01NTksNyArNTU5LDcgQEAgSW5qZWN0ZWRTY3JpcHQub3BlbkluSW5zcGVjdGVk
V2luZG93ID0gZnVuY3Rpb24odXJsKQogewogICAgIC8vIERvbid0IGNhbGwgd2luZG93Lm9wZW4g
b24gd3JhcHBlciAtIHBvcHVwIGJsb2NrZXIgbXV0ZXMgaXQuCiAgICAgLy8gVVJJcyBzaG91bGQg
aGF2ZSBubyBkb3VibGUgcXVvdGVzLgotICAgIEluamVjdGVkU2NyaXB0Ll93aW5kb3coKS5ldmFs
KCJ3aW5kb3cub3BlbihcIiIgKyB1cmwgKyAiXCIpIik7CisgICAgaW5zcGVjdGVkV2luZG93LmV2
YWwoIndpbmRvdy5vcGVuKFwiIiArIHVybCArICJcIikiKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNzIxLDEzICs3MjEsNiBAQCBJbmplY3RlZFNjcmlwdC5fcmVzb2x2ZU9iamVjdCA9IGZ1
bmN0aW9uKG9iamVjdFByb3h5KQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLUluamVjdGVkU2Ny
aXB0Ll93aW5kb3cgPSBmdW5jdGlvbigpCi17Ci0gICAgLy8gVE9ETzogcmVwbGFjZSB3aXRoICdy
ZXR1cm4gd2luZG93Oycgb25jZSB0aGlzIHNjcmlwdCBpcyBpbmplY3RlZCBpbnRvCi0gICAgLy8g
dGhlIHBhZ2UncyBjb250ZXh0LgotICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3c7Ci19Ci0KIElu
amVjdGVkU2NyaXB0Ll9ub2RlRm9ySWQgPSBmdW5jdGlvbihub2RlSWQpCiB7CiAgICAgaWYgKCFu
b2RlSWQpCkBAIC04MjQsOSArODE3LDkgQEAgSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHku
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBzY29wZU9iamVjdFByb3h5LmlzQ2xv
c3VyZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgZm91bmRMb2NhbFNjb3BlID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBzY29wZU9iamVjdFByb3h5LmlzTG9jYWwgPSB0cnVlOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChmb3VuZExvY2FsU2NvcGUgJiYgc2NvcGVPYmplY3QgaW5zdGFuY2VvZiBJ
bmplY3RlZFNjcmlwdC5fd2luZG93KCkuRWxlbWVudCkKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
Zm91bmRMb2NhbFNjb3BlICYmIHNjb3BlT2JqZWN0IGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93
LkVsZW1lbnQpCiAgICAgICAgICAgICAgICAgc2NvcGVPYmplY3RQcm94eS5pc0VsZW1lbnQgPSB0
cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAoZm91bmRMb2NhbFNjb3BlICYmIHNjb3BlT2JqZWN0
IGluc3RhbmNlb2YgSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLkRvY3VtZW50KQorICAgICAgICAg
ICAgZWxzZSBpZiAoZm91bmRMb2NhbFNjb3BlICYmIHNjb3BlT2JqZWN0IGluc3RhbmNlb2YgaW5z
cGVjdGVkV2luZG93LkRvY3VtZW50KQogICAgICAgICAgICAgICAgIHNjb3BlT2JqZWN0UHJveHku
aXNEb2N1bWVudCA9IHRydWU7CiAgICAgICAgICAgICBlbHNlIGlmICghZm91bmRMb2NhbFNjb3Bl
KQogICAgICAgICAgICAgICAgIHNjb3BlT2JqZWN0UHJveHkuaXNXaXRoQmxvY2sgPSB0cnVlOwpA
QCAtODkxLDM1ICs4ODQsMzggQEAgSW5qZWN0ZWRTY3JpcHQuX3R5cGUgPSBmdW5jdGlvbihvYmop
CiAgICAgaWYgKG9iaiA9PT0gbnVsbCkKICAgICAgICAgcmV0dXJuICJudWxsIjsKIAotICAgIC8v
IEZJWE1FKDMzNzE2KTogdHlwZW9mIGRvY3VtZW50LmFsbCBpcyBhbHdheXMgJ3VuZGVmaW5lZCcu
Ci0gICAgaWYgKEluamVjdGVkU2NyaXB0Ll9pc0hUTUxBbGxDb2xsZWN0aW9uKG9iaikpCi0gICAg
ICAgIHJldHVybiAiYXJyYXkiOwotCiAgICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqOwotICAgIGlm
ICh0eXBlICE9PSAib2JqZWN0IiAmJiB0eXBlICE9PSAiZnVuY3Rpb24iKQorICAgIGlmICh0eXBl
ICE9PSAib2JqZWN0IiAmJiB0eXBlICE9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIC8vIEZJWE1F
KDMzNzE2KTogdHlwZW9mIGRvY3VtZW50LmFsbCBpcyBhbHdheXMgJ3VuZGVmaW5lZCcuCisgICAg
ICAgIGlmIChJbmplY3RlZFNjcmlwdC5faXNIVE1MQWxsQ29sbGVjdGlvbihvYmopKQorICAgICAg
ICAgICAgcmV0dXJuICJhcnJheSI7CiAgICAgICAgIHJldHVybiB0eXBlOworICAgIH0KIAotICAg
IHZhciB3aW4gPSBJbmplY3RlZFNjcmlwdC5fd2luZG93KCk7CisgICAgLy8gSWYgb3duaW5nIGZy
YW1lIGhhcyBuYXZpZ2F0ZWQgdG8gc29tZXdoZXJlIGVsc2Ugd2luZG93IHByb3BlcnRpZXMgd2ls
bCBiZSB1bmRlZmluZWQuCisgICAgLy8gSW4gdGhpcyBjYXNlIGp1c3QgcmV0dXJuIHJlc3VsdCBv
ZiB0aGUgdHlwZW9mLgorICAgIGlmICghaW5zcGVjdGVkV2luZG93LmRvY3VtZW50KQorICAgICAg
ICByZXR1cm4gdHlwZTsKIAotICAgIGlmIChvYmogaW5zdGFuY2VvZiB3aW4uTm9kZSkKKyAgICBp
ZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93Lk5vZGUpCiAgICAgICAgIHJldHVybiAo
b2JqLm5vZGVUeXBlID09PSB1bmRlZmluZWQgPyB0eXBlIDogIm5vZGUiKTsKLSAgICBpZiAob2Jq
IGluc3RhbmNlb2Ygd2luLlN0cmluZykKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVk
V2luZG93LlN0cmluZykKICAgICAgICAgcmV0dXJuICJzdHJpbmciOwotICAgIGlmIChvYmogaW5z
dGFuY2VvZiB3aW4uQXJyYXkpCisgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRv
dy5BcnJheSkKICAgICAgICAgcmV0dXJuICJhcnJheSI7Ci0gICAgaWYgKG9iaiBpbnN0YW5jZW9m
IHdpbi5Cb29sZWFuKQorICAgIGlmIChvYmogaW5zdGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cuQm9v
bGVhbikKICAgICAgICAgcmV0dXJuICJib29sZWFuIjsKLSAgICBpZiAob2JqIGluc3RhbmNlb2Yg
d2luLk51bWJlcikKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93Lk51bWJl
cikKICAgICAgICAgcmV0dXJuICJudW1iZXIiOwotICAgIGlmIChvYmogaW5zdGFuY2VvZiB3aW4u
RGF0ZSkKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93LkRhdGUpCiAgICAg
ICAgIHJldHVybiAiZGF0ZSI7Ci0gICAgaWYgKG9iaiBpbnN0YW5jZW9mIHdpbi5SZWdFeHApCisg
ICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5SZWdFeHApCiAgICAgICAgIHJl
dHVybiAicmVnZXhwIjsKLSAgICBpZiAob2JqIGluc3RhbmNlb2Ygd2luLk5vZGVMaXN0KQorICAg
IGlmIChvYmogaW5zdGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cuTm9kZUxpc3QpCiAgICAgICAgIHJl
dHVybiAiYXJyYXkiOwotICAgIGlmIChvYmogaW5zdGFuY2VvZiB3aW4uSFRNTENvbGxlY3Rpb24p
CisgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5IVE1MQ29sbGVjdGlvbikK
ICAgICAgICAgcmV0dXJuICJhcnJheSI7Ci0gICAgaWYgKG9iaiBpbnN0YW5jZW9mIHdpbi5FcnJv
cikKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93LkVycm9yKQogICAgICAg
ICByZXR1cm4gImVycm9yIjsKICAgICByZXR1cm4gdHlwZTsKIH0KQEAgLTk0MSwyMCArOTM3LDI3
IEBAIEluamVjdGVkU2NyaXB0Ll9kZXNjcmliZSA9IGZ1bmN0aW9uKG9iaiwgYWJicmV2aWF0ZWQp
CiAgICAgICAgICAgICByZXR1cm4gIlwiIiArIG9iai5zdWJzdHJpbmcoMCwgMTAwKSArICJcdTIw
MjZcIiI7CiAgICAgICAgIHJldHVybiAiXCIiICsgb2JqICsgIlwiIjsKICAgICBjYXNlICJmdW5j
dGlvbiI6Ci0gICAgICAgIHZhciBvYmplY3RUZXh0ID0gU3RyaW5nKG9iaik7CisgICAgICAgIHZh
ciBvYmplY3RUZXh0ID0gSW5qZWN0ZWRTY3JpcHQuX3RvU3RyaW5nKG9iaik7CiAgICAgICAgIGlm
ICghL15mdW5jdGlvbiAvLnRlc3Qob2JqZWN0VGV4dCkpCiAgICAgICAgICAgICBvYmplY3RUZXh0
ID0gKHR5cGUyID09ICJvYmplY3QiKSA/IHR5cGUxIDogdHlwZTI7CiAgICAgICAgIGVsc2UgaWYg
KGFiYnJldmlhdGVkKQogICAgICAgICAgICAgb2JqZWN0VGV4dCA9IC8uKi8uZXhlYyhvYmopWzBd
LnJlcGxhY2UoLyArJC9nLCAiIik7CiAgICAgICAgIHJldHVybiBvYmplY3RUZXh0OwogICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBTdHJpbmcob2JqKTsKKyAgICAgICAgcmV0dXJuIEluamVj
dGVkU2NyaXB0Ll90b1N0cmluZyhvYmopOwogICAgIH0KIH0KIAorSW5qZWN0ZWRTY3JpcHQuX3Rv
U3RyaW5nID0gZnVuY3Rpb24ob2JqKQoreworICAgIC8vIFdlIGRvbid0IHVzZSBTdHJpbmcob2Jq
KSBiZWNhdXNlIGluc3BlY3RlZFdpbmRvdy5TdHJpbmcgaXMgdW5kZWZpbmVkIGlmIG93bmluZyBm
cmFtZSBuYXZpZ2F0ZWQgdG8gYW5vdGhlciBwYWdlLgorICAgIHJldHVybiAiIiArIG9iajsKK30K
KwogSW5qZWN0ZWRTY3JpcHQuX2NsYXNzTmFtZSA9IGZ1bmN0aW9uKG9iaikKIHsKLSAgICByZXR1
cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikucmVwbGFjZSgvXlxbb2JqZWN0
ICguKilcXSQvaSwgIiQxIikKKyAgICB2YXIgc3RyID0gaW5zcGVjdGVkV2luZG93Lk9iamVjdCA/
IGluc3BlY3RlZFdpbmRvdy5PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA6IElu
amVjdGVkU2NyaXB0Ll90b1N0cmluZyhvYmopOworICAgIHJldHVybiBzdHIucmVwbGFjZSgvXlxb
b2JqZWN0ICguKilcXSQvaSwgIiQxIik7CiB9CiAKIEluamVjdGVkU2NyaXB0Ll9lc2NhcGVDaGFy
YWN0ZXJzID0gZnVuY3Rpb24oc3RyLCBjaGFycykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51749</attachid>
            <date>2010-03-26 09:30:48 -0700</date>
            <delta_ts>2010-03-28 05:20:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>console-message2.patch</filename>
            <type>text/plain</type>
            <size>25639</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYWJhMTZiLi5kZjI0ZGVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMDMt
MjYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG9uJ3Qg
Y3Jhc2ggd2hlbiB0aGVyZSBhcmUgbWVzc2FnZXMgaW4gY29uc29sZSBmcm9tIHByZXZpb3VzIGlm
cmFtZSBjb250ZW50LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNjYxMgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9j
b25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3Jl
LWZyYW1lLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRp
b24uanM6IEFkZGVkLgorICAgICAgICAoZG9pdC5jYWxsYmFjayk6CisgICAgICAgIChkb2l0KToK
KyAgICAgICAgKHJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKGZyb250ZW5kX2R1bXBDb25zb2xl
TWVzc2FnZXMpOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3Vy
Y2VzL2NvbnNvbGUtbG9nLWZyYW1lLWFmdGVyLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29sZS1sb2ct
ZnJhbWUtYmVmb3JlLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisKKzIwMTAtMDMtMjUgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IFdlYiBJbnNwZWN0b3IgZG9lc24n
dCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBjb25zb2xlIG1lc3NhZ2VzIHdyaXR0ZW4gYmVmb3JlIGl0
IHdhcyBvcGVuIGZyb20gYSBmcmFtZSB3aGljaCBoYXMgYWxyZWFkeSBuYXZpZ2F0ZWQgc29tZXdo
ZXJlIGVsc2UuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM2NjEyCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnNv
bGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZyYW1lLWFm
dGVyLW5hdmlnYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29sZS1sb2ctZnJhbWUtYmVmb3JlLW5hdmlnYXRpb24u
aHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnNvbGUtbG9n
LWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzY2Vh
YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1l
bmFibGVkL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE3IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTogMjAxMAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3ItZW5hYmxlZC9yZXNvdXJj
ZXMvY29uc29sZS1sb2ctZnJhbWUtYWZ0ZXItbmF2aWdhdGlvbi5odG1sIGZyb20gZnJhbWUgd2l0
aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNlcy9j
b25zb2xlLWxvZy1mcmFtZS1iZWZvcmUtbmF2aWdhdGlvbi5odG1sLiBEb21haW5zLCBwcm90b2Nv
bHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCisKK1Rlc3RzIHRoYXQgV2ViIEluc3BlY3RvciB3b24n
dCBjcmFzaCBpZiB0aGVyZSBhcmUgbWVzc2FnZXMgd3JpdHRlbiB0byBjb25zb2xlIGZyb20gYSBm
cmFtZSB3aGljaCBoYXMgYWxyZWFkeSBuYXZpZ2F0ZWQgdG8gYSBwYWdlIGZyb20gYSBkaWZmZXJl
bnQgZG9tYWluLgorCisKK1Nob3dpbmcgV2ViIEluc3BlY3Rvci4uLgorUmVjZWl2ZWQgY29uc29s
ZSBtZXNzYWdlczoKK01lc3NhZ2VbMF06CitVUkw6IAorTWVzc2FnZTogVW5zYWZlIEphdmFTY3Jp
cHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAw
L2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1hZnRlci1uYXZp
Z2F0aW9uLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5z
cGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0
aW9uLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworTWVz
c2FnZVsxXToKK1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci1lbmFibGVkL3Jl
c291cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1iZWZvcmUtbmF2aWdhdGlvbi5odG1sCitNZXNzYWdl
OiAyMDEwCitURVNUIENPTVBMRVRFLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2NvbnNvbGUt
bG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOWY1MGQ1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvY29uc29sZS1sb2ctYmVmb3JlLWZyYW1lLW5hdmlnYXRp
b24uaHRtbApAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9u
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitU
ZXN0cyB0aGF0IFdlYiBJbnNwZWN0b3Igd29uJ3QgY3Jhc2ggaWYgdGhlcmUgYXJlIG1lc3NhZ2Vz
IHdyaXR0ZW4gdG8gY29uc29sZSBmcm9tIGEgZnJhbWUgd2hpY2ggaGFzIGFscmVhZHkgbmF2aWdh
dGVkIHRvIGEgcGFnZSBmcm9tIGEgZGlmZmVyZW50IGRvbWFpbi4KKzwvcD4KKzxpZnJhbWUgaWQ9
InRoZUZyYW1lIiBzcmM9InJlc291cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1iZWZvcmUtbmF2aWdh
dGlvbi5odG1sIj48L2lmcmFtZT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNlcy9jb25zb2xlLWxvZy1iZWZv
cmUtZnJhbWUtbmF2aWdhdGlvbi5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
LWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWJlZm9yZS1mcmFtZS1uYXZpZ2F0aW9uLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNDhhZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL3Jlc291cmNl
cy9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi5qcwpAQCAtMCwwICsxLDQzIEBA
CitmdW5jdGlvbiBkb2l0KCkKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAg
eworICAgICAgICBkZWJ1ZygiUmVjZWl2ZWQgY29uc29sZSBtZXNzYWdlczoiKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZh
ciByID0gcmVzdWx0W2ldOworICAgICAgICAgICAgZGVidWcoIk1lc3NhZ2VbIiArIGkgKyAiXToi
KTsKKyAgICAgICAgICAgIGRlYnVnKCJVUkw6ICIgKyByLnVybCk7CisgICAgICAgICAgICBkZWJ1
ZygiTWVzc2FnZTogIiArIHIubWVzc2FnZSk7CisgICAgICAgIH0KKyAgICAgICAgbm90aWZ5RG9u
ZSgpOworICAgICAgICBkZWJ1ZygiVEVTVCBDT01QTEVURS4iKTsKKyAgICB9CisgICAgZXZhbHVh
dGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxiYWNr
KTsKK30KKworZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICBpZiAoZXZlbnQu
ZGF0YSAhPSAiZnJhbWVSZWxvYWRlZCIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3Rl
ZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hvd1dlYkluc3BlY3Rvcigp
OworICAgIGRlYnVnKCJTaG93aW5nIFdlYiBJbnNwZWN0b3IuLi4iKTsKK30KKword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVzc2FnZSwgZmFsc2UpOworCisvLyBG
cm9udGVuZCBmdW5jdGlvbnMuCisKK2Z1bmN0aW9uIGZyb250ZW5kX2R1bXBDb25zb2xlTWVzc2Fn
ZXMoKQoreworICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICB2YXIgbWVzc2FnZXMgPSBXZWJJbnNw
ZWN0b3IuY29uc29sZS5tZXNzYWdlczsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3NhZ2Vz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBtID0gbWVzc2FnZXNbaV07CisgICAgICAgIHJl
c3VsdC5wdXNoKHsgbWVzc2FnZTogbS5tZXNzYWdlLCB1cmw6IG0udXJsfSk7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci1lbmFibGVkL3Jlc291cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1hZnRlci1uYXZpZ2F0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL3Jlc291
cmNlcy9jb25zb2xlLWxvZy1mcmFtZS1hZnRlci1uYXZpZ2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM3YzFjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9n
LWZyYW1lLWFmdGVyLW5hdmlnYXRpb24uaHRtbApAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGhhbmRsZUxvYWQoKSB7CisgICAgd2luZG93LnBhcmVu
dC5wb3N0TWVzc2FnZSgiZnJhbWVSZWxvYWRlZCIsICIqIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0iaGFuZGxlTG9hZCgpIj4KK05ldyBJbm5lciBDb250ZW50LgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29sZS1sb2ctZnJhbWUtYmVmb3JlLW5hdmlnYXRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2Vz
L2NvbnNvbGUtbG9nLWZyYW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ4ZjAwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvcmVzb3VyY2VzL2NvbnNvbGUtbG9nLWZy
YW1lLWJlZm9yZS1uYXZpZ2F0aW9uLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVMb2FkKCkgeworICBjb25zb2xlLmxvZygyMDEw
KTsKKworICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmxvY2F0aW9uID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3ItZW5hYmxlZC9yZXNvdXJjZXMvY29uc29s
ZS1sb2ctZnJhbWUtYWZ0ZXItbmF2aWdhdGlvbi5odG1sIjsKKyAgfSwgMCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaGFuZGxlTG9hZCgpIj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNTA2NmY3MS4uODQzMjk0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMC0wMy0yNiAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcm90ZWN0IGdsb2JhbCBvYmplY3QgZnJvbSBiZWluZyBH
QydlZCBpZiB0aGVyZSBhcmUgbWVzc2FnZXMgd3JpdHRlbiB0byBjb25zb2xlIGZyb20gdGhlIGlm
cmFtZSB3aXRoIHRoYXQgZ2xvYmFsIG9iamVjdC4KKworICAgICAgICBXaGVudCBzZXJpYWxpemlu
ZyBvYmplY3RzIGluIHRoZSBpbmplY3RlZCBzY3JpcHQgY2hlY2sgdGhhdCBnbG9iYWwgb2JqZWN0
IHByb3BlcnRpZXMgYXJlIHN0aWxsIGRlZmluZWQgYmVmb3JlIHVzaW5nIHRoZW0gYXMgYXJndW1l
bnRzLiBUaGUgbWF5IGJlY29tZSB1bmRlZmluZWQgaWYgb3duaW5nIGZyYW1lIG5hdmlnYXRlZCB0
byBhIGRpZmZlcmVudCBkb21haW4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM2NjEyCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3Rl
Y3RlZFB0cjo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6On5TY3JpcHRTdGF0ZVByb3RlY3RlZFB0cik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3Nh
Z2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6CisgICAg
ICAgIChpbmplY3RlZFNjcmlwdENvbnN0cnVjdG9yKToKKyAgICAgICAgKGluamVjdGVkU2NyaXB0
Q29uc3RydWN0b3IuKToKKworMjAxMC0wMy0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcmV2ZW50IGdsb2JhbCBvYmplY3QgZnJvbSBiZWluZyBHQydlZCB3aGlsZSB0aGVyZSBh
cmUgY29uc29sZSBtZXNzYWdlcyBsb2dnZWQgZnJvbSB0aGUgcGFnZSB3aXRoIHRoYXQgZ2xvYmFs
IG9iamVjdC4KKworICAgICAgICBXaGVuIGRldGVybWluaW5nIG9iamVjdCB0eXBlIGluIHRoZSBp
bmplY3RlZCBzY3JpcHQgY2hlY2sgdGhhdCBiaW5kaW5ncyBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBj
bGVhcmVkIGZyb20gdGhlIGluc3BlY3RlZCB3aW5kb3cgb2JqZWN0IGR1ZSB0byBwYWdlIG5hdmln
YXRpb24gYW5kIGlmIHRoZXkgd2VyZSBjbGVhcmVkIHJldHVybiByZXN1bHQgb2YgdHlwZW9mIG9w
ZXJhdG9yIGFzIHRoZSByZXN1bHQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM2NjEyCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0
b3ItZW5hYmxlZC9jb25zb2xlLWxvZy1iZWZvcmUtZnJhbWUtbmF2aWdhdGlvbi5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyOjpnZXQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdFN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3Rl
Y3RlZFB0cjo6U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0U3RhdGVQcm90ZWN0ZWRQdHI6On5TY3JpcHRTdGF0ZVByb3RlY3RlZFB0cik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cjo6Z2V0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3Nh
Z2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanM6IEF2b2lk
IGluc3RhbmNlb2YgY2hlY2tzIHdpdGggdW5kZWZpbmVkIHJpZ2h0IHBhcmFtZXRlci4KKyAgICAg
ICAgKGluamVjdGVkU2NyaXB0Q29uc3RydWN0b3IpOgorICAgICAgICAoaW5qZWN0ZWRTY3JpcHRD
b25zdHJ1Y3Rvci4pOgorCiAyMDEwLTAzLTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuaAppbmRleCAwYzdjNTc1Li42YmVmNGY3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5oCkBAIC0zMywyMyArMzMsMzkgQEAKICNkZWZpbmUgU2NyaXB0U3RhdGVfaAog
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSA8cnVudGltZS9Qcm90ZWN0Lmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICBjbGFzcyBET01XcmFwcGVyV29ybGQ7Ci0gICAgY2xhc3MgRnJhbWU7Ci0gICAgY2xhc3MgTm9k
ZTsKLSAgICBjbGFzcyBQYWdlOworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xhc3MgRnJhbWU7
CitjbGFzcyBOb2RlOworY2xhc3MgUGFnZTsKIAotICAgIC8vIFRoZSBpZGVhIGlzIHRvIGV4cG9z
ZSAic3RhdGUtbGlrZSIgbWV0aG9kcyAoaGFkRXhjZXB0aW9uLCBhbmQgYW55IG90aGVyCi0gICAg
Ly8gbWV0aG9kcyB3aGVyZSBFeGVjU3RhdGUganVzdCBkaXBzIGludG8gZ2xvYmFsRGF0YSkgb2Yg
SlNDOjpFeGVjU3RhdGUgYXMgYQotICAgIC8vIHNlcGFyYXRlIGFic3RyYWN0aW9uLgotICAgIC8v
IEZvciBub3csIHRoZSBzZXBhcmF0aW9uIGlzIHB1cmVseSBieSBjb252ZW50aW9uLgotICAgIHR5
cGVkZWYgSlNDOjpFeGVjU3RhdGUgU2NyaXB0U3RhdGU7CisvLyBUaGUgaWRlYSBpcyB0byBleHBv
c2UgInN0YXRlLWxpa2UiIG1ldGhvZHMgKGhhZEV4Y2VwdGlvbiwgYW5kIGFueSBvdGhlcgorLy8g
bWV0aG9kcyB3aGVyZSBFeGVjU3RhdGUganVzdCBkaXBzIGludG8gZ2xvYmFsRGF0YSkgb2YgSlND
OjpFeGVjU3RhdGUgYXMgYQorLy8gc2VwYXJhdGUgYWJzdHJhY3Rpb24uCisvLyBGb3Igbm93LCB0
aGUgc2VwYXJhdGlvbiBpcyBwdXJlbHkgYnkgY29udmVudGlvbi4KK3R5cGVkZWYgSlNDOjpFeGVj
U3RhdGUgU2NyaXB0U3RhdGU7CiAKLSAgICBTY3JpcHRTdGF0ZSogbWFpbldvcmxkU2NyaXB0U3Rh
dGUoRnJhbWUqKTsKK2NsYXNzIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKK3B1YmxpYzoKKyAgICBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0cigpIHsgfQorICAg
IFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkgOiBtX2ds
b2JhbE9iamVjdChzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSB7IH0KKyAgICBT
Y3JpcHRTdGF0ZSogZ2V0KCkKKyAgICB7CisgICAgICAgIGlmIChtX2dsb2JhbE9iamVjdCkKKyAg
ICAgICAgICAgIHJldHVybiBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Citwcml2YXRlOgorICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNH
bG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworfTsKIAotICAgIFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCosIE5vZGUqKTsKLSAgICBTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQqLCBQYWdlKik7CitTY3JpcHRT
dGF0ZSogbWFpbldvcmxkU2NyaXB0U3RhdGUoRnJhbWUqKTsKKworU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkKiwgTm9kZSopOworU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkKiwgUGFnZSopOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3Rh
dGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0U3RhdGUuaAppbmRleCA1YzVjZTZjLi5j
ZTM1MGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFN0YXRlLmgKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTdGF0ZS5oCkBAIC0zNyw1NSArMzcsNzcgQEAK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Y2xhc3MgRE9NV3JhcHBlcldvcmxkOwotICAgIGNsYXNzIEZyYW1lOwotICAgIGNsYXNzIE5vZGU7
Ci0gICAgY2xhc3MgUGFnZTsKLQotICAgIGNsYXNzIFNjcmlwdFN0YXRlIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGJvb2wgaGFkRXhjZXB0aW9uKCkgeyByZXR1
cm4gIW1fZXhjZXB0aW9uLklzRW1wdHkoKTsgfQotICAgICAgICB2b2lkIHNldEV4Y2VwdGlvbih2
ODo6TG9jYWw8djg6OlZhbHVlPiBleGNlcHRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1f
ZXhjZXB0aW9uID0gZXhjZXB0aW9uOworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xhc3MgRnJh
bWU7CitjbGFzcyBOb2RlOworY2xhc3MgUGFnZTsKKworY2xhc3MgU2NyaXB0U3RhdGUgOiBwdWJs
aWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIGJvb2wgaGFkRXhjZXB0aW9uKCkgeyByZXR1
cm4gIW1fZXhjZXB0aW9uLklzRW1wdHkoKTsgfQorICAgIHZvaWQgc2V0RXhjZXB0aW9uKHY4OjpM
b2NhbDx2ODo6VmFsdWU+IGV4Y2VwdGlvbikKKyAgICB7CisgICAgICAgIG1fZXhjZXB0aW9uID0g
ZXhjZXB0aW9uOworICAgIH0KKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBleGNlcHRpb24oKSB7
IHJldHVybiBtX2V4Y2VwdGlvbjsgfQorCisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250
ZXh0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+
OjpOZXcobV9jb250ZXh0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU2NyaXB0U3RhdGUqIGZvckNv
bnRleHQodjg6OkxvY2FsPHY4OjpDb250ZXh0Pik7CisgICAgc3RhdGljIFNjcmlwdFN0YXRlKiBj
dXJyZW50KCk7CisKK3Byb3RlY3RlZDoKKyAgICBTY3JpcHRTdGF0ZSgpIHsgfQorICAgIH5TY3Jp
cHRTdGF0ZSgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBTY3JpcHRTdGF0ZSogbWFpbldvcmxk
U2NyaXB0U3RhdGUoRnJhbWUqKTsKKyAgICBleHBsaWNpdCBTY3JpcHRTdGF0ZSh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0Pik7CisKKyAgICBzdGF0aWMgdm9pZCB3ZWFrUmVmZXJlbmNlQ2FsbGJhY2so
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcik7CisKKyAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiBtX2V4Y2VwdGlvbjsKKyAgICB2ODo6UGVyc2lzdGVudDx2
ODo6Q29udGV4dD4gbV9jb250ZXh0OworfTsKKworY2xhc3MgRW1wdHlTY3JpcHRTdGF0ZSA6IHB1
YmxpYyBTY3JpcHRTdGF0ZSB7CitwdWJsaWM6CisgICAgRW1wdHlTY3JpcHRTdGF0ZSgpIDogU2Ny
aXB0U3RhdGUoKSB7IH0KKyAgICB+RW1wdHlTY3JpcHRTdGF0ZSgpIHsgfQorfTsKKworY2xhc3Mg
U2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgor
ICAgIFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKCkgOiBtX3NjcmlwdFN0YXRlKDApIHsgfQorICAg
IFNjcmlwdFN0YXRlUHJvdGVjdGVkUHRyKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkgOiBtX3Nj
cmlwdFN0YXRlKHNjcmlwdFN0YXRlKQorICAgIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOworICAgICAgICAvLyBLZWVwIHRoZSBjb250ZXh0IGZyb20gYmVpbmcgR0MnZWQu
IFNjcmlwdFN0YXRlIGlzIGd1YXJhbnRlZWQgdG8gYmUgbGl2ZSB3aGlsZSB0aGUgY29udGV4dCBp
cyBsaXZlLgorICAgICAgICBtX2NvbnRleHQgPSB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD46
Ok5ldyhzY3JpcHRTdGF0ZS0+Y29udGV4dCgpKTsKKyAgICB9CisgICAgflNjcmlwdFN0YXRlUHJv
dGVjdGVkUHRyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9jb250ZXh0LklzRW1wdHkoKSkgewor
ICAgICAgICAgICAgbV9jb250ZXh0LkRpc3Bvc2UoKTsKKyAgICAgICAgICAgIG1fY29udGV4dC5D
bGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGV4Y2VwdGlv
bigpIHsgcmV0dXJuIG1fZXhjZXB0aW9uOyB9CisgICAgfQorICAgIFNjcmlwdFN0YXRlKiBnZXQo
KSB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9Citwcml2YXRlOgorICAgIFNjcmlwdFN0YXRlKiBt
X3NjcmlwdFN0YXRlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7
Cit9OwogCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXco
bV9jb250ZXh0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBTY3JpcHRTdGF0ZSogZm9y
Q29udGV4dCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+KTsKLSAgICAgICAgc3RhdGljIFNjcmlwdFN0
YXRlKiBjdXJyZW50KCk7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFNjcmlwdFN0YXRlKCkg
eyB9Ci0gICAgICAgIH5TY3JpcHRTdGF0ZSgpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZnJp
ZW5kIFNjcmlwdFN0YXRlKiBtYWluV29ybGRTY3JpcHRTdGF0ZShGcmFtZSopOwotICAgICAgICBl
eHBsaWNpdCBTY3JpcHRTdGF0ZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7Ci0KLSAgICAgICAg
c3RhdGljIHZvaWQgd2Vha1JlZmVyZW5jZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1
ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpOwotCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IG1fZXhjZXB0aW9uOwotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gbV9j
b250ZXh0OwotICAgIH07Ci0KLSAgICBjbGFzcyBFbXB0eVNjcmlwdFN0YXRlIDogcHVibGljIFNj
cmlwdFN0YXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEVtcHR5U2NyaXB0U3RhdGUoKSA6IFNj
cmlwdFN0YXRlKCkgeyB9Ci0gICAgICAgIH5FbXB0eVNjcmlwdFN0YXRlKCkgeyB9Ci0gICAgfTsK
LQotICAgIFNjcmlwdFN0YXRlKiBtYWluV29ybGRTY3JpcHRTdGF0ZShGcmFtZSopOworU2NyaXB0
U3RhdGUqIG1haW5Xb3JsZFNjcmlwdFN0YXRlKEZyYW1lKik7CiAKLSAgICBTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29ybGQqLCBOb2RlKik7Ci0gICAgU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkKiwgUGFnZSopOworU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkKiwgTm9kZSopOwor
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlRnJvbVBhZ2UoRE9NV3JhcHBlcldvcmxkKiwgUGFnZSop
OwogCi0gICAgaW5saW5lIERPTVdyYXBwZXJXb3JsZCogZGVidWdnZXJXb3JsZCgpIHsgcmV0dXJu
IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpOyB9Ci0gICAgaW5saW5lIERPTVdyYXBwZXJXb3JsZCog
cGx1Z2luV29ybGQoKSB7IHJldHVybiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsgfQoraW5saW5l
IERPTVdyYXBwZXJXb3JsZCogZGVidWdnZXJXb3JsZCgpIHsgcmV0dXJuIG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpOyB9CitpbmxpbmUgRE9NV3JhcHBlcldvcmxkKiBwbHVnaW5Xb3JsZCgpIHsgcmV0
dXJuIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpOyB9CiAKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCmluZGV4IDQwNTQ5OTYuLjkzNGUyZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRk
VG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQsIEluamVjdGVkU2NyaXB0SG8K
ICAgICBqc29uT2JqLnNldCgicmVwZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0
Q291bnQpKTsKICAgICBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiBhcmd1
bWVudHM7CiAgICAgaWYgKCFtX2FyZ3VtZW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2Ny
aXB0Rm9yKG1fc2NyaXB0U3RhdGUpOworICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdCA9IGluamVjdGVkU2NyaXB0SG9zdC0+aW5qZWN0ZWRTY3JpcHRGb3IobV9zY3JpcHRTdGF0
ZS5nZXQoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcEZvckNvbnNvbGUobV9hcmd1bWVu
dHNbaV0pOwogICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChzZXJpYWxpemVkVmFsdWUpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggNTNmNDI1NS4uNzdhMDEwYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fbWVzc2FnZTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFZlY3RvcjxTY3Jp
cHRWYWx1ZT4gbV9hcmd1bWVudHM7Ci0gICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3RhdGU7Cisg
ICAgU2NyaXB0U3RhdGVQcm90ZWN0ZWRQdHIgbV9zY3JpcHRTdGF0ZTsKICNlbmRpZgogICAgIFZl
Y3RvcjxTY3JpcHRTdHJpbmc+IG1fZnJhbWVzOwogICAgIHVuc2lnbmVkIG1fbGluZTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwppbmRleCAzOWYwYjFh
Li4wZGM3ZmU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0
ZWRTY3JpcHQuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2Ny
aXB0LmpzCkBAIC04NSw3ICs4NSw3IEBAIEluamVjdGVkU2NyaXB0LmRpc3BhdGNoID0gZnVuY3Rp
b24obWV0aG9kTmFtZSwgYXJncywgY2FsbElkKQogICAgICAgICBhcmdzQXJyYXkuc3BsaWNlKDAs
IDAsIGNhbGxJZCk7ICAvLyBNZXRob2RzIHRoYXQgcnVuIGFzeW5jaHJvbm91c2x5IGhhdmUgYSBj
YWxsIGJhY2sgaWQgcGFyYW1ldGVyLgogICAgIHZhciByZXN1bHQgPSBJbmplY3RlZFNjcmlwdFtt
ZXRob2ROYW1lXS5hcHBseShJbmplY3RlZFNjcmlwdCwgYXJnc0FycmF5KTsKICAgICBpZiAodHlw
ZW9mIHJlc3VsdCA9PT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHQuX3dp
bmRvdygpLmNvbnNvbGUuZXJyb3IoIldlYiBJbnNwZWN0b3IgZXJyb3I6IEluamVjdGVkU2NyaXB0
LiVzIHJldHVybnMgdW5kZWZpbmVkIiwgbWV0aG9kTmFtZSk7CisgICAgICAgIGluc3BlY3RlZFdp
bmRvdy5jb25zb2xlLmVycm9yKCJXZWIgSW5zcGVjdG9yIGVycm9yOiBJbmplY3RlZFNjcmlwdC4l
cyByZXR1cm5zIHVuZGVmaW5lZCIsIG1ldGhvZE5hbWUpOwogICAgICAgICByZXN1bHQgPSBudWxs
OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTY2LDEzICsxNjYsMTMgQEAgSW5qZWN0
ZWRTY3JpcHQuc2V0UHJvcGVydHlWYWx1ZSA9IGZ1bmN0aW9uKG9iamVjdFByb3h5LCBwcm9wZXJ0
eU5hbWUsIGV4cHJlc3Npb24KICAgICAgICAgLy8gVGhlcmUgaXMgYSByZWdyZXNzaW9uIGludHJv
ZHVjZWQgaGVyZTogZXZhbCBpcyBub3cgaGFwcGVuaW5nIGFnYWluc3QgZ2xvYmFsIG9iamVjdCwK
ICAgICAgICAgLy8gbm90IGNhbGwgZnJhbWUgd2hpbGUgb24gYSBicmVha3BvaW50LgogICAgICAg
ICAvLyBUT0RPOiBicmluZyBldmFsdWF0aW9uIGFnYWluc3QgY2FsbCBmcmFtZSBiYWNrLgotICAg
ICAgICB2YXIgcmVzdWx0ID0gSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLmV2YWwoIigiICsgZXhw
cmVzc2lvbiArICIpIik7CisgICAgICAgIHZhciByZXN1bHQgPSBpbnNwZWN0ZWRXaW5kb3cuZXZh
bCgiKCIgKyBleHByZXNzaW9uICsgIikiKTsKICAgICAgICAgLy8gU3RvcmUgdGhlIHJlc3VsdCBp
biB0aGUgcHJvcGVydHkuCiAgICAgICAgIG9iamVjdFtwcm9wZXJ0eU5hbWVdID0gcmVzdWx0Owog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIHZhciByZXN1bHQgPSBJbmplY3RlZFNjcmlwdC5fd2luZG93KCkuZXZhbCgiXCIi
ICsgSW5qZWN0ZWRTY3JpcHQuX2VzY2FwZUNoYXJhY3RlcnMoZXhwcmVzc2lvbiwgIlwiIikgKyAi
XCIiKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBpbnNwZWN0ZWRXaW5kb3cuZXZhbCgiXCIi
ICsgSW5qZWN0ZWRTY3JpcHQuX2VzY2FwZUNoYXJhY3RlcnMoZXhwcmVzc2lvbiwgIlwiIikgKyAi
XCIiKTsKICAgICAgICAgICAgIG9iamVjdFtwcm9wZXJ0eU5hbWVdID0gcmVzdWx0OwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gY2F0Y2goZSkgewpAQCAtMjQ0LDEyICsyNDQs
MTIgQEAgSW5qZWN0ZWRTY3JpcHQuZ2V0Q29tcGxldGlvbnMgPSBmdW5jdGlvbihleHByZXNzaW9u
LCBpbmNsdWRlSW5zcGVjdG9yQ29tbWFuZExpbmUKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGlmICghZXhwcmVzc2lvbikKICAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gInRoaXMi
OwotICAgICAgICAgICAgZXhwcmVzc2lvblJlc3VsdCA9IEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0
ZU9uKEluamVjdGVkU2NyaXB0Ll93aW5kb3coKS5ldmFsLCBJbmplY3RlZFNjcmlwdC5fd2luZG93
KCksIGV4cHJlc3Npb24pOworICAgICAgICAgICAgZXhwcmVzc2lvblJlc3VsdCA9IEluamVjdGVk
U2NyaXB0Ll9ldmFsdWF0ZU9uKGluc3BlY3RlZFdpbmRvdy5ldmFsLCBpbnNwZWN0ZWRXaW5kb3cs
IGV4cHJlc3Npb24pOwogICAgICAgICB9CiAgICAgICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvblJl
c3VsdCA9PSAib2JqZWN0IikKICAgICAgICAgICAgIEluamVjdGVkU2NyaXB0Ll9wb3B1bGF0ZVBy
b3BlcnR5TmFtZXMoZXhwcmVzc2lvblJlc3VsdCwgcHJvcHMpOwogICAgICAgICBpZiAoaW5jbHVk
ZUluc3BlY3RvckNvbW1hbmRMaW5lQVBJKQotICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBJ
bmplY3RlZFNjcmlwdC5fd2luZG93KCkuY29uc29sZS5faW5zcGVjdG9yQ29tbWFuZExpbmVBUEkp
CisgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIGluc3BlY3RlZFdpbmRvdy5jb25zb2xlLl9p
bnNwZWN0b3JDb21tYW5kTGluZUFQSSkKICAgICAgICAgICAgICAgICBpZiAocHJvcC5jaGFyQXQo
MCkgIT09ICdfJykKICAgICAgICAgICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSB0cnVlOwogICAg
IH0gY2F0Y2goZSkgewpAQCAtMjU5LDcgKzI1OSw3IEBAIEluamVjdGVkU2NyaXB0LmdldENvbXBs
ZXRpb25zID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgaW5jbHVkZUluc3BlY3RvckNvbW1hbmRMaW5l
CiAKIEluamVjdGVkU2NyaXB0LmV2YWx1YXRlID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgb2JqZWN0
R3JvdXApCiB7Ci0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZUFuZFdyYXAoSW5q
ZWN0ZWRTY3JpcHQuX3dpbmRvdygpLmV2YWwsIEluamVjdGVkU2NyaXB0Ll93aW5kb3coKSwgZXhw
cmVzc2lvbiwgb2JqZWN0R3JvdXApOworICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5fZXZhbHVh
dGVBbmRXcmFwKGluc3BlY3RlZFdpbmRvdy5ldmFsLCBpbnNwZWN0ZWRXaW5kb3csIGV4cHJlc3Np
b24sIG9iamVjdEdyb3VwKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQuX2V2YWx1YXRlQW5kV3JhcCA9
IGZ1bmN0aW9uKGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCkK
QEAgLTMwMSw4ICszMDEsOCBAQCBJbmplY3RlZFNjcmlwdC5hZGRJbnNwZWN0ZWROb2RlID0gZnVu
Y3Rpb24obm9kZUlkKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgSW5qZWN0ZWRTY3JpcHQuX2Vuc3VyZUNvbW1hbmRMaW5lQVBJSW5zdGFsbGVkKEluamVjdGVk
U2NyaXB0Ll93aW5kb3coKS5ldmFsLCBJbmplY3RlZFNjcmlwdC5fd2luZG93KCkpOwotICAgIHZh
ciBpbnNwZWN0ZWROb2RlcyA9IEluamVjdGVkU2NyaXB0Ll93aW5kb3coKS5jb25zb2xlLl9pbnNw
ZWN0b3JDb21tYW5kTGluZUFQSS5faW5zcGVjdGVkTm9kZXM7CisgICAgSW5qZWN0ZWRTY3JpcHQu
X2Vuc3VyZUNvbW1hbmRMaW5lQVBJSW5zdGFsbGVkKGluc3BlY3RlZFdpbmRvdy5ldmFsLCBpbnNw
ZWN0ZWRXaW5kb3cpOworICAgIHZhciBpbnNwZWN0ZWROb2RlcyA9IGluc3BlY3RlZFdpbmRvdy5j
b25zb2xlLl9pbnNwZWN0b3JDb21tYW5kTGluZUFQSS5faW5zcGVjdGVkTm9kZXM7CiAgICAgaW5z
cGVjdGVkTm9kZXMudW5zaGlmdChub2RlKTsKICAgICBpZiAoaW5zcGVjdGVkTm9kZXMubGVuZ3Ro
ID49IDUpCiAgICAgICAgIGluc3BlY3RlZE5vZGVzLnBvcCgpOwpAQCAtNDYzLDcgKzQ2Myw3IEBA
IEluamVjdGVkU2NyaXB0LnBlcmZvcm1TZWFyY2ggPSBmdW5jdGlvbih3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5LCBydW5TeW5jaHJvbm91c2x5CiAgICAgICAgICAgICBkZWxldGUgSW5qZWN0ZWRTY3Jp
cHQuX3NlYXJjaFJlc3VsdHNbaV1bc2VhcmNoUmVzdWx0c1Byb3BlcnR5XTsKICAgICB9CiAKLSAg
ICBjb25zdCBtYWluRnJhbWVEb2N1bWVudCA9IEluamVjdGVkU2NyaXB0Ll93aW5kb3coKS5kb2N1
bWVudDsKKyAgICBjb25zdCBtYWluRnJhbWVEb2N1bWVudCA9IGluc3BlY3RlZFdpbmRvdy5kb2N1
bWVudDsKICAgICBjb25zdCBzZWFyY2hEb2N1bWVudHMgPSBbbWFpbkZyYW1lRG9jdW1lbnRdOwog
ICAgIHZhciBzZWFyY2hGdW5jdGlvbnM7CiAgICAgaWYgKHRhZ05hbWVRdWVyeSAmJiBzdGFydFRh
Z0ZvdW5kICYmIGVuZFRhZ0ZvdW5kKQpAQCAtNTU5LDcgKzU1OSw3IEBAIEluamVjdGVkU2NyaXB0
Lm9wZW5Jbkluc3BlY3RlZFdpbmRvdyA9IGZ1bmN0aW9uKHVybCkKIHsKICAgICAvLyBEb24ndCBj
YWxsIHdpbmRvdy5vcGVuIG9uIHdyYXBwZXIgLSBwb3B1cCBibG9ja2VyIG11dGVzIGl0LgogICAg
IC8vIFVSSXMgc2hvdWxkIGhhdmUgbm8gZG91YmxlIHF1b3Rlcy4KLSAgICBJbmplY3RlZFNjcmlw
dC5fd2luZG93KCkuZXZhbCgid2luZG93Lm9wZW4oXCIiICsgdXJsICsgIlwiKSIpOworICAgIGlu
c3BlY3RlZFdpbmRvdy5ldmFsKCJ3aW5kb3cub3BlbihcIiIgKyB1cmwgKyAiXCIpIik7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTcyMSwxMyArNzIxLDYgQEAgSW5qZWN0ZWRTY3JpcHQuX3Jl
c29sdmVPYmplY3QgPSBmdW5jdGlvbihvYmplY3RQcm94eSkKICAgICByZXR1cm4gb2JqZWN0Owog
fQogCi1JbmplY3RlZFNjcmlwdC5fd2luZG93ID0gZnVuY3Rpb24oKQotewotICAgIC8vIFRPRE86
IHJlcGxhY2Ugd2l0aCAncmV0dXJuIHdpbmRvdzsnIG9uY2UgdGhpcyBzY3JpcHQgaXMgaW5qZWN0
ZWQgaW50bwotICAgIC8vIHRoZSBwYWdlJ3MgY29udGV4dC4KLSAgICByZXR1cm4gaW5zcGVjdGVk
V2luZG93OwotfQotCiBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkID0gZnVuY3Rpb24obm9kZUlk
KQogewogICAgIGlmICghbm9kZUlkKQpAQCAtODI0LDkgKzgxNyw5IEBAIEluamVjdGVkU2NyaXB0
LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgc2NvcGVP
YmplY3RQcm94eS5pc0Nsb3N1cmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGZvdW5kTG9jYWxT
Y29wZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2NvcGVPYmplY3RQcm94eS5pc0xvY2FsID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZm91bmRMb2NhbFNjb3BlICYmIHNjb3BlT2Jq
ZWN0IGluc3RhbmNlb2YgSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLkVsZW1lbnQpCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGZvdW5kTG9jYWxTY29wZSAmJiBzY29wZU9iamVjdCBpbnN0YW5jZW9m
IGluc3BlY3RlZFdpbmRvdy5FbGVtZW50KQogICAgICAgICAgICAgICAgIHNjb3BlT2JqZWN0UHJv
eHkuaXNFbGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGZvdW5kTG9jYWxTY29w
ZSAmJiBzY29wZU9iamVjdCBpbnN0YW5jZW9mIEluamVjdGVkU2NyaXB0Ll93aW5kb3coKS5Eb2N1
bWVudCkKKyAgICAgICAgICAgIGVsc2UgaWYgKGZvdW5kTG9jYWxTY29wZSAmJiBzY29wZU9iamVj
dCBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5Eb2N1bWVudCkKICAgICAgICAgICAgICAgICBz
Y29wZU9iamVjdFByb3h5LmlzRG9jdW1lbnQgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAo
IWZvdW5kTG9jYWxTY29wZSkKICAgICAgICAgICAgICAgICBzY29wZU9iamVjdFByb3h5LmlzV2l0
aEJsb2NrID0gdHJ1ZTsKQEAgLTg5MSwzNSArODg0LDM4IEBAIEluamVjdGVkU2NyaXB0Ll90eXBl
ID0gZnVuY3Rpb24ob2JqKQogICAgIGlmIChvYmogPT09IG51bGwpCiAgICAgICAgIHJldHVybiAi
bnVsbCI7CiAKLSAgICAvLyBGSVhNRSgzMzcxNik6IHR5cGVvZiBkb2N1bWVudC5hbGwgaXMgYWx3
YXlzICd1bmRlZmluZWQnLgotICAgIGlmIChJbmplY3RlZFNjcmlwdC5faXNIVE1MQWxsQ29sbGVj
dGlvbihvYmopKQotICAgICAgICByZXR1cm4gImFycmF5IjsKLQogICAgIHZhciB0eXBlID0gdHlw
ZW9mIG9iajsKLSAgICBpZiAodHlwZSAhPT0gIm9iamVjdCIgJiYgdHlwZSAhPT0gImZ1bmN0aW9u
IikKKyAgICBpZiAodHlwZSAhPT0gIm9iamVjdCIgJiYgdHlwZSAhPT0gImZ1bmN0aW9uIikgewor
ICAgICAgICAvLyBGSVhNRSgzMzcxNik6IHR5cGVvZiBkb2N1bWVudC5hbGwgaXMgYWx3YXlzICd1
bmRlZmluZWQnLgorICAgICAgICBpZiAoSW5qZWN0ZWRTY3JpcHQuX2lzSFRNTEFsbENvbGxlY3Rp
b24ob2JqKSkKKyAgICAgICAgICAgIHJldHVybiAiYXJyYXkiOwogICAgICAgICByZXR1cm4gdHlw
ZTsKKyAgICB9CiAKLSAgICB2YXIgd2luID0gSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpOworICAg
IC8vIElmIG93bmluZyBmcmFtZSBoYXMgbmF2aWdhdGVkIHRvIHNvbWV3aGVyZSBlbHNlIHdpbmRv
dyBwcm9wZXJ0aWVzIHdpbGwgYmUgdW5kZWZpbmVkLgorICAgIC8vIEluIHRoaXMgY2FzZSBqdXN0
IHJldHVybiByZXN1bHQgb2YgdGhlIHR5cGVvZi4KKyAgICBpZiAoIWluc3BlY3RlZFdpbmRvdy5k
b2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHR5cGU7CiAKLSAgICBpZiAob2JqIGluc3RhbmNlb2Yg
d2luLk5vZGUpCisgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5Ob2RlKQog
ICAgICAgICByZXR1cm4gKG9iai5ub2RlVHlwZSA9PT0gdW5kZWZpbmVkID8gdHlwZSA6ICJub2Rl
Iik7Ci0gICAgaWYgKG9iaiBpbnN0YW5jZW9mIHdpbi5TdHJpbmcpCisgICAgaWYgKG9iaiBpbnN0
YW5jZW9mIGluc3BlY3RlZFdpbmRvdy5TdHJpbmcpCiAgICAgICAgIHJldHVybiAic3RyaW5nIjsK
LSAgICBpZiAob2JqIGluc3RhbmNlb2Ygd2luLkFycmF5KQorICAgIGlmIChvYmogaW5zdGFuY2Vv
ZiBpbnNwZWN0ZWRXaW5kb3cuQXJyYXkpCiAgICAgICAgIHJldHVybiAiYXJyYXkiOwotICAgIGlm
IChvYmogaW5zdGFuY2VvZiB3aW4uQm9vbGVhbikKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5z
cGVjdGVkV2luZG93LkJvb2xlYW4pCiAgICAgICAgIHJldHVybiAiYm9vbGVhbiI7Ci0gICAgaWYg
KG9iaiBpbnN0YW5jZW9mIHdpbi5OdW1iZXIpCisgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3Bl
Y3RlZFdpbmRvdy5OdW1iZXIpCiAgICAgICAgIHJldHVybiAibnVtYmVyIjsKLSAgICBpZiAob2Jq
IGluc3RhbmNlb2Ygd2luLkRhdGUpCisgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdp
bmRvdy5EYXRlKQogICAgICAgICByZXR1cm4gImRhdGUiOwotICAgIGlmIChvYmogaW5zdGFuY2Vv
ZiB3aW4uUmVnRXhwKQorICAgIGlmIChvYmogaW5zdGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cuUmVn
RXhwKQogICAgICAgICByZXR1cm4gInJlZ2V4cCI7Ci0gICAgaWYgKG9iaiBpbnN0YW5jZW9mIHdp
bi5Ob2RlTGlzdCkKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgaW5zcGVjdGVkV2luZG93Lk5vZGVM
aXN0KQogICAgICAgICByZXR1cm4gImFycmF5IjsKLSAgICBpZiAob2JqIGluc3RhbmNlb2Ygd2lu
LkhUTUxDb2xsZWN0aW9uKQorICAgIGlmIChvYmogaW5zdGFuY2VvZiBpbnNwZWN0ZWRXaW5kb3cu
SFRNTENvbGxlY3Rpb24pCiAgICAgICAgIHJldHVybiAiYXJyYXkiOwotICAgIGlmIChvYmogaW5z
dGFuY2VvZiB3aW4uRXJyb3IpCisgICAgaWYgKG9iaiBpbnN0YW5jZW9mIGluc3BlY3RlZFdpbmRv
dy5FcnJvcikKICAgICAgICAgcmV0dXJuICJlcnJvciI7CiAgICAgcmV0dXJuIHR5cGU7CiB9CkBA
IC05NDEsMjAgKzkzNywyNyBAQCBJbmplY3RlZFNjcmlwdC5fZGVzY3JpYmUgPSBmdW5jdGlvbihv
YmosIGFiYnJldmlhdGVkKQogICAgICAgICAgICAgcmV0dXJuICJcIiIgKyBvYmouc3Vic3RyaW5n
KDAsIDEwMCkgKyAiXHUyMDI2XCIiOwogICAgICAgICByZXR1cm4gIlwiIiArIG9iaiArICJcIiI7
CiAgICAgY2FzZSAiZnVuY3Rpb24iOgotICAgICAgICB2YXIgb2JqZWN0VGV4dCA9IFN0cmluZyhv
YmopOworICAgICAgICB2YXIgb2JqZWN0VGV4dCA9IEluamVjdGVkU2NyaXB0Ll90b1N0cmluZyhv
YmopOwogICAgICAgICBpZiAoIS9eZnVuY3Rpb24gLy50ZXN0KG9iamVjdFRleHQpKQogICAgICAg
ICAgICAgb2JqZWN0VGV4dCA9ICh0eXBlMiA9PSAib2JqZWN0IikgPyB0eXBlMSA6IHR5cGUyOwog
ICAgICAgICBlbHNlIGlmIChhYmJyZXZpYXRlZCkKICAgICAgICAgICAgIG9iamVjdFRleHQgPSAv
LiovLmV4ZWMob2JqKVswXS5yZXBsYWNlKC8gKyQvZywgIiIpOwogICAgICAgICByZXR1cm4gb2Jq
ZWN0VGV4dDsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU3RyaW5nKG9iaik7CisgICAg
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5fdG9TdHJpbmcob2JqKTsKICAgICB9CiB9CiAKK0lu
amVjdGVkU2NyaXB0Ll90b1N0cmluZyA9IGZ1bmN0aW9uKG9iaikKK3sKKyAgICAvLyBXZSBkb24n
dCB1c2UgU3RyaW5nKG9iaikgYmVjYXVzZSBpbnNwZWN0ZWRXaW5kb3cuU3RyaW5nIGlzIHVuZGVm
aW5lZCBpZiBvd25pbmcgZnJhbWUgbmF2aWdhdGVkIHRvIGFub3RoZXIgcGFnZS4KKyAgICByZXR1
cm4gIiIgKyBvYmo7Cit9CisKIEluamVjdGVkU2NyaXB0Ll9jbGFzc05hbWUgPSBmdW5jdGlvbihv
YmopCiB7Ci0gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopLnJl
cGxhY2UoL15cW29iamVjdCAoLiopXF0kL2ksICIkMSIpCisgICAgdmFyIHN0ciA9IGluc3BlY3Rl
ZFdpbmRvdy5PYmplY3QgPyBpbnNwZWN0ZWRXaW5kb3cuT2JqZWN0LnByb3RvdHlwZS50b1N0cmlu
Zy5jYWxsKG9iaikgOiBJbmplY3RlZFNjcmlwdC5fdG9TdHJpbmcob2JqKTsKKyAgICByZXR1cm4g
c3RyLnJlcGxhY2UoL15cW29iamVjdCAoLiopXF0kL2ksICIkMSIpOwogfQogCiBJbmplY3RlZFNj
cmlwdC5fZXNjYXBlQ2hhcmFjdGVycyA9IGZ1bmN0aW9uKHN0ciwgY2hhcnMpCg==
</data>
<flag name="review"
          id="35084"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>