<?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>29651</bug_id>
          
          <creation_ts>2009-09-22 13:32:35 -0700</creation_ts>
          <short_desc>[HTML5] Add a way for an application to register as a protocol handler.</short_desc>
          <delta_ts>2009-11-03 15:37:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>0</everconfirmed>
          <reporter name="B. Green">brg</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dimich</cc>
    
    <cc>eric</cc>
    
    <cc>pipping</cc>
    
    <cc>pkasting</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>149167</commentid>
    <comment_count>0</comment_count>
    <who name="B. Green">brg</who>
    <bug_when>2009-09-22 13:32:35 -0700</bug_when>
    <thetext>Add a way for an application to register as a protocol handler, as per the HTML5 spec,
http://dev.w3.org/html5/spec/Overview.html#dom-navigator-registerprotocolhandler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149168</commentid>
    <comment_count>1</comment_count>
      <attachid>39940</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-09-22 13:41:49 -0700</bug_when>
    <thetext>Created attachment 39940
Proposed implementation of window.Navigator.registerProtocolHandler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149182</commentid>
    <comment_count>2</comment_count>
      <attachid>39940</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-22 14:15:45 -0700</bug_when>
    <thetext>Comment on attachment 39940
Proposed implementation of window.Navigator.registerProtocolHandler

Why does Chrome::runJavaScriptRegisterProtocolHandler return a boolean?

This code won&apos;t even compile.  Navigator::registerProtocolHandler calls a non-existent method named &quot;runJavascripRegisterProtocolHandler&quot;.

NAVIGATOR_ABILITIES is an incredibly vague name for a define and doesn&apos;t sound at all related to the function in question.  It&apos;s not clear to me why this is #if&apos;d at all given that the default behavior is to do nothing.

We also prefer that a full name is used in ChangeLog entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149333</commentid>
    <comment_count>3</comment_count>
      <attachid>39979</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-09-23 01:14:03 -0700</bug_when>
    <thetext>Created attachment 39979
Proposed implementation of window.Navigator.registerProtocolHandler

In reply to Mike Rowes&apos; review:

&gt;Why does Chrome::runJavaScriptRegisterProtocolHandler return a boolean?
It does not need to.  I had thought this would be a proper place for the UA to return information to webkit, however it is better removed.

&gt;This code won&apos;t even compile.
Fixed.  Attempted migration from another enlistment by typing, and then sanity built without the flag defined.  My apologies.

&gt;NAVIGATOR_ABILITIES is an incredibly vague name for a define and
&gt;doesn&apos;t sound at all related to the function in question
Fixed by renaming the define to ENABLE_REGISTER_PROTOCOL_HANDLER.  The original name was from a grouping used in the HTML5 spec for this and related APIs.

&gt;It&apos;s not clear to me why this is #if&apos;d at all given that the default behavior is to do nothing.
The API simply passes information to the UA.  This is done by adding the runJavaScriptRegisterProtocolHandler pure virtual function to the ChromeClient interface defined in WebCore/page/ChromeClient.h.  If it is not defined in the codebase of the UA using webkit, compilation will break.  If it is dynamically linked, then a runtime failure will occur.  As with the introduction of Workers, perhaps it is better to leave it behind the ENABLE_ flag for a while?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149576</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 17:38:03 -0700</bug_when>
    <thetext>RegisterProtocolHandler capitalization is wrong in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149845</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-09-24 14:22:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt;It&apos;s not clear to me why this is #if&apos;d at all given that the default behavior is to do nothing.
&gt; The API simply passes information to the UA.  This is done by adding the
&gt; runJavaScriptRegisterProtocolHandler pure virtual function to the ChromeClient
&gt; interface defined in WebCore/page/ChromeClient.h.  If it is not defined in the
&gt; codebase of the UA using webkit, compilation will break.  If it is dynamically
&gt; linked, then a runtime failure will occur.  As with the introduction of
&gt; Workers, perhaps it is better to leave it behind the ENABLE_ flag for a while?

In the past I believe minor things like this have been added by simply adding stubs to the ports whose implementations are available in the WebKit tree.  I think that would be fine for this, I see no need to add an ENABLE_ flag.

OTOH, I would very much like to see registerContentHandler supported here too.  Why add one and not the other?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150220</commentid>
    <comment_count>6</comment_count>
      <attachid>40158</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-09-25 18:25:32 -0700</bug_when>
    <thetext>Created attachment 40158
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler

@Eric Siedel
Capitalization is corrected in the change log.

@Peter Kasting
I have removed the #ifdef guards and provided default no-op implementation in ChromeClient.h.
I have added registerContentHandler as per your request.  It is simply a mirror of this API, so it is correct to add it to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154240</commentid>
    <comment_count>7</comment_count>
      <attachid>40158</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-12 19:32:41 -0700</bug_when>
    <thetext>Comment on attachment 40158
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler

Why are these results platform specific:
LayoutTests/platform/mac-leopard/fast/dom/navigator-detached-no-crash-expected.txt
how many other platforms do we need to update?

This looks fine to me.  The question which is not answered by the ChangeLog is what spec covers this.  the bug doesn&apos;t explain either.  A link to the relevant section of the spec would be helpful.

We&apos;re also not testing this to make sure that it works.  It seems that we could add this functionality to DumpRenderTree.  Although I guess then we&apos;d just be testing a mock.

Could we at least have a manual test?

Is this supposed to be completely left up to the client?  Do we allow file:// urls here, should we?  What about data urls?  I&apos;m not sure there is any reason we should disallow either.

r- due to lack of spec information and the fact that this will cause several platforms to fail due to platform-specific results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154361</commentid>
    <comment_count>8</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-10-13 09:41:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This looks fine to me.  The question which is not answered by the ChangeLog is
&gt; what spec covers this.  the bug doesn&apos;t explain either.  A link to the relevant
&gt; section of the spec would be helpful.

Doesn&apos;t comment 0 cover this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154869</commentid>
    <comment_count>9</comment_count>
      <attachid>40158</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-15 12:51:58 -0700</bug_when>
    <thetext>Comment on attachment 40158
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler

Odd.  I swear the bug page was empty before.  My bad.

Either way, the documentation should ideally end up in the ChangLog as well, since that&apos;s what folks use during review and when doing an svn blame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154874</commentid>
    <comment_count>10</comment_count>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-15 13:05:51 -0700</bug_when>
    <thetext>
Thanks for the clarification, I will update the change log and tests soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157339</commentid>
    <comment_count>11</comment_count>
      <attachid>41753</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-23 15:33:27 -0700</bug_when>
    <thetext>Created attachment 41753
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157344</commentid>
    <comment_count>12</comment_count>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-23 15:41:15 -0700</bug_when>
    <thetext>
The following are responses to the previous review and other offline comments,

#1. Please include the specification for the APIs in the ChangeLog.

Done, links to the HTML5 spec for both APIs have been added to the ChangeLog.

#2. Please include the reasoning why the behavior of these APIs is not implemented in webkit beyond passing parameters to the UA.

Done, this has been added to the ChangeLog.

#3.  runJavascriptXXX is used for displaying a modal dialog to the user, please rename.

Done, the APIs in Chrome and ChromeClient have been changed to registerXXX from runJavascriptRegsterXXX.

#4.  By unescaping the URL in the registerProtocolHandler call passed to ChromClient you may be losing information.

I have removed the call to unescape the URL.  The display text and ascii protocol/content name are still unescaped.

#5.  Explain why you have platform specific tests.

Done.  This is completed in in the LayoutTests change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157347</commentid>
    <comment_count>13</comment_count>
      <attachid>41755</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-23 15:45:54 -0700</bug_when>
    <thetext>Created attachment 41755
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157352</commentid>
    <comment_count>14</comment_count>
      <attachid>41756</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-23 15:54:45 -0700</bug_when>
    <thetext>Created attachment 41756
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.

Previously uploaded wrong file (created prior to check-webkit-style).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157394</commentid>
    <comment_count>15</comment_count>
      <attachid>41756</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-10-23 17:52:25 -0700</bug_when>
    <thetext>Comment on attachment 41756
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.

This is getting really good, we are close. A few things:

&gt; Index: WebCore/ChangeLog
&gt; +        notifies teh UA that a page has made the call.  The UA is then

/teh/the/

&gt; Index: WebCore/loader/EmptyClients.h
&gt; +    virtual void registerProtocolHandler(Frame*, const String&amp;, const String&amp;, const String&amp;) { }
&gt; +    virtual void runJavaScriptRegisterContentHandler(Frame*, const String&amp;, const String&amp;, const String&amp;) { }

the second one still has &apos;runJavaScript&apos;prefix...

&gt; Index: WebCore/page/Chrome.cpp

&gt; +void Chrome::registerProtocolHandler(Frame* frame, const String&amp; scheme, const String&amp; url, const String&amp; title) 
&gt; +{
&gt; +    // Defer loads in case the client method runs a new event loop that would
&gt; +    // otherwise cause the load to continue while we&apos;re in the middle of executing JavaScript.
&gt; +    PageGroupLoadDeferrer deferrer(m_page, true);
&gt; +       
&gt; +    ASSERT(frame);
&gt; +    m_client-&gt;registerProtocolHandler(frame, frame-&gt;displayStringModifiedByEncoding(scheme),  url,  frame-&gt;displayStringModifiedByEncoding(title));

I don&apos;t think we should be decoding scheme. title is fine to be decoded though.
Also, lets remove Frame* parameter from corresponding method on ChromeClient unless we have a reason to have it.
Same about PageGroupLoadDeferrer - it is needed in case we want to run modal dialog, which is unlikely in response to registerProtocolHandler().
It is going to be something like infobar or some other non-modal UI, in which case there is no modal loop.

&gt; +void Chrome::registerContentHandler(Frame* frame, const String&amp; mimeType, const String&amp; url, const String&amp; title)

Notes above apply here too.

&gt; Index: WebCore/page/Navigator.cpp
&gt; +void Navigator::registerProtocolHandler(const String&amp; scheme, const String&amp; url, const String&amp; title)
&gt; +{
&gt; +    if (!m_frame)
&gt; +        return;
&gt; +    
&gt; +    Page* page = m_frame-&gt;page();
&gt; +    if (!page)
&gt; +        return;
&gt; +    
&gt; +    page-&gt;chrome()-&gt;registerProtocolHandler(m_frame, scheme, url, title);

Before calling chrome, we need to do checks prescribed by spec and throw JS exceptions (SYNTAX_ERR and SECURITY_ERR).
The IDL for these methods should specify &apos;raises(DOMException)&apos; and then there will be a parameter to return exception code.
Also, it&apos;s a good place to grab base URL which has to be passed to UA so it could be resolved later when &apos;$s&apos; will be replaced with actual email.

&gt; +void Navigator::registerContentHandler(const String&amp; mimeType, const String&amp; url, const String&amp; title)

Same here.


Also, with checks and exceptions added, there is a good opportunity to write a test that verifies those work.
Looking forward to updated patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157395</commentid>
    <comment_count>16</comment_count>
      <attachid>41756</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-10-23 17:53:15 -0700</bug_when>
    <thetext>Comment on attachment 41756
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.

r- due to checks and test to be added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158399</commentid>
    <comment_count>17</comment_count>
      <attachid>41992</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-27 15:52:04 -0700</bug_when>
    <thetext>Created attachment 41992
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158403</commentid>
    <comment_count>18</comment_count>
      <attachid>41993</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-27 16:03:16 -0700</bug_when>
    <thetext>Created attachment 41993
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158405</commentid>
    <comment_count>19</comment_count>
      <attachid>41993</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-27 16:05:32 -0700</bug_when>
    <thetext>Comment on attachment 41993
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.

Updated all issues and added tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158728</commentid>
    <comment_count>20</comment_count>
      <attachid>41993</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-10-28 15:11:07 -0700</bug_when>
    <thetext>Comment on attachment 41993
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.

Ha, looks really really close. A few small things:

&gt; Index: WebCore/ChangeLog
&gt; +        We do however follow the specification in insuring that the reserved
&gt; +        schemes and mimeTypes are not passed to the UA as custmo handler

/custmo/custom/

&gt; +        registration tests.  We also insure tht the &quot;%s&quot; token is present as

/tht/that/

&gt; Index: WebCore/page/Navigator.cpp

&gt; +    Page* page = m_frame-&gt;page();
&gt; +
&gt; +    if (!page)
&gt; +        return;
&gt; +    
&gt; +    page-&gt;chrome()-&gt;registerProtocolHandler(scheme, baseURL, url, m_frame-&gt;displayStringModifiedByEncoding(title));

usually in WebKit it looks like:
if (Page* page = m_frame-&gt;page())
  page-&gt;....

a bit shorter this way. Same for registerContentHandler.


&gt; Index: WebCore/page/Navigator.h

&gt; -    class Navigator : public NavigatorBase, public RefCounted&lt;Navigator&gt; {
&gt; -    public:
&gt; -        static PassRefPtr&lt;Navigator&gt; create(Frame* frame) { return adoptRef(new Navigator(frame)); }

It is better to avoid style changes (like indentation of the whole class declaration) with actual changes.
It makes it harder later to see what exact change was applied. It&apos;s better to leave indent as is if there are other changes.

&gt; Index: WebCore/page/Navigator.idl
&gt; +
&gt; +        void registerProtocolHandler(in DOMString scheme, in DOMString url, in DOMString title)
&gt; +            raises(EventException);
&gt; +        void registerContentHandler(in DOMString mimeType, in DOMString url, in DOMString title)
&gt; +            raises(EventException);

Those should be DOMException.


&gt; Index: LayoutTests/ChangeLog
&gt; +        We add two fast/js tests to insure that the proper exceptions are

fast/js has tests for js engine itself. 
We probably should have these tests in fast/dom


&gt; Index: LayoutTests/fast/js/registerContentHandler.html
&gt; +&lt;!doctype html&gt;
&gt; +&lt;html&gt;
&gt; +&lt;head&gt;
&gt; +&lt;/head&gt;

&apos;doctype&apos; and &apos;head&apos; are not adding anything here. Could be removed.

&gt; +&lt;body&gt;
&gt; +&lt;p&gt;This test makes sure that navigator.registerContentHandler throws the proper exceptions and has no-op default implementation.&lt;/p&gt;
&gt; +&lt;pre id=&quot;console&quot;&gt;&lt;/pre&gt;   
&gt; +&lt;script&gt;
&gt; +	if (window.layoutTestController) {

The content of &lt;script&gt; tag (whole script) is usually not indented. Also there seems to be tabs in the test files.

&gt; +    	layoutTestController.setUseDashboardCompatibilityMode(true);

Why do we need this?

&gt; +    	layoutTestController.dumpAsText();
&gt; +    	layoutTestController.waitUntilDone();

No need to do waitUntilDone() and notifyDone() in this test, since the inline script will be executed synchronously before snapshot.

&gt; +		if (succeeded == true) {

if(succeeded)

&gt; +&lt;/html&gt;
&gt; \ No newline at end of file

Need newline.

&gt; Index: LayoutTests/fast/js/registerProtocolHandler.html

Same as for the previous test.

r- but I feel next iteration will be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158970</commentid>
    <comment_count>21</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-10-29 11:06:54 -0700</bug_when>
    <thetext>Should we add ENABLE guards to this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159265</commentid>
    <comment_count>22</comment_count>
      <attachid>42194</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-30 02:04:48 -0700</bug_when>
    <thetext>Created attachment 42194
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159269</commentid>
    <comment_count>23</comment_count>
      <attachid>42196</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-30 02:18:39 -0700</bug_when>
    <thetext>Created attachment 42196
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159271</commentid>
    <comment_count>24</comment_count>
      <attachid>42198</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-30 02:24:00 -0700</bug_when>
    <thetext>Created attachment 42198
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159272</commentid>
    <comment_count>25</comment_count>
      <attachid>42198</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-30 02:26:54 -0700</bug_when>
    <thetext>Comment on attachment 42198
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.

Updated all issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159535</commentid>
    <comment_count>26</comment_count>
      <attachid>42246</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-10-30 19:18:22 -0700</bug_when>
    <thetext>Created attachment 42246
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159617</commentid>
    <comment_count>27</comment_count>
      <attachid>42270</attachid>
    <who name="B. Green">brg</who>
    <bug_when>2009-11-01 02:27:11 -0800</bug_when>
    <thetext>Created attachment 42270
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160115</commentid>
    <comment_count>28</comment_count>
      <attachid>42270</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-03 10:22:32 -0800</bug_when>
    <thetext>Comment on attachment 42270
Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.

&gt; Index: WebCore/page/Navigator.cpp
&gt; Index: LayoutTests/fast/dom/navigator-detached-no-crash.html
&gt; +      } catch(err) {
&gt; +        // navigator.registerXXX will throw on invalid input.
&gt; +        strings.push(&quot;navigator.&quot;+p+&quot;() threw err &quot;+err);

I&apos;d change comment to explicitly indicate that exception is an expected result here.


&gt; Index: LayoutTests/fast/dom/registerContentHandler.html

&gt; +    var succeeded = false;
&gt; +    try {
&gt; +        window.navigator.registerContentHandler(protocol, &quot;invalid protocol %s&quot;, &quot;title&quot;);
&gt; +    } catch(e) {
&gt; +        if(&apos;SECURITY_ERR&apos; == e.name) {
&gt; +            succeeded = true;
&gt; +        };
&gt; +    };
&gt; +
&gt; +    if(succeeded == true) {
&gt; +        debug(&apos;Pass: Invalid protocol &quot;&apos; + protocol + &apos;&quot; threw SECURITY_ERR exception.&apos;);
&gt; +    } else {
&gt; +        debug(&apos;Fail: Invalid protocol &quot;&apos; + protocol + &apos;&quot; allowed.&apos;);
&gt; +    };

I think by removal of a &apos;succeeded&apos; the test could be smaller and more readable.

&gt; +if(succeeded == true) {
&gt; +    debug(&apos;Pass: Valid call succeeded.&apos;);
&gt; +} else {
&gt; +    debug(&apos;Fail: Invalid call did not succeed.&apos;);

typo, should be &quot;Fail: Valid call did not succeed.&quot;


Overall looks good. r=me.
I&apos;ll make the changes above on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160242</commentid>
    <comment_count>29</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-03 15:37:28 -0800</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/50477</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39940</attachid>
            <date>2009-09-22 13:41:49 -0700</date>
            <delta_ts>2009-09-23 01:14:03 -0700</delta_ts>
            <desc>Proposed implementation of window.Navigator.registerProtocolHandler</desc>
            <filename>regPHPatch</filename>
            <type>text/plain</type>
            <size>5987</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODY0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDktMjIgIEIuIEdyZWVuICA8YnJnQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgd2luZG93Lk5hdmlnYXRvci5SZWdpc3RlclByb3RvY29sSGFuZGxlciBpbiB3ZWJraXQsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2IvMjk2NTEKKworICAgICAgICBObyB0ZXN0
cyB3cml0dGVuIHNpbmNlIGl0IGlzIGJlaGluZCBhIGZsYWcgYW5kIGRvZXMgbm90IHJlbmRlci4K
KworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVt
cHR5Q2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgor
ICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVu
SmF2YVNjcmlwdFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9OYXZp
Z2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29s
SGFuZGxlcik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05h
dmlnYXRvci5pZGw6CisKIDIwMDktMDktMjIgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcm
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUqLCBjb25z
dCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2Ny
aXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU3RyaW5nJikg
eyByZXR1cm4gZmFsc2U7IH0KKyNpZiBFTkFCTEUoTkFWSUdBVE9SX0FCSUxJVElFUykKKyAgICB2
aXJ0dWFsIGJvb2sgcnVuSmF2YVNjcmlwdFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKEZyYW1lKiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFs
c2U7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0
KCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0
KGNvbnN0IFN0cmluZyYpIHsgfQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDQ4NTkyKQorKysgV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw2ICsyODcsMTggQEAg
Ym9vbCBDaHJvbWU6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqIAogICAgIHJldHVybiBvazsK
IH0KIAorI2lmIEVOQUJMRShOQVZJR0FUT1JfQUJJTElUSUVTKQorYm9vbCBDaHJvbWU6OnJ1bkph
dmFTY3JpcHRSZWdpc3RlclByb3RvY29sSGFuZGxlcihGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkgCit7Cisg
ICAgLy8gRGVmZXIgbG9hZHMgaW4gY2FzZSB0aGUgY2xpZW50IG1ldGhvZCBydW5zIGEgbmV3IGV2
ZW50IGxvb3AgdGhhdCB3b3VsZAorICAgIC8vIG90aGVyd2lzZSBjYXVzZSB0aGUgbG9hZCB0byBj
b250aW51ZSB3aGlsZSB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGV4ZWN1dGluZyBKYXZhU2NyaXB0
LgorICAgIFBhZ2VHcm91cExvYWREZWZlcnJlciBkZWZlcnJlcihtX3BhZ2UsIHRydWUpOworICAg
IAorICAgIEFTU0VSVChmcmFtZSk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5ydW5KYXZhU2NyaXB0
UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoZnJhbWUsIGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZp
ZWRCeUVuY29kaW5nKHNjaGVtZSksICBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyh1cmwpLCAgZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcodGl0bGUp
KTsKK30KKyNlbmRpZiAgICAKKyAgICAKIHZvaWQgQ2hyb21lOjpzZXRTdGF0dXNiYXJUZXh0KEZy
YW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzdGF0dXMpCiB7CiAgICAgQVNTRVJUKGZyYW1lKTsK
SW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgJKHJldmlzaW9uIDQ4NTkyKQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSosIGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAgICAg
ICAgIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KTsKKyNpZiBFTkFC
TEUoTkFWSUdBVE9SX0FCSUxJVElFUykKKyAgICAgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3Jp
cHRSZWdpc3RlclByb3RvY29sSGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOworI2VuZGlmCiAgICAg
ICAgIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChGcmFtZSosIGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKIApJbmRleDogV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAkocmV2aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw2ICsxMTcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSosIGNv
bnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRQcm9t
cHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZh
bHVlLCBTdHJpbmcmIHJlc3VsdCkgPSAwOworI2lmIEVOQUJMRShOQVZJR0FUT1JfQUJJTElUSUVT
KQorICAgICAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyKEZyYW1lKiwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlKSA9IDA7CisjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFN0
YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHRhYnNU
b0xpbmtzKCkgY29uc3QgPSAwOwpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHJldmlzaW9uIDQ4NTkyKQor
KysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw0ICsx
NjksMTggQEAgdm9pZCBOYXZpZ2F0b3I6OmdldFN0b3JhZ2VVcGRhdGVzKCkKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKE5BVklHQVRPUl9BQklMSVRJRVMpCit2b2lkIE5hdmlnYXRvcjo6cmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3Rpcm5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcGFnZS0+Y2hyb21lKCktPnJ1bkphdmFz
Y3JpcFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKG1fZnJhbWUsIHNjaGVtZSwgdXJsLCB0aXRsZSk7
Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2
aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDYgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmVsaW5x
dWlzaGVzIHRoZSBzdG9yYWdlIGxvY2ssIGlmIG9uZSBleGlzdHMuCiAgICAgICAgIHZvaWQgZ2V0
U3RvcmFnZVVwZGF0ZXMoKTsKICNlbmRpZgorICAgICAgICAKKyNpZiBFTkFCTEUoTkFWSUdBVE9S
X0FCSUxJVElFUykKKyAgICAgICAgdm9pZCByZWdzaXRlclByb3RvY29sSGFuZGxlcihjb25zdCBT
dHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwor
I2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuaWRsCShyZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxMCBAQCBtb2R1bGUgd2luZG93IHsKICNp
ZiBkZWZpbmVkKEVOQUJMRV9ET01fU1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdFCiAgICAg
ICAgIHZvaWQgZ2V0U3RvcmFnZVVwZGF0ZXMoKTsKICNlbmRpZgorCisjaWYgZGVmaW5lZChFTkFC
TEVfTkFWSUdBVE9SX0FCSUxJVElFUykgJiYgRU5BQkxFX05BVklHQVRPUl9BQklMSVRJRVMKKyAg
ICAgICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihpbiBET01TdHJpbmcgc2NoZW1lLCBp
biBET01TdHJpbmcgdXJsLCBpbiBET01TdHJpbmcgdGl0bGUpOworI2VuZGlmCiAgICAgfTsKIAog
fQo=
</data>
<flag name="review"
          id="21090"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39979</attachid>
            <date>2009-09-23 01:14:03 -0700</date>
            <delta_ts>2009-09-25 18:25:32 -0700</delta_ts>
            <desc>Proposed implementation of window.Navigator.registerProtocolHandler</desc>
            <filename>regph.txt</filename>
            <type>text/plain</type>
            <size>10772</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4NjY4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDktMjMgIEJyYWRsZXkg
R3JlZW4gIDxicmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEtlZXAgSmF2YXNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMgaW4g
c3luYyB3aXRoIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL2IvMjk2NTEKKworICAgICAgICBObyB0ZXN0cyB3cml0dGVuIHNpbmNlIGl0IGlz
IGJlaGluZCBhIGZsYWcuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzoKKwogMjAwOS0wOS0yMiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJl
dmlzaW9uIDQ4NTkyKQorKysgSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQQogRU5BQkxFX01BVEhNTCA9IDsKIEVOQUJM
RV9OT1RJRklDQVRJT05TID0gOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CitFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xf
SEFORExFUiA9IDsKIEVOQUJMRV9SVUJZID0gRU5BQkxFX1JVQlk7CiBFTkFCTEVfU0hBUkVEX1dP
UktFUlMgPSBFTkFCTEVfU0hBUkVEX1dPUktFUlM7CiBFTkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsK
QEAgLTYzLDQgKzY0LDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJM
RV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZF
QVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxF
X0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVO
QUJMRV9NQVRITUwpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQo
RU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdF
KSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChF
TkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURF
TykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykg
JChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFC
TEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RB
VEFMSVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJM
RV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAkKEVO
QUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
NDg2NjgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0
IEBACisyMDA5LTA5LTIzICBCcmFkbGV5IEdyZWVuICA8YnJnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgd2lu
ZG93Lk5hdmlnYXRvci5SZWdpc3RlclByb3RvY29sSGFuZGxlciBpbiB3ZWJraXQsCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2IvMjk2NTEKKworICAgICAgICBObyB0ZXN0cyB3cml0
dGVuIHNpbmNlIGl0IGlzIGJlaGluZCBhIGZsYWcgYW5kIGRvZXMgbm90IHJlbmRlci4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5Q2hyb21lQ2xp
ZW50OjpydW5KYXZhU2NyaXB0UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cnVuSmF2YVNjcmlwdFJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6
CisKIDIwMDktMDktMjIgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29t
LmNuPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA0ODU5
MikKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIg
PSBFTkFCTEVfSkFWQQogRU5BQkxFX01BVEhNTCA9IDsKIEVOQUJMRV9OT1RJRklDQVRJT05TID0g
OwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlM7CitFTkFCTEVfUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUiA9IDsKIEVOQUJM
RV9SVUJZID0gRU5BQkxFX1JVQlk7CiBFTkFCTEVfU0hBUkVEX1dPUktFUlMgPSBFTkFCTEVfU0hB
UkVEX1dPUktFUlM7CiBFTkFCTEVfU1ZHID0gRU5BQkxFX1NWRzsKQEAgLTYzLDQgKzY0LDQgQEAg
RU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9Y
UEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJM
RV9EQVRBTElTVCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAk
KEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChF
TkFCTEVfUlVCWSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFC
TEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9N
X09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05f
T0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NP
Q0tFVFMpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQo
RU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9E
QVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9E
T01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NP
TF9IQU5ETEVSKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFC
TEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQo
RU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAk
KEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2
aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA1LDYgKzEwNSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29s
IHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CisjaWYg
RU5BQkxFKFJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpCisgICAgdmlydHVhbCB2b2lkIHJ1bkph
dmFTY3JpcHRSZWdpc3RlclByb3RvY29sSGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQorI2VuZGlmCiAgICAgdmlydHVhbCBib29s
IHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgeyB9CkluZGV4OiBXZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAkocmV2aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg3LDYgKzI4NywxOCBAQCBib29sIENocm9tZTo6cnVuSmF2YVNjcmlwdFByb21w
dChGcmFtZSogCiAgICAgcmV0dXJuIG9rOwogfQogCisjaWYgRU5BQkxFKFJFR0lTVEVSX1BST1RP
Q09MX0hBTkRMRVIpCit2b2lkIENocm9tZTo6cnVuSmF2YVNjcmlwdFJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKSAKK3sKKyAgICAvLyBEZWZlciBsb2FkcyBpbiBjYXNl
IHRoZSBjbGllbnQgbWV0aG9kIHJ1bnMgYSBuZXcgZXZlbnQgbG9vcCB0aGF0IHdvdWxkCisgICAg
Ly8gb3RoZXJ3aXNlIGNhdXNlIHRoZSBsb2FkIHRvIGNvbnRpbnVlIHdoaWxlIHdlJ3JlIGluIHRo
ZSBtaWRkbGUgb2YgZXhlY3V0aW5nIEphdmFTY3JpcHQuCisgICAgUGFnZUdyb3VwTG9hZERlZmVy
cmVyIGRlZmVycmVyKG1fcGFnZSwgdHJ1ZSk7CisKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIG1f
Y2xpZW50LT5ydW5KYXZhU2NyaXB0UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoZnJhbWUsIGZyYW1l
LT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHNjaGVtZSksICBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh1cmwpLCAgZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2Rp
ZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKK30KKyNlbmRpZiAgICAKKyAgICAKIHZvaWQgQ2hyb21l
OjpzZXRTdGF0dXNiYXJUZXh0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzdGF0dXMpCiB7
CiAgICAgQVNTRVJUKGZyYW1lKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDQ4NTkyKQorKysgV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSosIGNv
bnN0IFN0cmluZyYpOwogICAgICAgICBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgICAgIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSos
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmlu
ZyYgcmVzdWx0KTsKKyNpZiBFTkFCTEUoUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRSZWdpc3RlclByb3RvY29sSGFuZGxlcihGcmFt
ZSosIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSk7CisjZW5kaWYKICAgICAgICAgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KEZyYW1lKiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgp
OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChG
cmFtZSosIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHJ1bkphdmFT
Y3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KSA9IDA7CisjaWYgRU5B
QkxFKFJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpCisgICAgICAgIHZpcnR1YWwgdm9pZCBydW5K
YXZhU2NyaXB0UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoRnJhbWUqLCBjb25zdCBTdHJpbmcmIHNj
aGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKKyNlbmRp
ZgogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkgPSAw
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBjb25zdCA9IDA7CkluZGV4OiBX
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmNwcAkocmV2aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDQgKzE2OSwxOCBAQCB2b2lkIE5hdmlnYXRvcjo6Z2V0
U3RvcmFnZVVwZGF0ZXMoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVHSVNURVJfUFJPVE9D
T0xfSEFORExFUikKK3ZvaWQgTmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25z
dCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBwYWdlLT5jaHJvbWUoKS0+cnVuSmF2YVNjcmlwdFJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKG1fZnJhbWUsIHNjaGVtZSwgdXJsLCB0aXRsZSk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gNDg1OTIpCisrKyBXZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmVsaW5xdWlzaGVzIHRoZSBzdG9yYWdlIGxv
Y2ssIGlmIG9uZSBleGlzdHMuCiAgICAgICAgIHZvaWQgZ2V0U3RvcmFnZVVwZGF0ZXMoKTsKICNl
bmRpZgorICAgICAgICAKKyNpZiBFTkFCTEUoUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikKKyAg
ICAgICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworI2VuZGlmCiAKICAgICBw
cml2YXRlOgogICAgICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCShy
ZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw2ICs0NiwxMCBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBkZWZpbmVkKEVOQUJM
RV9ET01fU1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdFCiAgICAgICAgIHZvaWQgZ2V0U3Rv
cmFnZVVwZGF0ZXMoKTsKICNlbmRpZgorCisjaWYgZGVmaW5lZChFTkFCTEVfUkVHSVNURVJfUFJP
VE9DT0xfSEFORExFUikgJiYgRU5BQkxFX1JFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIKKyAgICAg
ICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihpbiBET01TdHJpbmcgc2NoZW1lLCBpbiBE
T01TdHJpbmcgdXJsLCBpbiBET01TdHJpbmcgdGl0bGUpOworI2VuZGlmCiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40158</attachid>
            <date>2009-09-25 18:25:32 -0700</date>
            <delta_ts>2009-10-23 15:33:27 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler</desc>
            <filename>regph.txt</filename>
            <type>text/plain</type>
            <size>10883</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODc3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDktMjUgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHdp
bmRvdy5jbGllbnRJbmZvcm1hdGlvbiBhbmQgbmF2aWdhdG9yIG9iamVjdHMuCisKKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNs
aWVudDo6cnVuSmF2YVNjcmlwdFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkVtcHR5Q2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0UmVnaXN0ZXJDb250ZW50SGFu
ZGxlcik6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lOjpydW5KYXZhU2NyaXB0UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lOjpydW5KYXZhU2NyaXB0UmVnaXN0ZXJDb250ZW50SGFuZGxlcik6CisgICAg
ICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0UmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0
UmVnaXN0ZXJDb250ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAg
ICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaWRsOgor
CiAyMDA5LTA5LTI1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmVydGluZyByNDg3NjcsIGFzIGl0IGJyb2tlIFdpbmRvd3MgYnVpbGQgaW4gYSBub24t
dHJpdmlhbCB3YXkuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNDg1OTIpCisr
KyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYg
KzEwNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZy
YW1lKiwgY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRD
b25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1
bkphdmFTY3JpcHRSZWdpc3RlclByb3RvY29sSGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5K
YXZhU2NyaXB0UmVnaXN0ZXJDb250ZW50SGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfSAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSB7IH0KSW5kZXg6IFdlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShy
ZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODcsNiArMjg3LDI2IEBAIGJvb2wgQ2hyb21lOjpydW5KYXZhU2NyaXB0UHJvbXB0KEZy
YW1lKiAKICAgICByZXR1cm4gb2s7CiB9CiAKK3ZvaWQgQ2hyb21lOjpydW5KYXZhU2NyaXB0UmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpIAoreworICAgIC8vIERlZmVy
IGxvYWRzIGluIGNhc2UgdGhlIGNsaWVudCBtZXRob2QgcnVucyBhIG5ldyBldmVudCBsb29wIHRo
YXQgd291bGQKKyAgICAvLyBvdGhlcndpc2UgY2F1c2UgdGhlIGxvYWQgdG8gY29udGludWUgd2hp
bGUgd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBleGVjdXRpbmcgSmF2YVNjcmlwdC4KKyAgICBQYWdl
R3JvdXBMb2FkRGVmZXJyZXIgZGVmZXJyZXIobV9wYWdlLCB0cnVlKTsKKworICAgIEFTU0VSVChm
cmFtZSk7CisgICAgbV9jbGllbnQtPnJ1bkphdmFTY3JpcHRSZWdpc3RlclByb3RvY29sSGFuZGxl
cihmcmFtZSwgZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2NoZW1lKSwg
IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHVybCksICBmcmFtZS0+ZGlz
cGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkpOworfQorCit2b2lkIENocm9tZTo6
cnVuSmF2YVNjcmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
K3sKKyAgICAvLyBEZWZlciBsb2FkcyBpbiBjYXNlIHRoZSBjbGllbnQgbWV0aG9kIHJ1bnMgYSBu
ZXcgZXZlbnQgbG9vcCB0aGF0IHdvdWxkCisgICAgLy8gb3RoZXJ3aXNlIGNhdXNlIHRoZSBsb2Fk
IHRvIGNvbnRpbnVlIHdoaWxlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIEphdmFT
Y3JpcHQuCisgICAgUGFnZUdyb3VwTG9hZERlZmVycmVyIGRlZmVycmVyKG1fcGFnZSwgdHJ1ZSk7
CisgICAgCisgICAgQVNTRVJUKGZyYW1lKTsKKyAgICBtX2NsaWVudC0+cnVuSmF2YVNjcmlwdFJl
Z2lzdGVyQ29udGVudEhhbmRsZXIoZnJhbWUsIGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRC
eUVuY29kaW5nKG1pbWVUeXBlKSwgIGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29k
aW5nKHVybCksICBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkp
OworfQorICAgIAogdm9pZCBDaHJvbWU6OnNldFN0YXR1c2JhclRleHQoRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIHN0YXR1cykKIHsKICAgICBBU1NFUlQoZnJhbWUpOwpJbmRleDogV2ViQ29y
ZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2
aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExMSw2ICsxMTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGJvb2wgcnVuSmF2
YVNjcmlwdENvbmZpcm0oRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBydW5K
YXZhU2NyaXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpOworICAgICAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRSZWdpc3RlclByb3RvY29sSGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIHZvaWQg
cnVuSmF2YVNjcmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIoRnJhbWUqLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAg
ICAgIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChGcmFtZSosIGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKIApJbmRleDogV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAkocmV2aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw2ICsxMTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSosIGNv
bnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRQcm9t
cHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZh
bHVlLCBTdHJpbmcmIHJlc3VsdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNj
cmlwdFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBydW5KYXZh
U2NyaXB0UmVnaXN0ZXJDb250ZW50SGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U3Rh
dHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgdGFic1Rv
TGlua3MoKSBjb25zdCA9IDA7CkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkocmV2aXNpb24gNDg1OTIpCisr
KyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDQgKzE2
OSwyOCBAQCB2b2lkIE5hdmlnYXRvcjo6Z2V0U3RvcmFnZVVwZGF0ZXMoKQogfQogI2VuZGlmCiAK
K3ZvaWQgTmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNj
aGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgaWYg
KCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBw
YWdlLT5jaHJvbWUoKS0+cnVuSmF2YVNjcmlwdFJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKG1fZnJh
bWUsIHNjaGVtZSwgdXJsLCB0aXRsZSk7Cit9CisKK3ZvaWQgTmF2aWdhdG9yOjpyZWdpc3RlckNv
bnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgcGFnZS0+Y2hyb21lKCktPnJ1bkphdmFTY3Jp
cHRSZWdpc3RlckNvbnRlbnRIYW5kbGVyKG1fZnJhbWUsIG1pbWVUeXBlLCB1cmwsIHRpdGxlKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gNDg1
OTIpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBSZWxpbnF1aXNoZXMgdGhl
IHN0b3JhZ2UgbG9jaywgaWYgb25lIGV4aXN0cy4KICAgICAgICAgdm9pZCBnZXRTdG9yYWdlVXBk
YXRlcygpOwogI2VuZGlmCisgICAgICAgIAorICAgICAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CisgICAgICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuaWRsCShyZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw5IEBAIG1vZHVsZSB3aW5kb3cgewogI2lmIGRlZmlu
ZWQoRU5BQkxFX0RPTV9TVE9SQUdFKSAmJiBFTkFCTEVfRE9NX1NUT1JBR0UKICAgICAgICAgdm9p
ZCBnZXRTdG9yYWdlVXBkYXRlcygpOwogI2VuZGlmCisKKyAgICAgICAgdm9pZCByZWdpc3RlclBy
b3RvY29sSGFuZGxlcihpbiBET01TdHJpbmcgc2NoZW1lLCBpbiBET01TdHJpbmcgdXJsLCBpbiBE
T01TdHJpbmcgdGl0bGUpOworICAgICAgICB2b2lkIHJlZ2lzdGVyQ29udGVudEhhbmRsZXIoaW4g
RE9NU3RyaW5nIG1pbWVUeXBlLCBpbiBET01TdHJpbmcgdXJsLCBpbiBET01TdHJpbmcgdGl0bGUp
OwogICAgIH07CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4Nzc5KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDktMjUgIEJy
YWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIHRlc3QgZXhwZWN0YXRpb25zIGZvciBp
bXBsZW1lbnRhdGlvbiBvZiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
IGFuZCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVk
LW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wOS0yNSAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnRpbmcgcjQ4NzY3LCBhcyBpdCBicm9r
ZSBXaW5kb3dzIGJ1aWxkIGluIGEgbm9uLXRyaXZpYWwgd2F5LgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0ODU5MikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL25h
dmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEzLDYgKzEzLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lu
cyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlz
IE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3Iu
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBP
SwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpAQCAt
MjksNiArMzEsOCBAQCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5z
IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMg
T0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5y
ZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlzIE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9L
CiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJv
cGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ4NTkyKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTY1Miw2ICsxNjUyLDggQEAgd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBsYXRmb3Jt
IFtzdHJpbgogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBsdWdpbnMgW3ByaW50ZWQgYWJvdmUg
YXMgd2luZG93LlBsdWdpbkFycmF5LnByb3RvdHlwZV0KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlv
bi5wcm9kdWN0IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucHJvZHVjdFN1YiBb
c3RyaW5nXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIg
W2Z1bmN0aW9uXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyIFtmdW5jdGlvbl0KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi51c2VyQWdlbnQgW3N0cmlu
Z10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3IgW3N0cmluZ10KIHdpbmRvdy5jbGll
bnRJbmZvcm1hdGlvbi52ZW5kb3JTdWIgW3N0cmluZ10KSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQv
ZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNDg1OTIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9u
YXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMyw2ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdp
bnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBp
cyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMg
T0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAg
LTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lu
cyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlz
IE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3Iu
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBP
SwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwo=
</data>
<flag name="review"
          id="21344"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41753</attachid>
            <date>2009-10-23 15:33:27 -0700</date>
            <delta_ts>2009-10-23 15:45:54 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handler.txt</filename>
            <type>text/plain</type>
            <size>13701</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDktMTAtMjMgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRlaCBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorCisgICAgICAgIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHdpbmRvdy5jbGllbnRJ
bmZvcm1hdGlvbiBhbmQgbmF2aWdhdG9yIG9iamVjdHMuCisKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6cnVuSmF2
YVNjcmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlD
aHJvbWVDbGllbnQ6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJ1bkphdmFTY3JpcHRSZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cnVuSmF2YVNj
cmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50OjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3Iu
aWRsOgorCiAyMDA5LTEwLTIzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQW5vdGhlciBzaG90IGF0IGEgZml4ZWQgYnVpbGQuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA1LDggKzEwNSwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmly
dHVhbCBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFt
ZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfSAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKEZyYW1l
KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRSZWdpc3RlckNvbnRlbnRIYW5kbGVyKEZyYW1lKiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9IAogCiAgICAg
dmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgeyB9CiAKSW5kZXg6
IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODcsNiArMjg3LDcgQEAgYm9vbCBDaHJvbWU6OnJ1bkphdmFTY3JpcHRQ
cm9tcHQoRnJhbWUqIAogICAgIHJldHVybiBvazsKIH0KIAorIAogdm9pZCBDaHJvbWU6OnNldFN0
YXR1c2JhclRleHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHN0YXR1cykKIHsKICAgICBB
U1NFUlQoZnJhbWUpOwpAQCAtMzAyLDYgKzMwMywyNiBAQCBib29sIENocm9tZTo6c2hvdWxkSW50
ZXJydXB0SmF2YVNjcmlwdCgpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRJbnRlcnJ1cHRK
YXZhU2NyaXB0KCk7CiB9CiAKK3ZvaWQgQ2hyb21lOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihG
cmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkgCit7CisgICAgLy8gRGVmZXIgbG9hZHMgaW4gY2FzZSB0aGUgY2xp
ZW50IG1ldGhvZCBydW5zIGEgbmV3IGV2ZW50IGxvb3AgdGhhdCB3b3VsZAorICAgIC8vIG90aGVy
d2lzZSBjYXVzZSB0aGUgbG9hZCB0byBjb250aW51ZSB3aGlsZSB3ZSdyZSBpbiB0aGUgbWlkZGxl
IG9mIGV4ZWN1dGluZyBKYXZhU2NyaXB0LgorICAgIFBhZ2VHcm91cExvYWREZWZlcnJlciBkZWZl
cnJlcihtX3BhZ2UsIHRydWUpOworICAgICAgIAorICAgIEFTU0VSVChmcmFtZSk7CisgICAgbV9j
bGllbnQtPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGZyYW1lLCBmcmFtZS0+ZGlzcGxheVN0cmlu
Z01vZGlmaWVkQnlFbmNvZGluZyhzY2hlbWUpLCAgdXJsLCAgZnJhbWUtPmRpc3BsYXlTdHJpbmdN
b2RpZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKK30KKwordm9pZCBDaHJvbWU6OnJlZ2lzdGVyQ29u
dGVudEhhbmRsZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sKKyAgICAvLyBEZWZlciBsb2FkcyBp
biBjYXNlIHRoZSBjbGllbnQgbWV0aG9kIHJ1bnMgYSBuZXcgZXZlbnQgbG9vcCB0aGF0IHdvdWxk
CisgICAgLy8gb3RoZXJ3aXNlIGNhdXNlIHRoZSBsb2FkIHRvIGNvbnRpbnVlIHdoaWxlIHdlJ3Jl
IGluIHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIEphdmFTY3JpcHQuCisgICAgUGFnZUdyb3VwTG9h
ZERlZmVycmVyIGRlZmVycmVyKG1fcGFnZSwgdHJ1ZSk7CisKKyAgICBBU1NFUlQoZnJhbWUpOwor
ICAgIG1fY2xpZW50LT5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKGZyYW1lLCBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhtaW1lVHlwZSksICB1cmwsICBmcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkpOworfSAgICAKKwogSW50UmVjdCBDaHJv
bWU6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQtPndp
bmRvd1Jlc2l6ZXJSZWN0KCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUv
cGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KEZyYW1lKiwgY29uc3Qg
U3RyaW5nJik7CiAgICAgICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwogCisg
ICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoRnJhbWUqLCBjb25zdCBTdHJpbmcm
IHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAg
ICB2b2lkIHJlZ2lzdGVyQ29udGVudEhhbmRsZXIoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKICAgICAgICAg
SW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVy
RmxhZ3MpOwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4
dChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcnJ1
cHRKYXZhU2NyaXB0KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlua3MoKSBj
b25zdCA9IDA7Ci0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclByb3Rv
Y29sSGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihG
cmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQor
ICAgICAgICAKICAgICAgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29u
c3QgPSAwOwogCiAgICAgICAgIC8vIE1ldGhvZHMgdXNlZCBieSBIb3N0V2luZG93LgpJbmRleDog
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5jcHAJKHJldmlzaW9uIDUwMDA0KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw0ICsxNjksMjggQEAgdm9pZCBOYXZpZ2F0b3I6Omdl
dFN0b3JhZ2VVcGRhdGVzKCkKIH0KICNlbmRpZgogCit2b2lkIE5hdmlnYXRvcjo6cmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcGFnZS0+Y2hyb21lKCktPnJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyKG1fZnJhbWUsIHNjaGVtZSwgdXJsLCB0aXRsZSk7Cit9CisKK3ZvaWQgTmF2
aWdhdG9yOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIGlmICghbV9mcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgcGFnZS0+Y2hy
b21lKCktPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobV9mcmFtZSwgbWltZVR5cGUsIHVybCwgdGl0
bGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCShyZXZpc2lv
biA1MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksNiArNTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJlbGlucXVpc2hl
cyB0aGUgc3RvcmFnZSBsb2NrLCBpZiBvbmUgZXhpc3RzLgogICAgICAgICB2b2lkIGdldFN0b3Jh
Z2VVcGRhdGVzKCk7CiAjZW5kaWYKKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdm9pZCByZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE5hdmlnYXRvcihGcmFtZSopOwpJbmRleDog
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5pZGwJKHJldmlzaW9uIDUwMDA0KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYg
ZGVmaW5lZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQogICAgICAg
ICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYKKworICAgICAgICB2b2lkIHJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKGluIERPTVN0cmluZyBzY2hlbWUsIGluIERPTVN0cmluZyB1cmws
IGluIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxl
cihpbiBET01TdHJpbmcgbWltZVR5cGUsIGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0
aXRsZSk7CiAgICAgfTsKIAogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTAwMDQpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAwOS0xMC0y
MyAgQnJhZGxleSBHcmVlbiAgPGJyZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcgdGVzdCBleHBlY3RhdGlvbnMg
Zm9yIGltcGxlbWVudGF0aW9uIG9mIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhh
bmRsZXIgYW5kIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlci4KKyAgICAg
ICAgCisgICAgICAgIFRoZXJlIGlzIGEgZGVmYXVsdCBpbXBsaW1lbnRhdGlvbiBmb3IgdGhlc2Ug
QVBJcywgaGVuY2UgYWxsIHBsYXRmb3JtcyB3aXRoIHRoZSBuYXZpZ2F0b3ItZGV0YWNoZWQtbm8t
Y3Jhc2gtZXhwZWN0IGFuZCB3aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZCB0ZXN0cyBuZWVkZWQg
dG8gYmUgdXBkYXRlZC4gIFdoaWxlIGlzb2xhdGVkV29ybGRzIGhhcyBhIHdpbmRvdy1wcm9wZXJ0
aWVzLWV4cGVjdGVkIHRlc3QsIGl0IGhhcyBubyB3aW5kb3cgb2JqZWN0IGFuZCBoZW5jZSBkb2Vz
IG5vdCBuZWVkIHRvIGJlIHVwZGFldGQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRv
ci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0xMC0yMyAgSm9uIEhv
bmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIE1TQUE6IE5hbWUgZm9y
IGltYWdlIGVsZW1lbnRzIHNob3VsZCB1c2UgYWx0IGF0dHJpYnV0ZSB0ZXh0CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1u
by1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMDA0KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTMsNiArMTMsOCBAQCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRv
ci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1
Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCkgaXMgT0sKK25h
dmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlzIE9LCiBuYXZpZ2F0b3IudXNlckFn
ZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlz
IE9LCkBAIC0yOSw2ICszMSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9y
LnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVj
dFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2
aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdl
bnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMg
T0sKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAwMDQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjg4LDYgKzE2ODgsOCBAQCB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24u
cGxhdGZvcm0gW3N0cmluCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGx1Z2lucyBbcHJpbnRl
ZCBhYm92ZSBhcyB3aW5kb3cuUGx1Z2luQXJyYXkucHJvdG90eXBlXQogd2luZG93LmNsaWVudElu
Zm9ybWF0aW9uLnByb2R1Y3QgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wcm9k
dWN0U3ViIFtzdHJpbmddCit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJDb250ZW50
SGFuZGxlciBbZnVuY3Rpb25dCit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIgW2Z1bmN0aW9uXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnVzZXJBZ2Vu
dCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvciBbc3RyaW5nXQogd2lu
ZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvclN1YiBbc3RyaW5nXQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9t
L25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMDA0
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hl
ZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAg
bmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdh
dG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3Iu
cmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBPSwogbmF2aWdhdG9yLnZl
bmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMDA0KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2NTcsNiArMTY1Nyw4IEBAIHdpbmRvdy5j
bGllbnRJbmZvcm1hdGlvbi5wbGF0Zm9ybSBbc3RyaW4KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlv
bi5wbHVnaW5zIFtwcmludGVkIGFib3ZlIGFzIHdpbmRvdy5QbHVnaW5BcnJheS5wcm90b3R5cGVd
CiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucHJvZHVjdCBbc3RyaW5nXQogd2luZG93LmNsaWVu
dEluZm9ybWF0aW9uLnByb2R1Y3RTdWIgW3N0cmluZ10KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlv
bi5yZWdpc3RlckNvbnRlbnRIYW5kbGVyIFtmdW5jdGlvbl0KK3dpbmRvdy5jbGllbnRJbmZvcm1h
dGlvbi5yZWdpc3RlclByb3RvY29sSGFuZGxlciBbZnVuY3Rpb25dCiB3aW5kb3cuY2xpZW50SW5m
b3JtYXRpb24udXNlckFnZW50IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVu
ZG9yIFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yU3ViIFtzdHJpbmdd
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1j
cmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMDA0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWxlb3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsOCBAQCBuYXZpZ2F0b3IucGxhdGZv
cm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBpcyBP
SwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRI
YW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlzIE9L
CiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZp
Z2F0b3IudmVuZG9yU3ViIGlzIE9LCkBAIC0yOSw2ICszMSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9y
bSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9L
CiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhh
bmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sK
IG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmln
YXRvci52ZW5kb3JTdWIgaXMgT0sK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41755</attachid>
            <date>2009-10-23 15:45:54 -0700</date>
            <delta_ts>2009-10-23 15:54:45 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handler.txt</filename>
            <type>text/plain</type>
            <size>13751</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDktMTAtMjMgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRlaCBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorCisgICAgICAgIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHdpbmRvdy5jbGllbnRJ
bmZvcm1hdGlvbiBhbmQgbmF2aWdhdG9yIG9iamVjdHMuCisKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6cnVuSmF2
YVNjcmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlD
aHJvbWVDbGllbnQ6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJ1bkphdmFTY3JpcHRSZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cnVuSmF2YVNj
cmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50OjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3Iu
aWRsOgorCiAyMDA5LTEwLTIzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQW5vdGhlciBzaG90IGF0IGEgZml4ZWQgYnVpbGQuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmly
dHVhbCBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChGcmFt
ZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFN0cmluZyYpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfSAKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoRnJhbWUqLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcnVuSmF2YVNjcmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIoRnJhbWUqLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIHsgfQogCiAgICAgdmlydHVhbCBi
b29sIHRhYnNUb0xpbmtzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFdlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShy
ZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODYsNyArMjg2LDcgQEAgYm9vbCBDaHJvbWU6OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJh
bWUqIAogCiAgICAgcmV0dXJuIG9rOwogfQotCisgCiB2b2lkIENocm9tZTo6c2V0U3RhdHVzYmFy
VGV4dChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc3RhdHVzKQogewogICAgIEFTU0VSVChm
cmFtZSk7CkBAIC0zMDIsNiArMzAyLDI2IEBAIGJvb2wgQ2hyb21lOjpzaG91bGRJbnRlcnJ1cHRK
YXZhU2NyaXB0KCkKICAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEludGVycnVwdEphdmFTY3Jp
cHQoKTsKIH0KIAordm9pZCBDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKEZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHRpdGxlKSAKK3sKKyAgICAvLyBEZWZlciBsb2FkcyBpbiBjYXNlIHRoZSBjbGllbnQgbWV0
aG9kIHJ1bnMgYSBuZXcgZXZlbnQgbG9vcCB0aGF0IHdvdWxkCisgICAgLy8gb3RoZXJ3aXNlIGNh
dXNlIHRoZSBsb2FkIHRvIGNvbnRpbnVlIHdoaWxlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgZXhl
Y3V0aW5nIEphdmFTY3JpcHQuCisgICAgUGFnZUdyb3VwTG9hZERlZmVycmVyIGRlZmVycmVyKG1f
cGFnZSwgdHJ1ZSk7CisgICAgICAgCisgICAgQVNTRVJUKGZyYW1lKTsKKyAgICBtX2NsaWVudC0+
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoZnJhbWUsIGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZp
ZWRCeUVuY29kaW5nKHNjaGVtZSksICB1cmwsICBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVk
QnlFbmNvZGluZyh0aXRsZSkpOworfQorCit2b2lkIENocm9tZTo6cmVnaXN0ZXJDb250ZW50SGFu
ZGxlcihGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIC8vIERlZmVyIGxvYWRzIGluIGNhc2Ug
dGhlIGNsaWVudCBtZXRob2QgcnVucyBhIG5ldyBldmVudCBsb29wIHRoYXQgd291bGQKKyAgICAv
LyBvdGhlcndpc2UgY2F1c2UgdGhlIGxvYWQgdG8gY29udGludWUgd2hpbGUgd2UncmUgaW4gdGhl
IG1pZGRsZSBvZiBleGVjdXRpbmcgSmF2YVNjcmlwdC4KKyAgICBQYWdlR3JvdXBMb2FkRGVmZXJy
ZXIgZGVmZXJyZXIobV9wYWdlLCB0cnVlKTsKKworICAgIEFTU0VSVChmcmFtZSk7CisgICAgbV9j
bGllbnQtPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoZnJhbWUsIGZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKG1pbWVUeXBlKSwgIHVybCwgIGZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKHRpdGxlKSk7Cit9ICAgIAorCiBJbnRSZWN0IENocm9tZTo6d2lu
ZG93UmVzaXplclJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC0+d2luZG93UmVz
aXplclJlY3QoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDUwMDA0KQorKysgV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNldFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25zdCBTdHJpbmcm
KTsKICAgICAgICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAKKyAgICAgICAg
dm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIHZvaWQg
cmVnaXN0ZXJDb250ZW50SGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKwogICAgICAgICBJbnRSZWN0
IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFT
Y3JpcHQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0YWJzVG9MaW5rcygpIGNvbnN0ID0g
MDsKLQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyKEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbnRlbnRIYW5kbGVyKEZyYW1lKiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAg
IAogICAgICAgICB2aXJ0dWFsIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdCA9IDA7
CiAKICAgICAgICAgLy8gTWV0aG9kcyB1c2VkIGJ5IEhvc3RXaW5kb3cuCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY5LDQgKzE2OSwyOCBAQCB2b2lkIE5hdmlnYXRvcjo6Z2V0U3RvcmFn
ZVVwZGF0ZXMoKQogfQogI2VuZGlmCiAKK3ZvaWQgTmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29s
SGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBwYWdlLT5jaHJvbWUoKS0+cmVnaXN0ZXJQcm90b2NvbEhh
bmRsZXIobV9mcmFtZSwgc2NoZW1lLCB1cmwsIHRpdGxlKTsKK30KKwordm9pZCBOYXZpZ2F0b3I6
OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAg
ICAgICByZXR1cm47CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBwYWdlLT5jaHJvbWUoKS0+
cmVnaXN0ZXJDb250ZW50SGFuZGxlcihtX2ZyYW1lLCBtaW1lVHlwZSwgdXJsLCB0aXRsZSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHJldmlzaW9uIDUwMDA0
KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1
OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmVsaW5xdWlzaGVzIHRoZSBz
dG9yYWdlIGxvY2ssIGlmIG9uZSBleGlzdHMuCiAgICAgICAgIHZvaWQgZ2V0U3RvcmFnZVVwZGF0
ZXMoKTsKICNlbmRpZgorICAgICAgICAKKyAgICAgICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFu
ZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOworICAgICAgICB2b2lkIHJlZ2lzdGVyQ29udGVudEhhbmRsZXIoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF2aWdhdG9yKEZyYW1lKik7CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmlkbAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOSBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBkZWZpbmVk
KEVOQUJMRV9ET01fU1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdFCiAgICAgICAgIHZvaWQg
Z2V0U3RvcmFnZVVwZGF0ZXMoKTsKICNlbmRpZgorCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIoaW4gRE9NU3RyaW5nIHNjaGVtZSwgaW4gRE9NU3RyaW5nIHVybCwgaW4gRE9N
U3RyaW5nIHRpdGxlKTsKKyAgICAgICAgdm9pZCByZWdpc3RlckNvbnRlbnRIYW5kbGVyKGluIERP
TVN0cmluZyBtaW1lVHlwZSwgaW4gRE9NU3RyaW5nIHVybCwgaW4gRE9NU3RyaW5nIHRpdGxlKTsK
ICAgICB9OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDAwNCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA5LTEwLTIzICBCcmFk
bGV5IEdyZWVuICA8YnJnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGluZyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgaW1w
bGVtZW50YXRpb24gb2Ygd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlciBh
bmQgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyLgorICAgICAgICAKKyAg
ICAgICAgVGhlcmUgaXMgYSBkZWZhdWx0IGltcGxpbWVudGF0aW9uIGZvciB0aGVzZSBBUElzLCBo
ZW5jZSBhbGwgcGxhdGZvcm1zIHdpdGggdGhlIG5hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3QgYW5kIHdpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkIHRlc3RzIG5lZWRlZCB0byBiZSB1
cGRhdGVkLiAgV2hpbGUgaXNvbGF0ZWRXb3JsZHMgaGFzIGEgd2luZG93LXByb3BlcnRpZXMtZXhw
ZWN0ZWQgdGVzdCwgaXQgaGFzIG5vIHdpbmRvdyBvYmplY3QgYW5kIGhlbmNlIGRvZXMgbm90IG5l
ZWQgdG8gYmUgdXBkYWV0ZC4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJv
cGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFj
aGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0
YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorCiAyMDA5LTEwLTIzICBKb24gSG9uZXljdXR0
ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgTVNBQTogTmFtZSBmb3IgaW1hZ2Ug
ZWxlbWVudHMgc2hvdWxkIHVzZSBhbHQgYXR0cmlidXRlIHRleHQKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNo
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAwMDQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9u
YXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMyw2ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdp
bnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBp
cyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMg
T0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAg
LTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lu
cyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlz
IE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3Iu
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBP
SwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDAwNCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE2ODgsNiArMTY4OCw4IEBAIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbGF0Zm9y
bSBbc3RyaW4KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbHVnaW5zIFtwcmludGVkIGFib3Zl
IGFzIHdpbmRvdy5QbHVnaW5BcnJheS5wcm90b3R5cGVdCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRp
b24ucHJvZHVjdCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3RTdWIg
W3N0cmluZ10KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlckNvbnRlbnRIYW5kbGVy
IFtmdW5jdGlvbl0KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlclByb3RvY29sSGFu
ZGxlciBbZnVuY3Rpb25dCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udXNlckFnZW50IFtzdHJp
bmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yIFtzdHJpbmddCiB3aW5kb3cuY2xp
ZW50SW5mb3JtYXRpb24udmVuZG9yU3ViIFtzdHJpbmddCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAwMDQpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQCBuYXZpZ2F0
b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJv
ZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxl
cigpIGlzIE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlz
IE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAwMDQpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY1Nyw2ICsxNjU3LDggQEAgd2luZG93LmNsaWVudElu
Zm9ybWF0aW9uLnBsYXRmb3JtIFtzdHJpbgogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBsdWdp
bnMgW3ByaW50ZWQgYWJvdmUgYXMgd2luZG93LlBsdWdpbkFycmF5LnByb3RvdHlwZV0KIHdpbmRv
dy5jbGllbnRJbmZvcm1hdGlvbi5wcm9kdWN0IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3Jt
YXRpb24ucHJvZHVjdFN1YiBbc3RyaW5nXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lz
dGVyQ29udGVudEhhbmRsZXIgW2Z1bmN0aW9uXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyIFtmdW5jdGlvbl0KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlv
bi51c2VyQWdlbnQgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3IgW3N0
cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3JTdWIgW3N0cmluZ10KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNTAwMDQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
bGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBP
SwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZp
Z2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIo
KSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmln
YXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52
ZW5kb3JTdWIgaXMgT0sKQEAgLTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9L
CiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmln
YXRvci5wcm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigp
IGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdh
dG9yLnVzZXJBZ2VudCBpcyBPSwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZl
bmRvclN1YiBpcyBPSwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41756</attachid>
            <date>2009-10-23 15:54:45 -0700</date>
            <delta_ts>2009-10-27 15:52:04 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handler.txt</filename>
            <type>text/plain</type>
            <size>13323</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDktMTAtMjMgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRlaCBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorCisgICAgICAgIFVwZGF0ZWQgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHdpbmRvdy5jbGllbnRJ
bmZvcm1hdGlvbiBhbmQgbmF2aWdhdG9yIG9iamVjdHMuCisKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6cnVuSmF2
YVNjcmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlD
aHJvbWVDbGllbnQ6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0No
cm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJ1bkphdmFTY3JpcHRSZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9D
aHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cnVuSmF2YVNj
cmlwdFJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50OjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3Iu
aWRsOgorCiAyMDA5LTEwLTIzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQW5vdGhlciBzaG90IGF0IGEgZml4ZWQgYnVpbGQuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVy
cnVwdEphdmFTY3JpcHQoKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyKEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRSZWdp
c3RlckNvbnRlbnRIYW5kbGVyKEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChj
b25zdCBTdHJpbmcmKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCB0YWJzVG9MaW5rcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiwyNiBAQCBi
b29sIENocm9tZTo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpCiAgICAgcmV0dXJuIG1fY2xp
ZW50LT5zaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiB9CiAKK3ZvaWQgQ2hyb21lOjpyZWdp
c3RlclByb3RvY29sSGFuZGxlcihGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkgCit7CisgICAgLy8gRGVmZXIg
bG9hZHMgaW4gY2FzZSB0aGUgY2xpZW50IG1ldGhvZCBydW5zIGEgbmV3IGV2ZW50IGxvb3AgdGhh
dCB3b3VsZAorICAgIC8vIG90aGVyd2lzZSBjYXVzZSB0aGUgbG9hZCB0byBjb250aW51ZSB3aGls
ZSB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGV4ZWN1dGluZyBKYXZhU2NyaXB0LgorICAgIFBhZ2VH
cm91cExvYWREZWZlcnJlciBkZWZlcnJlcihtX3BhZ2UsIHRydWUpOworICAgICAgIAorICAgIEFT
U0VSVChmcmFtZSk7CisgICAgbV9jbGllbnQtPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGZyYW1l
LCBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhzY2hlbWUpLCAgdXJsLCAg
ZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKK30KKwordm9p
ZCBDaHJvbWU6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3sK
KyAgICAvLyBEZWZlciBsb2FkcyBpbiBjYXNlIHRoZSBjbGllbnQgbWV0aG9kIHJ1bnMgYSBuZXcg
ZXZlbnQgbG9vcCB0aGF0IHdvdWxkCisgICAgLy8gb3RoZXJ3aXNlIGNhdXNlIHRoZSBsb2FkIHRv
IGNvbnRpbnVlIHdoaWxlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIEphdmFTY3Jp
cHQuCisgICAgUGFnZUdyb3VwTG9hZERlZmVycmVyIGRlZmVycmVyKG1fcGFnZSwgdHJ1ZSk7CisK
KyAgICBBU1NFUlQoZnJhbWUpOworICAgIG1fY2xpZW50LT5yZWdpc3RlckNvbnRlbnRIYW5kbGVy
KGZyYW1lLCBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhtaW1lVHlwZSks
ICB1cmwsICBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkpOwor
fSAgICAKKwogSW50UmVjdCBDaHJvbWU6OndpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9jbGllbnQtPndpbmRvd1Jlc2l6ZXJSZWN0KCk7CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lv
biA1MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0
LDYgKzExNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRTdGF0dXNi
YXJUZXh0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGJvb2wgc2hvdWxkSW50ZXJy
dXB0SmF2YVNjcmlwdCgpOwogCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIo
RnJhbWUqLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpOworICAgICAgICB2b2lkIHJlZ2lzdGVyQ29udGVudEhhbmRsZXIoRnJhbWUq
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSk7CisKICAgICAgICAgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0Owog
CiAgICAgICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gNTAwMDQpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMCw3ICsxMjAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkgPSAwOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgdGFic1RvTGlua3MoKSBjb25zdCA9IDA7Ci0KKyAgICAgICAgCisgICAgICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDb250ZW50SGFuZGxlcihGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICAKICAgICAgICAgdmlydHVhbCBJbnRSZWN0IHdp
bmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3QgPSAwOwogCiAgICAgICAgIC8vIE1ldGhvZHMgdXNlZCBi
eSBIb3N0V2luZG93LgpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHJldmlzaW9uIDUwMDA0KQorKysgV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw0ICsxNjksMjgg
QEAgdm9pZCBOYXZpZ2F0b3I6OmdldFN0b3JhZ2VVcGRhdGVzKCkKIH0KICNlbmRpZgogCit2b2lk
IE5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAgIGlmICghbV9m
cmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcGFnZS0+
Y2hyb21lKCktPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKG1fZnJhbWUsIHNjaGVtZSwgdXJsLCB0
aXRsZSk7Cit9CisKK3ZvaWQgTmF2aWdhdG9yOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCisgICAgcGFnZS0+Y2hyb21lKCktPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobV9mcmFt
ZSwgbWltZVR5cGUsIHVybCwgdGl0bGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5oCShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIFJlbGlucXVpc2hlcyB0aGUgc3RvcmFnZSBsb2NrLCBpZiBvbmUgZXhpc3RzLgog
ICAgICAgICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYKKyAgICAgICAgCisgICAg
ICAgIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdm9pZCByZWdp
c3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE5hdmln
YXRvcihGcmFtZSopOwpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwJKHJldmlzaW9uIDUwMDA0KQorKysgV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAg
bW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJM
RV9ET01fU1RPUkFHRQogICAgICAgICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYK
KworICAgICAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGluIERPTVN0cmluZyBzY2hl
bWUsIGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0aXRsZSk7CisgICAgICAgIHZvaWQg
cmVnaXN0ZXJDb250ZW50SGFuZGxlcihpbiBET01TdHJpbmcgbWltZVR5cGUsIGluIERPTVN0cmlu
ZyB1cmwsIGluIERPTVN0cmluZyB0aXRsZSk7CiAgICAgfTsKIAogfQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNTAwMDQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAwOS0xMC0yMyAgQnJhZGxleSBHcmVlbiAgPGJyZ0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRp
bmcgdGVzdCBleHBlY3RhdGlvbnMgZm9yIGltcGxlbWVudGF0aW9uIG9mIHdpbmRvdy5uYXZpZ2F0
b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgYW5kIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJD
b250ZW50SGFuZGxlci4KKyAgICAgICAgCisgICAgICAgIFRoZXJlIGlzIGEgZGVmYXVsdCBpbXBs
aW1lbnRhdGlvbiBmb3IgdGhlc2UgQVBJcywgaGVuY2UgYWxsIHBsYXRmb3JtcyB3aXRoIHRoZSBu
YXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0IGFuZCB3aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZCB0ZXN0cyBuZWVkZWQgdG8gYmUgdXBkYXRlZC4gIFdoaWxlIGlzb2xhdGVkV29ybGRz
IGhhcyBhIHdpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkIHRlc3QsIGl0IGhhcyBubyB3aW5kb3cg
b2JqZWN0IGFuZCBoZW5jZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHVwZGFldGQuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1k
ZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLWxl
b3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoK
KwogMjAwOS0xMC0yMyAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1TQUE6IE5hbWUgZm9yIGltYWdlIGVsZW1lbnRzIHNob3VsZCB1c2UgYWx0IGF0dHJp
YnV0ZSB0ZXh0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQt
bm8tY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMDA0
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsOCBAQCBuYXZpZ2F0b3IucGxh
dGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBp
cyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRl
bnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlz
IE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBu
YXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCkBAIC0yOSw2ICszMSw4IEBAIG5hdmlnYXRvci5wbGF0
Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlz
IE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVu
dEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMg
T0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5h
dmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNTAwMDQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjg4LDYgKzE2ODgsOCBAQCB3aW5k
b3cuY2xpZW50SW5mb3JtYXRpb24ucGxhdGZvcm0gW3N0cmluCiB3aW5kb3cuY2xpZW50SW5mb3Jt
YXRpb24ucGx1Z2lucyBbcHJpbnRlZCBhYm92ZSBhcyB3aW5kb3cuUGx1Z2luQXJyYXkucHJvdG90
eXBlXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3QgW3N0cmluZ10KIHdpbmRvdy5j
bGllbnRJbmZvcm1hdGlvbi5wcm9kdWN0U3ViIFtzdHJpbmddCit3aW5kb3cuY2xpZW50SW5mb3Jt
YXRpb24ucmVnaXN0ZXJDb250ZW50SGFuZGxlciBbZnVuY3Rpb25dCit3aW5kb3cuY2xpZW50SW5m
b3JtYXRpb24ucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgW2Z1bmN0aW9uXQogd2luZG93LmNsaWVu
dEluZm9ybWF0aW9uLnVzZXJBZ2VudCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9u
LnZlbmRvciBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvclN1YiBbc3Ry
aW5nXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1k
ZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDUwMDA0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
ZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3Iu
cGx1Z2lucyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0
U3ViIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZp
Z2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2Vu
dCBpcyBPSwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBP
SwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDUwMDA0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2NTcs
NiArMTY1Nyw4IEBAIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbGF0Zm9ybSBbc3RyaW4KIHdp
bmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbHVnaW5zIFtwcmludGVkIGFib3ZlIGFzIHdpbmRvdy5Q
bHVnaW5BcnJheS5wcm90b3R5cGVdCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucHJvZHVjdCBb
c3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3RTdWIgW3N0cmluZ10KK3dp
bmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlckNvbnRlbnRIYW5kbGVyIFtmdW5jdGlvbl0K
K3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlclByb3RvY29sSGFuZGxlciBbZnVuY3Rp
b25dCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udXNlckFnZW50IFtzdHJpbmddCiB3aW5kb3cu
Y2xpZW50SW5mb3JtYXRpb24udmVuZG9yIFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRp
b24udmVuZG9yU3ViIFtzdHJpbmddCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVv
cGFyZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25h
dmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMDA0KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRl
dGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMs
OCBAQCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBu
YXZpZ2F0b3IucHJvZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmln
YXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclBy
b3RvY29sSGFuZGxlcigpIGlzIE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0
b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCkBAIC0yOSw2ICszMSw4
IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5h
dmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2aWdh
dG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRv
ci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sK
</data>
<flag name="review"
          id="23208"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41992</attachid>
            <date>2009-10-27 15:52:04 -0700</date>
            <delta_ts>2009-10-27 16:03:16 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handlers.txt</filename>
            <type>text/plain</type>
            <size>99892</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDE4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMDktMTAtMjcgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRoZSBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorICAgICAgICAKKyAgICAgICAgV2UgZG8gaG93ZXZlciBmb2xsb3cgdGhlIHNwZWNpZmljYXRp
b24gaW4gaW5zdXJpbmcgdGhhdCB0aGUgcmVzZXJ2ZWQKKyAgICAgICAgc2NoZW1lcyBhbmQgbWlt
ZVR5cGVzIGFyZSBub3QgcGFzc2VkIHRvIHRoZSBVQSBhcyBjdXN0bW8gaGFuZGxlcgorICAgICAg
ICByZWdpc3RyYXRpb24gdGVzdHMuICBXZSBhbHNvIGluc3VyZSB0aHQgdGhlICIlcyIgdG9rZW4g
aXMgcHJlc2VudCBhcworICAgICAgICByZXF1aXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4KKwor
ICAgICAgICBVcGRhdGVkIHRlc3QgZXhwZWN0YXRpb25zIGZvciB3aW5kb3cuY2xpZW50SW5mb3Jt
YXRpb24gYW5kIG5hdmlnYXRvcgorICAgICAgICBvYmplY3RzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2pzL3JlZ2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9q
cy9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJDb250ZW50SGFuZGxlcik6CisgICAg
ICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgor
ICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeUN1
c3RvbUhhbmRsZXJVUkwpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UHJvdG9jb2xIYW5kbGVy
U2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2NvbEhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UHJvdG9jb2xIYW5kbGVyTWltZVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKToK
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpmcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3I6Om9wdGlvbmFsR2VvbG9jYXRpb24pOgorICAgICAgICAqIHBh
Z2UvTmF2aWdhdG9yLmlkbDoKKwogMjAwOS0xMC0yNyAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpAQCAtMjgsMTc1
NCArODQsNiBAQAogICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUp
OgogICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlQ29udGV4dCk6CiAKLTIwMDktMTAtMjcgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBNYWMgYnVpbGQgZml4OiBh
IGZvcndhcmRpbmcgaGVhZGVyLgotCi0gICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0Rh
dGVJbnN0YW5jZUNhY2hlLmg6IEFkZGVkLgotCi0yMDA5LTEwLTI3ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIE5vIFJldmlldy4KLQotICAgICAgICBNYWtpbmcg
Zm9udFdlaWdodElzQm9sZCBzdGF0aWMgdG8gZml4IFNub3cgTGVvcGFyZCBidWlsZC4KLQotICAg
ICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
Zm9udFdlaWdodElzQm9sZCk6Ci0KLTIwMDktMTAtMjcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAg
V2ViS2l0IGNhbm5vdCByZW1vdmUgbmVzdGVkIGJvbGQgdGFncwotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA3ODQKLQotICAgICAgICBUaGlzIHBhdGNo
IG1vZGlmaWVzIGdldFByb3BlcnRpZXNOb3RJbkNvbXB1dGVkU3R5bGUgc28gdGhhdCBpdCBjb21w
YXJlcyBmb250LXdlaWdodAotICAgICAgICBtb3JlIGZsZXhpYmx5LiBJbnN0ZWFkIG9mIGNvbXBh
cmluZyBjc3NUZXh0LCBpdCB1c2VzIGZvbnRXZWlnaHRJc0JvbGQgd2hpY2ggY29udmVydHMKLSAg
ICAgICAgYWxsIGZvbnQgd2VpZ2h0cyB0byBlaXRoZXIgYm9sZCBvciB1bmJvbGQgc3RhdGUuCi0K
LSAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OmZvbnRXZWlnaHRJc0JvbGQpOgotICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvcGVydGllc05v
dEluQ29tcHV0ZWRTdHlsZSk6IFJlbW92ZXMgZm9udC13ZWlnaHQgcHJvcGVydHkKLSAgICAgICAg
aWYgdHdvIHN0eWxlIGhhdmUgdGhlIHNhbWUgdmFsdWUgdW5kZXIgZ2V0Rm9udFdlaWdodFZhbHVl
Ci0KLTIwMDktMTAtMjcgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9raWEuY29tPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIEdpdmUgYW4gYWJpbGl0
eSB0byBXZWJLaXQgdG8gZnJlZSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBwb2ludGVycwotICAgICAg
ICBiZWZvcmUgcXVpdC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3OTgwCi0KLSAgICAgICAgTm8gbmV3IHRlc3RzIGZvciB0aGlzIGFzIHRoZSBjaGFu
Z2UgZG9lcyBub3QgYWZmZWN0IFdlYktpdAotICAgICAgICBmdW5jdGlvbmFsaXR5LCBidXQgb25s
eSBtZW1vcnkgdXNhZ2UuCi0KLSAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0
cmFzLmg6Ci0gICAgICAgIEFsbG93ZWQgZm9yIHRoZSBvdmVycmlkZSBvZiBERUZJTkVfU1RBVElD
X0xPQ0FMIHZpYSBjb21waWxlciAKLSAgICAgICAgY29tbWFuZGxpbmUgb3B0aW9ucyBvciBlbHNl
d2hlcmUgaW4gdGhlIGNvZGUuIFVzZWZ1bCBmb3IgCi0gICAgICAgIGltcGxlbWVudGluZyBjdXN0
b20gYnVpbGRzIHRoYXQgZnJlZSByZXNvdXJjZXMgYWxsb2NhdGVkIHZpYQotICAgICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMLgotCi0yMDA5LTEwLTI3ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBj
aHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgQnVpbGQgZml4LCBubyByZXZpZXcgbmVlZGVkLgotCi0g
ICAgICAgIEZpeGluZyB0aGUgQlVJTEQuIG1fZXN0aW1hdGVkU2l6ZSBpbiBEYXRhYmFzZS5oIHNo
b3VsZCBiZSBvZiB0eXBlCi0gICAgICAgICd1bnNpZ25lZCBsb25nJyBpbnN0ZWFkIG9mICd1bnNp
Z25lZCBsb25nIGxvbmcnLgotCi0gICAgICAgIE5vIHRlc3RzIHJlcXVpcmVkLgotCi0gICAgICAg
ICogc3RvcmFnZS9EYXRhYmFzZS5oOgotCi0yMDA5LTEwLTI3ICBEdW1pdHJ1IERhbmlsaXVjICA8
ZHVtaUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQot
ICAgICAgICBSZWZhY3RvcmluZyB0aGUgRGF0YWJhc2UgY2xhc3MgdG8gbm90IGRlcGVuZCBvbgot
ICAgICAgICBPcmlnaW5RdW90YU1hbmFnZXIuIEFsc28sIGFkZGluZyBhIFNlY3VyaXR5T3JpZ2lu
IGNvcHkgdG8gZWFjaAotICAgICAgICBEYXRhYmFzZSBpbnN0YW5jZSwgdGhhdCBpcyBzYWZlIHRv
IHVzZSBvbiB0aGUgZmlsZQotICAgICAgICB0aHJlYWQuIEZpbmFsbHksIGFkZGluZyBuZXcgc2lt
cGxlIGZpZWxkcyBhbmQgZ2V0dGVycyB0byB0aGUKLSAgICAgICAgRGF0YWJhc2Ugb2JqZWN0IGZv
ciBzdG9yaW5nL2dldHRpbmcgdGhlIGRpc3BsYXkgbmFtZSBhbmQgZXN0aW1hdGVkCi0gICAgICAg
IHNpemUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIGluIHRoZSBvcGVuRGF0YWJhc2UoKSBjYWxsLgot
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDU0OAot
Ci0gICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5oOgotICAgICAgICAqIHN0b3JhZ2UvRGF0
YWJhc2UuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6IFN0
b3JpbmcgdGhlIGRpc3BsYXkgbmFtZSBhbmQKLSAgICAgICAgdGhlIGVzdGltYXRlZCBzaXplIGlu
IHRoZSBEYXRhYmFzZSBvYmplY3QuCi0gICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6RGF0YWJh
c2UpOiBTdG9yaW5nIHRoZSBkaXNwbGF5IG5hbWUgYW5kIHRoZQotICAgICAgICBlc3RpbWF0ZWQg
c2l6ZSBpbiB0aGUgRGF0YWJhc2Ugb2JqZWN0LCBhcyB3ZWxsIGFzIGEgU2VjdXJpdHlPcmlnaW4K
LSAgICAgICAgaW5zdGFuY2UgdGhhdCBpcyBzYWZlIHRvIHVzZSBvbiB0aGUgREIgdGhyZWFkLgot
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om1heGltdW1TaXplKTogRGVsZWdhdGUgdGhlIGNh
bGwgdG8KLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjpnZXRNYXhTaXplRm9yRGF0YWJhc2UoKS4K
LSAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpkYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2lu
KTogUmV0dXJuIHRoZQotICAgICAgICBTZWN1cml0eU9yaWdpbiBpbnN0YW5jZSB0aGF0J3Mgc2Fm
ZSB0byB1c2Ugb24gdGhlIERCIHRocmVhZC4KLSAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0
aHJlYWRTYWZlU2VjdXJpdHlPcmlnaW4pOiBSZXR1cm4gdGhlCi0gICAgICAgIFNlY3VyaXR5T3Jp
Z2luIGluc3RhbmNlIHRoYXQncyBzYWZlIHRvIHVzZSBvbiB0aGUgY3VycmVudCB0aHJlYWQuCi0g
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZGlzcGxheU5hbWUpOiBSZXR1cm4gdGhlIGRpc3Bs
YXkgbmFtZQotICAgICAgICBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgaW4gdGhlIG9wZW5EYXRhYmFz
ZSgpIGNhbGwuCi0gICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZXN0aW1hdGVkU2l6ZSk6IFJl
dHVybiB0aGUgZXN0aW1hdGVkIHNpemUKLSAgICAgICAgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyIGlu
IHRoZSBvcGVuRGF0YWJhc2UoKSBjYWxsLgotICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmZp
bGVOYW1lKTogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHdoZXJlCi0gICAgICAgIHRoZSBj
dXJyZW50IERhdGFiYXNlIGlzIHRvcmVkLgotICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaDoK
LSAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmdldE1heFNpemVGb3JEYXRhYmFzZSk6IFJldHVybnMgdGhlCi0g
ICAgICAgIG1heGltdW0gc2l6ZSBmb3IgYSBEQiBmaWxlIGJhc2VkIG9uIHRoZSBjdXJyZW50IHNp
emUgb2YgdGhhdCBmaWxlCi0gICAgICAgIGFuZCB0aGUgc3BhY2UgYXZhaWxhYmxlIGZvciB0aGF0
IG9yaWdpbi4KLSAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5oOgotICAgICAgICAq
IHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwOgotICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25DbGllbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25DbGllbnQ6
OmRpZENvbW1pdFRyYW5zYWN0aW9uKTogVXNlIHRoZQotICAgICAgICBjb3JyZWN0IFNlY3VyaXR5
T3JpZ2luIGluc3RhbmNlLgotCi0yMDA5LTEwLTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNr
QHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgotCi0g
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFByZXR0eSBQcmludCBhbGwgSFRNTCBDb2xsZWN0aW9uIFR5
cGVzIGxpa2Ugd2UgZG8gZm9yIE5vZGVMaXN0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDcwOQotCi0gICAgICAgIFRlc3Q6IGluc3BlY3Rvci9jb25z
b2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sCi0KLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0luamVjdGVkU2NyaXB0LmpzOgotICAgICAgICAoT2JqZWN0LnR5cGUpOiBjaGVjayBmb3Ig
aW5zdGFuY2VzIG9mIEhUTUxDb2xsZWN0aW9uIGxpa2Ugd2UgZG8gZm9yIE5vZGVMaXN0Ci0gICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6IGFkZGVkIFdlYkluc3BlY3Rv
ci5wZW5kaW5nRGlzcGF0Y2hlcyBjb3VudGVyCi0gICAgICAgIChXZWJJbnNwZWN0b3IuZGlzcGF0
Y2gpOiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBkaXNwYXRjaCBjb3VudGVyCi0gICAgICAgIChX
ZWJJbnNwZWN0b3IucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyk6IHJ1biB3aGVuIHRoZXJlIGFy
ZSBubyBtb3JlIGRpc3BhdGNoZXMKLQotMjAwOS0xMC0yNyAgS2VsbHkgTm9ydG9uICA8a25vcnRv
bkBnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQot
ICAgICAgICBBZGRzIFhNTEh0dHBSZXF1ZXN0IHN1cHBvcnQgdG8gSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMw
NTc4Ci0KLSAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsQ2hhbmdlWEhSUmVh
ZHlTdGF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRD
aGFuZ2VYSFJSZWFkeVN0YXRlKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OndpbGxMb2FkWEhSKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZExvYWRYSFIpOgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Lmg6Ci0gICAgICAgIChXZWJDb3JlOjopOgotICAgICAgICAqIGluc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwOgotICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVYSFJSZWFkeVN0YXRlQ2hhbmdlVGltZWxpbmVSZWNvcmQpOgotICAgICAg
ICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVYSFJMb2FkVGltZWxpbmVS
ZWNvcmQpOgotICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaDoKLSAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lQWdlbnQuanM6Ci0gICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjYWxsUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKToKLQotMjAwOS0xMC0yNyAgRW5yaWNhIENh
c3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBl
dGVyc29uLgotCi0gICAgICAgIFJFR1JFU1NJT04gKFNhZmFyaSA0LjAuMy1Ub1QpOiBBZnRlciBw
cmVzc2luZyBTaGlmdC1QYWdlRG93biwgcHJlc3NpbmcgU2hpZnQtVXAgCi0gICAgICAgIGV4dGVu
ZHMgdGhlIHRvcCBvZiB0aGUgc2VsZWN0aW9uIHVwd2FyZHMgKGJ1dCBzaG91bGQgc2hyaW5rIHRo
ZSBzZWxlY3Rpb24gaW5zdGVhZCkKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNjkwNzU+Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTk4MQotCi0g
ICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKLSAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeSk6IEFkZGVkIHNldHRpbmcgbV9sYXN0Q2hh
bmdlV2FzSG9yaXpvbnRhbEV4dGVuc2lvbi4KLQotMjAwOS0xMC0yNyAgQnJpYW4gV2VpbnN0ZWlu
ICA8YndlaW5zdGVpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgVGlt
IEhhdGNoZXIuCi0gICAgICAgIAotICAgICAgICBSZW1vdmVkIGFuIGV4dHJhIGNvbnNvbGUubG9n
IGZyb20gRWxlbWVudHNUcmVlT3V0bGluZS4KLQotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNUcmVlT3V0bGluZS5qczoKLQotMjAwOS0xMC0yNyAgS2Vpc2hpIEhhdHRvcmkg
IDxjYXNleS5oYXR0b3JpQGdtYWlsLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCi0KLSAgICAgICAgUmV3cm90ZSBKYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxp
Z2h0ZXIgdG8gYmUgbW9yZSBhY2N1cmF0ZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjcxNDcKLQotICAgICAgICBUZXN0czogTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC5odG1sCi0KLSAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6Ci0gICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoKLSAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZh
U2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvY2Vzcyk6IEFkZGVkLiBQcm9jZXNzZXMg
MTAwIHRva2VucyBhdCBhIHRpbWUuCi0gICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNv
dXJjZVN5bnRheEhpZ2hsaWdodGVyLmxleCk6IEFkZGVkLiBTY2FucyBmb3IgYSB0b2tlbi4KLSAg
ICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4SGlnaGxpZ2h0ZXIuYXBw
ZW5kTm9uVG9rZW4pOiBBZGRlZC4gQXBwZW5kcyB0aGUgbm9uLXRva2VuIGNoYXJhY3RlcnMgdGhh
dCBsZXggaWdub3JlZC4KLSAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3lu
dGF4SGlnaGxpZ2h0ZXIuc3ludGF4SGlnaGxpZ2h0Tm9kZSk6IEFkZGVkLiBUbyBzeW50YXggaGln
aGxpZ2h0IG5vZGUgaW4gRWxlbWVudHNUcmVlT3V0bGluZS4KLQotMjAwOS0xMC0yNyAgTWFkcyBB
Z2VyICA8YWdlckBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KLQotICAgICAgICBbVjhdIE1pc3NpbmcgbnVsbCBjaGVjayBhZnRlciBzdHJpbmcgY29udmVy
c2lvbiBpbiBlcnJvciByZXBvcnRpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMwNzc0Ci0KLSAgICAgICAgQWRkIG51bGwgY2hlY2sgYWZ0ZXIgc3Ry
aW5nIGNvbnZlcnNpb24gaW4gZXJyb3IgcmVwb3J0aW5nIGNvZGUuCi0gICAgICAgIFRvU3RyaW5n
IGNvbnZlcnNpb24gY2FuIGZhaWwgZm9yIGluc3RhbmNlIHdoZW4gYW4gZXhjZXB0aW9uIGlzCi0g
ICAgICAgIHRocm93biBkdXJpbmcgY29udmVyc2lvbi4KLQotICAgICAgICBUZXN0OiBmYXN0L2Rv
bS9lcnJvci10by1zdHJpbmctc3RhY2stb3ZlcmZsb3cuaHRtbAotCi0gICAgICAgICogYmluZGlu
Z3MvdjgvVjhVdGlsaXRpZXMuY3BwOgotICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9u
KToKLQotMjAwOS0xMC0yNyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgVXNlIGEgcGFpciBv
ZiBtYXBzIHRvIHN0b3JlIEdlb2xvY2F0aW9uIHdhdGNoZXJzLgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxNzgKLQotICAgICAgICBUaGUgcGFpciBv
ZiBtYXBzIGFsbG93cyB1cyB0byBsb29rIHVwIGEgd2F0Y2hlciBlaXRoZXIgYnkgaXRzIElEIG9y
IGJ5IGl0cyBHZW9Ob3RpZmllciBvYmplY3QuCi0gICAgICAgIFRoZSBhYmlsaXR5IHRvIGxvb2sg
dXAgYnkgYSB3YXRjaGVyIGJ5IGl0cyBHZW9Ob3RpZmllciBvYmplY3Qgd2lsbCBiZSByZXF1aXJl
ZCB3aGVuIGltcGxlbWVudGluZwotICAgICAgICBHZW9sb2NhdGlvbjo6ZmF0YWxFcnJvck9jY3Vy
cmVkLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3OTQ0Ci0K
LSAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmNwcDogTW9kaWZpZWQuCi0gICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbjo6V2F0Y2hlcnM6OnNldCk6IEFkZGVkLiBBZGRzIGEgd2F0Y2hlciB3
aXRoIHRoZSBnaXZlbiBJRC4KLSAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpXYXRjaGVy
czo6cmVtb3ZlKTogQWRkZWQuIFJlbW92ZXMgYSB3YXRjaGVyIGJ5IElELgotICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OldhdGNoZXJzOjpyZW1vdmUpOiBBZGRlZC4gUmVtb3ZlcyBhIHdh
dGNoZXIgYnkgR2VvTm90aWZpZXIgb2JqZWN0LgotICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b246OldhdGNoZXJzOjpjbGVhcik6IEFkZGVkLiBSZW1vdmVzIGFsbCB3YXRjaGVycy4KLSAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpXYXRjaGVyczo6aXNFbXB0eSk6IEFkZGVkLiBEZXRl
cm1pbmVzIGlmIHRoZXJlIGFyZSBubyB3YXRjaGVycy4KLSAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjpXYXRjaGVyczo6Z2V0Tm90aWZpZXJzVmVjdG9yKTogQWRkZWQuIEdldHMgYSB2ZWN0
b3Igb2YgdGhlIEdlb05vdGlmaWVyIG9iamVjdHMuCi0gICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvbjo6d2F0Y2hQb3NpdGlvbik6IE1vZGlmaWVkLiBSZW5hbWUgd2F0Y2hlciBpZGVudGlmaWVy
IHN0YXRpYyB2YXJpYWJsZS4KLSAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wVGlt
ZXJzRm9yV2F0Y2hlcnMpOiBNb2RpZmllZC4gVXNlIFdhdGNoZXJzOjpnZXROb3RpZmllcnNWZWN0
b3IuCi0gICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6aGFuZGxlRXJyb3IpOiBNb2RpZmll
ZC4gVXNlIFdhdGNoZXJzOjpnZXROb3RpZmllcnNWZWN0b3IuCi0gICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6bWFrZVN1Y2Nlc3NDYWxsYmFja3MpOiBNb2RpZmllZC4gVXNlIFdhdGNoZXJz
OjpnZXROb3RpZmllcnNWZWN0b3IuCi0gICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5oOiBNb2Rp
ZmllZC4gQWRkcyBHZW9sb2NhdGlvbjo6V2F0Y2hlcnMgY2xhc3MuCi0KLTIwMDktMTAtMjcgIEpl
cmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgotCi0gICAgICAgIFtWOF0gRE9NIFN0b3JhZ2UgcnVudGltZSBmbGFn
IHNob3VsZCBkZWZhdWx0IHRvIG9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMDgyOAotCi0gICAgICAgIFRoZSBET00gU3RvcmFnZSBydW50aW1lIGZs
YWcgd2FzIHN1cHBvc2VkIHRvIGRlZmF1bHQgdG8gb24uICBJIGFjY2lkZW50YWxseQotICAgICAg
ICBjaGFuZ2VkIHRoZSBsb2dpYyB0byBkZWZhdWx0IHRvIGZhbHNlIHdoZW4gSSBtb3ZlZCB0aGUg
ZmxhZy4KLQotICAgICAgICAqIGJpbmRpbmdzL3Y4L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3Bw
OgotCi0yMDA5LTEwLTI3ICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KLQotICAgICAgICBGaXggY3Jhc2gg
Zm91bmQgaW4gY2hyb21pdW0gdGVzdF9zaGVsbC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODA4Ci0KLSAgICAgICAgV2hlbiBXZWJTb2NrZXQgaXMg
ZGVsZXRlZCB3aXRob3V0IGNsb3NlLCB3ZWJraXQgd291bGQgY3Jhc2gKLSAgICAgICAgd2hlbiBp
dCBoYW5kbGVzIGRpZENsb3NlLgotCi0gICAgICAgIENoZWNrIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgYmVmb3JlIHBvc3QgdGFzayBmb3IgZXZlbnQuCi0gICAgICAgIFVzZSBXZWJTb2NrZXRDaGFu
bmVsOjpkaXNjb25uZWN0KCkgaW5zdGVhZCBvZiBjbG9zZSgpIGluIFdlYlNvY2tldAotICAgICAg
ICBkZXN0cnVjdG9yLCBzbyB0aGF0IFdlYlNvY2tldENoYW5uZWwgc2hvdWxkIG5vdCBjYWxsIGRl
bGV0ZWQgV2ViU29ja2V0Ci0gICAgICAgIGJhY2sgaW4gZGlkQ2xvc2UoKS4KLSAgICAgICAgVG8g
bWFrZSBzdXJlIFdlYlNvY2tldENoYW5uZWwgYWxpdmUgd2hpbGUgaXQgaXMgcHJvY2Vzc2luZyBX
ZWJTb2NrZXQKLSAgICAgICAgcHJvdG9jb2wgb3ZlciBTb2NrZXRTdHJlYW1IYW5kbGUsIHJlZigp
IGluIGNvbm5lY3QoKSBhbmQgZGVyZWYoKSBpbgotICAgICAgICBkaWRDbG9zZSgpLgotCi0gICAg
ICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Ojp+V2ViU29ja2V0KToKLSAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ29ubmVj
dCk6Ci0gICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKToKLSAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ2xvc2UpOgotICAgICAgICAqIHdlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpjb25uZWN0KToKLSAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpc2Nv
bm5lY3QpOgotICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2UpOgot
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURhdGEpOgotICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgotCi0yMDA5LTEwLTI3ICBEYW4g
QmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCi0KLSAgICAgICAgVXBkYXRlZCBBcHBsZSBsaWNlbnNlCi0KLSAgICAgICAgKiBMSUNF
TlNFLUFQUExFOgotCi0yMDA5LTEwLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KLQotICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgUmUt
ZW5hYmxlIHRoZSBjaGVjayB0aGF0IGRpc2FsbG93cyBwYWdlcyB3aXRoIHVubG9hZCBoYW5kbGVy
cyBpbiB0aGUgcGFnZSBjYWNoZS4KLQotICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5NjQ4NT4g
YW5kIGh0dHA6Ly93ZWJraXQub3JnL2IvMjkwMjEgCi0KLSAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbkNhY2hlUGFnZUNv
bnRhaW5pbmdUaGlzRnJhbWUpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvZ0Nh
bkNhY2hlRnJhbWVEZWNpc2lvbik6Ci0KLTIwMDktMTAtMjcgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgotCi0gICAgICAgIFJlbW92ZSBtb3JlIGVtcHR5IGZpbGVzIHRoYXQg
ZGlkbid0IGdldCByZW1vdmVkIGVhcmxpZXIuCi0KLSAgICAgICAgKiBpbnNwZWN0b3IvRE9NRGlz
cGF0Y2hUaW1lbGluZUl0ZW0uY3BwOiBSZW1vdmVkLgotICAgICAgICAqIGluc3BlY3Rvci9ET01E
aXNwYXRjaFRpbWVsaW5lSXRlbS5oOiBSZW1vdmVkLgotCi0yMDA5LTEwLTI3ICBBbmRyYXMgQmVj
c2kgIDxiZWNzaS5hbmRyYXNAc3R1ZC51LXN6ZWdlZC5odT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBUb3IgQXJuZSBWZXN0YsO4LgotCi0gICAgICAgIFtRdF0gRml4IGFzc2VydGlvbiBjcmFzaGVz
IGludHJvZHVjZWQgYnkgY2hhbmdlcyBtYWRlIGluIHI1MDExMC4KLQotICAgICAgICAqIGRvbS9Y
TUxUb2tlbml6ZXJRdC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnBhcnNl
RW5kRWxlbWVudCk6IG9ubHkgY2FsbCBwb3BDdXJyZW50Tm9kZSgpIGlmIHRoZXJlIGFyZSBub2Rl
cyBsZWZ0IGluIHRoZSBzdGFjay4KLQotMjAwOS0xMC0yNyAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIGVtcHR5IGZpbGVzIHRoYXQgZGlkbid0
IGdldCByZW1vdmVkIGVhcmxpZXIuCi0KLSAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVJdGVt
LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVJdGVtLmg6IFJlbW92
ZWQuCi0KLTIwMDktMTAtMjcgIEpvYW5tYXJpZSBEaWdncyAgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgotCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUzNAotICAgICAgICBbR1RLXSBP
YmplY3RzIG9mIFJPTEVfVEFCTEUgc2hvdWxkIGltcGxlbWVudCB0aGUgYWNjZXNzaWJsZSB0YWJs
ZSBpbnRlcmZhY2UKLQotICAgICAgICBGaXJzdCBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBv
ZiBBdGtUYWJsZS4KLQotICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQXRrLmNwcDoKLSAgICAgICAgKGdldENlbGwpOgotICAgICAgICAoZ2V0Q2Vs
bEluZGV4KToKLSAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RhYmxlX3JlZl9hdCk6Ci0gICAg
ICAgICh3ZWJraXRfYWNjZXNzaWJsZV90YWJsZV9nZXRfaW5kZXhfYXQpOgotICAgICAgICAod2Vi
a2l0X2FjY2Vzc2libGVfdGFibGVfZ2V0X25fY29sdW1ucyk6Ci0gICAgICAgICh3ZWJraXRfYWNj
ZXNzaWJsZV90YWJsZV9nZXRfbl9yb3dzKToKLSAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3Rh
YmxlX2dldF9jb2x1bW5fZXh0ZW50X2F0KToKLSAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3Rh
YmxlX2dldF9yb3dfZXh0ZW50X2F0KToKLSAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RhYmxl
X2dldF9yb3dfaGVhZGVyKToKLSAgICAgICAgKGF0a190YWJsZV9pbnRlcmZhY2VfaW5pdCk6Ci0g
ICAgICAgIChBdGtJbnRlcmZhY2VzSW5pdEZ1bmN0aW9ucyk6Ci0gICAgICAgIChHZXRBdGtJbnRl
cmZhY2VUeXBlRnJvbVdBSVR5cGUpOgotCi0yMDA5LTEwLTI3ICBUb3IgQXJuZSBWZXN0YsO4ICA8
dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBMYXJzIEtu
b2xsLgotCi0gICAgICAgIFtRdF0gRG9uJ3QgbG9zZSByZW1haW5kZXIgd2hlbiBjb21wdXRpbmcg
d2hlZWwgZXZlbnQgZGVsdGFzCi0KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9XaGVlbEV2ZW50UXQu
Y3BwOgotCi0yMDA5LTEwLTI3ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KLQotICAgICAgICBG
aXggUXRXZWJLaXQgYnVpbGQgZm9yIFdJTl9PUyBpZiBOZXRzY2FwZSBwbHVnLWluIHN1cHBvcnQK
LSAgICAgICAgaXMgdHVybmVkIG9mZiBhbmQgcmVmYWN0b3Igc29tZSByZWxhdGVkIGNvZGUKLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzg2Ci0KLSAg
ICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoZXJlIGlzIG5vIG5ldyBmdW5jdGlvbmFsaXR5IGludHJv
ZHVjZWQuCi0KLSAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6IFJlZmFjdG9yIHRvIG1h
a2Ugc3VyZSB0aGF0IGVhY2ggZGlmZmVyZW50Ci0gICAgICAgIHR5cGUgZGVmaW5pdGlvbiBpcyBv
bmx5IHJlcGVhdGVkIG9uY2UuCi0KLSAgICAgICAgKiBwbHVnaW5zL1BsdWdpblBhY2thZ2UuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6Y29tcGFyZUZpbGVWZXJzaW9uKTog
TW92ZSBpdCBvdXQgZnJvbSB0aGUKLSAgICAgICAgRU5BQkxFX1BMVUdJTl9QQUNLQUdFX1NJTVBM
RV9IQVNIIGd1YXJkIGFuZCBjb21iaW5lIGl0IHdpdGggdGhlCi0gICAgICAgIGZ1bmN0aW9uIGJv
ZHkgZnJvbSBQbHVnaW5QYWNrYWdlV2luLgotCi0gICAgICAgICogcGx1Z2lucy93aW4vUGx1Z2lu
UGFja2FnZVdpbi5jcHA6IFJlbW92ZSBjb21wYXJlRmlsZVZlcnNpb24gYXMKLSAgICAgICAgaXQg
aXMgbm93IGluIFBsdWdpblBhY2thZ2UuY3BwLgotCi0yMDA5LTEwLTI2ICBYYW4gTG9wZXogIDx4
bG9wZXpAaWdhbGlhLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEu
Ci0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDEx
Ci0gICAgICAgIFtHdGtdIEltcGxlbWVudCBzdXBwb3J0IGZvciBnZXRfaW5kZXhfaW5fcGFyZW50
Ci0KLSAgICAgICAgSW1wbGVtZW50IGF0a19vYmplY3RfZ2V0X2luZGV4X2luX3BhcmVudC4KLQot
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRr
LmNwcDoKLSAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9pbmRleF9pbl9wYXJlbnQpOgot
Ci0yMDA5LTEwLTI3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KLQotICAgICAgICBO
byByZXZpZXcsIHJvbGxpbmcgb3V0IHI1MDEzMS4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvNTAxMzEKLQotICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UuaDoKLSAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgotICAgICAgICAo
T2JqY0luc3RhbmNlOjpPYmpjSW5zdGFuY2UpOgotICAgICAgICAoT2JqY0luc3RhbmNlOjp2aXJ0
dWFsRW5kKToKLQotMjAwOS0xMC0yNiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNDkxCi0KLSAgICAgICAgRml4ZXMgYW4g
aXNzdWUgd2hlcmUgcHJlc3NpbmcgcmV0dXJuL2VudGVyIG9uIHRoZSBrZXlib2FyZCAKLSAgICAg
ICAgaW4gPGlzaW5kZXg+IGRvZXMgbm90IHN1Ym1pdCBpdCBpZiBpcyBub3Qgd2l0aGluIGEgPGZv
cm0+LgotCi0gICAgICAgIEFjY29yZGluZyB0byB0aGUgSFRNTCAyLjAgdGhydSBIVE1MIDQuMDEg
c3BlYyAKLSAgICAgICAgKGh0dHA6Ly93d3cudzMub3JnL01hcmtVcC9odG1sLXNwZWMvaHRtbC1z
cGVjXzcuaHRtbCNTRUM3LjUpLCB0aGUgCi0gICAgICAgIDxpc2luZGV4PiBlbGVtZW50IGRvZXMg
bm90IG5lZWQgdG8gYmUgd2l0aGluIGEgPGZvcm0+IGVsZW1lbnQgaW4gCi0gICAgICAgIG9yZGVy
IHRvIHN1Ym1pdCBpdC4gSXQgY2FuIHN1Ym1pdHRlZCBvbiBpdHMgb3duLiBBbHNvLCBpZiBwcmVz
ZW50LAotICAgICAgICB0aGUgaHJlZiBwcm9wZXJ0eSBvZiB0aGUgPGJhc2U+IGVsZW1lbnQgd2ls
bCBkaWN0YXRlIHdoZXJlIHRvIHN1Ym1pdAotICAgICAgICB0aGUgdmFsdWUgb2YgdGhlIDxpc2lu
ZGV4PiBlbGVtZW50ICh0aGlzIGlzIGFuYWxvZ291cyB0byB0aGUgYWN0aW9uIAotICAgICAgICBw
cm9wZXJ0eSBvZiB0aGUgPGZvcm0+IGVsZW1lbnQpLgotCi0gICAgICAgIFRlc3RzOiBodHRwL3Rl
c3RzL21pc2MvaXNpbmRleC13aXRoLW5vLWZvcm0tYmFzZS1ocmVmLmh0bWwKLSAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvbWlzYy9pc2luZGV4LXdpdGgtbm8tZm9ybS5odG1sCi0KLSAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IENhbGxzIGNyZWF0ZVRlbXBvcmFyeUZvcm1G
b3JJc0luZGV4KCkKLSAgICAgICAgdG8gY3JlYXRlIGEgPGZvcm0+IGlmIG5vbmUgaXMgcHJlc2Vu
dCBhbmQgd2UgYXJlIGFuIDxpc2luZGV4PiBlbGVtZW50LgotICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6Y3JlYXRlVGVtcG9yYXJ5Rm9ybUZvcklzSW5kZXgpOiBBZGRlZC4KLSAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKLQotMjAwOS0xMC0yNiAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFj
aG93aWFrLgotCi0gICAgICAgIENyYXNoIG9jY3VycyBhZnRlciBsYXVuY2hpbmcgTmV3c2ZpcmUg
MS42IGZvciB0aGUgZmlyc3QgdGltZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA4MDcKLQotICAgICAgICBVc2UgYSBSZXRhaW5QdHIgaW4gT2JqY0Jp
bmRpbmcgdG8gZW5zdXJlIHRoYXQgd2UgYWRlcXVhdGVseQotICAgICAgICBwcm90ZWN0IHRoZSBh
dXRvcmVsZWFzZSBwb29sIGZyb20gR0MgaW4gR0MnZCBhcHBsaWNhdGlvbnMuCi0KLSAgICAgICAg
KiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLmg6Ci0gICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y19pbnN0YW5jZS5tbToKLSAgICAgICAgKE9iamNJbnN0YW5jZTo6T2JqY0luc3RhbmNlKToKLSAg
ICAgICAgKE9iamNJbnN0YW5jZTo6dmlydHVhbEVuZCk6Ci0KLTIwMDktMTAtMjYgIExhc3psbyBH
b21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQu
Ci0KLSAgICAgICAgW1F0XSBCdWlsZCBmaXggZm9yIFF0V2ViS2l0IGFmdGVyIHI1MDEyNS4KLQot
ICAgICAgICAqIFdlYkNvcmUucHJvOiBSZW5hbWUgVGltZWxpbmVJdGVtIHRvIFRpbWVsaW5lUmVj
b3JkLgotCi0yMDA5LTEwLTI2ICBNYXR0IE11ZWxsZXIgIDxtYXR0bUBjaHJvbWl1bS5vcmc+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgUmVmYWN0b3Igc3lu
Y2hyb25pemFibGUgcHJvcGVydHkgaGFuZGxpbmcgdG8gc3RvcmUgb25lIHNob3VsZFN5bmNocm9u
aXplIGZsYWcgcGVyIHNldCBvZiBwcm9wZXJ0aWVzIHJhdGhlciB0aGFuIG9uZSBwZXIgcHJvcGVy
dHkuCi0KLSAgICAgICAgRml4ZXMgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbiBTeW5j
aHJvbml6YWJsZVByb3BlcnR5IGhhc2ggZnVuY3Rpb24gYXMgd2VsbCBhcyBzaW1wbGlmeWluZyB0
aGUgY29kZS4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA2NTgKLQotICAgICAgICBDb3ZlcmVkIGJ5IHJ1bm5pbmcgdmFyaW91cyBzdmcgdGVzdHMg
dW5kZXIgdmFsZ3JpbmQsIGV4OgotICAgICAgICBMYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2pzLWxh
dGUtbWFzay1hbmQtb2JqZWN0LWNyZWF0aW9uLnN2ZwotCi0gICAgICAgICogc3ZnL1N5bmNocm9u
aXphYmxlUHJvcGVydHlDb250cm9sbGVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9u
aXphYmxlUHJvcGVydGllczo6YWRkUHJvcGVydHkpOgotICAgICAgICAoV2ViQ29yZTo6U3luY2hy
b25pemFibGVQcm9wZXJ0aWVzOjpzeW5jaHJvbml6ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpTeW5j
aHJvbml6YWJsZVByb3BlcnRpZXM6OnN0YXJ0QW5pbWF0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6
OlN5bmNocm9uaXphYmxlUHJvcGVydGllczo6c3RvcEFuaW1hdGlvbik6Ci0gICAgICAgIChXZWJD
b3JlOjpTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6cmVnaXN0ZXJQcm9wZXJ0eSk6
Ci0gICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6c2V0
UHJvcGVydHlOZWVkc1N5bmNocm9uaXphdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpTeW5jaHJv
bml6YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6c3luY2hyb25pemVQcm9wZXJ0eSk6Ci0gICAgICAg
IChXZWJDb3JlOjpTeW5jaHJvbml6YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6c3luY2hyb25pemVB
bGxQcm9wZXJ0aWVzKToKLSAgICAgICAgKFdlYkNvcmU6OlN5bmNocm9uaXphYmxlUHJvcGVydHlD
b250cm9sbGVyOjpzdGFydEFuaW1hdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbml6
YWJsZVByb3BlcnR5Q29udHJvbGxlcjo6c3RvcEFuaW1hdGlvbik6Ci0gICAgICAgICogc3ZnL1N5
bmNocm9uaXphYmxlUHJvcGVydHlDb250cm9sbGVyLmg6Ci0gICAgICAgIChXZWJDb3JlOjpTeW5j
aHJvbml6YWJsZVByb3BlcnRpZXM6OlN5bmNocm9uaXphYmxlUHJvcGVydGllcyk6Ci0gICAgICAg
IChXZWJDb3JlOjpTeW5jaHJvbml6YWJsZVByb3BlcnRpZXM6OnNldE5lZWRzU3luY2hyb25pemF0
aW9uKToKLQotMjAwOS0xMC0yNiAgS2VsbHkgTm9ydG9uICA8a25vcnRvbkBnb29nbGUuY29tPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAgICBSZW5hbWVz
IFRpbWVsaW5lSXRlbSB0byBUaW1lbGluZVJlY29yZCBhbmQgdXBkYXRlcyBhbGwgY2FsbCBzaXRl
cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzg1
Ci0KLSAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogCi0gICAgICAgICogV2ViQ29yZS5neXBpOgot
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgotICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLSAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFk
ZFJlY29yZFRvVGltZWxpbmUpOgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5oOgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKLSAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEaXNwYXRjaERPTUV2
ZW50KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3Bh
dGNoRE9NRXZlbnQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
d2lsbExheW91dCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRMYXlvdXQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2ls
bFJlY2FsY3VsYXRlU3R5bGUpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkUmVjYWxjdWxhdGVTdHlsZSk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50Ojp3aWxsUGFpbnQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkUGFpbnQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6d2lsbFdyaXRlSFRNTCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRXcml0ZUhUTUwpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkSW5zdGFsbFRpbWVyKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZFJlbW92ZVRpbWVyKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OndpbGxGaXJlVGltZXIpOgotICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkRmlyZVRpbWVyKToKLSAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJlc2V0KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGltZWxpbmUpOgotICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKToKLSAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnB1c2hDdXJyZW50UmVjb3JkKToK
LSAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgotICAgICAgICAo
V2ViQ29yZTo6KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlJl
Y29yZEVudHJ5OjpSZWNvcmRFbnRyeSk6Ci0gICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lSXRl
bUZhY3RvcnkuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW1G
YWN0b3J5Lmg6IFJlbW92ZWQuCi0gICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFj
dG9yeS5jcHA6IEFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVHZW5lcmljUmVjb3JkKToKLSAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYXRlRE9NRGlzcGF0Y2hSZWNvcmQpOgotICAgICAgICAoV2ViQ29yZTo6VGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmljVGltZXJSZWNvcmQpOgotICAgICAgICAo
V2ViQ29yZTo6VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1lckluc3RhbGxSZWNvcmQp
OgotICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaDogQWRkZWQuCi0g
ICAgICAgIChXZWJDb3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OlRpbWVsaW5lUmVjb3JkRmFj
dG9yeSk6Ci0gICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZUFnZW50LmpzOgot
ICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZFJlY29yZFRvVGltZWxpbmUpOgotICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKLSAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5hZGRSZWNvcmRUb1RpbWVsaW5lKToKLSAgICAgICAg
KFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5faW5uZXJBZGRSZWNvcmRUb1Rp
bWVsaW5lKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5n
ZXRSZWNvcmRUeXBlTmFtZSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRU
cmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgotCi0yMDA5LTEwLTI2ICBHaXJpc2ggUmFt
YWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgIFtRdF0gV2luZG93bGVzcyBQbHVnaW5zIDogUHJp
bnQgcHJldmlldyBzaG93cyBvbmx5IHBhcnQgb2YgZmxhc2ggd2hlbiB2aWV3IGlzIHNjcm9sbGVk
Ci0gICAgICAgIAotICAgICAgICBXaGVuIHByaW50aW5nLCBRUHJpbnRlcidzIHByZXZpZXcgbW9k
ZSB1c2VzIGEgUVBpY3R1cmUgdG8gY2FwdHVyZSB0aGUgb3V0cHV0LiBUaGUKLSAgICAgICAgUVBp
Y3R1cmUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIFggUGl4bWFwLiBBcyBhIHJlc3VsdCwgdGhl
IHByaW50IHByZXZpZXcgd291bGQKLSAgICAgICAgdXBkYXRlIGl0c2VsZiB3aGVuIHRoZSBYIFBp
eG1hcCBjaGFuZ2VzLiBUbyBwcmV2ZW50IHRoZSBwcmludCBwcmV2aWV3IGZyb20gdXBkYXRpbmcK
LSAgICAgICAgd2hlbmV2ZXIgbV9kcmF3YWJsZSBpcyB1cGRhdGVkIChpLmUgd2hlbiB0aGUgdmll
dyB1cGRhdGVzKSwgd2UgY3JlYXRlIGEgY29weS4KLSAgICAgICAgCi0gICAgICAgIFdlIHJlcXVp
cmUgdGhhdCBhIFFQaXhtYXA6OmNvcHkoKSByZXN1bHQgaW4gYSBRUGl4bWFwIGJhY2tlZCBieSBh
IFhQaXhtYXAKLSAgICAgICAgcmVnYXJkbGVzcyBvZiB0aGUgZ3JhcGhpY3NzeXN0ZW0uIFRoaXMg
aXMgdGFrZW4gY2FyZSBvZiBieQotICAgICAgICBjb21taXQgZDMxMGY3YzcxMGVjYjMzMWE5Njg5
ODYxZjA1NTFlYWJkMzhlOTQ2ZSBpbiBRdCAoNC42KQotICAgICAgICAKLSAgICAgICAgVGhlIGJl
YXV0eSBvZiB0aGlzIHBhdGNoIGlzIHRoYXQgdGhlIG5ld2x5IGNyZWF0ZWQgWCBQaXhtYXAgaXMg
bWFuYWdlZCBieSBRdCBhbmQKLSAgICAgICAgaXQgd2lsbCBmcmVlIHRoZSBQaXhtYXAgd2hlbmV2
ZXIgdGhlIHVzZXIgY2xvc2VzIHRoZSBwcmludCBwcmV2aWV3IGRpYWxvZyBhbmQKLSAgICAgICAg
aGFuZGxlcyB0aGUgY2FzZSBvZiBkaXNwbGF5aW5nIG11bHRpcGxlIHByZXZpZXcgZGlhbG9ncyBu
aWNlbHkuCi0gICAgICAgIAotICAgICAgICBBbGwgY3JlZGl0IHRvIFNhbXVlbCBSw7hkYWwgZm9y
IHN1Z2dlc3RpbmcgdXNhZ2Ugb2YgUVBpeG1hcDo6Y29weSgpLgotICAgICAgICAKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzE0Ci0KLSAgICAgICAg
KiBwbHVnaW5zL3F0L1BsdWdpblZpZXdRdC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3OjpwYWludCk6Ci0KLTIwMDktMTAtMjYgIEJlbmphbWluIE90dGUgIDxvdHRlQGdub21lLm9y
Zz4KLQotICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCi0KLSAgICAgICAgRG9u
J3Qgc3RvcmUgcHJvcGVydGllcyBpbiB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlIGNsYXNzCi0KLSAg
ICAgICAgQWNjZXNzIHRoZW0gdmlhIHRoZSBNZWRpYVBsYXllciBjbGFzcyBpbnN0ZWFkLgotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA0NjIKLQotICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclBy
aXZhdGUpOgotICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpzZWVrKToKLSAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0Vm9sdW1lKToKLSAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6c2V0UmF0ZSk6Ci0gICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGU6OnNldFZpc2libGUpOgotICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlOjpwYWludCk6Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OmNyZWF0ZUdTVFBsYXlCaW4pOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKLQotMjAwOS0xMC0yNiAgQnJpYW4gV2Vp
bnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
b3RoeSBIYXRjaGVyLgotCi0gICAgICAgIEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzMwODAx
Pi4KLSAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udHJvbCArIF0vWyBvbiBXaW5kb3dzIGRvZXNu
J3QgY2hhbmdlIFBhbmVscy4KLSAgICAgICAgCi0gICAgICAgIEluIG15IHRlc3RpbmcsIFdpbmRv
d3MgdXNlcyAiVSswMERCIiBhbmQgIlUrMDBERCIgdG8gcmVwcmVzZW50Ci0gICAgICAgIFsgYW5k
IF0sIHNvIHdlIHNob3VsZCBob25vciB0aG9zZSBhcyB3ZWxsLgotCi0gICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuZG9jdW1l
bnRLZXlEb3duKToKLQotMjAwOS0xMC0yNiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJv
c0Bub2tpYS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAg
ICAgTWFrZSAucmMgZmlsZXMgY29tcGlsZSBvbiBXaW5kb3dzIHdpdGhvdXQgZGVwZW5kaW5nIG9u
IE1GQyBoZWFkZXJzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMDc1MAotCi0gICAgICAgICogV2ViQ29yZS52Y3Byb2ovUVRNb3ZpZVdpbi5yYzogVXNl
IHdpbnJlc3JjLmggYmVjYXVzZSBpdCBleGlzdHMgCi0gICAgICAgIGV2ZW4gd2hlbiBNRkMgaXMg
bm90IGluc3RhbGxlZCwgYW5kIGlzIGFsbCB0aGF0J3MgbmVlZGVkIGhlcmUuCi0KLTIwMDktMTAt
MjYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIEJ1aWxkIGNvcnJlY3Rpb25zIGZvciBFTkFC
TEVfRklMVEVSUyBpbiBXaW5kb3dzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA3OTcKLQotICAgICAgICBCdWlsZCBjb3JyZWN0aW9uIGZvciBFTkFC
TEVfRklMVEVSUyBmZWF0dXJlLiAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KLQotICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6IFVzZSBNYXRoRXh0cmFz
LmggYW5kCi0gICAgICAgICAgaXRzIHBpRG91YmxlIGNvbnN0YW50LgotICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOiBVc2UgTWF0aEV4dHJhcy5o
IGFuZAotICAgICAgICAgIGl0cyBwaURvdWJsZSBjb25zdGFudC4gIFJlbW92ZSB1bm5lY2Vzc2Fy
eSBjYWxsIHRvIGZsb29yIHVzZWQgaW4KLSAgICAgICAgICB0aGUgZGl2aXNpb24gb2YgYW4gdW5z
aWduZWQsIGNvbnZlcnRpbmcgdG8gaW50LgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9TaW1wbGVGb250RGF0YUNhaXJvV2luLmNwcDogQ29ycmVjdCBpbmNsdWRlCi0gICAgICAgICAg
c3R5bGUgZm9yIE1hdGhFeHRyYXMuaC4KLQotMjAwOS0xMC0yNiAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyODk0Njc+IGFuZCBodHRwOi8vd2Via2l0Lm9yZy9iLzMw
Nzk4IC0gUkVHUkVTU0lPTiAocjQ4Njg3KTogd3d3Lm15dWhjLmNvbSBkb2Vzbid0IGxvYWQuCi0K
LSAgICAgICAgVGVzdDogZmFzdC9sb2FkZXIvZ3JhbmRwYXJlbnQtY29tcGxldGlvbi1zdGFydHMt
cmVkaXJlY3QuaHRtbAotCi0gICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21wbGV0ZWQpOiBOb3RpZnkgYWxsIGRlc2NlbmRh
bnRzIHRoYXQgdGhlIGxvYWQgY29tcGxldGVkLCBub3QganVzdCBkaXJlY3QgY2hpbGRyZW4uCi0K
LTIwMDktMTAtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KLQotICAgICAgICBS
ZXZpZXdlZCBieSBCZXRoIERha2luLgotCi0gICAgICAgIFJlLWFkZCBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRTaXplIGluIG9uZSBtb3JlIHBsYWNlCi0KLSAgICAgICAgRml4ZXMgdHJhbnNp
dGlvbnMvbXVsdGlwbGUtYmFja2dyb3VuZC1zaXplLXRyYW5zaXRpb25zLmh0bWwsIHRyYW5zaXRp
b25zL2JhY2tncm91bmQtdHJhbnNpdGlvbnMuaHRtbAotCi0gICAgICAgICogcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVy
dHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyKToKLQotMjAwOS0xMC0yNiAgSmVy
ZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCi0KLSAgICAgICAgW1Y4XSBUaWR5IHVwIHRoZSBET00gU3RvcmFnZSBy
dW50aW1lIGZsYWcgc3R1ZmYKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMwNzk0Ci0KLSAgICAgICAgQ2xlYW4gdXAgdGhlIERPTSBTdG9yYWdlIHJ1bnRp
bWUgZmxhZyBzdHVmZiB0byBtYXRjaCB0aGUgbmV3IHdheSBvZiBkb2luZwotICAgICAgICB0aGlu
Z3MuICBObyBiZWhhdmlvcmFsIGNoYW5nZXMuCi0KLSAgICAgICAgKiBiaW5kaW5ncy92OC9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDoKLSAgICAgICAgKiBiaW5kaW5ncy92OC9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmg6Ci0gICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzZXREYXRhYmFzZUVuYWJsZWQpOgotICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6ZGF0YWJhc2VFbmFibGVkKToKLSAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldExvY2FsU3RvcmFnZUVuYWJsZWQpOgotICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bG9jYWxTdG9yYWdlRW5hYmxlZCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQp
OgotICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2Vzc2lvblN0b3Jh
Z2VFbmFibGVkKToKLSAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwOgotICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfUlVOVElNRV9FTkFCTEVSKToKLSAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgotICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5o
OgotCi0yMDA5LTEwLTI2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzMwODk1Mj4gYW5kIGh0dHA6Ly93ZWJraXQub3JnL2IvMzA0MjQgLSBSRUdSRVNTSU9OIChyNDg2
ODcpOiBQYWdlcyBvbiB1Y2FzLmNvbSBhcHBlYXIgYmxhbmsuCi0KLSAgICAgICAgVGVzdDogZmFz
dC9sb2FkZXIvaGlzdG9yeS1mb3J3YXJkLWluLWhlYWQuaHRtbAotCi0gICAgICAgICogbG9hZGVy
L1JlZGlyZWN0U2NoZWR1bGVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1
bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKTogUmVzdG9yZSB0aGUgbW92ZWQgY2FuR29C
YWNrT3JGb3J3YXJkKCkgY2hlY2suCi0gICAgICAgICAgVGhpcyByZXN0b3JlcyB0aGUgc2lkZSBl
ZmZlY3Qgb2YgYW4gaW52YWxpZCBoaXN0b3J5IG5hdmlnYXRpb24gY2FuY2VsaW5nIHByZXZpb3Vz
IHNjaGVkdWxlZCByZWRpcmVjdHMKLSAgICAgICAgICBhbmQgYWxzbyBmaXhlcyB0aGUgYnVnIG9m
IHNjaGVkdWxpbmcgYW4gaW52YWxpZCBoaXN0b3J5IG5hdmlnYXRpb24gY2FuY2VsaW5nIHBhcnNp
bmcgb2YgdGhlIGN1cnJlbnQgZG9jdW1lbnQuCi0gICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNj
aGVkdWxlcjo6dGltZXJGaXJlZCk6IFJlbW92ZWQgdGhlIGNhbkdvQmFja09yRm9yd2FyZCgpIGNo
ZWNrIGFzIGl0IGlzIG5vdyBtYWRlIGJlZm9yZQotICAgICAgICAgIHRoZSByZWRpcmVjdCBpcyBz
Y2hlZHVsZWQuCi0KLTIwMDktMTAtMjYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDQ5Ci0gICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83Mjg2MDAyPiBNYW5pcHVsYXRpbmcgRE9NIGZyb20gYSBzY3JpcHQgd2hpbGUgcGFy
c2luZyBYSFRNTCBjYW4gY2F1c2UgYSBjcmFzaAotCi0gICAgICAgIFRlc3RzOiBmYXN0L3BhcnNl
ci9yZW1vdmUtY3VycmVudC1ub2RlLXBhcmVudC14LTIueGh0bWwKLSAgICAgICAgICAgICAgIGZh
c3QvcGFyc2VyL3JlbW92ZS1jdXJyZW50LW5vZGUtcGFyZW50LXgueGh0bWwKLQotICAgICAgICAq
IGRvbS9YTUxUb2tlbml6ZXIuaDogU3RvcmUgdGhlIHdob2xlIHN0YWNrIG9mIHBhcmVudCBub2Rl
cyAtIGVsZW1lbnQucGFyZW50Tm9kZSgpIGlzCi0gICAgICAgIHVucmVsaWFibGUgYWZ0ZXIgRE9N
IG1hbmlwdWxhdGlvbi4KLQotICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXIuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjpwdXNoQ3VycmVudE5vZGUpOiBQdXNoIHRoZSBuZXcg
bm9kZSBvbnRvIHN0YWNrLgotICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjpwb3BDdXJy
ZW50Tm9kZSk6IFRoaXMgaXMgbm93IGNhbGxlZCBpbnN0ZWFkIG9mIHNldEN1cnJlbnROb2RlIHdo
ZW4KLSAgICAgICAgZXhpdGluZyBhIG5vZGUuCi0gICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6
ZXI6OmNsZWFyQ3VycmVudE5vZGVTdGFjayk6IFdlJ3JlIGFib3J0aW5nOyBvciBqdXN0IGRvbmUg
cGFyc2luZy4gVGhpcwotICAgICAgICByZXBsYWNlcyBzZXRDdXJyZW50Tm9kZSgwKS4KLSAgICAg
ICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6ZW50ZXJUZXh0KTogQ2FsbCBwdXNoQ3VycmVudE5v
ZGUoKS4KLSAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6ZXhpdFRleHQpOiBDYWxsIHBv
cEN1cnJlbnROb2RlKCksIHJlbW92aW5nIGEgbG9uZy1zdGFuZGluZyBGSVhNRQotICAgICAgICAo
bm90IHN1cmUgaWYgaXQgd2FzIGV2ZXIgcHJhY3RpY2FsIHRob3VnaCAtIGhvdyBjYW4gYSBwYXJl
bnQgYmVjb21lIG51bGwgd2hpbGUgYWRkaW5nIHRleHQ/KQotCi0gICAgICAgICogZG9tL1hNTFRv
a2VuaXplckxpYnhtbDIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjp+WE1M
VG9rZW5pemVyKTogQ2FsbCBjbGVhckN1cnJlbnROb2RlU3RhY2soKS4KLSAgICAgICAgKFdlYkNv
cmU6OlhNTFRva2VuaXplcjo6c3RhcnRFbGVtZW50TnMpOiBDYWxsIHB1c2hDdXJyZW50Tm9kZSgp
LgotICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjplbmRFbGVtZW50TnMpOiBDYWxsIHBv
cEN1cnJlbnROb2RlKCkgdG8gc2FmZWx5IGdldCB0byBhIHBhcmVudC4gQWxzbwotICAgICAgICBh
ZGRlZCBhIGNoZWNrIGZvIHNjcmlwdCBlbGVtZW50IHN0aWxsIGJlaW5nIGluIGRvY3VtZW50IC0g
RmlyZWZveCBwYXJzZXMgdGhvc2UgdGhhdCBhcmVuJ3QsCi0gICAgICAgIGJ1dCBkb2Vzbid0IGV4
ZWN1dGUgdGhlbS4KLQotICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXJRdC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6On5YTUxUb2tlbml6ZXIpOgotICAgICAgICAoV2ViQ29y
ZTo6WE1MVG9rZW5pemVyOjpwYXJzZVN0YXJ0RWxlbWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpY
TUxUb2tlbml6ZXI6OnBhcnNlRW5kRWxlbWVudCk6Ci0gICAgICAgIE1hdGNoIGxpYnhtbDIgdmVy
c2lvbiBjaGFuZ2VzLgotCi0yMDA5LTEwLTI2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KLQotICAgICAgICBiYWNrZ3Jv
dW5kLXNpemU6IFggdHJlYXRlZCBhcyBiYWNrZ3JvdW5kLXNpemU6IFggWCwgbm90IGJhY2tncm91
bmQtc2l6ZTogWCBhdXRvCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODQ0MAotCi0gICAgICAgIFVwZGF0ZWQgZmFzdC9iYWNrZ3JvdW5kcy9zaXplL3Jl
c291cmNlcy9wYXJzaW5nLWJhY2tncm91bmQtc2l6ZS12YWx1ZXMuanMKLSAgICAgICAgYW5kIGZh
c3QvYmFja2dyb3VuZHMvc2l6ZS9yZXNvdXJjZXMvcGFyc2luZy1pbmhlcml0LmpzCi0KLSAgICAg
ICAgUmVpbnN0YXRlZCAtd2Via2l0LWJhY2tncm91bmQtc2l6ZSBhbmQga2VwdCBpdHMgYmVoYXZp
b3Igb2YgZmlsbGluZyBpbgotICAgICAgICB0aGUgc2Vjb25kIHZhbHVlIHdpdGggdGhlIGZpcnN0
IG9uZTsgYW5kIGNoYW5nZWQgYmFja2dyb3VuZC1zaXplIHRvIGhhdmUKLSAgICAgICAgdGhlIGJl
aGF2aW9yIG9mIGZpbGxpbmcgaW4gdGhlIHNlY29uZCB2YWx1ZSB3aXRoICdhdXRvJy4KLQotICAg
ICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgotICAgICAgICAoY29t
cHV0ZWRQcm9wZXJ0aWVzKTogUmUtYWRkZWQgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6
ZS4KLSAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlDU1NWYWx1ZSk6IERpdHRvLgotICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKTogRGl0dG8uCi0gICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUpOiBBZGFwdGVkIGZvciB0aGUgbmV3IHBh
cnNpbmcgcnVsZS4KLSAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsUHJvcGVy
dHkpOiBSZS1hZGRlZAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplLgot
ICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlJRCk6IFJlbW92ZWQgbWFwcGluZyBvZiAtd2Vi
a2l0LWJhY2tncm91bmQtc2l6ZSB0bwotICAgICAgICBiYWNrZ3JvdW5kLXNpemUuCi0gICAgICAg
ICogY3NzL0NTU1BhcnNlci5oOgotICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOiBS
ZS1hZGRlZCAtd2Via2l0LWJhY2tncm91bmQtc2l6ZS4KLSAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KTogUmUtYWRkZWQKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6
ZS4KLQotMjAwOS0xMC0yNiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5j
b20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0KLSAgICAgICAgW1F0XSBV
c2UgIiVsbGkiIHRvIGZvcm1hdCAibG9uZyBsb25nIiBvbiBXSU5fT1MgdG8gZml4IEhUTUw1IFdl
YkRCIGNyYXNoCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDc3NwotCi0gICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGUgY3Jhc2ggY2FuIGJlIHJlcHJv
ZHVjZWQgYnkgZXhpc3Rpbmcgc3RvcmFnZQotICAgICAgICBMYXlvdXRUZXN0cyAoYnkgaGl0dGlu
ZyBhbiBhc3NlcnQgaW4gZGVidWcgbW9kZSBXZWJraXQgb24gV0lOX09TKS4KLQotICAgICAgICAq
IHBsYXRmb3JtL3RleHQvU3RyaW5nLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6bnVt
YmVyKTogUXQncyBRU3RyaW5nOjp2c3ByaW50ZiBkb2VzIG5vdAotICAgICAgICB1bmRlcnN0YW5k
IHRoZSAiJUk2NHUiIGZvcm1hdCBzdHJpbmcuIEFsd2F5cyB1c2UgdGhlICIlbGxpIgotICAgICAg
ICBmb3JtYXQgc3RyaW5nIGZvciBRdCBwb3J0LgotCi0yMDA5LTEwLTI2ICBUb255IENoYW5nICA8
dG9ueUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCi0K
LSAgICAgICAgUm9sbCBiYWNrIHI1MDA3MyBiZWNhdXNlIHI1MDA0MS01MDA0MyB3ZXJlIHJldmVy
dGVkLiAgcjUwMDczIHdhcwotICAgICAgICBhIGNocm9taXVtIHNpZGUgZml4IGZvciByNTAwNDEu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDc4OQot
Ci0gICAgICAgICogYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmg6Ci0gICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oOgotICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Omdl
dE5hbWVkSXRlbXMpOgotICAgICAgICAoV2ViQ29yZTo6Z2V0SXRlbSk6Ci0gICAgICAgIChXZWJD
b3JlOjpOQU1FRF9QUk9QRVJUWV9HRVRURVIpOgotICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tf
RlVOQ19ERUNMKToKLSAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlv
bkN1c3RvbS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKLSAgICAgICAg
KFdlYkNvcmU6OmdldEl0ZW0pOgotICAgICAgICAoV2ViQ29yZTo6TkFNRURfUFJPUEVSVFlfR0VU
VEVSKToKLSAgICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6Ci0gICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKLQot
MjAwOS0xMC0yNiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KLQotICAgICAgICBGaXhlZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA3NjUKLSAgICAgICAgUkVHUkVTU0lPTiAo
cjQ4NzAxKTogUmVtb3ZpbmcgYW4gZXZlbnQgbGlzdGVuZXIgY2F1c2VzIHRoZSBvbmUgYWRkZWQg
anVzdCBhZnRlciBpdCBub3QgdG8gZmlyZQotICAgICAgICAKLSAgICAgICAgYW5kIHJlbGF0ZWQg
YnVncy4KLQotICAgICAgICBJZiB0aGUgZXZlbnQgbGlzdGVuZXIgYmVpbmcgcmVtb3ZlZCBpcyBw
cmlvciB0byB0aGUgY3VycmVudCBmaXJpbmcgZXZlbnQKLSAgICAgICAgaXRlcmF0b3IsIHdlIG5l
ZWQgdG8gZGVjcmVtZW50IHRoZSBjdXJyZW50IGZpcmluZyBldmVudCBpdGVyYXRvciBpbgotICAg
ICAgICBhZGRpdGlvbiB0byB0aGUgZW5kcG9pbnQuIChPdGhlcndpc2UsIHNocmlua2luZyB0aGUg
ZXZlbnQgbGlzdGVuZXIgdmVjdG9yCi0gICAgICAgIGJ5IG9uZSBpbXBsaWNpdHkgbW92ZXMgdGhl
IGN1cnJlbnQgZmlyaW5nIGV2ZW50IGl0ZXJhdG9yIGZvcndhcmQgYnkgb25lLgotICAgICAgICBJ
dCdzIGxpa2UgcmVsYXRpdml0eSwgb25seSB3aXRob3V0IHRoZSBwbGFuZXRzLikKLSAgICAgICAg
Ci0gICAgICAgIEFsc28gdG9vayB0aGUgb3Bwb3J0dW5pdHkgdG8gY2hhbmdlIHNvbWUgcG9pbnRl
cnMgdG8gcmVmZXJlbmNlcywgc2luY2UKLSAgICAgICAgdGhleSBjYW4ndCBiZSBudWxsLgotCi0g
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFy
Z2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKToKLSAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycyk6IFVwZGF0ZSBpdGVyYXRvciBpbiBhZGRpdGlvbgot
ICAgICAgICB0byBlbmQsIGlmIG5lZWQgYmUuCi0gICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6ZmlyZUV2ZW50TGlzdGVuZXJzKTogVXBkYXRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZXMuCi0g
ICAgICAgIEFkZGVkIGEgY29tbWVudCB0byBleHBsYWluIGEgYmVoYXZpb3IgdGhhdCB3YXMgaW1w
bGljaXQgZW5vdWdoIHRvIGJlCi0gICAgICAgIGNvbmZ1c2luZy4KLQotICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5oOgotICAgICAgICAoV2ViQ29yZTo6RmlyaW5nRXZlbnRJdGVyYXRvcjo6Rmly
aW5nRXZlbnRJdGVyYXRvcik6Ci0gICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6aXNGaXJp
bmdFdmVudExpc3RlbmVycyk6IFVwZGF0ZWQgZm9yIGludGVyZmFjZSBjaGFuZ2VzLgotCi0yMDA5
LTEwLTI2ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCi0KLSAgICAgICAgRml4ZXMgPGh0dHA6Ly93
ZWJraXQub3JnL2IvMzA3OTI+LgotICAgICAgICBXZWIgSW5zcGVjdG9yOiBXaGVuIGNoYW5naW5n
IHJlc291cmNlIHNjb3BlLCByZXNvdXJjZSBncmFwaCBjYW4gZ2V0IGluIHdlaXJkIHN0YXRlLgot
ICAgICAgICAKLSAgICAgICAgSWYgdGhlIHVzZXIgd2FzIHNjcm9sbGVkIGRvd24gd2hpbGUgbG9v
a2luZyBhdCBBbGwgcmVzb3VyY2VzLCBhbmQgdGhlbiBqdXN0Ci0gICAgICAgIHNlbGVjdHMgRm9u
dHMsIG9yIHNvbWV0aGluZyB0aGF0IGRvZXNuJ3QgaGF2ZSBtYW55IHJlc291cmNlcywgdGhlbiB0
aGUgZ3JhcGgKLSAgICAgICAgd2lsbCBzdGF5IHNjcm9sbGVkIGRvd24sIGV2ZW4gd2hlbiB0aGVy
ZSBpcyBubyBjb250ZW50IHRoZXJlLgotICAgICAgICAKLSAgICAgICAgV2hlbiB0aGUgZmlsdGVy
IGlzIHVwZGF0ZWQsIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSBncmFwaCB2aWV3LCBzbyB0aGlz
IHdvbid0Ci0gICAgICAgIGhhcHBlbi4KLQotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
QWJzdHJhY3RUaW1lbGluZVBhbmVsLmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkFic3RyYWN0
VGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUZpbHRlcik6Ci0KLTIwMDktMTAtMjYgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBGaXggbWFjIGNsZWFuIGJ1aWxk
LgotCi0gICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaWRsOgotCi0yMDA5LTEw
LTI2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiBFeHRy
YWN0IEFic3RyYWN0VGltZWxpbmVQYW5lbCB0aGF0IHdpbGwgYmUgYSBiYXNlCi0gICAgICAgIGNs
YXNzIGZvciBSZXNvdXJjZXNQYW5lbCBhbmQgVGltZWxpbmVQYW5lbC4KLQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA3NzYKLQotICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKLSAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKLSAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Fic3RyYWN0VGltZWxpbmVQYW5lbC5qczogQWRk
ZWQuCi0gICAgICAgIChXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZVBhbmVsKToKLSAgICAg
ICAgKFdlYkluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lUGFuZWwucHJvdG90eXBlLmdldCBjYXRl
Z29yaWVzKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lUGFuZWwucHJv
dG90eXBlLnNob3dDYXRlZ29yeSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1l
bGluZVBhbmVsLnByb3RvdHlwZS5oaWRlQ2F0ZWdvcnkpOgotICAgICAgICAoV2ViSW5zcGVjdG9y
LkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5cGUuY3JlYXRlVGltZWxpbmVQYW5lbHMpOgot
ICAgICAgICAoV2ViSW5zcGVjdG9yLkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2Ny
ZWF0ZUZpbHRlclBhbmVsLmNyZWF0ZUZpbHRlckVsZW1lbnQpOgotICAgICAgICAoV2ViSW5zcGVj
dG9yLkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZUZpbHRlclBhbmVsKToK
LSAgICAgICAgKFdlYkluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lUGFuZWwucHJvdG90eXBlLmZp
bHRlcik6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3Rv
dHlwZS5fdXBkYXRlRmlsdGVyKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5BYnN0cmFjdFRpbWVs
aW5lUGFuZWwucHJvdG90eXBlLl9jcmVhdGVHcmFwaCk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3Iu
QWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3RvdHlwZS51cGRhdGVHcmFwaERpdmlkZXJzSWZOZWVk
ZWQpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5
cGUuX3VwZGF0ZVN1bW1hcnlHcmFwaCk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQWJzdHJhY3RU
aW1lbGluZVBhbmVsLnByb3RvdHlwZS5fdXBkYXRlRGl2aWRlcnNMYWJlbEJhclBvc2l0aW9uKToK
LSAgICAgICAgKFdlYkluc3BlY3Rvci5BYnN0cmFjdFRpbWVsaW5lUGFuZWwucHJvdG90eXBlLmdl
dCBuZWVkc1JlZnJlc2gpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkFic3RyYWN0VGltZWxpbmVQ
YW5lbC5wcm90b3R5cGUuc2V0IG5lZWRzUmVmcmVzaCk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3Iu
QWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3RvdHlwZS5yZWZyZXNoSWZOZWVkZWQpOgotICAgICAg
ICAoV2ViSW5zcGVjdG9yLkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5cGUuc2hvdyk6Ci0g
ICAgICAgIChXZWJJbnNwZWN0b3IuQWJzdHJhY3RUaW1lbGluZVBhbmVsLnByb3RvdHlwZS5yZXNp
emUpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkFic3RyYWN0VGltZWxpbmVQYW5lbC5wcm90b3R5
cGUudXBkYXRlTWFpblZpZXdXaWR0aCk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVD
YWxjdWxhdG9yKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IucHJv
dG90eXBlLmNvbXB1dGVTdW1tYXJ5VmFsdWVzKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZUNhbGN1bGF0b3IucHJvdG90eXBlLmNvbXB1dGVCYXJHcmFwaFBlcmNlbnRhZ2VzKToKLSAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IucHJvdG90eXBlLmNvbXB1dGVC
YXJHcmFwaExhYmVscyk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9y
LnByb3RvdHlwZS5nZXQgYm91bmRhcnlTcGFuKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZUNhbGN1bGF0b3IucHJvdG90eXBlLnVwZGF0ZUJvdW5kYXJpZXMpOgotICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUucmVzZXQpOgotICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQ2FsY3VsYXRvci5wcm90b3R5cGUuX3ZhbHVlKToKLSAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNhbGN1bGF0b3IucHJvdG90eXBlLmZvcm1hdFZhbHVl
KToKLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlQ2F0ZWdvcnkuanM6Ci0g
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VDYXRlZ29yeSk6Ci0gICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKLSAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZXNQYW5lbCk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJv
dG90eXBlLnRvb2xiYXJJdGVtQ2xhc3MuZ2V0IHRvb2xiYXJJdGVtTGFiZWwpOgotICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMp
OgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5nZXQgY2F0
ZWdvcmllcyk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBl
LnNob3dDYXRlZ29yeSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJv
dG90eXBlLmhpZGVDYXRlZ29yeSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlLmlzQ2F0ZWdvcnlWaXNpYmxlKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUucG9wdWxhdGVTaWRlYmFyKToKLSAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuY3JlYXRlUGFuZWxFbmFibGVyKToKLSAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuY3JlYXRlU3RhdHVz
YmFyQnV0dG9ucyk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90
eXBlLnNldCBtYWluUmVzb3VyY2VMb2FkVGltZSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwucHJvdG90eXBlLnNldCBtYWluUmVzb3VyY2VET01Db250ZW50VGltZSk6Ci0g
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnNob3cpOgotICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5yZXNpemUpOgotICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5yZXNldCk6Ci0gICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLnVwZGF0ZUdyYXBoRGl2
aWRlcnNJZk5lZWRlZCk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJv
dG90eXBlLnVwZGF0ZU1haW5WaWV3V2lkdGgpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlVGltZUNhbGN1bGF0b3IpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJhbnNm
ZXJTaXplQ2FsY3VsYXRvcik6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmFuc2Zl
clNpemVDYWxjdWxhdG9yLnByb3RvdHlwZS5jb21wdXRlQmFyR3JhcGhMYWJlbHMpOgotICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3VtbWFyeUJhci5qczoKLSAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdW1tYXJ5QmFyLnByb3RvdHlwZS51cGRhdGUpOgotICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYzoKLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5odG1sOgotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgot
ICAgICAgICAoV2ViSW5zcGVjdG9yLmxvYWRlZCk6Ci0KLTIwMDktMTAtMjYgIEF2aSBEcmlzc21h
biAgPGF2aUBnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgot
Ci0gICAgICAgIFVzZSBIZWx2ZXRpY2EgaW4gdGhlIEluc3BlY3RvciBhcyBpbnRlbmRlZC4KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzg3Ci0KLSAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6Ci0KLTIwMDktMTAtMjYg
IE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBBbGV4ZXkgUHJvc2t1cnlha292LgotCi0gICAgICAgIERvbid0IHNldCB3aW5kb3cub3BlbmVy
IHRvIDAgZm9yIHRoZSBjdXJyZW50IEZyYW1lTG9hZGVyIGlmIGEgbm9yZWZlcnJlciBsaW5rIHdh
cyBjbGlja2VkLCBvbmx5IHN1cHByZXNzIG9wZW5lciBpbiBhIG5ldyBmcmFtZS4KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzgxCi0KLSAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnVybFNlbGVjdGVkKTogRG9uJ3Qgc3VwcHJlc3Mgb3BlbmVyIGluIHRoZSBjdXJyZW50IGZyYW1l
IGZvciBub3JlZmVycmVyIG5hdmlnYXRpb25zLgotCi0yMDA5LTEwLTI2ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgot
Ci0gICAgICAgIERhdGEgbG9zcyBvY2N1cnMgd2hlbiB1bmJvbGRpbmcgbmVzdGVkIGJvbGQgdGFn
cy4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDgz
Ci0KLSAgICAgICAgRml4ZXMgdGhlIGxvb3AgaW4gc3dhcEluTm9kZVByZXNlcnZpbmdBdHRyaWJ1
dGVzQW5kQ2hpbGRyZW4gYnkgc2F2aW5nIG5leHRTaWJsaW5nKCkgb2YgY2hpbGQKLSAgICAgICAg
dG8gYSB0ZW1wb3JhcnkgdmFsdWFibGUuICBJdCB3YXMgb3JpZ2luYWxseSBjYWxsaW5nIG5leHRT
aWJsaW5nKCkgYWZ0ZXIgYXBwZW5kaW5nIHRoZSBjaGlsZAotICAgICAgICB0byBuZXcgcGFyZW50
LCBpbiB3aGljaCBjYXNlLCBuZXh0U2libGluZyBpcyBhbHdheXMgMC4KLQotICAgICAgICBUZXN0
OiBlZGl0aW5nL3N0eWxlL3VuYm9sZGluZy1uZXN0ZWQtYi5odG1sCi0KLSAgICAgICAgKiBlZGl0
aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OnN3
YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKToKLQotMjAwOS0xMC0yMSAg
SmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KLQotICAgICAgICBTdG9yYWdlIGV2ZW50cyBzaG91bGQgdXNlIERvY3Vt
ZW50Ojp1cmwoKSByYXRoZXIgdGhhbiBkb2N1bWVudFVSSSgpCi0gICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDUzNQotCi0gICAgICAgIFN0b3JhZ2UgZXZl
bnRzIHNob3VsZCB1c2UgRG9jdW1lbnQ6OnVybCgpIHJhdGhlciB0aGFuIERvY3VtZW50Ojpkb2N1
bWVudFVSSSgpCi0gICAgICAgIHBlciBodHRwOi8vbGlzdHMud2hhdHdnLm9yZy9odGRpZy5jZ2kv
d2hhdHdnLXdoYXR3Zy5vcmcvMjAwOS1PY3RvYmVyLzAyMzcwMy5odG1sCi0KLSAgICAgICAgVGVz
dDogc3RvcmFnZS9kb21zdG9yYWdlL2RvY3VtZW50VVJJLmh0bWwKLQotICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaCk6Ci0KLTIwMDktMTAtMjYgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KLQotICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBEYXJpbiBBZGxlci4K
LQotICAgICAgICBSb2xsb3V0IHI1MDA0MS01MDA0My4gIFRoZSBIVE1MNSBzcGVjIGNoYW5nZWQg
dG8gbWFrZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24KLSAgICAgICAgaW5oZXJpdCBmcm9tIEhUTUxD
b2xsZWN0aW9uLgotCi0gICAgICAgICogR05VbWFrZWZpbGUuYW06Ci0gICAgICAgICogV2ViQ29y
ZS5neXBpOgotICAgICAgICAqIFdlYkNvcmUucHJvOgotICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgotICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgotICAgICAgICAoV2ViQ29yZTo6
Y2FsbEhUTUxBbGxDb2xsZWN0aW9uKToKLSAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxl
Y3Rpb246Om5hbWVHZXR0ZXIpOgotICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlv
bjo6aXRlbSk6Ci0gICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0
ZW0pOgotICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJdGVtcyk6Ci0gICAgICAgIChXZWJDb3JlOjpjYWxs
SFRNTENvbGxlY3Rpb24pOgotICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVjdGlvbjo6bmFt
ZUdldHRlcik6Ci0gICAgICAgIChXZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjppdGVtKToKLSAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbSk6Ci0gICAgICAgIChX
ZWJDb3JlOjp0b0pTKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uRnVu
Y3Rpb25zLmg6IFJlbW92ZWQuCi0gICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRD
dXN0b20uY3BwOgotICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjps
ZW5ndGgpOgotICAgICAgICAoV2ViQ29yZTo6SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4
U2V0dGVyKToKLSAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06Ci0gICAgICAgIChr
aXRDbGFzcyk6Ci0gICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tOgotICAgICAg
ICAoSlNDOjpjcmVhdGVET01XcmFwcGVyKToKLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKLSAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmlkbDoKLSAg
ICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5pZGw6Ci0KLTIwMDktMTAtMjYgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gUm9iZW4uCi0KLSAgICAgICAgQnVpbGQgZml4IGZvciBFTkFCTEVfRklMVEVSUyB1bmRl
ciBXaW5kb3dzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA3NjIKLQotICAgICAgICBCdWlsZCBjb3JyZWN0aW9uIGZvciBFTkFCTEVfRklMVEVSUyBm
ZWF0dXJlLiAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KLQotICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOiAgTWFrZSB0aGUgZm9sbG93aW5nIGNoYW5nZXM6Ci0gICAgICAgICAg
KDEpIENyZWF0ZSBhIG5ldyAnZmlsdGVycycgc3ViLWZvbGRlciBvZiB0aGUgcGxhdGZvcm0vZ3Jh
cGhpY3MgCi0gICAgICAgICAgICAgIGZvbGRlciB0byBwcm9wZXJseSBzaG93IHRoZSBzb3VyY2Vz
IGhlbGQgaW4gdGhpcyBkaXJlY3RvcnkuCi0gICAgICAgICAgKDIpIE1vdmUgdGhlIGZpbGVzIHRo
YXQgYXJlIGN1cnJlbnRseSBzaG93biBpbiBzdm4vZ3JhcGhpY3MvZmlsdGVycwotICAgICAgICAg
ICAgICB0byBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzICh3aGVyZSB0aGV5IGFjdHVhbGx5IGxp
dmUgb24gZGlzaykuCi0gICAgICAgICAgKDMpIEFkZCB0aGUgbWlzc2luZyBTVkdGaWx0ZXIsIFNW
R0ZpbHRlckJ1aWxkZXIsIGFuZCBTVkdGRVRpbGUgdG8KLSAgICAgICAgICAgICAgdGhlIHByb2pl
Y3Qgc28gdGhleSBhcmUgYnVpbHQuCi0gICAgICAgICAgKDQpIFJlbW92ZSBTVkdGRUZsb29kRWxl
bWVudC5jcHAgZnJvbSB0aGUgYnVpbGQsIHNpbmNlIGl0IGlzIGFscmVhZHkKLSAgICAgICAgICAg
ICAgYmVpbmcgY29tcGlsZWQgYnkgU1ZHQWxsSW5PbmUuY3BwLiAgSXRzIHByZXNlbmNlIGFzIGEg
c2VwYXJhdGUKLSAgICAgICAgICAgICAgZW50aXR5IGlzIGNhdXNpbmcgYSBsaW5rZXIgd2Fybmlu
ZyBmb3IgZHVwbGljYXRlIHN5bWJvbHMuCi0gICAgICAgICAgKDUpIEFkZCBJbWFnZUJ1ZmZlci5j
cHAgdG8gdGhlIGJ1aWxkIHRvIHN1cHBvcnQgY29sb3Igc3BhY2UKLSAgICAgICAgICAgICAgY2Fs
Y3VsYXRpb25zIGZvciBub24tQ0cgYnVpbGRzLgotICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmVDb21tb24udnNwcm9wczogQWRkIHRoZSBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzCi0g
ICAgICAgICAgcGF0aCB0byB0aGUgc2VhcmNoIHBhdGhzIGluIHRoZSBwcm9qZWN0LgotCi0yMDA5
LTEwLTI2ICBLZWlzaGkgSGF0dG9yaSAgPGNhc2V5LmhhdHRvcmlAZ21haWwuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAgICBjb25zb2xlLmFzc2Vy
dCBzaG91bGQgcHJlZml4IG1lc3NhZ2VzIHdpdGggIkFzc2VydGlvbiBmYWlsZWQ6ICIKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTM1Ci0KLSAgICAg
ICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6Ci0gICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKLSAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5wcm90b3R5cGUudG9NZXNzYWdlRWxlbWVudCk6IEFwcGVuZCAiQXNzZXJ0aW9u
IGZhaWxlZDogIiBmb3IgQXNzZXJ0TWVzc2FnZVR5cGUuCi0gICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UucHJvdG90eXBlLnRvU3RyaW5nKToKLSAgICAgICAgKiBwYWdlL0NvbnNv
bGUuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6YXNzZXJ0Q29uZGl0aW9uKTogVXNl
IEFzc2VydE1lc3NhZ2VUeXBlLgotICAgICAgICAqIHBhZ2UvQ29uc29sZS5oOgotICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZVR5cGUpOiBBZGRlZCBBc3NlcnRNZXNzYWdlVHlwZS4KLQotMjAwOS0x
MC0yNiAgUmFodWwgS3VjaGhhbCAgPGt1Y2hoYWxAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIFByZXZlbnQgY3Jhc2ggd2hlbiBvcHRn
cm91cCBlbGVtZW50IGlzIGVtcHR5IGJ5IGFkZGluZyBhIE5VTEwgY2hlY2suCi0KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzY1Ci0KLSAgICAgICAg
VGVzdDogZmFzdC9mb3Jtcy9zZWxlY3QtZW1wdHktb3B0Z3JvdXAuaHRtbAotCi0gICAgICAgICog
ZG9tL1NlbGVjdEVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6
YXBwZW5kRm9ybURhdGEpOgotCi0yMDA5LTEwLTIxICBTdGV2ZW4gS25pZ2h0ICA8c2drQGNocm9t
aXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KLQotICAgICAgICBS
ZWZhY3RvciBneXAgZm9yIHNlcGFyYXRlIHdlYmNvcmVfYmluZGluZ3N7LF9zb3VyY2VzfSB0YXJn
ZXRzLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDQ0NwotCi0gICAgICAgIEhhbmRsZSBsb25nIGxpbmsgbGluZXMgYnkgYnVpbGRpbmcgLmlkbC1n
ZW5lcmF0ZWQgYmluZGluZ3MgaW4gYQotICAgICAgICBzZXBhcmF0ZSB3ZWJjb3JlX2JpbmRpbmdz
IGxpYnJhcnkgdGFyZ2V0LiAgQXZvaWQgVmlzdWFsIFN0dWRpbwotICAgICAgICBkZXBlbmRlbmN5
IGlzc3VlcyBieSBidWlsZGluZyBhZGRpdGlvbmFsIGdlbmVyYXRlZCAuY3BwIGFuZCAuaCBmaWxl
cwotICAgICAgICBpbiBhIHNlcGFyYXRlIHdlYmNvcmVfYmluZGluZ3Nfc291cmNlcyB0YXJnZXQu
Ci0KLSAgICAgICAgQ2hyb21lIHNob3VsZCBzdGlsbCBidWlsZCBhbmQgdGVzdCBzdWNjZXNzZnVs
bHkuCi0KLSAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKLSAgICAgICAgKiBXZWJD
b3JlLmd5cGk6Ci0KLTIwMDktMTAtMjYgIE1pa2UgQmVsc2hlICA8bWlrZUBiZWxzaGUuY29tPgot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KLQotICAgICAgICBNYWtlIHRoZSBu
dW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yIGNocm9taXVtIGNvbnRyb2xsZWQgYnkKLSAgICAgICAg
Y2hyb21pdW0gcmF0aGVyIHRoYW4gYnkgUmVzb3VyY2VSZXF1ZXN0QmFzZS4KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjYxCi0KLSAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgotICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmNwcDoKLQotMjAwOS0xMC0yNiAg
R3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4K
LQotICAgICAgICBVbnJldmlld2VkLiBtYWtlIGRpc3RjaGVjayBidWlsZCBmaXhlcy4KLQotICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgotCi0yMDA5LTEwLTI2ICBBbnRvbiBNdWhpbiAgPGFudG9u
bUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292Lgot
Ci0gICAgICAgIFVuYnJlYWsgQ2hyb21pdW0gYnVpbGQ6IHRoYXQgcmVxdWlyZXMgYWRkaW5nIGN1
c3RvbSBpbXBsZW1lbnRhdGlvbnMKLSAgICAgICAgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlvbidz
IGl0ZW0gYW5kIG5hbWVkSXRlbS4gIEtlZXAgdjggYmluZGluZwotICAgICAgICBjbG9zZSB0byBK
U0MgYmluZGluZ3MgYXMgd2VsbC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMwNzgwCi0KLSAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
aDoKLSAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXNGcm9tQ29sbGVjdGlvbik6Ci0gICAg
ICAgIChXZWJDb3JlOjpnZXRJdGVtRnJvbUNvbGxlY3Rpb24pOgotICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKLSAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpOQU1F
RF9QUk9QRVJUWV9HRVRURVIpOgotICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNM
KToKLSAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpOQU1FRF9QUk9QRVJUWV9HRVRURVIpOgotICAgICAgICAo
V2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKLSAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgotICAgICAgICAoV2ViQ29yZTo6
Q0FMTEJBQ0tfRlVOQ19ERUNMKToKLQotMjAwOS0xMC0yMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoIGFuZCBEYXJp
biBBZGxlci4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA3MjMKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxODk0MTU+IElucHV0IG5hbWVzIGFk
ZGVkIHRvIG11bHRpcGFydC9mb3JtLWRhdGEgaGVhZGVycyBuZWVkIHRvIGJlIGVzY2FwZWQuCi0K
LSAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9lc2NhcGUtZm9ybS1kYXRhLWZpZWxk
LW5hbWVzLmh0bWwKLQotICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVy
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFF1b3RlZFN0cmluZyk6Ci0gICAgICAgIChX
ZWJDb3JlOjpGb3JtRGF0YUJ1aWxkZXI6OmJlZ2luTXVsdGlQYXJ0SGVhZGVyKToKLSAgICAgICAg
KFdlYkNvcmU6OkZvcm1EYXRhQnVpbGRlcjo6YWRkRmlsZW5hbWVUb011bHRpUGFydEhlYWRlcik6
Ci0gICAgICAgIFBlcmNlbnQtZXNjYXBlIGxpbmUgYnJlYWtzIGFuZCBxdW90YXRpb24gbWFya3Mu
Ci0KLTIwMDktMTAtMjYgIEtlbGx5IE5vcnRvbiAgPGtub3J0b25AZ29vZ2xlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgotCi0gICAgICAgIEFkZHMgRE9NVGltZXIg
c3VwcG9ydCB0byBJbnNwZWN0b3JUaW1lbGluZUFnZW50LgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA0NjcKLQotICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDogQWRkZWQgdGltZXIgc3VwcG9ydCBhbmQgZml4ZWQg
c29tZSBtZXRob2QgbmFtZXMuCi0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpkaWREaXNwYXRjaERPTUV2ZW50KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZExheW91dCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRSZWNhbGN1bGF0ZVN0eWxlKToKLSAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRJbnN0YWxsVGltZXIpOiBBZGRlZC4KLSAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFJlbW92ZVRpbWVyKTogQWRkZWQuCi0gICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRmlyZVRpbWVyKTogQWRk
ZWQuCi0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaXJlVGlt
ZXIpOiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFk
ZEl0ZW1Ub1RpbWVsaW5lKTogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRUaW1lbGluZUl0ZW0pOiBSZW5hbWVkLgotICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6Ci0gICAgICAgIChXZWJD
b3JlOjopOgotICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0b3J5LmNwcDogQWRk
IG1ldGhvZHMgZm9yIHRpbWVyLXJlbGF0ZWQgU2NyaXB0T2JqZWN0cy4KLSAgICAgICAgKFdlYkNv
cmU6OlRpbWVsaW5lSXRlbUZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNUaW1lclRpbWVsaW5lSXRlbSk6
Ci0gICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW1GYWN0b3J5OjpjcmVhdGVUaW1lckluc3Rh
bGxUaW1lbGluZUl0ZW0pOgotICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW1GYWN0b3J5
Lmg6Ci0gICAgICAgICogcGFnZS9ET01UaW1lci5jcHA6IEFkZGVkIGluc3RydW1lbnRhdGlvbiBw
b2ludHMuCi0gICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6aW5zdGFsbCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6cmVtb3ZlQnlJZCk6Ci0gICAgICAgIChXZWJDb3JlOjpET01UaW1l
cjo6ZmlyZWQpOgotCi0yMDA5LTEwLTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCi0KLSAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY5ODg5NjY+IEhhcmR3YXJlIGxheWVycyBkbyBub3Qgc2hvdyB1cCBpbiBw
YWdlIHNuYXBzaG90cwotCi0gICAgICAgIEFkZCBhIG1ldGhvZCB0aGF0IGdldHMgY2FsbGVkIHdo
ZW4gc25hcHNob3R0aW5nIENhbnZhczNETGF5ZXJzIGZvciBwYWdlIHNuYXBzaG90cywKLSAgICAg
ICAgdGhhdCBhbGxvd3MgdGhlIGxheWVyIHRvIHJldHVybiBhIENHSW1hZ2VSZWYgb2YgaXRzIGNv
bnRlbnRzLgotICAgICAgICAKLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ2FudmFz
M0RMYXllci5oOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9DYW52YXMzRExheWVy
Lm1tOgotICAgICAgICAoLVtDYW52YXMzRExheWVyIGNvcHlJbWFnZVNuYXBzaG90V2l0aENvbG9y
U3BhY2U6XSk6Ci0KLTIwMDktMTAtMjYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KLQotICAgICAgICBQ
YXNzICJjb25zb2xlIiBhcyBvYmplY3QgZ3JvdXAgd2hlbiBldmFsdWF0aW5nIHNlbGVjdGlvbi4K
LQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA3MzgK
LQotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanM6Ci0gICAgICAg
IChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9ldmFsU2VsZWN0aW9uSW5DYWxs
RnJhbWUpOgotCi0yMDA5LTEwLTI2ICBLZWlzaGkgSGF0dG9yaSAgPGNhc2V5LmhhdHRvcmlAZ21h
aWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCi0KLSAgICAgICAg
Rml4IGZvciBDb25zb2xlIG5vdCBzaG93aW5nIHJlcGVhdCBjb3VudCB3aGVuIHJlcGVhdGVkbHkg
bG9nZ2luZyBhbiBFdmVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzAzMjQKLQotICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6
Ci0gICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKToKLSAgICAg
ICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZSk6
IEFkZGVkLgotICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgotICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKTogQ2FsbHMgdXBkYXRlUmVwZWF0
Q291bnRJbkNvbnNvbGUgaWYgaXQgaXMgYSByZXBlYXRpbmcgbWVzc2FnZS4KLSAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKTogUmVuYW1lZCBXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZDo6YWRkTWVzc2FnZVRvQ29uc29sZQotICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0Q291bnQpOiBBZGRlZC4gQ2Fs
bGVkIHdoZW4gcmVwZWF0Q291bnQgaXMgaW5jcmVtZW50ZWQuCi0gICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmg6Ci0gICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qczoKLSAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUu
YWRkTWVzc2FnZSk6IFJlbW92ZWQgY2FsbHMgdG8gbXNnLmlzRXF1YWwuCi0gICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLnVwZGF0ZU1lc3NhZ2VSZXBlYXRDb3VudCk6
IEFkZGVkLgotICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5faW5j
cmVtZW50RXJyb3JXYXJuaW5nQ291bnQpOiBBZGRlZC4gVXBkYXRlcyB0aGUgZXJyb3Ivd2Fybmlu
ZyBjb3VudC4KLSAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuY2xl
YXJNZXNzYWdlcyk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UpOgotICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS50b01lc3NhZ2VFbGVt
ZW50KTogVXNlIENvbnNvbGVNZXNzYWdlLl91cGRhdGVSZXBlYXRDb3VudAotICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fdXBkYXRlUmVwZWF0Q291bnQpOgot
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgotICAgICAgICAoV2Vi
SW5zcGVjdG9yLmFkZENvbnNvbGVNZXNzYWdlKTogUmVuYW1lZCBXZWJJbnNwZWN0b3IuYWRkTWVz
c2FnZVRvQ29uc29sZS4KLSAgICAgICAgKFdlYkluc3BlY3Rvci51cGRhdGVDb25zb2xlTWVzc2Fn
ZVJlcGVhdENvdW50KTogQWRkZWQuCi0KLTIwMDktMTAtMjYgIENocmlzIEZsZWl6YWNoICA8Y2Zs
ZWl6YWNoQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQot
ICAgICAgICBjcmFzaCB3aXRoIEFYIG9uIHdoZW4gYW4gaW1hZ2UgbWFwIGNvbnRhaW5zIGFuIGFu
Y2hvciB0YWcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwNzM5Ci0KLSAgICAgICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvY3Jhc2hpbmctYS10YWctaW4t
bWFwLmh0bWwKLQotICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRDaGlsZHJlbik6Ci0KLTIwMDktMTAtMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgotCi0gICAgICAgIEFk
ZHMgZmVhdHVyZSBFTkFCTEUgZ3VhcmRzIHRvIFY4IGJpbmRpbmdzLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2OTcKLQotICAgICAgICBUaGlzIGFk
ZHMgZ3VhcmRzIGZvciB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIHRvIHRoZSBWOCBiaW5kaW5ncywK
LSAgICAgICAgdG8gYWxsb3cgYnVpbGRzIHdpdGggVjggdG8gc3VjY2VlZCB3aGVuIHRoZXNlIGZl
YXR1cmVzIGFyZSBub3QgZW5hYmxlZC4KLSAgICAgICAgLSBEQVRBQkFTRQotICAgICAgICAtIFdP
UktFUlMKLSAgICAgICAgLSBTSEFSRURfV09SS0VSUwotICAgICAgICAtIFNWRwotICAgICAgICAt
IFhQQVRICi0gICAgICAgIC0gWFNMVAotICAgICAgICAtIElOU1BFQ1RPUgotCi0gICAgICAgIFRo
aXMgaXMgYSBidWlsZCBmaXggb25seSwgbm8gbmV3IHRlc3RzIHJlcXVpcmVkLgotCi0gICAgICAg
ICogYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaDogTW9kaWZpZWQuCi0gICAgICAgICog
YmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6IE1vZGlmaWVkLgotICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwOiBNb2RpZmllZC4KLSAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEluZGV4Lmg6IE1vZGlmaWVkLgotCi0yMDA5LTEwLTI2ICBKb2FubWFyaWUgRGlnZ3Mg
IDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFhhbiBM
b3Blei4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjU2NzkKLSAgICAgICAgW0d0a10gSW1wcm92ZSBhY2Nlc3NpYmlsaXR5IG9mIGZvY3VzYWJsZSBs
aXN0cwotCi0gICAgICAgIEZpeGVzIHRoZSBpc3N1ZXMgd2l0aCB0aGUgQXRrIHN0YXRlcyBleHBv
c2VkIGZvciBMaXN0Qm94T3B0aW9uCi0KLSAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6Ci0gICAgICAgIChzZXRBdGtTdGF0ZVNldEZy
b21Db3JlT2JqZWN0KToKLQotMjAwOS0xMC0yNiAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmll
LmRpZ2dzQGdtYWlsLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCi0KLSAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDg1Ci0gICAg
ICAgIFtHdGtdIEluY29ycmVjdCByZW5kZXJpbmcgb2YgbGlzdAotCi0gICAgICAgIEFkZHMgYSB3
YXkgZm9yIHBsYXRmb3JtcyB0byBpbmRpY2F0ZSB0aGF0IGEgcGFydGljdWxhciBvYmplY3QKLSAg
ICAgICAgc2hvdWxkIG5vdCBiZSBpZ25vcmVkLgotCi0gICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Lmg6Ci0gICAgICAgICogYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21pdW0uY3BwOgotICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
Z3RrL0FjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwOgotICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW06Ci0gICAgICAgICogYWNjZXNzaWJpbGl0eS9x
dC9BY2Nlc3NpYmlsaXR5T2JqZWN0UXQuY3BwOgotICAgICAgICAqIGFjY2Vzc2liaWxpdHkvd2lu
L0FjY2Vzc2liaWxpdHlPYmplY3RXaW4uY3BwOgotICAgICAgICAqIGFjY2Vzc2liaWxpdHkvd3gv
QWNjZXNzaWJpbGl0eU9iamVjdFd4LmNwcDoKLSAgICAgICAgKEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KToKLSAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgotICAgICAgICAoQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6Ci0KLTIwMDktMTAtMjYg
IEtpbnVrbyBZYXN1ZGEgIDxraW51a29AZ29vZ2xlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBKYW4gQWxvbnpvLgotCi0gICAgICAgIEJ1ZyAzMDYxOTogW0xpbnV4XSBNZW51IGtleSBkb2Vz
bid0IHdvcmsKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwNjE5Ci0KLSAgICAgICAgVGVzdDogbWFudWFsLXRlc3RzL2tleWJvYXJkLW1lbnVrZXktZXZl
bnQuaHRtbAotICAgICAgICBObyBuZXcgbGF5b3V0IHRlc3RzOiB0ZXN0aW5nIHRoaXMgd2lsbCBy
ZXF1aXJlIGNoYW5nZXMgaW4gdGhlIHRlc3QKLSAgICAgICAgY29udHJvbGxlciBpbiBhIHBsYXRm
b3JtLXNwZWNpZmljIHdheS4KLQotICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0tleUNvZGVD
b252ZXJzaW9uR3RrLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yS2V5
RXZlbnQpOiBjaGFuZ2VkIHN3aXRjaC1jYXNlIGNvZGUgZm9yCi0gICAgICAgIEdES19NZW51IHRv
IHJldHVybiBWS0VZX0FQUFMgaW5zdGVhZCBvZiBWS0VZX01FTlUuCi0gICAgICAgICogcGxhdGZv
cm0vZ3RrL0tleUV2ZW50R3RrLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NLZXlDb2Rl
Rm9yS2V5RXZlbnQpOiBjaGFuZ2VkIHN3aXRjaC1jYXNlIGNvZGUgZm9yCi0gICAgICAgIEdES19N
ZW51IHRvIHJldHVybiBWX0FQUFMgaW5zdGVhZCBvZiBWS19NRU5VLgotCi0yMDA5LTEwLTI1ICBB
bnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KLQotICAgICAgICBSZXVzZSBhbHJlYWR5IGZldGNoZWQgcHJveHkuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDc0NwotCi0gICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV3JhcHBlcjo6Y29udmVydE5ld05vZGVUb1Y4T2JqZWN0KToKLQotMjAwOS0xMC0yNSAgTGFz
emxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+Ci0KLSAgICAgICAgVW5yZXZp
ZXdlZCBidWlsZCBmaXguCi0KLSAgICAgICAgQnVpbGQgZml4IGZvciBXSU5fT1MgaWYgTmV0c2Nh
cGUgcGx1Z2luIHN1cHBvcnQgaXMgdHVybmVkIG9mZgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA3NTMKLQotICAgICAgICAqIHBsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwOgotCi0yMDA5LTEwLTI1ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21p
dW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIEEg
cXVpY2sgZml4IGZvciBCdWcgMjkxMDMuCi0gICAgICAgIFNpbmNlIFN0cmluZzo6c3RhcnRzV2l0
aCgpIGNhbm5vdCBmb2xkIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB0aGlzIGNoYW5nZSBmb2xkcyB0
aGUgcHJlZml4IHN0cmluZwotICAgICAgICBhbmQgdGhlIG9wdGlvbiBzdHJpbmcgYmVmb3JlIGNh
bGxpbmcgU3RyaW5nOjpzdGFydHNXaXRoKCkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTEwMwotCi0gICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2xp
c3Rib3gtdHlwZWFoZWFkLWN5cmlsbGljLmh0bWwKLSAgICAgICAgICAgICAgIGZhc3QvZm9ybXMv
bGlzdGJveC10eXBlYWhlYWQtZ3JlZWsuaHRtbAotCi0gICAgICAgICogZG9tL1NlbGVjdEVsZW1l
bnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZCk6
Ci0KLTIwMDktMTAtMjUgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9yaUBnbWFpbC5jb20+
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgotCi0gICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEV4cGFuZGluZyBhIG5vZGUgaW4gdGhlIENvbnNvbGUgc2hvdWxkIG5vdCBzaG93
IHRoZSBlbGVtZW50IGluIEVsZW1lbnRzIHBhbmVsCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDc0OQotCi0gICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLm9ubW91c2Vkb3duKTogQ2hlY2sgaWYgaW5zaWRlIGRp
c2Nsb3N1cmUgdHJpYW5nbGUuCi0KLTIwMDktMTAtMjUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgotCi0gICAgICAgIEZp
eCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzUxCi0gICAg
ICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBzaG91bGQgbm90IGluaGVyaXQgZnJvbSBIVE1MQ29s
bGVjdGlvbgotCi0gICAgICAgICogR05VbWFrZWZpbGUuYW06Ci0gICAgICAgICogV2ViQ29yZS5n
eXBpOgotICAgICAgICAqIFdlYkNvcmUucHJvOgotICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOgotICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKLSAgICAgICAgQWRkZWQgSlNIVE1MQ29sbGVjdGlvbkZ1bmN0aW9ucy5oCi0KLSAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OmNhbGxIVE1MQWxsQ29sbGVjdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpKU0hUTUxB
bGxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKLSAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENv
bGxlY3Rpb246Oml0ZW0pOgotICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6
bmFtZWRJdGVtKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9t
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1MQ29sbGVjdGlvbik6Ci0gICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKToKLSAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTENvbGxlY3Rpb246Oml0ZW0pOgotICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVj
dGlvbjo6bmFtZWRJdGVtKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpjYWxsSFRNTENvbGxlY3Rpb24p
OgotICAgICAgICAoV2ViQ29yZTo6SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmdldENhbGxEYXRh
KToKLSAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjYW5HZXRJdGVt
c0Zvck5hbWUpOgotICAgICAgICAoV2ViQ29yZTo6SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5h
bWVHZXR0ZXIpOgotICAgICAgICAoV2ViQ29yZTo6SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Omlu
ZGV4U2V0dGVyKToKLSAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpp
dGVtKToKLSAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZEl0
ZW0pOgotICAgICAgICBSZWZhY3RvciB0byB1c2UgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBI
VE1MQ29sbGVjdGlvbiBiaW5kaW5ncyBmdW5jdGlvbnMKLSAgICAgICAgZnJvbSBKU0hUTUxDb2xs
ZWN0aW9uRnVuY3Rpb25zLmgKLQotICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rp
b25GdW5jdGlvbnMuaDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpnZXRDb2xsZWN0aW9uTmFt
ZWRJdGVtcyk6Ci0gICAgICAgIChXZWJDb3JlOjpnZXRDb2xsZWN0aW9uSXRlbXMpOgotICAgICAg
ICAoV2ViQ29yZTo6Y2FsbEhUTUxDb2xsZWN0aW9uR2VuZXJpYyk6Ci0gICAgICAgIEFkZGVkIGdl
bmVyaWMgZnVuY3Rpb25zIHRoYXQgSlNIVE1MQ29sbGVjdGlvbiwgSlNIVE1MQWxsQ29sbGVjdGlv
biBhbmQKLSAgICAgICAgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24gY2FuIGFsbCB1c2UuCi0KLSAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHA6IEFkZCBpbmNsdWRl
IG9mIEpTSFRNTEFsbENvbGxlY3Rpb24uaAotICAgICAgICBmb3IgdG9KUyBvbiBkb2N1bWVudC5h
bGwuCi0KLSAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06Ci0gICAgICAgICogYmlu
ZGluZ3Mvb2JqYy9ET01VdGlsaXR5Lm1tOgotICAgICAgICAoSlNDOjpjcmVhdGVET01XcmFwcGVy
KToKLSAgICAgICAgUmVtb3ZlIHNwZWNpYWwgY2FzZXMgZm9yIEhUTUxPcHRpb25zQ29sbGVjdGlv
bi4KLQotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgotICAg
ICAgICAqIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uaWRsOgotICAgICAgICAqIGh0bWwvSFRNTENv
bGxlY3Rpb24uaWRsOgotICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmlkbDoK
LQotMjAwOS0xMC0yNCAgS2Vpc2hpIEhhdHRvcmkgIDxjYXNleS5oYXR0b3JpQGdtYWlsLmNvbT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCi0KLSAgICAgICAgV2ViSW5z
cGVjdG9yOiBGaXhlZCBpc3N1ZSB3aXRoIElNRSBpbnNpZGUgY29uc29sZQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2NjAKLQotICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlLl9wcm9tcHRLZXlEb3duKToKLSAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3LmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9y
LkRhdGFiYXNlUXVlcnlWaWV3LnByb3RvdHlwZS5fcHJvbXB0S2V5RG93bik6Ci0gICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3Iu
bG9hZGVkKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5zZWFyY2hLZXlEb3duKTogTW92ZWQgcGVy
Zm9ybVNlYXJjaCBoZXJlIGZyb20gV2ViSW5zcGVjdG9yLnNlYXJjaEtleVVwLgotICAgICAgICAo
V2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5lbGVtZW50LmhhbmRsZUtleUV2ZW50KToKLSAgICAg
ICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcpOgotICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvdXRpbGl0aWVzLmpzOgotICAgICAgICAoaXNFbnRlcktleSk6IEFkZGVkLiBDaGVjayBp
ZiBpbiBJTUUuCi0KLTIwMDktMTAtMjQgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBw
bGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAg
ICBGaXhlcyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzUyPi4K
LSAgICAgICAgV2ViIEluc3BlY3RvcjogTXVsdGlwbGUgU2VsZWN0aW9uIG9uIFNjb3BlIEJhcnMg
YnkgZGVmYXVsdCBDb25mbGljdHMgd2l0aCBvdGhlciBiZWhhdmlvciBvbiBPU1guCi0gICAgICAg
IAotICAgICAgICBIYXZlIHRoZSBzY29wZSBiYXJzIHNlbGVjdCBvbmUgc2NvcGUgYnkgZGVmYXVs
dCwgYnV0IGlmIHRoZSBtdWx0aXBsZSBzZWxlY3Rpb24ga2V5Ci0gICAgICAgIGlzIHByZXNzZWQs
IGFsbG93IGZvciBtdWx0aXBsZSBzZWxlY3Rpb24uCi0KLSAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
KToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX3VwZGF0ZUZp
bHRlcik6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLmZpbHRl
cik6Ci0gICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKLSAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCk6Ci0gICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLmZpbHRlcik6Ci0gICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl91cGRhdGVGaWx0ZXIpOgotCi0yMDA5LTEwLTI0
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAgICBNYWtlIHRo
ZSBzY29wZSBiYXJzIGluIHRoZSBXZWIgSW5zcGVjdG9yIG1hdGNoIG90aGVyIHNjb3BlIGJhcnMg
aW4gTWFjIE9TIFguCi0gICAgICAgIEFsc28gY2xlYW5zIHVwIHRoZSBDU1MgdG8gdXNlIGNsYXNz
ZXMgaW5zdGVhZCBvZiBJRCBzZWxlY3RvcnMuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MTg2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJl
cm5zdGVpbi4KLQotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwu
anM6IEFkZCB0aGUgc2NvcGUtYmFyIGNsYXNzLgotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmNzczogTG90cyBvZiBjaGFuZ2VzIHRvIG1ha2UgaXQgbG9vayByaWdodC4K
LSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOiBBZGQgdGhlIHNj
b3BlLWJhciBjbGFzcy4KLQotMjAwOS0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBh
cHBsZS5jb20+Ci0KLSAgICAgICAgRml4IHNlbGVjdGluZyBSZXNvdXJjZXMgaW4gdGhlIFdlYiBJ
bnNwZWN0b3IncyBSZXNvdXJjZXMgcGFuZWwuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzQzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KLQotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwu
anM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLmlzQ2F0
ZWdvcnlWaXNpYmxlKTogQWRkZWQuCi0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBzZWxlY3RhYmxlKTogQ2FsbAotICAgICAgICBp
c0NhdGVnb3J5VmlzaWJsZSBvbiB0aGUgUmVzb3VyY2VzUGFuZWwuCi0KLTIwMDktMTAtMjQgIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgotCi0gICAgICAgIEZpeCB0aGUgU2Nv
cGUgQmFyIGluIHRoZSBXZWIgSW5zcGVjdG9yJ3MgUmVzb3VyY2UgcGFuZWwsIHNvIHRoYXQgc2Vs
ZWN0aW5nCi0gICAgICAgIEFsbCB3aWxsIGRlc2VsZWN0IHRoZSBvdGhlciBmaWx0ZXJzLgotCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDc0NAotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCi0KLSAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlc1BhbmVsLmNyZWF0ZUZpbHRlckVsZW1lbnQpOiBCZXR0ZXIgc3ludGF4LgotICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUuZmlsdGVyKTogVXNlIGEgbm9ybWFsIGZvciBsb29wLAotICAg
ICAgICBhbmQgdGhlIGNoaWxkIHZhcmlhYmxlIGluc3RlYWQgb2YgdGFyZ2V0IGluIHRoZSBsb29w
LiBPdGhlciBjbGVhbiB1cC4KLQotMjAwOS0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3Ro
eUBhcHBsZS5jb20+Ci0KLSAgICAgICAgTWFrZSByZXNpemluZyB0aGUgV2ViIEluc3BlY3Rvcidz
IEVsZW1lbnRzIHBhbmVsIHNpZGViYXIgd29yayBhZ2Fpbi4KLSAgICAgICAgQWxzbyBtYWtlcyBS
ZXNvdXJjZXMgcGFuZWwgdXNlIHRoZSBzaWRlYmFyIGNvZGUgaW4gUGFuZWwuCi0KLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzQyCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KLQotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUGFuZWwuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwpOiBEb24ndCBjcmVhdGUg
dGhlIHNpZGViYXIgd2l0aCBhbiBhcmd1bWVudC4KLSAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5l
bC5wcm90b3R5cGUuc2hvdyk6IENhbGwgdXBkYXRlU2lkZWJhcldpZHRoLgotICAgICAgICAoV2Vi
SW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5oYW5kbGVLZXlFdmVudCk6IENhbGwgaGFuZGxlU2lk
ZWJhcktleUV2ZW50LgotICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5oYW5k
bGVTaWRlYmFyS2V5RXZlbnQpOiBBZGRlZC4KLSAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5w
cm90b3R5cGUuY3JlYXRlU2lkZWJhcik6IFJlbmFtZWQgZnJvbSBfY3JlYXRlU2lkZWJhci4KLSAg
ICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuX3NpZGViYXJEcmFnZ2luZyk6IENh
bGwgdXBkYXRlU2lkZWJhcldpZHRoLgotICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsLnByb3Rv
dHlwZS51cGRhdGVTaWRlYmFyV2lkdGgpOiBSZW5hbWVkIGZyb20gX3VwZGF0ZVNpZGViYXJXaWR0
aC4KLSAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2V0U2lkZWJhcldpZHRo
KTogQWRkZWQuIENhbGxlZCBieSB1cGRhdGVTaWRlYmFyV2lkdGguCi0gICAgICAgIChXZWJJbnNw
ZWN0b3IuUGFuZWwucHJvdG90eXBlLnVwZGF0ZU1haW5WaWV3V2lkdGgpOiBSZW5hbWVkIGZyb20g
c2V0TWFpblZpZXdXaWR0aC4KLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVz
UGFuZWwuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCk6IENhbGwgY3Jl
YXRlU2lkZWJhci4KLSAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlw
ZS51cGRhdGVNYWluVmlld1dpZHRoKTogUmVuYW1lZCBmcm9tIHNldE1haW5WaWV3V2lkdGguCi0g
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKLSAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuc2hvdyk6IFJlbW92ZSBjYWxs
IHRvIF91cGRhdGVTaWRlYmFyV2lkdGguCi0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
UGFuZWwucHJvdG90eXBlLnNob3dSZXNvdXJjZSk6IENhbGwgdXBkYXRlU2lkZWJhcldpZHRoCi0g
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLmNsb3NlVmlzaWJs
ZVJlc291cmNlKTogRGl0dG8uCi0gICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwu
cHJvdG90eXBlLnNldFNpZGViYXJXaWR0aCk6IEFkZGVkLgotICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS51cGRhdGVNYWluVmlld1dpZHRoKTogQWRkZWQuCi0g
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanM6Ci0gICAgICAgIChX
ZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsKTogQ2FsbCBjcmVhdGVTaWRlYmFyLgotICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUudXBkYXRlTWFpblZpZXdXaWR0aCk6
IFJlbmFtZWQgZnJvbSBzZXRNYWluVmlld1dpZHRoLgotICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGltZWxpbmVQYW5lbC5qczoKLSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsKTogQ2FsbCBjcmVhdGVTaWRlYmFyLgotICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucHJvdG90eXBlLnVwZGF0ZU1haW5WaWV3V2lkdGgpOiBSZW5hbWVkIGZyb20gc2V0TWFp
blZpZXdXaWR0aC4KLQotMjAwOS0xMC0yNCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgQ2FsbCB1cGRhdGVTZWxlY3Rpb24oKSBpbiBhIGZldyBwbGFjZXMg
c28gaG92ZXJpbmcgaW4gdGhlIFdlYiBJbnNwZWN0b3IncwotICAgICAgICBFbGVtZW50cyBwYW5l
bCBhbHdheXMgaGFzIHRoZSBjb3JyZWN0IHJvdyBzZWxlY3Rpb24gaGVpZ2h0LgotCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDczNQotCi0gICAgICAg
IFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCi0KLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUudG9nZ2xlTmV3QXR0cmlidXRlQnV0dG9uKTogQ2FsbCB1
cGRhdGVTZWxlY3Rpb24oKS4KLSAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVt
ZW50LnByb3RvdHlwZS5faW5zZXJ0SW5MYXN0QXR0cmlidXRlUG9zaXRpb24pOiBEaXR0by4KLSAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6IFByZXZlbnQgdGV4dCB3
cmFwcGluZyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBhZGQgYXR0cmlidXRlIHRleHQuCi0KLTIwMDkt
MTAtMjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgotCi0gICAgICAgIFJl
bW92ZSB0aGUgcmUtcm9vdCB0cmVlIGZlYXR1cmUgZnJvbSB0aGUgV2ViIEluc3BlY3RvcidzCi0g
ICAgICAgIEVsZW1lbnRzIHBhbmVsLiBUaGlzIGZlYXR1cmUgd2Fzbid0IHN1cGVyIHVzZWZ1bCBh
bmQgZ2V0cwotICAgICAgICBpbiB0aGUgd2F5IG9mIGRvdWJsZS1jbGljayB0byBlZGl0LgotCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDczNgotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCi0KLSAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUub25kYmxjbGljayk6Ci0KLTIwMDktMTAtMjQg
IEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgotCi0gICAgICAgIEltcGxlbWVudHMgUmV0dXJuc05ldyBoaW50IGZvciBW
OCBiaW5kaW5ncyBnZW5lcmF0aW9uIGNvZGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDc0NQotCi0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06Ci0gICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmg6
Ci0gICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnROZXdOb2RlVG9WOE9iamVj
dCk6Ci0KLTIwMDktMTAtMjQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgotCi0gICAgICAgIE1pc3NpbmcgaW1hZ2VzIGF0
IDM1MC5vcmcgZHVlIHRvIHdyb25nIFVSTHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMwNzQ4Ci0KLSAgICAgICAgVGVzdDogZmFzdC9kb20vSFRNTElt
YWdlRWxlbWVudC9wYXJzZS1zcmMuaHRtbAotCi0gICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKTogUGFzcyB0aGUgYXR0
cmlidXRlIHZhbHVlIHRocm91Z2ggZGVwcmVjYXRlUGFyc2VVUkwoKS4KLSAgICAgICAgVGhpcyBt
YXRjaGVzIHdoYXQgdGhlIE9iamVjdGl2ZS1DIGJpbmRpbmdzIGRvLCBhcyB3ZWxsIGFzIHdoYXQg
SFRNTEltYWdlTG9hZGVyOjpzb3VyY2VVUkkoKQotICAgICAgICBhbmQgU1ZHSW1hZ2VMb2FkZXI6
OnNvdXJjZVVSSSgpIGRvLgotCi0yMDA5LTEwLTI0ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEu
Z29tYm9zQG5va2lhLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkLgotCi0gICAgICAgIFtRdF0g
QnVpbGQgZml4IGZvciBRdFdlYktpdCBhZnRlciByNTAwMTMuCi0KLSAgICAgICAgKiBXZWJDb3Jl
LnBybzoKLQotMjAwOS0xMC0yNCAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0u
b3JnPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KLQotICAgICAgICBbVjhdIEZp
eCB1cCB0byBhY2NvbW1vZGF0ZSBmb3IgSFRNTEFsbENvbGxlY3Rpb24gY2hhbmdlcyBpbgotICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80OTk5OC4KLQotICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbToKLSAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6Ci0g
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKLQot
MjAwOS0xMC0yMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgotCi0gICAgICAgIFJl
dmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzcyOTQxMzE+IEFzc2VydGlvbiBmYWlsdXJlIGluIEF1dGhlbnRpY2F0aW9uTWFjIGF0Ci0gICAg
ICAgIG1hYyhjb25zdCBDcmVkZW50aWFsJikgYWZ0ZXIgYXV0aGVudGljYXRpbmcgdG8gTW9iaWxl
TWUgR2FsbGVyeSBtb3ZpZQotCi0gICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFs
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OkNyZWRlbnRpYWwpOiBJbml0aWFs
aXplIG1fcGVyc2lzdGVuY2UuCi0gICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjppc0VtcHR5
KTogTWFkZSB0aGlzIG1ldGhvZCBjb25zdC4KLSAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWwuaDoKLSAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bk1hYy5tbToKLSAgICAgICAgKFdlYkNvcmU6Om1hYyk6IFJldHVybiBuaWwgaWYgdGhlIENyZWRl
bnRpYWwgaXMgZW1wdHkuCi0KLTIwMDktMTAtMjMgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3Rl
aW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQot
ICAgICAgICBGaXhlcyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMw
NjE3Pi4KLSAgICAgICAgV2ViIEluc3BlY3RvcjogUmVzb3VyY2VzIFNjb3BlIEJhciBTaG91bGQg
QWxsb3cgQ29tYmluYXRpb25zLgotICAgICAgICAKLSAgICAgICAgUmVmYWN0b3IgdGhlIGZpbHRl
cmluZyBpbiBSZXNvdXJjZVBhbmVsIHRvIG1ha2UgaXQgbWF0Y2ggQ29uc29sZVZpZXcsCi0gICAg
ICAgIGFuZCBhZGQgYSBkaXZpZGVyIGJldHdlZW4gQWxsLCBhbmQgdGhlIG90aGVyIGNob2ljZXMg
b2YgUmVzb3VyY2UgdHlwZXMuCi0KLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsKToKLSAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuZmlsdGVyKToKLSAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUZpbHRl
cik6Ci0gICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgotCi0yMDA5
LTEwLTIzICBDaHJpcyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICBJZ25vcmUgdGhlIFJlZnJlc2ggaGVhZGVy
IGlmIHdlJ3JlIGluIHZpZXcgc291cmNlIG1vZGUuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjM5Ci0KLSAgICAgICAgVGVzdDogaHR0cC90ZXN0
cy9zZWN1cml0eS92aWV3LXNvdXJjZS1uby1yZWZyZXNoLmh0bWwKLQotICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6IGlnbm9yZSBSZWZyZXNoIGluIHZpZXctc291cmNlIG1vZGUuCi0K
LTIwMDktMTAtMjMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA3MzQKLSAgICAgICAgUmVtb3ZlIFhNTFRva2VuaXplcjo6
bV9jdXJyZW50Tm9kZUlzUmVmZXJlbmNlZAotCi0gICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlv
ciwgbm8gdGVzdHMuCi0KLSAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OlhNTFRva2VuaXplcjo6c2V0Q3VycmVudE5vZGUpOgotICAgICAgICAqIGRvbS9Y
TUxUb2tlbml6ZXIuaDoKLSAgICAgICAgRG9uJ3Qgc3RvcmUgYSBib29sZWFuIGZvciB0aGUgY3Vy
cmVudCBub2RlIGJlaW5nIHRoZSBkb2N1bWVudCAtIHdlIGNhbiBhbHdheXMgY2hlY2sgZm9yIHRo
YXQuCi0KLSAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpYTUxUb2tlbml6ZXI6OlhNTFRva2VuaXplcik6Ci0gICAgICAgICogZG9tL1hNTFRv
a2VuaXplclF0LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6WE1MVG9rZW5p
emVyKToKLSAgICAgICAgQSBmcmFnbWVudCBwYXNzZWQgdG8gWE1MVG9rZW5pemVyIGlzIG5ldmVy
IG51bGwgLSBpbiBmYWN0LCB0aGUgZmlyc3QgdGhpbmcgd2UgZG8gaXMgZGVyZWZlcmVuY2UKLSAg
ICAgICAgaXQgdW5jb25kaXRpb25hbGx5LCBhbmQgdGhlbiBiZWdpbiBjaGVja2luZyBpdCBmb3Ig
bnVsbCwgYXMgaWYgaXQgY291bGQgaGVscC4KLQotMjAwOS0xMC0yMyAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgTm8gcmV2aWV3IHNpbmNlIHRoaXMgaXMgYSBidWls
ZCBmaXguCi0KLSAgICAgICAgQnVpbGQgZml4IGZvciB0aGUgTWFjLiAoQnVpbGQgaXMgb25seSBi
cm9rZW4gd2hlbiBTVkcgZmlsdGVycyBhcmUgCi0gICAgICAgIGVuYWJsZWQuKQotCi0gICAgICAg
IExhYmVsbGVkIHRoZXNlIGZ1bmN0aW9uIHN0YXRpYy4KLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6
aWRlbnRpdHkpOgotICAgICAgICAoV2ViQ29yZTo6dGFibGUpOgotICAgICAgICAoV2ViQ29yZTo6
ZGlzY3JldGUpOgotICAgICAgICAoV2ViQ29yZTo6bGluZWFyKToKLSAgICAgICAgKFdlYkNvcmU6
OmdhbW1hKToKLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmJveEJsdXIpOgotCi0yMDA5LTEwLTIzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJldmlld2VkIGJ5
IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgYSBU
aW1lbGluZSBwYW5lbC4KLQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzA3MjUKLQotICAgICAgICAqIFdlYkNvcmUuZ3lwaToKLSAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0ltYWdlcy90aW1lbGluZUljb24ucG5nOiBBZGRlZC4KLSAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lQWdlbnQuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuYWRkSXRlbVRv
VGltZWxpbmUpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLnRpbWVsaW5lUHJvZmlsZXJXYXNTdGFy
dGVkKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci50aW1lbGluZVByb2ZpbGVyV2FzU3RvcHBlZCk6
Ci0gICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOiBBZGRlZC4K
LSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsKToKLSAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS50b29sYmFySXRlbUNsYXNzLmdldCB0b29sYmFy
SXRlbUxhYmVsKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZS5nZXQgc3RhdHVzQmFySXRlbXMpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlLmhhbmRsZUtleUV2ZW50KToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLnByb3RvdHlwZS50aW1lbGluZVdhc1N0YXJ0ZWQpOgotICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLnRpbWVsaW5lV2FzU3RvcHBlZCk6Ci0gICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuYWRkSXRlbVRvVGltZWxp
bmUpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9pbm5l
ckFkZEl0ZW1Ub1RpbWVsaW5lKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LnByb3RvdHlwZS5fdG9nZ2xlVGltZWxpbmVCdXR0b24pOgotICAgICAgICAoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLnNldE1haW5WaWV3V2lkdGgpOgotICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLmdldEl0ZW1UeXBlTmFtZSk6Ci0gICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudCk6Ci0gICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gp
OgotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKLSAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6Ci0gICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbDoKLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qczoKLSAgICAgICAgKFdlYkluc3BlY3Rvci5fY3JlYXRlUGFuZWxzKToKLQotMjAw
OS0xMC0yMyAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAgICBXZWIgSW5zcGVjdG9yOiBD
bGFzaCBCZXR3ZWVuIFNlYXJjaCdzIG9ua2V5dXAgYW5kIGluY3JlbWVudGFsIHNlYXJjaCBldmVu
dHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzMx
Ci0KLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKLSAgICAgICAg
KFdlYkluc3BlY3Rvci5wZXJmb3JtU2VhcmNoKTogcHJldmVudCBpbmNyZW1lbnRhbCBzZWFyY2gg
ZXZlbnQgZnJvbSBjbG9iYmVyaW5nIGEgZm9yY2VkIHNlYXJjaAotCi0yMDA5LTEwLTIzICBLZWxs
eSBOb3J0b24gIDxrbm9ydG9uQGdvb2dsZS5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KLQotICAgICAgICBSZW1vdmVzIHRoZSBuZWVkIGZvciBDKysgVGltZWxpbmUg
dHlwZXMgaW4gSW5zcGVjdG9yVGltZWxpbmVBZ2VudCBpbiBmYXZvcgotICAgICAgICBvZiBTY3Jp
cHRPYmplY3RzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA3MDcKLQotICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgotICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgotICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKLSAgICAgICAgKiBpbnNwZWN0b3IvRE9NRGlzcGF0Y2hUaW1lbGluZUl0ZW0u
Y3BwOiBSZW1vdmVkLgotICAgICAgICAqIGluc3BlY3Rvci9ET01EaXNwYXRjaFRpbWVsaW5lSXRl
bS5oOiBSZW1vdmVkLgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3Rv
clRpbWVsaW5lQWdlbnQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbERpc3BhdGNoRE9NRXZlbnQpOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkRGlzcGF0Y2hET01FdmVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsTGF5b3V0KToKLSAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZExheW91dCk6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp3aWxsUmVjYWxjdWxhdGVTdHlsZSk6Ci0gICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZWNhbGN1bGF0ZVN0eWxlKToKLSAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxQYWludCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYWludCk6Ci0gICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsV3JpdGVIVE1MKToKLSAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCk6Ci0gICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXNldCk6Ci0gICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQpOgotICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEN1cnJlbnRUaW1lbGlu
ZUl0ZW0pOgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6Ci0g
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpUaW1lbGluZUl0ZW1FbnRy
eTo6VGltZWxpbmVJdGVtRW50cnkpOgotICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0u
Y3BwOiBSZW1vdmVkLgotICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZUl0ZW0uaDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVJdGVtRmFjdG9yeS5jcHA6IEFkZGVkLgot
ICAgICAgICAoV2ViQ29yZTo6VGltZWxpbmVJdGVtRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1RpbWVs
aW5lSXRlbSk6Ci0gICAgICAgIChXZWJDb3JlOjpUaW1lbGluZUl0ZW1GYWN0b3J5OjpjcmVhdGVE
T01EaXNwYXRjaFRpbWVsaW5lSXRlbSk6Ci0gICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lSXRl
bUZhY3RvcnkuaDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjopOgotICAgICAgICAoV2ViQ29y
ZTo6VGltZWxpbmVJdGVtRmFjdG9yeTo6VGltZWxpbmVJdGVtRmFjdG9yeSk6Ci0KLTIwMDktMTAt
MjMgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgotCi0gICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDcyOQotICAgICAgICBQcm92aWRlIHByaXZhdGUgQVBJIHRv
IHJlcXVlc3QgdGhlIGdsb2JhbCBjb250ZXh0IGZvciBhIHNwZWNpZmljIHdvcmxkLgotICAgICAg
ICBVc2VkIHRvIGluaXRpYWxpemUgcGFyYW1ldGVycyBvbiB0aGUgZ2xvYmFsIG9iamVjdC4KLQot
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0KToKLSAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmg6Ci0KLTIwMDktMTAtMjMgIFN0ZXZlIEJsb2NrICA8c3Rl
dmVibG9ja0Bnb29nbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgot
Ci0gICAgICAgIEZpeGVzIHN0eWxlIHByb2JsZW1zIGluIEFuZHJvaWQtc3BlY2lmaWMgZmlsZXMu
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDcxNwot
Ci0gICAgICAgIFN0eWxlIGNoYW5nZXMgb25seSwgbm8gbmV3IHRlc3RzIHBvc3NpYmxlLgotCi0g
ICAgICAgICogcGFnZS9hbmRyb2lkL0V2ZW50SGFuZGxlckFuZHJvaWQuY3BwOiBNb2RpZmllZC4K
LSAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlRG93bkV2ZW50VG9XaWRn
ZXQpOiBGaXhlcyB3aGl0ZXNwYWNlIGluIG1ldGhvZCBzaWduYXR1cmUuCi0gICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZSk6IEZpeGVzIHdo
aXRlc3BhY2UgaW4gbWV0aG9kIHNpZ25hdHVyZS4KLSAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldCk6IEZpeGVzIHdoaXRlc3BhY2UgaW4gbWV0aG9k
IHNpZ25hdHVyZS4KLSAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92
ZUV2ZW50VG9TdWJmcmFtZSk6IEZpeGVzIHdoaXRlc3BhY2UgaW4gbWV0aG9kIHNpZ25hdHVyZS4K
LSAgICAgICAgKiBwbGF0Zm9ybS9hbmRyb2lkL0NsaXBib2FyZEFuZHJvaWQuaDogTW9kaWZpZWQu
IEZpeGVzIGhlYWRlciBpbmNsdWRlIG9yZGVyIGFuZCBpbmRlbnRpbmcuCi0gICAgICAgICogcGxh
dGZvcm0vYW5kcm9pZC9DdXJzb3JBbmRyb2lkLmNwcDogTW9kaWZpZWQuIAotICAgICAgICAoV2Vi
Q29yZTo6Z3JhYkN1cnNvcik6IEZpeGVzIGZ1bmN0aW9uIGJyYWNlcy4KLSAgICAgICAgKFdlYkNv
cmU6OmdyYWJiaW5nQ3Vyc29yKTogRml4ZXMgZnVuY3Rpb24gYnJhY2VzLgotICAgICAgICAqIHBs
YXRmb3JtL2FuZHJvaWQvRmlsZUNob29zZXJBbmRyb2lkLmNwcDogTW9kaWZpZWQuCi0gICAgICAg
IChXZWJDb3JlOjpGaWxlQ2hvb3Nlcjo6YmFzZW5hbWVGb3JXaWR0aCk6IEZpeGVzIGJyYWNlcyBv
biB3aGlsZSBzdGF0ZW1lbnQsIGFuZCB1cGRhdGVzIFN0cmluZzo6Y29weSB0byBTdHJpbmc6OnRo
cmVhZHNhZmVDb3B5LgotICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvRmlsZVN5c3RlbUFuZHJv
aWQuY3BwOiBNb2RpZmllZC4gRml4ZXMgaGVhZGVyIGluY2x1ZGUgb3JkZXIuCi0gICAgICAgIChX
ZWJDb3JlOjp1bmxvYWRNb2R1bGUpOiBGaXhlcyB6ZXJvIHRlc3QuCi0gICAgICAgIChXZWJDb3Jl
Ojp3cml0ZVRvRmlsZSk6IEZpeGVzIGlmIHN0YXRlbWVudCBzdHJ1Y3R1cmUuCi0gICAgICAgICog
cGxhdGZvcm0vYW5kcm9pZC9LZXlFdmVudEFuZHJvaWQuY3BwOiBNb2RpZmllZC4KLSAgICAgICAg
KFdlYkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yS2V5RXZlbnQpOiBGaXhlcyBzd2l0Y2ggc3RhdGVt
ZW50IGluZGVudGluZy4KLSAgICAgICAgKFdlYkNvcmU6OmtleUlkZW50aWZpZXJGb3JBbmRyb2lk
S2V5Q29kZSk6IEZpeGVzIHN3aXRjaCBzdGF0ZW1lbnQgaW5kZW50aW5nLgotICAgICAgICAqIHBs
YXRmb3JtL2FuZHJvaWQvU2NyZWVuQW5kcm9pZC5jcHA6IE1vZGlmaWVkLiBGaXhlcyBoZWFkZXIg
aW5jbHVkZSBvcmRlciBhbmQgc3dpdGNoIHN0YXRlbWVudCBpbmRlbnRpbmcuCi0gICAgICAgICog
cGxhdGZvcm0vYW5kcm9pZC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOiBNb2RpZmllZC4gRml4ZXMg
aGVhZGVyIGluY2x1ZGUgb3JkZXIuCi0KIDIwMDktMTAtMjMgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBBbm90aGVyIHNob3QgYXQgYSBmaXhlZCBidWlsZC4KSW5kZXg6
IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDIsNiArMzAyLDE2IEBAIGJvb2wgQ2hyb21lOjpzaG91bGRJbnRlcnJ1
cHRKYXZhU2NyaXB0KCkKICAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEludGVycnVwdEphdmFT
Y3JpcHQoKTsKIH0KIAordm9pZCBDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0
IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlKSAKK3sgICAgICAgCisgICAgbV9jbGllbnQtPnJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyKHNjaGVtZSwgYmFzZVVSTCwgdXJsLCB0aXRsZSk7Cit9CisKK3ZvaWQg
Q2hyb21lOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCit7CisgICAgbV9jbGllbnQtPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobWltZVR5cGUsICBi
YXNlVVJMLCB1cmwsICB0aXRsZSk7Cit9ICAgIAorCiBJbnRSZWN0IENocm9tZTo6d2luZG93UmVz
aXplclJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC0+d2luZG93UmVzaXplclJl
Y3QoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDUwMDA0KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHNldFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAg
ICAgICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAKKyAgICAgICAgdm9pZCBy
ZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAg
ICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlKTsKKwogICAgICAgICBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAg
ICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0Jiwg
dW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1
MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIwLDcgKzEyMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCB0YWJzVG9MaW5rcygpIGNvbnN0ID0gMDsKLQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
SW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0ID0gMDsKIAogICAgICAgICAvLyBNZXRo
b2RzIHVzZWQgYnkgSG9zdFdpbmRvdy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiA1MDAw
NCkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwx
MCArMjQsMTIgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKIAogI2luY2x1ZGUgIkNvb2tpZUph
ci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkt1cmwuaCIKICNpbmNsdWRlICJMYW5n
dWFnZS5oIgogI2luY2x1ZGUgIk1pbWVUeXBlQXJyYXkuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBA
IC0xNjksNCArMTcxLDEwNCBAQCB2b2lkIE5hdmlnYXRvcjo6Z2V0U3RvcmFnZVVwZGF0ZXMoKQog
fQogI2VuZGlmCiAKK3N0YXRpYyBib29sIHZlcmlmeUN1c3RvbUhhbmRsZXJVUkwoY29uc3QgU3Ry
aW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgLy8gVGhlIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCBpdCBpcyBhIFNZTlRBWF9FUlIg
aWYgdGhlIHRoZSAiJXMiIHRva2VuCisgICAgLy8gaXMgbm90IHByZXNlbnQuCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIgdG9rZW5bXSA9ICIlcyI7CisgICAgaW50IGluZGV4ID0gdXJsLmZpbmQodG9r
ZW4pOworICAgIGlmICgtMSA9PSBpbmRleCkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gSXQgaXMgYWxzbyBhIFNZ
TlRBWF9FUlIgaWYgdGhlIGN1c3RvbSBoYW5kbGVyIFVSTCwgYXMgY3JlYXRlZCBieSByZW1vdmlu
ZworICAgIC8vIHRoZSAiJXMiIHRva2VuIGFuZCBwcmVwZW5kaW5nIHRoZSBiYXNlIHVybCwgZG9l
cyBub3QgcmVzb2x2ZS4KKyAgICBTdHJpbmcgbmV3VVJMID0gdXJsOworICAgIG5ld1VSTC5yZW1v
dmUoaW5kZXgsIHNpemVvZih0b2tlbikgLyBzaXplb2YodG9rZW5bMF0pKTsKKyAgICAKKyAgICBL
VVJMIGJhc2UoUGFyc2VkVVJMU3RyaW5nLCBiYXNlVVJMKTsKKyAgICBLVVJMIGt1cmwoYmFzZSwg
bmV3VVJMKTsKKyAgICAKKyAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNWYWxpZCgp
KSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgdmVyaWZ5UHJvdG9j
b2xIYW5kbGVyU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICAvLyBJdCBpcyBhIFNFQ1VSSVRZX0VSUiBmb3IgdGhlc2Ugc2NoZW1lcyB0byBiZSBo
YW5kbGVkIGJ5IGEgY3VzdG9tIGhhbmRsZXIuCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNj
aGVtZSwgImh0dHAiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShzY2hlbWUsICJodHRwcyIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKHNjaGVtZSwgImZpbGUiKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZ
X0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBOYXZpZ2F0b3I6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYg
c2NoZW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKCF2ZXJpZnlQcm90b2NvbEhhbmRsZXJTY2hlbWUoc2NoZW1l
LCBlYykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAg
ICAKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU3RyaW5n
IGJhc2VVUkwgPSBkb2N1bWVudC0+YmFzZVVSTCgpLmJhc2VBc1N0cmluZygpOworCisgICAgaWYg
KCF2ZXJpZnlDdXN0b21IYW5kbGVyVVJMKGJhc2VVUkwsIHVybCwgZWMpKQorICAgICAgICByZXR1
cm47CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworCisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcGFnZS0+Y2hyb21lKCktPnJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyKHNjaGVtZSwgYmFzZVVSTCwgdXJsLCBtX2ZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKHRpdGxlKSk7Cit9CisKK3N0YXRpYyBib29sIHZlcmlmeVByb3Rv
Y29sSGFuZGxlck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgLy8gSXQgaXMgYSBTRUNVUklUWV9FUlIgZm9yIHRoZXNlIG1pbWUgdHlwZXMgdG8g
YmUgYXNzaWduZWQgdG8gYSBjdXN0b20KKyAgICAvLyBoYW5kbGVyLgorICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh0eXBlLCAidGV4dC9odG1sIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwg
InRleHQvY3NzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5hdmlnYXRvcjo6cmVn
aXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYg
KCF2ZXJpZnlQcm90b2NvbEhhbmRsZXJNaW1lVHlwZShtaW1lVHlwZSwgZWMpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgCisgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGJhc2VVUkwgPSBkb2N1bWVudC0+
YmFzZVVSTCgpLmJhc2VBc1N0cmluZygpOworCisgICAgaWYgKCF2ZXJpZnlDdXN0b21IYW5kbGVy
VVJMKGJhc2VVUkwsIHVybCwgZWMpKQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdlKiBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOworCisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBwYWdlLT5jaHJvbWUoKS0+cmVnaXN0ZXJDb250ZW50SGFuZGxlcihtaW1lVHlwZSwgYmFz
ZVVSTCwgdXJsLCBtX2ZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHRpdGxl
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHJldmlzaW9u
IDUwMDA0KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCwzOSArMzQsNDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBsdWdpbkFycmF5
OwogICAgIGNsYXNzIFN0cmluZzsKIAotICAgIGNsYXNzIE5hdmlnYXRvciA6IHB1YmxpYyBOYXZp
Z2F0b3JCYXNlLCBwdWJsaWMgUmVmQ291bnRlZDxOYXZpZ2F0b3I+IHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdmlnYXRvcj4gY3JlYXRlKEZyYW1lKiBmcmFtZSkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IE5hdmlnYXRvcihmcmFtZSkpOyB9Ci0gICAgICAgIH5OYXZp
Z2F0b3IoKTsKLQotICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwotICAgICAgICBGcmFt
ZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9Ci0KLSAgICAgICAgU3RyaW5nIGFw
cFZlcnNpb24oKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7Ci0gICAg
ICAgIFBsdWdpbkFycmF5KiBwbHVnaW5zKCkgY29uc3Q7Ci0gICAgICAgIE1pbWVUeXBlQXJyYXkq
IG1pbWVUeXBlcygpIGNvbnN0OwotICAgICAgICBib29sIGNvb2tpZUVuYWJsZWQoKSBjb25zdDsK
LSAgICAgICAgYm9vbCBqYXZhRW5hYmxlZCgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgU3Ry
aW5nIHVzZXJBZ2VudCgpIGNvbnN0OwotCi0gICAgICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlv
bigpIGNvbnN0OwotICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIEdDIG1hcmtpbmcuCi0gICAg
ICAgIEdlb2xvY2F0aW9uKiBvcHRpb25hbEdlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW9sb2NhdGlvbi5nZXQoKTsgfQordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3Mg
TmF2aWdhdG9yIDogcHVibGljIE5hdmlnYXRvckJhc2UsIHB1YmxpYyBSZWZDb3VudGVkPE5hdmln
YXRvcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5hdmlnYXRvcj4gY3JlYXRl
KEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5hdmlnYXRvcihmcmFtZSkpOyB9
CisgICAgfk5hdmlnYXRvcigpOworCisgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKKyAgICBG
cmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CisKKyAgICBTdHJpbmcgYXBw
VmVyc2lvbigpIGNvbnN0OworICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0OworICAgIFBsdWdp
bkFycmF5KiBwbHVnaW5zKCkgY29uc3Q7CisgICAgTWltZVR5cGVBcnJheSogbWltZVR5cGVzKCkg
Y29uc3Q7CisgICAgYm9vbCBjb29raWVFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBqYXZhRW5h
YmxlZCgpIGNvbnN0OworCisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CisK
KyAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24oKSBjb25zdDsKKyAgICAvLyBUaGlzIGlzIHVz
ZWQgZm9yIEdDIG1hcmtpbmcuCisgICAgR2VvbG9jYXRpb24qIG9wdGlvbmFsR2VvbG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9uLmdldCgpOyB9CiAKICNpZiBFTkFCTEUoRE9N
X1NUT1JBR0UpCi0gICAgICAgIC8vIFJlbGlucXVpc2hlcyB0aGUgc3RvcmFnZSBsb2NrLCBpZiBv
bmUgZXhpc3RzLgotICAgICAgICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CisgICAgLy8gUmVs
aW5xdWlzaGVzIHRoZSBzdG9yYWdlIGxvY2ssIGlmIG9uZSBleGlzdHMuCisgICAgdm9pZCBnZXRT
dG9yYWdlVXBkYXRlcygpOwogI2VuZGlmCi0KLSAgICBwcml2YXRlOgotICAgICAgICBOYXZpZ2F0
b3IoRnJhbWUqKTsKLSAgICAgICAgRnJhbWUqIG1fZnJhbWU7Ci0gICAgICAgIG11dGFibGUgUmVm
UHRyPFBsdWdpbkFycmF5PiBtX3BsdWdpbnM7Ci0gICAgICAgIG11dGFibGUgUmVmUHRyPE1pbWVU
eXBlQXJyYXk+IG1fbWltZVR5cGVzOwotICAgICAgICBtdXRhYmxlIFJlZlB0cjxHZW9sb2NhdGlv
bj4gbV9nZW9sb2NhdGlvbjsKLSAgICB9OworICAgICAgICAKKyAgICB2b2lkIHJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAgIHZvaWQgcmVnaXN0ZXJD
b250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYgZWMpOworCitwcml2YXRlOgorICAg
IE5hdmlnYXRvcihGcmFtZSopOworICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIG11dGFibGUgUmVm
UHRyPFBsdWdpbkFycmF5PiBtX3BsdWdpbnM7CisgICAgbXV0YWJsZSBSZWZQdHI8TWltZVR5cGVB
cnJheT4gbV9taW1lVHlwZXM7CisgICAgbXV0YWJsZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2Vv
bG9jYXRpb247Cit9OwogCiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCShyZXZpc2lvbiA1MDAwNCkK
KysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
NiwxMSBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBkZWZpbmVkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JiYgRU5BQkxFX0RPTV9TVE9SQUdFCiAgICAgICAgIHZvaWQgZ2V0U3RvcmFnZVVwZGF0ZXMoKTsK
ICNlbmRpZgorCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoaW4gRE9NU3Ry
aW5nIHNjaGVtZSwgaW4gRE9NU3RyaW5nIHVybCwgaW4gRE9NU3RyaW5nIHRpdGxlKQorICAgICAg
ICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCByZWdpc3RlckNvbnRl
bnRIYW5kbGVyKGluIERPTVN0cmluZyBtaW1lVHlwZSwgaW4gRE9NU3RyaW5nIHVybCwgaW4gRE9N
U3RyaW5nIHRpdGxlKQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKICAgICB9
OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDE4MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDA5LTEwLTI3ICBCcmFkbGV5IEdy
ZWVuICA8YnJnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworCisgICAgICAgIFVwZGF0aW5nIHRlc3QgZXhwZWN0YXRpb25zIGZvciBpbXBsZW1l
bnRhdGlvbiBvZgorICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyIGFuZAorICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIu
CisgICAgICAgIAorICAgICAgICBUaGVyZSBpcyBhIGRlZmF1bHQgaW1wbGltZW50YXRpb24gZm9y
IHRoZXNlIEFQSXMsIGhlbmNlIGFsbCBwbGF0Zm9ybXMKKyAgICAgICAgd2l0aCB0aGUgbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdCBhbmQKKyAgICAgICAgd2luZG93LXByb3BlcnRp
ZXMtZXhwZWN0ZWQgdGVzdHMgbmVlZGVkIHRvIGJlIHVwZGF0ZWQuICBXaGlsZQorICAgICAgICBp
c29sYXRlZFdvcmxkcyBoYXMgYSB3aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZCB0ZXN0LCBpdCBo
YXMgbm8gd2luZG93CisgICAgICAgIG9iamVjdCBhbmQgaGVuY2UgZG9lcyBub3QgbmVlZCB0byBi
ZSB1cGRhZXRkLgorCisgICAgICAgIFdlIGFkZCB0b3cgZmFzdC9qcyB0ZXN0cyB0byBpbnN1cmUg
dGhhdCB0aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYXJlCisgICAgICAgIHRocm93biB3aGVuIGJhZCBz
eW50YXggb3Igc2VjdXJpdHkgdmlvbGF0aW9ucyBhcmUgbWFkZSBieSBjYWxsaW5nIHRoZQorICAg
ICAgICBtZXRob2RzLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQt
bm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvcmVnaXN0ZXJDb250ZW50
SGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVnaXN0ZXJD
b250ZW50SGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdp
c3RlclByb3RvY29sSGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorCiAyMDA5LTEwLTI3ICBLaW51a28g
WWFzdWRhICA8a2ludWtvQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8t
Y3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL25h
dmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMDA0KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsOCBAQCBuYXZpZ2F0b3IucGxhdGZv
cm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBpcyBP
SwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRI
YW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlzIE9L
CiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZp
Z2F0b3IudmVuZG9yU3ViIGlzIE9LCkBAIC0yOSw2ICszMSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9y
bSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9L
CiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhh
bmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sK
IG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmln
YXRvci52ZW5kb3JTdWIgaXMgT0sKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NTAwMDQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjg4LDYgKzE2ODgsOCBAQCB3aW5kb3cu
Y2xpZW50SW5mb3JtYXRpb24ucGxhdGZvcm0gW3N0cmluCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRp
b24ucGx1Z2lucyBbcHJpbnRlZCBhYm92ZSBhcyB3aW5kb3cuUGx1Z2luQXJyYXkucHJvdG90eXBl
XQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3QgW3N0cmluZ10KIHdpbmRvdy5jbGll
bnRJbmZvcm1hdGlvbi5wcm9kdWN0U3ViIFtzdHJpbmddCit3aW5kb3cuY2xpZW50SW5mb3JtYXRp
b24ucmVnaXN0ZXJDb250ZW50SGFuZGxlciBbZnVuY3Rpb25dCit3aW5kb3cuY2xpZW50SW5mb3Jt
YXRpb24ucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgW2Z1bmN0aW9uXQogd2luZG93LmNsaWVudElu
Zm9ybWF0aW9uLnVzZXJBZ2VudCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZl
bmRvciBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvclN1YiBbc3RyaW5n
XQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2lzdGVyQ29udGVu
dEhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMCBAQAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJD
b250ZW50SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3Ag
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKworUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJ0ZXh0
L2h0bWwiIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3Rv
Y29sICJ0ZXh0L2NzcyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFs
aWQgcHJvdG9jb2wgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIgdGhyZXcgU0VDVVJJVFlfRVJS
IGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgdXJsICIiIHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0
aW9uLgorUGFzczogSW52YWxpZCB1cmwgIiVTIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4K
K1Bhc3M6IFZhbGlkIGNhbGwgc3VjY2VlZGVkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L3JlZ2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDg0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVy
Q29udGVudEhhbmRsZXIgdGhyb3dzIHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhbmQgaGFzIG5vLW9w
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24uPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+ICAg
Cis8c2NyaXB0PgorCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAJbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUodHJ1ZSk7
CisgICAgCWxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAJbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCX0KKworICAgIGZ1bmN0aW9uIGRlYnVnKHN0
cikgeworICAgICAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykK
KyAgICAgICAgYy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4n
KSk7CisgICAgfQorCisJLy8gVGVzdCBhdmFpbGFiaWxpdHkgb2YgdGhlIHJlZ2lzdGVyQ29udGVu
dEhhbmRsZXIgQVBJCisJaWYgKHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxl
cikgeworCQlkZWJ1ZygnUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5k
bGVyIGlzIGRlZmluZWQuJykKKwl9IGVsc2UgeworCQlkZWJ1ZygnRmFpbDogd2luZG93Lm5hdmln
YXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyIGlzIG5vdCBkZWZpbmVkLicpCisJfQorCQorCS8v
IFRlc3QgdGhhdCB0aGUgQVBJIHJlZ2VjdHMgc2VjdXJlZCBwcm90b2NvbHMuCisJdmFyIGludmFs
aWRfcHJvdG9jb2xzID0gWyd0ZXh0L2h0bWwnLCAndGV4dC9jc3MnLCAnYXBwbGljYXRpb24veC1q
YXZhc2NyaXB0J107CisJaW52YWxpZF9wcm90b2NvbHMuZm9yRWFjaChmdW5jdGlvbihwcm90b2Nv
bCkgeworCQl2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisJCXRyeSB7CisJCQl3aW5kb3cubmF2aWdh
dG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIocHJvdG9jb2wsICJpbnZhbGlkIHByb3RvY29sICVz
IiwgInRpdGxlIik7CisJCX0gY2F0Y2goZSkgeworCQkJaWYgKCdTRUNVUklUWV9FUlInID09IGUu
bmFtZSkgeworCQkJCXN1Y2NlZWRlZCA9IHRydWU7CisJCQl9OworCQl9OworCisJCWlmIChzdWNj
ZWVkZWQgPT0gdHJ1ZSkgeworCQkJZGVidWcoJ1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgIicgKyBw
cm90b2NvbCArICciIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uJyk7CisJCX0gZWxzZSB7
CisJCQlkZWJ1ZygnRmFpbDogSW52YWxpZCBwcm90b2NvbCAiJyArIHByb3RvY29sICsgJyIgYWxs
b3dlZC4nKTsKKwkJfQkJCisJfSk7CisKKwkvLyBUZXN0IHRoYXQgdGhlIEFQSSBjb3JyZWN0bHkg
cGFyc2VzIHRoZSB1cmwgZm9yICclcycKKwl2YXIgaW52YWxpZF91cmxzID0gWyIiLCAiJVMiXQor
CWludmFsaWRfdXJscy5mb3JFYWNoKGZ1bmN0aW9uKHVybCkgeworCQl2YXIgc3VjY2VlZGVkID0g
ZmFsc2U7CisJCXRyeSB7CisJCQl3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRs
ZXIoJ215cHJvdG9jb2wnLCB1cmwsICd0aXRsZScpOworCQl9IGNhdGNoKGUpIHsKKwkJCWlmICgn
U1lOVEFYX0VSUicgPT0gZS5uYW1lKSB7CisJCQkJc3VjY2VlZGVkID0gdHJ1ZTsKKwkJCX07CisJ
CX07CisKKwkJaWYgKHN1Y2NlZWRlZCA9PSB0cnVlKSB7CisJCQlkZWJ1ZygnUGFzczogSW52YWxp
ZCB1cmwgIicgKyB1cmwgKyAnIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4nKTsKKwkJfSBl
bHNlIHsKKwkJCWRlYnVnKCdGYWlsOiBJbnZhbGlkIHVybCAiJyArIHVybCArICciIGFsbG93ZWQu
Jyk7CisJCX0JCQorCX0pOworCisKKwkvLyBUZXN0IHRoYXQgdGhlIEFQSSBoYXMgZGVmYXVsdCBu
by1vcCBpbXBsZW1lbnRhdGlvbi4KKwl2YXIgc3VjY2VlZGVkID0gdHJ1ZTsKKwl0cnkgeworCQl3
aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoJ215cHJvdG9jb2wnLCAiJXMi
LCAidGl0bGUiKTsKKwl9IGNhdGNoKGUpIHsKKwkJc3VjY2VlZGVkID0gZmFsc2U7CisJfTsKKwor
CWlmIChzdWNjZWVkZWQgPT0gdHJ1ZSkgeworCQlkZWJ1ZygnUGFzczogVmFsaWQgY2FsbCBzdWNj
ZWVkZWQuJyk7CisJfSBlbHNlIHsKKwkJZGVidWcoJ0ZhaWw6IEludmFsaWQgY2FsbCBkaWQgbm90
IHN1Y2NlZWQuJyk7CisJfQorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdpc3RlclBy
b3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAK
K1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyIHRocm93cyB0aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYW5kIGhhcyBuby1vcCBkZWZhdWx0IGlt
cGxlbWVudGF0aW9uLgorCitQYXNzOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJodHRwIiB0aHJldyBT
RUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAiaHR0cHMiIHRo
cmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJmaWxl
IiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCB1cmwgIiIgdGhy
ZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHVybCAiJVMiIHRocmV3IFNZ
TlRBWF9FUlIgZXhjZXB0aW9uLgorUGFzczogVmFsaWQgY2FsbCBzdWNjZWVkZWQuCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvanMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODQgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IG1ha2VzIHN1cmUg
dGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgdGhyb3dzIHRoZSBwcm9wZXIg
ZXhjZXB0aW9ucyBhbmQgaGFzIG5vLW9wIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uPC9wPgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+ICAgCis8c2NyaXB0PgorCWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAJbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VXNlRGFzaGJvYXJk
Q29tcGF0aWJpbGl0eU1vZGUodHJ1ZSk7CisgICAgCWxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAJbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCX0K
KworICAgIGZ1bmN0aW9uIGRlYnVnKHN0cikgeworICAgICAgICB2YXIgYyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykKKyAgICAgICAgYy5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKSk7CisgICAgfQorCisJLy8gVGVzdCBhdmFpbGFiaWxp
dHkgb2YgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIEFQSQorCWlmICh3aW5kb3cubmF2aWdh
dG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKSB7CisJCWRlYnVnKCdQYXNzOiB3aW5kb3cubmF2
aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGlzIGRlZmluZWQuJykKKwl9IGVsc2Ugewor
CQlkZWJ1ZygnRmFpbDogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlciBp
cyBub3QgZGVmaW5lZC4nKQorCX0KKwkKKwkvLyBUZXN0IHRoYXQgdGhlIEFQSSByZWdlY3RzIHNl
Y3VyZWQgcHJvdG9jb2xzLgorCXZhciBpbnZhbGlkX3Byb3RvY29scyA9IFsnaHR0cCcsICdodHRw
cycsICdmaWxlJ107CisJaW52YWxpZF9wcm90b2NvbHMuZm9yRWFjaChmdW5jdGlvbihwcm90b2Nv
bCkgeworCQl2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisJCXRyeSB7CisJCQl3aW5kb3cubmF2aWdh
dG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKHByb3RvY29sLCAiaW52YWxpZCBwcm90b2NvbCAl
cyIsICJ0aXRsZSIpOworCQl9IGNhdGNoKGUpIHsKKwkJCWlmICgnU0VDVVJJVFlfRVJSJyA9PSBl
Lm5hbWUpIHsKKwkJCQlzdWNjZWVkZWQgPSB0cnVlOworCQkJfTsKKwkJfTsKKworCQlpZiAoc3Vj
Y2VlZGVkID09IHRydWUpIHsKKwkJCWRlYnVnKCdQYXNzOiBJbnZhbGlkIHByb3RvY29sICInICsg
cHJvdG9jb2wgKyAnIiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLicpOworCQl9IGVsc2Ug
eworCQkJZGVidWcoJ0ZhaWw6IEludmFsaWQgcHJvdG9jb2wgIicgKyBwcm90b2NvbCArICciIGFs
bG93ZWQuJyk7CisJCX0JCQorCX0pOworCisJLy8gVGVzdCB0aGF0IHRoZSBBUEkgY29ycmVjdGx5
IHBhcnNlcyB0aGUgdXJsIGZvciAnJXMnCisJdmFyIGludmFsaWRfdXJscyA9IFsiIiwgIiVTIl0K
KwlpbnZhbGlkX3VybHMuZm9yRWFjaChmdW5jdGlvbih1cmwpIHsKKwkJdmFyIHN1Y2NlZWRlZCA9
IGZhbHNlOworCQl0cnkgeworCQkJd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFu
ZGxlcignbXlwcm90b2NvbCcsIHVybCwgJ3RpdGxlJyk7CisJCX0gY2F0Y2goZSkgeworCQkJaWYg
KCdTWU5UQVhfRVJSJyA9PSBlLm5hbWUpIHsKKwkJCQlzdWNjZWVkZWQgPSB0cnVlOworCQkJfTsK
KwkJfTsKKworCQlpZiAoc3VjY2VlZGVkID09IHRydWUpIHsKKwkJCWRlYnVnKCdQYXNzOiBJbnZh
bGlkIHVybCAiJyArIHVybCArICciIHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9uLicpOworCQl9
IGVsc2UgeworCQkJZGVidWcoJ0ZhaWw6IEludmFsaWQgdXJsICInICsgdXJsICsgJyIgYWxsb3dl
ZC4nKTsKKwkJfQkJCisJfSk7CisKKworCS8vIFRlc3QgdGhhdCB0aGUgQVBJIGhhcyBkZWZhdWx0
IG5vLW9wIGltcGxlbWVudGF0aW9uLgorCXZhciBzdWNjZWVkZWQgPSB0cnVlOworCXRyeSB7CisJ
CXdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoJ215cHJvdG9jb2wnLCAi
JXMiLCAidGl0bGUiKTsKKwl9IGNhdGNoKGUpIHsKKwkJc3VjY2VlZGVkID0gZmFsc2U7CisJfTsK
KworCWlmIChzdWNjZWVkZWQgPT0gdHJ1ZSkgeworCQlkZWJ1ZygnUGFzczogVmFsaWQgY2FsbCBz
dWNjZWVkZWQuJyk7CisJfSBlbHNlIHsKKwkJZGVidWcoJ0ZhaWw6IEludmFsaWQgY2FsbCBkaWQg
bm90IHN1Y2NlZWQuJyk7CisJfQorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jh
c2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA1MDAwNCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9uYXZpZ2F0b3It
ZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sK
IG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2
aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmln
YXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDAwNCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3Bl
cnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjU3LDYgKzE2NTcsOCBAQCB3
aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGxhdGZvcm0gW3N0cmluCiB3aW5kb3cuY2xpZW50SW5m
b3JtYXRpb24ucGx1Z2lucyBbcHJpbnRlZCBhYm92ZSBhcyB3aW5kb3cuUGx1Z2luQXJyYXkucHJv
dG90eXBlXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3QgW3N0cmluZ10KIHdpbmRv
dy5jbGllbnRJbmZvcm1hdGlvbi5wcm9kdWN0U3ViIFtzdHJpbmddCit3aW5kb3cuY2xpZW50SW5m
b3JtYXRpb24ucmVnaXN0ZXJDb250ZW50SGFuZGxlciBbZnVuY3Rpb25dCit3aW5kb3cuY2xpZW50
SW5mb3JtYXRpb24ucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgW2Z1bmN0aW9uXQogd2luZG93LmNs
aWVudEluZm9ybWF0aW9uLnVzZXJBZ2VudCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0
aW9uLnZlbmRvciBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvclN1YiBb
c3RyaW5nXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20v
bmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNo
ZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDAwNCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFz
aC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDggQEAgbmF2aWdhdG9y
LnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdhdG9yLnByb2R1
Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJD
b250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIo
KSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBPSwogbmF2aWdhdG9yLnZlbmRvciBpcyBP
SwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpAQCAtMjksNiArMzEsOCBAQCBuYXZpZ2F0b3Iu
cGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVj
dCBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigp
IGlzIE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9L
CiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41993</attachid>
            <date>2009-10-27 16:03:16 -0700</date>
            <delta_ts>2009-10-30 02:04:48 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handlers.txt</filename>
            <type>text/plain</type>
            <size>24668</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDE4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjIgQEAKKzIwMDktMTAtMjcgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRoZSBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorICAgICAgICAKKyAgICAgICAgV2UgZG8gaG93ZXZlciBmb2xsb3cgdGhlIHNwZWNpZmljYXRp
b24gaW4gaW5zdXJpbmcgdGhhdCB0aGUgcmVzZXJ2ZWQKKyAgICAgICAgc2NoZW1lcyBhbmQgbWlt
ZVR5cGVzIGFyZSBub3QgcGFzc2VkIHRvIHRoZSBVQSBhcyBjdXN0bW8gaGFuZGxlcgorICAgICAg
ICByZWdpc3RyYXRpb24gdGVzdHMuICBXZSBhbHNvIGluc3VyZSB0aHQgdGhlICIlcyIgdG9rZW4g
aXMgcHJlc2VudCBhcworICAgICAgICByZXF1aXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4KKwor
ICAgICAgICBVcGRhdGVkIHRlc3QgZXhwZWN0YXRpb25zIGZvciB3aW5kb3cuY2xpZW50SW5mb3Jt
YXRpb24gYW5kIG5hdmlnYXRvcgorICAgICAgICBvYmplY3RzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2pzL3JlZ2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9q
cy9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCisKKyAgICAgICAgVGVzdHM6IGZhc3QvanMv
cmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2pzL3JlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyLmh0bWwKKworICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKToKKyAgICAgICAgKiBw
YWdlL0Nocm9tZS5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cmVnaXN0ZXJDb250ZW50SGFuZGxlcik6CisgICAgICAg
ICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5Q3VzdG9tSGFu
ZGxlclVSTCk6CisgICAgICAgIChXZWJDb3JlOjp2ZXJpZnlQcm90b2NvbEhhbmRsZXJTY2hlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjp2ZXJpZnlQcm90b2NvbEhhbmRsZXJNaW1lVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvcjo6b3B0aW9uYWxHZW9sb2NhdGlvbik6CisgICAgICAgICogcGFnZS9OYXZp
Z2F0b3IuaWRsOgorCiAyMDA5LTEwLTI3ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2
aXNpb24gNTAwMDQpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAyLDYgKzMwMiwxNiBAQCBib29sIENocm9tZTo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlw
dCgpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiB9
CiAKK3ZvaWQgQ2hyb21lOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNj
aGVtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkgCit7ICAgICAgIAorICAgIG1fY2xpZW50LT5yZWdpc3RlclByb3RvY29sSGFu
ZGxlcihzY2hlbWUsIGJhc2VVUkwsIHVybCwgdGl0bGUpOworfQorCit2b2lkIENocm9tZTo6cmVn
aXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQoreworICAg
IG1fY2xpZW50LT5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKG1pbWVUeXBlLCAgYmFzZVVSTCwgdXJs
LCAgdGl0bGUpOworfSAgICAKKwogSW50UmVjdCBDaHJvbWU6OndpbmRvd1Jlc2l6ZXJSZWN0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQtPndpbmRvd1Jlc2l6ZXJSZWN0KCk7CkluZGV4
OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9t
ZS5oCShyZXZpc2lvbiA1MDAwNCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE0LDYgKzExNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBzZXRTdGF0dXNiYXJUZXh0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGJvb2wg
c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwogCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2b2lkIHJl
Z2lzdGVyQ29udGVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisKICAg
ICAgICAgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQg
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1v
ZGlmaWVyRmxhZ3MpOwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNTAwMDQpCisrKyBX
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVz
YmFyVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJ
bnRlcnJ1cHRKYXZhU2NyaXB0KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgdGFic1RvTGlu
a3MoKSBjb25zdCA9IDA7Ci0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
clByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29u
dGVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgIAogICAgICAgICB2aXJ0dWFsIEludFJlY3Qgd2lu
ZG93UmVzaXplclJlY3QoKSBjb25zdCA9IDA7CiAKICAgICAgICAgLy8gTWV0aG9kcyB1c2VkIGJ5
IEhvc3RXaW5kb3cuCkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTAgKzI0LDEyIEBA
CiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiR2Vv
bG9jYXRpb24uaCIKKyNpbmNsdWRlICJLdXJsLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNp
bmNsdWRlICJNaW1lVHlwZUFycmF5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTY5LDQgKzE3
MSwxMDQgQEAgdm9pZCBOYXZpZ2F0b3I6OmdldFN0b3JhZ2VVcGRhdGVzKCkKIH0KICNlbmRpZgog
CitzdGF0aWMgYm9vbCB2ZXJpZnlDdXN0b21IYW5kbGVyVVJMKGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRoZSBz
cGVjaWZpY2F0aW9uIHJlcXVpcmVzIHRoYXQgaXQgaXMgYSBTWU5UQVhfRVJSIGlmIHRoZSB0aGUg
IiVzIiB0b2tlbgorICAgIC8vIGlzIG5vdCBwcmVzZW50LgorICAgIHN0YXRpYyBjb25zdCBjaGFy
IHRva2VuW10gPSAiJXMiOworICAgIGludCBpbmRleCA9IHVybC5maW5kKHRva2VuKTsKKyAgICBp
ZiAoLTEgPT0gaW5kZXgpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIC8vIEl0IGlzIGFsc28gYSBTWU5UQVhfRVJSIGlm
IHRoZSBjdXN0b20gaGFuZGxlciBVUkwsIGFzIGNyZWF0ZWQgYnkgcmVtb3ZpbmcKKyAgICAvLyB0
aGUgIiVzIiB0b2tlbiBhbmQgcHJlcGVuZGluZyB0aGUgYmFzZSB1cmwsIGRvZXMgbm90IHJlc29s
dmUuCisgICAgU3RyaW5nIG5ld1VSTCA9IHVybDsKKyAgICBuZXdVUkwucmVtb3ZlKGluZGV4LCBz
aXplb2YodG9rZW4pIC8gc2l6ZW9mKHRva2VuWzBdKSk7CisgICAgCisgICAgS1VSTCBiYXNlKFBh
cnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgS1VSTCBrdXJsKGJhc2UsIG5ld1VSTCk7Cisg
ICAgCisgICAgaWYgKGt1cmwuaXNFbXB0eSgpIHx8ICFrdXJsLmlzVmFsaWQoKSkgeworICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHZlcmlmeVByb3RvY29sSGFuZGxlclNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8g
SXQgaXMgYSBTRUNVUklUWV9FUlIgZm9yIHRoZXNlIHNjaGVtZXMgdG8gYmUgaGFuZGxlZCBieSBh
IGN1c3RvbSBoYW5kbGVyLgorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzY2hlbWUsICJodHRw
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiaHR0cHMiKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZShzY2hlbWUsICJmaWxlIikpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTmF2
aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmICghdmVyaWZ5UHJvdG9jb2xIYW5kbGVyU2NoZW1lKHNjaGVtZSwgZWMpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgCisgICAgaWYg
KCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFN0cmluZyBiYXNlVVJMID0g
ZG9jdW1lbnQtPmJhc2VVUkwoKS5iYXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVyaWZ5Q3Vz
dG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKworICAgIGlmICghcGFnZSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIHBhZ2UtPmNocm9tZSgpLT5yZWdpc3RlclByb3RvY29sSGFuZGxl
cihzY2hlbWUsIGJhc2VVUkwsIHVybCwgbV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyh0aXRsZSkpOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJN
aW1lVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8v
IEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZvciB0aGVzZSBtaW1lIHR5cGVzIHRvIGJlIGFzc2lnbmVk
IHRvIGEgY3VzdG9tCisgICAgLy8gaGFuZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dHlwZSwgInRleHQvaHRtbCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJ0ZXh0L2NzcyIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSkg
eworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVu
dEhhbmRsZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdmVyaWZ5UHJv
dG9jb2xIYW5kbGVyTWltZVR5cGUobWltZVR5cGUsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIAorICAgIGlmICghZG9jdW1lbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIFN0cmluZyBiYXNlVVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKS5i
YXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNlVVJM
LCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKKworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+
Y2hyb21lKCktPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobWltZVR5cGUsIGJhc2VVUkwsIHVybCwg
bV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCShyZXZpc2lvbiA1MDAwNCkKKysr
IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMzkgKzM0LDQ0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBQbHVnaW5BcnJheTsKICAgICBjbGFz
cyBTdHJpbmc7CiAKLSAgICBjbGFzcyBOYXZpZ2F0b3IgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwg
cHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9yPiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOYXZpZ2F0b3I+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBOYXZpZ2F0b3IoZnJhbWUpKTsgfQotICAgICAgICB+TmF2aWdhdG9yKCk7Ci0K
LSAgICAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKLSAgICAgICAgRnJhbWUqIGZyYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQotCi0gICAgICAgIFN0cmluZyBhcHBWZXJzaW9uKCkg
Y29uc3Q7Ci0gICAgICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0OwotICAgICAgICBQbHVnaW5B
cnJheSogcGx1Z2lucygpIGNvbnN0OwotICAgICAgICBNaW1lVHlwZUFycmF5KiBtaW1lVHlwZXMo
KSBjb25zdDsKLSAgICAgICAgYm9vbCBjb29raWVFbmFibGVkKCkgY29uc3Q7Ci0gICAgICAgIGJv
b2wgamF2YUVuYWJsZWQoKSBjb25zdDsKLQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdl
bnQoKSBjb25zdDsKLQotICAgICAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24oKSBjb25zdDsK
LSAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBHQyBtYXJraW5nLgotICAgICAgICBHZW9sb2Nh
dGlvbiogb3B0aW9uYWxHZW9sb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb24u
Z2V0KCk7IH0KK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIE5hdmlnYXRvciA6
IHB1YmxpYyBOYXZpZ2F0b3JCYXNlLCBwdWJsaWMgUmVmQ291bnRlZDxOYXZpZ2F0b3I+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXZpZ2F0b3I+IGNyZWF0ZShGcmFtZSogZnJh
bWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3IoZnJhbWUpKTsgfQorICAgIH5OYXZp
Z2F0b3IoKTsKKworICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQorCisgICAgU3RyaW5nIGFwcFZlcnNpb24oKSBj
b25zdDsKKyAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdDsKKyAgICBQbHVnaW5BcnJheSogcGx1
Z2lucygpIGNvbnN0OworICAgIE1pbWVUeXBlQXJyYXkqIG1pbWVUeXBlcygpIGNvbnN0OworICAg
IGJvb2wgY29va2llRW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgamF2YUVuYWJsZWQoKSBjb25z
dDsKKworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0OworCisgICAgR2VvbG9j
YXRpb24qIGdlb2xvY2F0aW9uKCkgY29uc3Q7CisgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBHQyBt
YXJraW5nLgorICAgIEdlb2xvY2F0aW9uKiBvcHRpb25hbEdlb2xvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW9sb2NhdGlvbi5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQot
ICAgICAgICAvLyBSZWxpbnF1aXNoZXMgdGhlIHN0b3JhZ2UgbG9jaywgaWYgb25lIGV4aXN0cy4K
LSAgICAgICAgdm9pZCBnZXRTdG9yYWdlVXBkYXRlcygpOworICAgIC8vIFJlbGlucXVpc2hlcyB0
aGUgc3RvcmFnZSBsb2NrLCBpZiBvbmUgZXhpc3RzLgorICAgIHZvaWQgZ2V0U3RvcmFnZVVwZGF0
ZXMoKTsKICNlbmRpZgotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgTmF2aWdhdG9yKEZyYW1lKik7
Ci0gICAgICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgICAgICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5B
cnJheT4gbV9wbHVnaW5zOwotICAgICAgICBtdXRhYmxlIFJlZlB0cjxNaW1lVHlwZUFycmF5PiBt
X21pbWVUeXBlczsKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9j
YXRpb247Ci0gICAgfTsKKyAgICAgICAgCisgICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxl
cihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICB2b2lkIHJlZ2lzdGVyQ29udGVudEhhbmRs
ZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKworcHJpdmF0ZToKKyAgICBOYXZpZ2F0b3Io
RnJhbWUqKTsKKyAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5B
cnJheT4gbV9wbHVnaW5zOworICAgIG11dGFibGUgUmVmUHRyPE1pbWVUeXBlQXJyYXk+IG1fbWlt
ZVR5cGVzOworICAgIG11dGFibGUgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwor
fTsKIAogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkocmV2aXNpb24gNTAwMDQpCisrKyBXZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTEgQEAgbW9k
dWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9E
T01fU1RPUkFHRQogICAgICAgICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYKKwor
ICAgICAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGluIERPTVN0cmluZyBzY2hlbWUs
IGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0aXRsZSkKKyAgICAgICAgICAgIHJhaXNl
cyhFdmVudEV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihp
biBET01TdHJpbmcgbWltZVR5cGUsIGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0aXRs
ZSkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTAxODEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0xMC0yNyAgQnJhZGxleSBHcmVlbiAgPGJyZ0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRpbmcgdGVzdCBleHBlY3RhdGlvbnMgZm9yIGltcGxlbWVudGF0aW9uIG9mCisg
ICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgYW5kCisgICAg
ICAgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlci4KKyAgICAgICAgCisg
ICAgICAgIFRoZXJlIGlzIGEgZGVmYXVsdCBpbXBsaW1lbnRhdGlvbiBmb3IgdGhlc2UgQVBJcywg
aGVuY2UgYWxsIHBsYXRmb3JtcworICAgICAgICB3aXRoIHRoZSBuYXZpZ2F0b3ItZGV0YWNoZWQt
bm8tY3Jhc2gtZXhwZWN0IGFuZAorICAgICAgICB3aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZCB0
ZXN0cyBuZWVkZWQgdG8gYmUgdXBkYXRlZC4gIFdoaWxlCisgICAgICAgIGlzb2xhdGVkV29ybGRz
IGhhcyBhIHdpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkIHRlc3QsIGl0IGhhcyBubyB3aW5kb3cK
KyAgICAgICAgb2JqZWN0IGFuZCBoZW5jZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHVwZGFldGQuCisK
KyAgICAgICAgV2UgYWRkIHR3byBmYXN0L2pzIHRlc3RzIHRvIGluc3VyZSB0aGF0IHRoZSBwcm9w
ZXIgZXhjZXB0aW9ucyBhcmUKKyAgICAgICAgdGhyb3duIHdoZW4gYmFkIHN5bnRheCBvciBzZWN1
cml0eSB2aW9sYXRpb25zIGFyZSBtYWRlIGJ5IGNhbGxpbmcgdGhlCisgICAgICAgIG1ldGhvZHMu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdpc3RlckNvbnRlbnRIYW5kbGVy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1u
by1jcmFzaC1leHBlY3RlZC50eHQ6CisKIDIwMDktMTAtMjcgIEtpbnVrbyBZYXN1ZGEgIDxraW51
a29AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFj
aGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAwMDQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2
aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3Iu
cHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBP
SworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51
c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JT
dWIgaXMgT0sKQEAgLTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZp
Z2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5w
cm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9L
CituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVz
ZXJBZ2VudCBpcyBPSwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1
YiBpcyBPSwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDAwNCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE2ODgsNiArMTY4OCw4IEBAIHdpbmRvdy5jbGllbnRJbmZvcm1h
dGlvbi5wbGF0Zm9ybSBbc3RyaW4KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbHVnaW5zIFtw
cmludGVkIGFib3ZlIGFzIHdpbmRvdy5QbHVnaW5BcnJheS5wcm90b3R5cGVdCiB3aW5kb3cuY2xp
ZW50SW5mb3JtYXRpb24ucHJvZHVjdCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9u
LnByb2R1Y3RTdWIgW3N0cmluZ10KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyIFtmdW5jdGlvbl0KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3Rl
clByb3RvY29sSGFuZGxlciBbZnVuY3Rpb25dCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udXNl
ckFnZW50IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yIFtzdHJpbmdd
CiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yU3ViIFtzdHJpbmddCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ2lzdGVyQ29udGVudEhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVnaXN0ZXJDb250ZW50SGFuZGxlci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2lzdGVyQ29u
dGVudEhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitU
aGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IG5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVy
IHRocm93cyB0aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYW5kIGhhcyBuby1vcCBkZWZhdWx0IGltcGxl
bWVudGF0aW9uLgorCitQYXNzOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRs
ZXIgaXMgZGVmaW5lZC4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgInRleHQvaHRtbCIgdGhyZXcg
U0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgInRleHQvY3Nz
IiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAi
YXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgor
UGFzczogSW52YWxpZCB1cmwgIiIgdGhyZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uCitQYXNzOiBJ
bnZhbGlkIHVybCAiJVMiIHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9uLgorUGFzczogVmFsaWQg
Y2FsbCBzdWNjZWVkZWQuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVnaXN0ZXJDb250
ZW50SGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVnaXN0
ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODQg
QEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxl
ciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbi48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4gICAKKzxzY3JpcHQ+CisJ
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIAlsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSh0cnVlKTsKKyAgICAJbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIAlsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisJfQorCisgICAgZnVuY3Rpb24gZGVidWcoc3RyKSB7CisgICAgICAg
IHZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKQorICAgICAgICBjLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0ciArICdcbicpKTsKKyAgICB9CisK
KwkvLyBUZXN0IGF2YWlsYWJpbGl0eSBvZiB0aGUgcmVnaXN0ZXJDb250ZW50SGFuZGxlciBBUEkK
KwlpZiAod2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKSB7CisJCWRlYnVn
KCdQYXNzOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIgaXMgZGVmaW5l
ZC4nKQorCX0gZWxzZSB7CisJCWRlYnVnKCdGYWlsOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVy
Q29udGVudEhhbmRsZXIgaXMgbm90IGRlZmluZWQuJykKKwl9CisJCisJLy8gVGVzdCB0aGF0IHRo
ZSBBUEkgcmVnZWN0cyBzZWN1cmVkIHByb3RvY29scy4KKwl2YXIgaW52YWxpZF9wcm90b2NvbHMg
PSBbJ3RleHQvaHRtbCcsICd0ZXh0L2NzcycsICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnXTsK
KwlpbnZhbGlkX3Byb3RvY29scy5mb3JFYWNoKGZ1bmN0aW9uKHByb3RvY29sKSB7CisJCXZhciBz
dWNjZWVkZWQgPSBmYWxzZTsKKwkJdHJ5IHsKKwkJCXdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJD
b250ZW50SGFuZGxlcihwcm90b2NvbCwgImludmFsaWQgcHJvdG9jb2wgJXMiLCAidGl0bGUiKTsK
KwkJfSBjYXRjaChlKSB7CisJCQlpZiAoJ1NFQ1VSSVRZX0VSUicgPT0gZS5uYW1lKSB7CisJCQkJ
c3VjY2VlZGVkID0gdHJ1ZTsKKwkJCX07CisJCX07CisKKwkJaWYgKHN1Y2NlZWRlZCA9PSB0cnVl
KSB7CisJCQlkZWJ1ZygnUGFzczogSW52YWxpZCBwcm90b2NvbCAiJyArIHByb3RvY29sICsgJyIg
dGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4nKTsKKwkJfSBlbHNlIHsKKwkJCWRlYnVnKCdG
YWlsOiBJbnZhbGlkIHByb3RvY29sICInICsgcHJvdG9jb2wgKyAnIiBhbGxvd2VkLicpOworCQl9
CQkKKwl9KTsKKworCS8vIFRlc3QgdGhhdCB0aGUgQVBJIGNvcnJlY3RseSBwYXJzZXMgdGhlIHVy
bCBmb3IgJyVzJworCXZhciBpbnZhbGlkX3VybHMgPSBbIiIsICIlUyJdCisJaW52YWxpZF91cmxz
LmZvckVhY2goZnVuY3Rpb24odXJsKSB7CisJCXZhciBzdWNjZWVkZWQgPSBmYWxzZTsKKwkJdHJ5
IHsKKwkJCXdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcignbXlwcm90b2Nv
bCcsIHVybCwgJ3RpdGxlJyk7CisJCX0gY2F0Y2goZSkgeworCQkJaWYgKCdTWU5UQVhfRVJSJyA9
PSBlLm5hbWUpIHsKKwkJCQlzdWNjZWVkZWQgPSB0cnVlOworCQkJfTsKKwkJfTsKKworCQlpZiAo
c3VjY2VlZGVkID09IHRydWUpIHsKKwkJCWRlYnVnKCdQYXNzOiBJbnZhbGlkIHVybCAiJyArIHVy
bCArICciIHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9uLicpOworCQl9IGVsc2UgeworCQkJZGVi
dWcoJ0ZhaWw6IEludmFsaWQgdXJsICInICsgdXJsICsgJyIgYWxsb3dlZC4nKTsKKwkJfQkJCisJ
fSk7CisKKworCS8vIFRlc3QgdGhhdCB0aGUgQVBJIGhhcyBkZWZhdWx0IG5vLW9wIGltcGxlbWVu
dGF0aW9uLgorCXZhciBzdWNjZWVkZWQgPSB0cnVlOworCXRyeSB7CisJCXdpbmRvdy5uYXZpZ2F0
b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcignbXlwcm90b2NvbCcsICIlcyIsICJ0aXRsZSIpOwor
CX0gY2F0Y2goZSkgeworCQlzdWNjZWVkZWQgPSBmYWxzZTsKKwl9OworCisJaWYgKHN1Y2NlZWRl
ZCA9PSB0cnVlKSB7CisJCWRlYnVnKCdQYXNzOiBWYWxpZCBjYWxsIHN1Y2NlZWRlZC4nKTsKKwl9
IGVsc2UgeworCQlkZWJ1ZygnRmFpbDogSW52YWxpZCBjYWxsIGRpZCBub3Qgc3VjY2VlZC4nKTsK
Kwl9CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdpc3RlclByb3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZWdpc3RlclByb3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IG1h
a2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgdGhyb3dzIHRo
ZSBwcm9wZXIgZXhjZXB0aW9ucyBhbmQgaGFzIG5vLW9wIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisKK1Bhc3M6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgaXMgZGVm
aW5lZC4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImh0dHAiIHRocmV3IFNFQ1VSSVRZX0VSUiBl
eGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJodHRwcyIgdGhyZXcgU0VDVVJJVFlf
RVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImZpbGUiIHRocmV3IFNFQ1VS
SVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHVybCAiIiB0aHJldyBTWU5UQVhfRVJS
IGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgdXJsICIlUyIgdGhyZXcgU1lOVEFYX0VSUiBleGNl
cHRpb24uCitQYXNzOiBWYWxpZCBjYWxsIHN1Y2NlZWRlZC4KKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IG5hdmlnYXRv
ci5yZWdpc3RlclByb3RvY29sSGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFu
ZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi48L3A+Cis8cHJlIGlkPSJjb25zb2xl
Ij48L3ByZT4gICAKKzxzY3JpcHQ+CisJaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIAlsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5
TW9kZSh0cnVlKTsKKyAgICAJbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IAlsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisJfQorCisgICAgZnVuY3Rp
b24gZGVidWcoc3RyKSB7CisgICAgICAgIHZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKQorICAgICAgICBjLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHN0ciArICdcbicpKTsKKyAgICB9CisKKwkvLyBUZXN0IGF2YWlsYWJpbGl0eSBvZiB0aGUgcmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXIgQVBJCisJaWYgKHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIpIHsKKwkJZGVidWcoJ1Bhc3M6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIgaXMgZGVmaW5lZC4nKQorCX0gZWxzZSB7CisJCWRlYnVnKCdGYWls
OiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGlzIG5vdCBkZWZpbmVk
LicpCisJfQorCQorCS8vIFRlc3QgdGhhdCB0aGUgQVBJIHJlZ2VjdHMgc2VjdXJlZCBwcm90b2Nv
bHMuCisJdmFyIGludmFsaWRfcHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBzJywgJ2ZpbGUnXTsK
KwlpbnZhbGlkX3Byb3RvY29scy5mb3JFYWNoKGZ1bmN0aW9uKHByb3RvY29sKSB7CisJCXZhciBz
dWNjZWVkZWQgPSBmYWxzZTsKKwkJdHJ5IHsKKwkJCXdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIocHJvdG9jb2wsICJpbnZhbGlkIHByb3RvY29sICVzIiwgInRpdGxlIik7
CisJCX0gY2F0Y2goZSkgeworCQkJaWYgKCdTRUNVUklUWV9FUlInID09IGUubmFtZSkgeworCQkJ
CXN1Y2NlZWRlZCA9IHRydWU7CisJCQl9OworCQl9OworCisJCWlmIChzdWNjZWVkZWQgPT0gdHJ1
ZSkgeworCQkJZGVidWcoJ1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgIicgKyBwcm90b2NvbCArICci
IHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uJyk7CisJCX0gZWxzZSB7CisJCQlkZWJ1Zygn
RmFpbDogSW52YWxpZCBwcm90b2NvbCAiJyArIHByb3RvY29sICsgJyIgYWxsb3dlZC4nKTsKKwkJ
fQkJCisJfSk7CisKKwkvLyBUZXN0IHRoYXQgdGhlIEFQSSBjb3JyZWN0bHkgcGFyc2VzIHRoZSB1
cmwgZm9yICclcycKKwl2YXIgaW52YWxpZF91cmxzID0gWyIiLCAiJVMiXQorCWludmFsaWRfdXJs
cy5mb3JFYWNoKGZ1bmN0aW9uKHVybCkgeworCQl2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisJCXRy
eSB7CisJCQl3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCdteXByb3Rv
Y29sJywgdXJsLCAndGl0bGUnKTsKKwkJfSBjYXRjaChlKSB7CisJCQlpZiAoJ1NZTlRBWF9FUlIn
ID09IGUubmFtZSkgeworCQkJCXN1Y2NlZWRlZCA9IHRydWU7CisJCQl9OworCQl9OworCisJCWlm
IChzdWNjZWVkZWQgPT0gdHJ1ZSkgeworCQkJZGVidWcoJ1Bhc3M6IEludmFsaWQgdXJsICInICsg
dXJsICsgJyIgdGhyZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uJyk7CisJCX0gZWxzZSB7CisJCQlk
ZWJ1ZygnRmFpbDogSW52YWxpZCB1cmwgIicgKyB1cmwgKyAnIiBhbGxvd2VkLicpOworCQl9CQkK
Kwl9KTsKKworCisJLy8gVGVzdCB0aGF0IHRoZSBBUEkgaGFzIGRlZmF1bHQgbm8tb3AgaW1wbGVt
ZW50YXRpb24uCisJdmFyIHN1Y2NlZWRlZCA9IHRydWU7CisJdHJ5IHsKKwkJd2luZG93Lm5hdmln
YXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcignbXlwcm90b2NvbCcsICIlcyIsICJ0aXRsZSIp
OworCX0gY2F0Y2goZSkgeworCQlzdWNjZWVkZWQgPSBmYWxzZTsKKwl9OworCisJaWYgKHN1Y2Nl
ZWRlZCA9PSB0cnVlKSB7CisJCWRlYnVnKCdQYXNzOiBWYWxpZCBjYWxsIHN1Y2NlZWRlZC4nKTsK
Kwl9IGVsc2UgeworCQlkZWJ1ZygnRmFpbDogSW52YWxpZCBjYWxsIGRpZCBub3Qgc3VjY2VlZC4n
KTsKKwl9CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9y
LWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gNTAwMDQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsOCBAQCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRv
ci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1
Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCkgaXMgT0sKK25h
dmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlzIE9LCiBuYXZpZ2F0b3IudXNlckFn
ZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlz
IE9LCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNTAwMDQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY1
Nyw2ICsxNjU3LDggQEAgd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBsYXRmb3JtIFtzdHJpbgog
d2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBsdWdpbnMgW3ByaW50ZWQgYWJvdmUgYXMgd2luZG93
LlBsdWdpbkFycmF5LnByb3RvdHlwZV0KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wcm9kdWN0
IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucHJvZHVjdFN1YiBbc3RyaW5nXQor
d2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIgW2Z1bmN0aW9u
XQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIFtmdW5j
dGlvbl0KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi51c2VyQWdlbnQgW3N0cmluZ10KIHdpbmRv
dy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3IgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1h
dGlvbi52ZW5kb3JTdWIgW3N0cmluZ10KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1s
ZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20v
bmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAwMDQp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0b3It
ZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsx
Myw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sK
IG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2
aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmln
YXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAgLTI5LDYgKzMx
LDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBPSwog
bmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCituYXZp
Z2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBPSwogbmF2aWdh
dG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwo=
</data>
<flag name="review"
          id="23478"
          type_id="1"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42194</attachid>
            <date>2009-10-30 02:04:48 -0700</date>
            <delta_ts>2009-10-30 02:18:39 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handler.txt</filename>
            <type>text/plain</type>
            <size>22523</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMDktMTAtMzAgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRoZSBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorICAgICAgICAKKyAgICAgICAgV2UgZG8gaG93ZXZlciBmb2xsb3cgdGhlIHNwZWNpZmljYXRp
b24gaW4gaW5zdXJpbmcgdGhhdCB0aGUgcmVzZXJ2ZWQKKyAgICAgICAgc2NoZW1lcyBhbmQgbWlt
ZVR5cGVzIGFyZSBub3QgcGFzc2VkIHRvIHRoZSBVQSBhcyBjdXN0b20gaGFuZGxlcgorICAgICAg
ICByZWdpc3RyYXRpb24gdGVzdHMuICBXZSBhbHNvIGluc3VyZSB0aGF0IHRoZSAiJXMiIHRva2Vu
IGlzIHByZXNlbnQgYXMKKyAgICAgICAgcmVxdWlyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uCisK
KyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Igd2luZG93LmNsaWVudEluZm9y
bWF0aW9uIGFuZCBuYXZpZ2F0b3IKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICBUZXN0czog
ZmFzdC9qcy9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
anMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRtbAorCisgICAgICAgICogcGFnZS9DaHJvbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKToK
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2ZXJpZnlD
dXN0b21IYW5kbGVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeVByb3RvY29sSGFuZGxl
clNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeVByb3RvY29sSGFuZGxlck1pbWVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6cmVnaXN0ZXJDb250ZW50SGFuZGxlcik6
CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6ZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvcHRpb25hbEdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBw
YWdlL05hdmlnYXRvci5pZGw6CisKIDIwMDktMTAtMzAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDIsNiArMzAyLDE2IEBAIGJvb2wgQ2hyb21lOjpzaG91bGRJbnRlcnJ1cHRK
YXZhU2NyaXB0KCkKICAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEludGVycnVwdEphdmFTY3Jp
cHQoKTsKIH0KIAordm9pZCBDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0
cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKSAKK3sgICAgICAgCisgICAgbV9jbGllbnQtPnJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyKHNjaGVtZSwgYmFzZVVSTCwgdXJsLCB0aXRsZSk7Cit9CisKK3ZvaWQgQ2hy
b21lOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
Cit7CisgICAgbV9jbGllbnQtPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobWltZVR5cGUsICBiYXNl
VVJMLCB1cmwsICB0aXRsZSk7Cit9ICAgIAorCiBJbnRSZWN0IENocm9tZTo6d2luZG93UmVzaXpl
clJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC0+d2luZG93UmVzaXplclJlY3Qo
KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgJKHJldmlzaW9uIDUwMzIxKQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAKKyAgICAgICAgdm9pZCByZWdp
c3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgICAg
IHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKKwogICAgICAgICBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICAg
ICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5z
aWduZWQgbW9kaWZpZXJGbGFncyk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1MDMy
MSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIw
LDcgKzEyMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0
YWJzVG9MaW5rcygpIGNvbnN0ID0gMDsKLQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgSW50
UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0ID0gMDsKIAogICAgICAgICAvLyBNZXRob2Rz
IHVzZWQgYnkgSG9zdFdpbmRvdy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiA1MDMyMSkK
KysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMCAr
MjQsMTIgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKIAogI2luY2x1ZGUgIkNvb2tpZUphci5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNs
dWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkt1cmwuaCIKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgogI2luY2x1ZGUgIk1pbWVUeXBlQXJyYXkuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0x
NjksNCArMTcxLDEwMCBAQCB2b2lkIE5hdmlnYXRvcjo6Z2V0U3RvcmFnZVVwZGF0ZXMoKQogfQog
I2VuZGlmCiAKK3N0YXRpYyBib29sIHZlcmlmeUN1c3RvbUhhbmRsZXJVUkwoY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
Ly8gVGhlIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCBpdCBpcyBhIFNZTlRBWF9FUlIgaWYg
dGhlIHRoZSAiJXMiIHRva2VuCisgICAgLy8gaXMgbm90IHByZXNlbnQuCisgICAgc3RhdGljIGNv
bnN0IGNoYXIgdG9rZW5bXSA9ICIlcyI7CisgICAgaW50IGluZGV4ID0gdXJsLmZpbmQodG9rZW4p
OworICAgIGlmICgtMSA9PSBpbmRleCkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBJdCBpcyBhbHNvIGEgU1lOVEFYX0VS
UiBpZiB0aGUgY3VzdG9tIGhhbmRsZXIgVVJMLCBhcyBjcmVhdGVkIGJ5IHJlbW92aW5nCisgICAg
Ly8gdGhlICIlcyIgdG9rZW4gYW5kIHByZXBlbmRpbmcgdGhlIGJhc2UgdXJsLCBkb2VzIG5vdCBy
ZXNvbHZlLgorICAgIFN0cmluZyBuZXdVUkwgPSB1cmw7CisgICAgbmV3VVJMLnJlbW92ZShpbmRl
eCwgc2l6ZW9mKHRva2VuKSAvIHNpemVvZih0b2tlblswXSkpOworCisgICAgS1VSTCBiYXNlKFBh
cnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgS1VSTCBrdXJsKGJhc2UsIG5ld1VSTCk7CisK
KyAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJTY2hlbWUoY29u
c3QgU3RyaW5nJiBzY2hlbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEl0IGlzIGEg
U0VDVVJJVFlfRVJSIGZvciB0aGVzZSBzY2hlbWVzIHRvIGJlIGhhbmRsZWQgYnkgYSBjdXN0b20g
aGFuZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiaHR0cCIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKHNjaGVtZSwgImh0dHBzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uoc2No
ZW1lLCAiZmlsZSIpKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5hdmlnYXRvcjo6
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBp
ZiAoIXZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShzY2hlbWUsIGVjKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBiYXNlVVJMID0gZG9jdW1lbnQtPmJhc2VVUkwo
KS5iYXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNl
VVJMLCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2Ut
PmNocm9tZSgpLT5yZWdpc3RlclByb3RvY29sSGFuZGxlcihzY2hlbWUsIGJhc2VVUkwsIHVybCwg
bV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkpOworfQorCitz
dGF0aWMgYm9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJNaW1lVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZv
ciB0aGVzZSBtaW1lIHR5cGVzIHRvIGJlIGFzc2lnbmVkIHRvIGEgY3VzdG9tCisgICAgLy8gaGFu
ZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgInRleHQvaHRtbCIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKHR5cGUsICJ0ZXh0L2NzcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5
cGUsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZ
X0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghdmVyaWZ5UHJvdG9jb2xIYW5kbGVyTWltZVR5cGUobWlt
ZVR5cGUsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAg
ICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBiYXNl
VVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKS5iYXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVy
aWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5yZWdpc3RlckNvbnRlbnRIYW5kbGVy
KG1pbWVUeXBlLCBiYXNlVVJMLCB1cmwsIG1fZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5
RW5jb2RpbmcodGl0bGUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuaAkocmV2aXNpb24gNTAzMjEpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IFBsdWdpbkFycmF5OwogICAgIGNsYXNzIFN0cmluZzsKIAorICAgIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CisKICAgICBjbGFzcyBOYXZpZ2F0b3IgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwg
cHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9yPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOYXZpZ2F0b3I+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBOYXZpZ2F0b3IoZnJhbWUpKTsgfQpAQCAtNTksNiArNjEsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJlbGlucXVpc2hlcyB0aGUgc3RvcmFnZSBsb2NrLCBp
ZiBvbmUgZXhpc3RzLgogICAgICAgICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYK
KyAgICAgICAgCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3Ry
aW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNl
cHRpb25Db2RlJiBlYyk7CisgICAgICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF2aWdhdG9y
KEZyYW1lKik7CkBAIC02Niw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8UGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8TWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CiAgICAgICAgIG11dGFibGUgUmVmUHRy
PEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwotICAgIH07Cit9OwogCiB9CiAKSW5kZXg6IFdl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaWRsCShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxMSBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBk
ZWZpbmVkKEVOQUJMRV9ET01fU1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdFCiAgICAgICAg
IHZvaWQgZ2V0U3RvcmFnZVVwZGF0ZXMoKTsKICNlbmRpZgorCisgICAgICAgIHZvaWQgcmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIoaW4gRE9NU3RyaW5nIHNjaGVtZSwgaW4gRE9NU3RyaW5nIHVybCwg
aW4gRE9NU3RyaW5nIHRpdGxlKQorICAgICAgICAgICAgcmFpc2VzKERvbUV4Y2VwdGlvbik7Cisg
ICAgICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihpbiBET01TdHJpbmcgbWltZVR5cGUs
IGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0aXRsZSkKKyAgICAgICAgICAgIHJhaXNl
cyhEb21FeGNlcHRpb24pOwogICAgIH07CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwMzIxKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMDktMTAtMzAgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIHRlc3QgZXhw
ZWN0YXRpb25zIGZvciBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICB3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGFuZAorICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJl
Z2lzdGVyQ29udGVudEhhbmRsZXIuCisgICAgICAgIAorICAgICAgICBUaGVyZSBpcyBhIGRlZmF1
bHQgaW1wbGltZW50YXRpb24gZm9yIHRoZXNlIEFQSXMsIGhlbmNlIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgd2l0aCB0aGUgbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdCBhbmQKKyAg
ICAgICAgd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQgdGVzdHMgbmVlZGVkIHRvIGJlIHVwZGF0
ZWQuICBXaGlsZQorICAgICAgICBpc29sYXRlZFdvcmxkcyBoYXMgYSB3aW5kb3ctcHJvcGVydGll
cy1leHBlY3RlZCB0ZXN0LCBpdCBoYXMgbm8gd2luZG93CisgICAgICAgIG9iamVjdCBhbmQgaGVu
Y2UgZG9lcyBub3QgbmVlZCB0byBiZSB1cGRhZXRkLgorCisgICAgICAgIFdlIGFkZCB0d28gZmFz
dC9kb20gdGVzdHMgdG8gaW5zdXJlIHRoYXQgdGhlIHByb3BlciBleGNlcHRpb25zIGFyZQorICAg
ICAgICB0aHJvd24gd2hlbiBiYWQgc3ludGF4IG9yIHNlY3VyaXR5IHZpb2xhdGlvbnMgYXJlIG1h
ZGUgYnkgY2FsbGluZyB0aGUKKyAgICAgICAgbWV0aG9kcy4KKworICAgICAgICAqIGZhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9k
b20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2RvbS9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50
eHQ6CisKIDIwMDktMTAtMjkgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2
ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMg
T0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSwor
bmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5h
dmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAgLTI5LDYg
KzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBP
SwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCitu
YXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBPSwogbmF2
aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBA
QAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFu
ZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4KKworUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRI
YW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJ0ZXh0L2h0bWwiIHRo
cmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJ0ZXh0
L2NzcyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgcHJvdG9j
b2wgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlv
bi4KK1Bhc3M6IEludmFsaWQgdXJsICIiIHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9uLgorUGFz
czogSW52YWxpZCB1cmwgIiVTIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IFZh
bGlkIGNhbGwgc3VjY2VlZGVkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDcxIEBACis8aHRtbD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBu
YXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRp
b25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi48L3A+Cis8cHJlIGlkPSJj
b25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKKyAgICB2YXIg
YyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgYy5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKSk7Cit9OworCisvLyBUZXN0IGF2
YWlsYWJpbGl0eSBvZiB0aGUgcmVnaXN0ZXJDb250ZW50SGFuZGxlciBBUEkKK2lmKHdpbmRvdy5u
YXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcikgeworICAgIGRlYnVnKCdQYXNzOiB3aW5k
b3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIgaXMgZGVmaW5lZC4nKQorfSBlbHNl
IHsKKyAgICBkZWJ1ZygnRmFpbDogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5k
bGVyIGlzIG5vdCBkZWZpbmVkLicpCit9OworCisvLyBUZXN0IHRoYXQgdGhlIEFQSSByZWdlY3Rz
IHNlY3VyZWQgcHJvdG9jb2xzLgordmFyIGludmFsaWRfcHJvdG9jb2xzID0gWyd0ZXh0L2h0bWwn
LCAndGV4dC9jc3MnLCAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J107CitpbnZhbGlkX3Byb3Rv
Y29scy5mb3JFYWNoKGZ1bmN0aW9uKHByb3RvY29sKSB7CisgICAgdmFyIHN1Y2NlZWRlZCA9IGZh
bHNlOworICAgIHRyeSB7CisgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50
SGFuZGxlcihwcm90b2NvbCwgImludmFsaWQgcHJvdG9jb2wgJXMiLCAidGl0bGUiKTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NFQ1VSSVRZX0VSUicgPT0gZS5uYW1lKSB7CisgICAg
ICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisKKyAgICBpZihz
dWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52YWxpZCBwcm90b2Nv
bCAiJyArIHByb3RvY29sICsgJyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4nKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCBwcm90b2NvbCAiJyArIHBy
b3RvY29sICsgJyIgYWxsb3dlZC4nKTsKKyAgICB9OworfSk7CisKKy8vIFRlc3QgdGhhdCB0aGUg
QVBJIGNvcnJlY3RseSBwYXJzZXMgdGhlIHVybCBmb3IgJyVzJwordmFyIGludmFsaWRfdXJscyA9
IFsiIiwgIiVTIl0KK2ludmFsaWRfdXJscy5mb3JFYWNoKGZ1bmN0aW9uKHVybCkgeworICAgIHZh
ciBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoJ215cHJvdG9jb2wnLCB1cmwsICd0aXRsZScpOworICAg
IH0gY2F0Y2goZSkgeworICAgICAgICBpZignU1lOVEFYX0VSUicgPT0gZS5uYW1lKSB7CisgICAg
ICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisKKyAgICBpZihz
dWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52YWxpZCB1cmwgIicg
KyB1cmwgKyAnIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4nKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCB1cmwgIicgKyB1cmwgKyAnIiBhbGxvd2VkLicp
OworICAgIH07Cit9KTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkgaGFzIGRlZmF1bHQgbm8tb3Ag
aW1wbGVtZW50YXRpb24uCit2YXIgc3VjY2VlZGVkID0gdHJ1ZTsKK3RyeSB7CisgICAgd2luZG93
Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCdteXByb3RvY29sJywgIiVzIiwgInRp
dGxlIik7Cit9IGNhdGNoKGUpIHsKKyAgICBzdWNjZWVkZWQgPSBmYWxzZTsKK307CisKK2lmKHN1
Y2NlZWRlZCA9PSB0cnVlKSB7CisgICAgZGVidWcoJ1Bhc3M6IFZhbGlkIGNhbGwgc3VjY2VlZGVk
LicpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCBjYWxsIGRpZCBub3Qgc3Vj
Y2VlZC4nKTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclBy
b3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAK
K1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyIHRocm93cyB0aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYW5kIGhhcyBuby1vcCBkZWZhdWx0IGlt
cGxlbWVudGF0aW9uLgorCitQYXNzOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJodHRwIiB0aHJldyBT
RUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAiaHR0cHMiIHRo
cmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJmaWxl
IiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCB1cmwgIiIgdGhy
ZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHVybCAiJVMiIHRocmV3IFNZ
TlRBWF9FUlIgZXhjZXB0aW9uLgorUGFzczogVmFsaWQgY2FsbCBzdWNjZWVkZWQuCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKzxodG1sPgorPGJvZHk+
Cis8cD5UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IG5hdmlnYXRvci5yZWdpc3RlclByb3RvY29s
SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKKyAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykKKyAgICBjLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHN0ciArICdcbicpKTsKK307CisKKy8vIFRlc3QgYXZhaWxhYmlsaXR5IG9mIHRoZSByZWdpc3Rl
clByb3RvY29sSGFuZGxlciBBUEkKK2lmKHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIpIHsKKyAgICBkZWJ1ZygnUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclBy
b3RvY29sSGFuZGxlciBpcyBkZWZpbmVkLicpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygnRmFpbDog
d2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlciBpcyBub3QgZGVmaW5lZC4n
KTsKK307CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIHJlZ2VjdHMgc2VjdXJlZCBwcm90b2NvbHMu
Cit2YXIgaW52YWxpZF9wcm90b2NvbHMgPSBbJ2h0dHAnLCAnaHR0cHMnLCAnZmlsZSddOworaW52
YWxpZF9wcm90b2NvbHMuZm9yRWFjaChmdW5jdGlvbihwcm90b2NvbCkgeworICAgIHZhciBzdWNj
ZWVkZWQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKHByb3RvY29sLCAiaW52YWxpZCBwcm90b2NvbCAlcyIsICJ0aXRs
ZSIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZignU0VDVVJJVFlfRVJSJyA9PSBlLm5h
bWUpIHsKKyAgICAgICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsK
KworICAgIGlmKHN1Y2NlZWRlZCA9PSB0cnVlKSB7CisgICAgICAgIGRlYnVnKCdQYXNzOiBJbnZh
bGlkIHByb3RvY29sICInICsgcHJvdG9jb2wgKyAnIiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0
aW9uLicpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIHByb3Rv
Y29sICInICsgcHJvdG9jb2wgKyAnIiBhbGxvd2VkLicpOworICAgIH07Cit9KTsKKworLy8gVGVz
dCB0aGF0IHRoZSBBUEkgY29ycmVjdGx5IHBhcnNlcyB0aGUgdXJsIGZvciAnJXMnCit2YXIgaW52
YWxpZF91cmxzID0gWyIiLCAiJVMiXTsKK2ludmFsaWRfdXJscy5mb3JFYWNoKGZ1bmN0aW9uKHVy
bCkgeworICAgIHZhciBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgIHRyeSB7CisgICAgICAgIHdpbmRv
dy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoJ215cHJvdG9jb2wnLCB1cmwsICd0
aXRsZScpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZignU1lOVEFYX0VSUicgPT0gZS5u
YW1lKSB7CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07
CisKKyAgICBpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52
YWxpZCB1cmwgIicgKyB1cmwgKyAnIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4nKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCB1cmwgIicgKyB1cmwgKyAn
IiBhbGxvd2VkLicpOworICAgIH07Cit9KTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkgaGFzIGRl
ZmF1bHQgbm8tb3AgaW1wbGVtZW50YXRpb24uCit2YXIgc3VjY2VlZGVkID0gdHJ1ZTsKK3RyeSB7
CisgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoJ215cHJvdG9jb2wn
LCAiJXMiLCAidGl0bGUiKTsKK30gY2F0Y2goZSkgeworICBzdWNjZWVkZWQgPSBmYWxzZTsKK307
CisKK2lmKHN1Y2NlZWRlZCA9PSB0cnVlKSB7CisgIGRlYnVnKCdQYXNzOiBWYWxpZCBjYWxsIHN1
Y2NlZWRlZC4nKTsKK30gZWxzZSB7CisgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIGNhbGwgZGlkIG5v
dCBzdWNjZWVkLicpOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDMyMSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTE2ODgsNiArMTY4OCw4IEBAIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbGF0Zm9ybSBbc3Ry
aW4KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbHVnaW5zIFtwcmludGVkIGFib3ZlIGFzIHdp
bmRvdy5QbHVnaW5BcnJheS5wcm90b3R5cGVdCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucHJv
ZHVjdCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3RTdWIgW3N0cmlu
Z10KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlckNvbnRlbnRIYW5kbGVyIFtmdW5j
dGlvbl0KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlclByb3RvY29sSGFuZGxlciBb
ZnVuY3Rpb25dCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udXNlckFnZW50IFtzdHJpbmddCiB3
aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yIFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5m
b3JtYXRpb24udmVuZG9yU3ViIFtzdHJpbmddCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRl
dGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQCBuYXZpZ2F0b3IucGxh
dGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBp
cyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRl
bnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlz
IE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBu
YXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTY1Nyw2ICsxNjU3LDggQEAgd2luZG93LmNsaWVudEluZm9ybWF0
aW9uLnBsYXRmb3JtIFtzdHJpbgogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBsdWdpbnMgW3By
aW50ZWQgYWJvdmUgYXMgd2luZG93LlBsdWdpbkFycmF5LnByb3RvdHlwZV0KIHdpbmRvdy5jbGll
bnRJbmZvcm1hdGlvbi5wcm9kdWN0IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24u
cHJvZHVjdFN1YiBbc3RyaW5nXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lzdGVyQ29u
dGVudEhhbmRsZXIgW2Z1bmN0aW9uXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyIFtmdW5jdGlvbl0KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi51c2Vy
QWdlbnQgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3IgW3N0cmluZ10K
IHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3JTdWIgW3N0cmluZ10KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1u
by1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLWxlb3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFy
ZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2
aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3Iu
cHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBP
SworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51
c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JT
dWIgaXMgT0sKQEAgLTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZp
Z2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5w
cm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9L
CituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVz
ZXJBZ2VudCBpcyBPSwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1
YiBpcyBPSwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42196</attachid>
            <date>2009-10-30 02:18:39 -0700</date>
            <delta_ts>2009-10-30 02:24:00 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handler.txt</filename>
            <type>text/plain</type>
            <size>44759</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMDktMTAtMzAgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRoZSBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorICAgICAgICAKKyAgICAgICAgV2UgZG8gaG93ZXZlciBmb2xsb3cgdGhlIHNwZWNpZmljYXRp
b24gaW4gaW5zdXJpbmcgdGhhdCB0aGUgcmVzZXJ2ZWQKKyAgICAgICAgc2NoZW1lcyBhbmQgbWlt
ZVR5cGVzIGFyZSBub3QgcGFzc2VkIHRvIHRoZSBVQSBhcyBjdXN0b20gaGFuZGxlcgorICAgICAg
ICByZWdpc3RyYXRpb24gdGVzdHMuICBXZSBhbHNvIGluc3VyZSB0aGF0IHRoZSAiJXMiIHRva2Vu
IGlzIHByZXNlbnQgYXMKKyAgICAgICAgcmVxdWlyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uCisK
KyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Igd2luZG93LmNsaWVudEluZm9y
bWF0aW9uIGFuZCBuYXZpZ2F0b3IKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICBUZXN0czog
ZmFzdC9qcy9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
anMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRtbAorCisgICAgICAgICogcGFnZS9DaHJvbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKToK
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2ZXJpZnlD
dXN0b21IYW5kbGVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeVByb3RvY29sSGFuZGxl
clNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeVByb3RvY29sSGFuZGxlck1pbWVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6cmVnaXN0ZXJDb250ZW50SGFuZGxlcik6
CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6ZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvcHRpb25hbEdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBw
YWdlL05hdmlnYXRvci5pZGw6CisKIDIwMDktMTAtMzAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDIsNiArMzAyLDE2IEBAIGJvb2wgQ2hyb21lOjpzaG91bGRJbnRlcnJ1cHRK
YXZhU2NyaXB0KCkKICAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEludGVycnVwdEphdmFTY3Jp
cHQoKTsKIH0KIAordm9pZCBDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0
cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKSAKK3sgICAgICAgCisgICAgbV9jbGllbnQtPnJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyKHNjaGVtZSwgYmFzZVVSTCwgdXJsLCB0aXRsZSk7Cit9CisKK3ZvaWQgQ2hy
b21lOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
Cit7CisgICAgbV9jbGllbnQtPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobWltZVR5cGUsICBiYXNl
VVJMLCB1cmwsICB0aXRsZSk7Cit9ICAgIAorCiBJbnRSZWN0IENocm9tZTo6d2luZG93UmVzaXpl
clJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC0+d2luZG93UmVzaXplclJlY3Qo
KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgJKHJldmlzaW9uIDUwMzIxKQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAKKyAgICAgICAgdm9pZCByZWdp
c3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgICAg
IHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKKwogICAgICAgICBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICAg
ICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5z
aWduZWQgbW9kaWZpZXJGbGFncyk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1MDMy
MSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIw
LDcgKzEyMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0
YWJzVG9MaW5rcygpIGNvbnN0ID0gMDsKLQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgSW50
UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0ID0gMDsKIAogICAgICAgICAvLyBNZXRob2Rz
IHVzZWQgYnkgSG9zdFdpbmRvdy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiA1MDMyMSkK
KysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMCAr
MjQsMTIgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKIAogI2luY2x1ZGUgIkNvb2tpZUphci5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNs
dWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkt1cmwuaCIKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgogI2luY2x1ZGUgIk1pbWVUeXBlQXJyYXkuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0x
NjksNCArMTcxLDEwMCBAQCB2b2lkIE5hdmlnYXRvcjo6Z2V0U3RvcmFnZVVwZGF0ZXMoKQogfQog
I2VuZGlmCiAKK3N0YXRpYyBib29sIHZlcmlmeUN1c3RvbUhhbmRsZXJVUkwoY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
Ly8gVGhlIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCBpdCBpcyBhIFNZTlRBWF9FUlIgaWYg
dGhlIHRoZSAiJXMiIHRva2VuCisgICAgLy8gaXMgbm90IHByZXNlbnQuCisgICAgc3RhdGljIGNv
bnN0IGNoYXIgdG9rZW5bXSA9ICIlcyI7CisgICAgaW50IGluZGV4ID0gdXJsLmZpbmQodG9rZW4p
OworICAgIGlmICgtMSA9PSBpbmRleCkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBJdCBpcyBhbHNvIGEgU1lOVEFYX0VS
UiBpZiB0aGUgY3VzdG9tIGhhbmRsZXIgVVJMLCBhcyBjcmVhdGVkIGJ5IHJlbW92aW5nCisgICAg
Ly8gdGhlICIlcyIgdG9rZW4gYW5kIHByZXBlbmRpbmcgdGhlIGJhc2UgdXJsLCBkb2VzIG5vdCBy
ZXNvbHZlLgorICAgIFN0cmluZyBuZXdVUkwgPSB1cmw7CisgICAgbmV3VVJMLnJlbW92ZShpbmRl
eCwgc2l6ZW9mKHRva2VuKSAvIHNpemVvZih0b2tlblswXSkpOworCisgICAgS1VSTCBiYXNlKFBh
cnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgS1VSTCBrdXJsKGJhc2UsIG5ld1VSTCk7CisK
KyAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJTY2hlbWUoY29u
c3QgU3RyaW5nJiBzY2hlbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEl0IGlzIGEg
U0VDVVJJVFlfRVJSIGZvciB0aGVzZSBzY2hlbWVzIHRvIGJlIGhhbmRsZWQgYnkgYSBjdXN0b20g
aGFuZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiaHR0cCIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKHNjaGVtZSwgImh0dHBzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uoc2No
ZW1lLCAiZmlsZSIpKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5hdmlnYXRvcjo6
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBp
ZiAoIXZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShzY2hlbWUsIGVjKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBiYXNlVVJMID0gZG9jdW1lbnQtPmJhc2VVUkwo
KS5iYXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNl
VVJMLCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2Ut
PmNocm9tZSgpLT5yZWdpc3RlclByb3RvY29sSGFuZGxlcihzY2hlbWUsIGJhc2VVUkwsIHVybCwg
bV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkpOworfQorCitz
dGF0aWMgYm9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJNaW1lVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZv
ciB0aGVzZSBtaW1lIHR5cGVzIHRvIGJlIGFzc2lnbmVkIHRvIGEgY3VzdG9tCisgICAgLy8gaGFu
ZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgInRleHQvaHRtbCIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKHR5cGUsICJ0ZXh0L2NzcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5
cGUsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZ
X0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghdmVyaWZ5UHJvdG9jb2xIYW5kbGVyTWltZVR5cGUobWlt
ZVR5cGUsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAg
ICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBiYXNl
VVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKS5iYXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVy
aWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5yZWdpc3RlckNvbnRlbnRIYW5kbGVy
KG1pbWVUeXBlLCBiYXNlVVJMLCB1cmwsIG1fZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5
RW5jb2RpbmcodGl0bGUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuaAkocmV2aXNpb24gNTAzMjEpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IFBsdWdpbkFycmF5OwogICAgIGNsYXNzIFN0cmluZzsKIAorICAgIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CisKICAgICBjbGFzcyBOYXZpZ2F0b3IgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwg
cHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9yPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOYXZpZ2F0b3I+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBOYXZpZ2F0b3IoZnJhbWUpKTsgfQpAQCAtNTksNiArNjEsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJlbGlucXVpc2hlcyB0aGUgc3RvcmFnZSBsb2NrLCBp
ZiBvbmUgZXhpc3RzLgogICAgICAgICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYK
KyAgICAgICAgCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3Ry
aW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNl
cHRpb25Db2RlJiBlYyk7CisgICAgICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF2aWdhdG9y
KEZyYW1lKik7CkBAIC02Niw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8UGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8TWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CiAgICAgICAgIG11dGFibGUgUmVmUHRy
PEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwotICAgIH07Cit9OwogCiB9CiAKSW5kZXg6IFdl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaWRsCShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxMSBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBk
ZWZpbmVkKEVOQUJMRV9ET01fU1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdFCiAgICAgICAg
IHZvaWQgZ2V0U3RvcmFnZVVwZGF0ZXMoKTsKICNlbmRpZgorCisgICAgICAgIHZvaWQgcmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIoaW4gRE9NU3RyaW5nIHNjaGVtZSwgaW4gRE9NU3RyaW5nIHVybCwg
aW4gRE9NU3RyaW5nIHRpdGxlKQorICAgICAgICAgICAgcmFpc2VzKERvbUV4Y2VwdGlvbik7Cisg
ICAgICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihpbiBET01TdHJpbmcgbWltZVR5cGUs
IGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0aXRsZSkKKyAgICAgICAgICAgIHJhaXNl
cyhEb21FeGNlcHRpb24pOwogICAgIH07CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwMzIxKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMDktMTAtMzAgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIHRlc3QgZXhw
ZWN0YXRpb25zIGZvciBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICB3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGFuZAorICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJl
Z2lzdGVyQ29udGVudEhhbmRsZXIuCisgICAgICAgIAorICAgICAgICBUaGVyZSBpcyBhIGRlZmF1
bHQgaW1wbGltZW50YXRpb24gZm9yIHRoZXNlIEFQSXMsIGhlbmNlIGFsbCBwbGF0Zm9ybXMKKyAg
ICAgICAgd2l0aCB0aGUgbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdCBhbmQKKyAg
ICAgICAgd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQgdGVzdHMgbmVlZGVkIHRvIGJlIHVwZGF0
ZWQuICBXaGlsZQorICAgICAgICBpc29sYXRlZFdvcmxkcyBoYXMgYSB3aW5kb3ctcHJvcGVydGll
cy1leHBlY3RlZCB0ZXN0LCBpdCBoYXMgbm8gd2luZG93CisgICAgICAgIG9iamVjdCBhbmQgaGVu
Y2UgZG9lcyBub3QgbmVlZCB0byBiZSB1cGRhZXRkLgorCisgICAgICAgIFdlIGFkZCB0d28gZmFz
dC9kb20gdGVzdHMgdG8gaW5zdXJlIHRoYXQgdGhlIHByb3BlciBleGNlcHRpb25zIGFyZQorICAg
ICAgICB0aHJvd24gd2hlbiBiYWQgc3ludGF4IG9yIHNlY3VyaXR5IHZpb2xhdGlvbnMgYXJlIG1h
ZGUgYnkgY2FsbGluZyB0aGUKKyAgICAgICAgbWV0aG9kcy4KKworICAgICAgICAqIGZhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9k
b20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2RvbS9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50
eHQ6CisKIDIwMDktMTAtMjkgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2
ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMg
T0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSwor
bmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5h
dmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAgLTI5LDYg
KzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBP
SwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCitu
YXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBPSwogbmF2
aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBA
QAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFu
ZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4KKworUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRI
YW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJ0ZXh0L2h0bWwiIHRo
cmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJ0ZXh0
L2NzcyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgcHJvdG9j
b2wgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlv
bi4KK1Bhc3M6IEludmFsaWQgdXJsICIiIHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9uLgorUGFz
czogSW52YWxpZCB1cmwgIiVTIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IFZh
bGlkIGNhbGwgc3VjY2VlZGVkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDcxIEBACis8aHRtbD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBu
YXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRp
b25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi48L3A+Cis8cHJlIGlkPSJj
b25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKKyAgICB2YXIg
YyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgYy5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKSk7Cit9OworCisvLyBUZXN0IGF2
YWlsYWJpbGl0eSBvZiB0aGUgcmVnaXN0ZXJDb250ZW50SGFuZGxlciBBUEkKK2lmKHdpbmRvdy5u
YXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcikgeworICAgIGRlYnVnKCdQYXNzOiB3aW5k
b3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIgaXMgZGVmaW5lZC4nKQorfSBlbHNl
IHsKKyAgICBkZWJ1ZygnRmFpbDogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5k
bGVyIGlzIG5vdCBkZWZpbmVkLicpCit9OworCisvLyBUZXN0IHRoYXQgdGhlIEFQSSByZWdlY3Rz
IHNlY3VyZWQgcHJvdG9jb2xzLgordmFyIGludmFsaWRfcHJvdG9jb2xzID0gWyd0ZXh0L2h0bWwn
LCAndGV4dC9jc3MnLCAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J107CitpbnZhbGlkX3Byb3Rv
Y29scy5mb3JFYWNoKGZ1bmN0aW9uKHByb3RvY29sKSB7CisgICAgdmFyIHN1Y2NlZWRlZCA9IGZh
bHNlOworICAgIHRyeSB7CisgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50
SGFuZGxlcihwcm90b2NvbCwgImludmFsaWQgcHJvdG9jb2wgJXMiLCAidGl0bGUiKTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NFQ1VSSVRZX0VSUicgPT0gZS5uYW1lKSB7CisgICAg
ICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisKKyAgICBpZihz
dWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52YWxpZCBwcm90b2Nv
bCAiJyArIHByb3RvY29sICsgJyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4nKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCBwcm90b2NvbCAiJyArIHBy
b3RvY29sICsgJyIgYWxsb3dlZC4nKTsKKyAgICB9OworfSk7CisKKy8vIFRlc3QgdGhhdCB0aGUg
QVBJIGNvcnJlY3RseSBwYXJzZXMgdGhlIHVybCBmb3IgJyVzJwordmFyIGludmFsaWRfdXJscyA9
IFsiIiwgIiVTIl0KK2ludmFsaWRfdXJscy5mb3JFYWNoKGZ1bmN0aW9uKHVybCkgeworICAgIHZh
ciBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoJ215cHJvdG9jb2wnLCB1cmwsICd0aXRsZScpOworICAg
IH0gY2F0Y2goZSkgeworICAgICAgICBpZignU1lOVEFYX0VSUicgPT0gZS5uYW1lKSB7CisgICAg
ICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisKKyAgICBpZihz
dWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52YWxpZCB1cmwgIicg
KyB1cmwgKyAnIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4nKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCB1cmwgIicgKyB1cmwgKyAnIiBhbGxvd2VkLicp
OworICAgIH07Cit9KTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkgaGFzIGRlZmF1bHQgbm8tb3Ag
aW1wbGVtZW50YXRpb24uCit2YXIgc3VjY2VlZGVkID0gdHJ1ZTsKK3RyeSB7CisgICAgd2luZG93
Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCdteXByb3RvY29sJywgIiVzIiwgInRp
dGxlIik7Cit9IGNhdGNoKGUpIHsKKyAgICBzdWNjZWVkZWQgPSBmYWxzZTsKK307CisKK2lmKHN1
Y2NlZWRlZCA9PSB0cnVlKSB7CisgICAgZGVidWcoJ1Bhc3M6IFZhbGlkIGNhbGwgc3VjY2VlZGVk
LicpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCBjYWxsIGRpZCBub3Qgc3Vj
Y2VlZC4nKTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclBy
b3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAK
K1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyIHRocm93cyB0aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYW5kIGhhcyBuby1vcCBkZWZhdWx0IGlt
cGxlbWVudGF0aW9uLgorCitQYXNzOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJodHRwIiB0aHJldyBT
RUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAiaHR0cHMiIHRo
cmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJmaWxl
IiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCB1cmwgIiIgdGhy
ZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHVybCAiJVMiIHRocmV3IFNZ
TlRBWF9FUlIgZXhjZXB0aW9uLgorUGFzczogVmFsaWQgY2FsbCBzdWNjZWVkZWQuCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKzxodG1sPgorPGJvZHk+
Cis8cD5UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IG5hdmlnYXRvci5yZWdpc3RlclByb3RvY29s
SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKKyAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykKKyAgICBjLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHN0ciArICdcbicpKTsKK307CisKKy8vIFRlc3QgYXZhaWxhYmlsaXR5IG9mIHRoZSByZWdpc3Rl
clByb3RvY29sSGFuZGxlciBBUEkKK2lmKHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIpIHsKKyAgICBkZWJ1ZygnUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclBy
b3RvY29sSGFuZGxlciBpcyBkZWZpbmVkLicpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygnRmFpbDog
d2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlciBpcyBub3QgZGVmaW5lZC4n
KTsKK307CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIHJlZ2VjdHMgc2VjdXJlZCBwcm90b2NvbHMu
Cit2YXIgaW52YWxpZF9wcm90b2NvbHMgPSBbJ2h0dHAnLCAnaHR0cHMnLCAnZmlsZSddOworaW52
YWxpZF9wcm90b2NvbHMuZm9yRWFjaChmdW5jdGlvbihwcm90b2NvbCkgeworICAgIHZhciBzdWNj
ZWVkZWQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKHByb3RvY29sLCAiaW52YWxpZCBwcm90b2NvbCAlcyIsICJ0aXRs
ZSIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZignU0VDVVJJVFlfRVJSJyA9PSBlLm5h
bWUpIHsKKyAgICAgICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsK
KworICAgIGlmKHN1Y2NlZWRlZCA9PSB0cnVlKSB7CisgICAgICAgIGRlYnVnKCdQYXNzOiBJbnZh
bGlkIHByb3RvY29sICInICsgcHJvdG9jb2wgKyAnIiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0
aW9uLicpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIHByb3Rv
Y29sICInICsgcHJvdG9jb2wgKyAnIiBhbGxvd2VkLicpOworICAgIH07Cit9KTsKKworLy8gVGVz
dCB0aGF0IHRoZSBBUEkgY29ycmVjdGx5IHBhcnNlcyB0aGUgdXJsIGZvciAnJXMnCit2YXIgaW52
YWxpZF91cmxzID0gWyIiLCAiJVMiXTsKK2ludmFsaWRfdXJscy5mb3JFYWNoKGZ1bmN0aW9uKHVy
bCkgeworICAgIHZhciBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgIHRyeSB7CisgICAgICAgIHdpbmRv
dy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoJ215cHJvdG9jb2wnLCB1cmwsICd0
aXRsZScpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZignU1lOVEFYX0VSUicgPT0gZS5u
YW1lKSB7CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07
CisKKyAgICBpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52
YWxpZCB1cmwgIicgKyB1cmwgKyAnIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4nKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCB1cmwgIicgKyB1cmwgKyAn
IiBhbGxvd2VkLicpOworICAgIH07Cit9KTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkgaGFzIGRl
ZmF1bHQgbm8tb3AgaW1wbGVtZW50YXRpb24uCit2YXIgc3VjY2VlZGVkID0gdHJ1ZTsKK3RyeSB7
CisgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoJ215cHJvdG9jb2wn
LCAiJXMiLCAidGl0bGUiKTsKK30gY2F0Y2goZSkgeworICBzdWNjZWVkZWQgPSBmYWxzZTsKK307
CisKK2lmKHN1Y2NlZWRlZCA9PSB0cnVlKSB7CisgIGRlYnVnKCdQYXNzOiBWYWxpZCBjYWxsIHN1
Y2NlZWRlZC4nKTsKK30gZWxzZSB7CisgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIGNhbGwgZGlkIG5v
dCBzdWNjZWVkLicpOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDMyMSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTE2ODgsNiArMTY4OCw4IEBAIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbGF0Zm9ybSBbc3Ry
aW4KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbHVnaW5zIFtwcmludGVkIGFib3ZlIGFzIHdp
bmRvdy5QbHVnaW5BcnJheS5wcm90b3R5cGVdCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucHJv
ZHVjdCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3RTdWIgW3N0cmlu
Z10KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlckNvbnRlbnRIYW5kbGVyIFtmdW5j
dGlvbl0KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlclByb3RvY29sSGFuZGxlciBb
ZnVuY3Rpb25dCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udXNlckFnZW50IFtzdHJpbmddCiB3
aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yIFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5m
b3JtYXRpb24udmVuZG9yU3ViIFtzdHJpbmddCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRl
dGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQCBuYXZpZ2F0b3IucGxh
dGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBp
cyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRl
bnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlz
IE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBu
YXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTY1Nyw2ICsxNjU3LDggQEAgd2luZG93LmNsaWVudEluZm9ybWF0
aW9uLnBsYXRmb3JtIFtzdHJpbgogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBsdWdpbnMgW3By
aW50ZWQgYWJvdmUgYXMgd2luZG93LlBsdWdpbkFycmF5LnByb3RvdHlwZV0KIHdpbmRvdy5jbGll
bnRJbmZvcm1hdGlvbi5wcm9kdWN0IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24u
cHJvZHVjdFN1YiBbc3RyaW5nXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lzdGVyQ29u
dGVudEhhbmRsZXIgW2Z1bmN0aW9uXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyIFtmdW5jdGlvbl0KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi51c2Vy
QWdlbnQgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3IgW3N0cmluZ10K
IHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3JTdWIgW3N0cmluZ10KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1u
by1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLWxlb3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFy
ZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2
aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3Iu
cHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBP
SworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51
c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JT
dWIgaXMgT0sKQEAgLTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZp
Z2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5w
cm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9L
CituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVz
ZXJBZ2VudCBpcyBPSwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1
YiBpcyBPSwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUwMzIxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw1OSBAQAorMjAwOS0xMC0zMCAgQnJhZGxleSBHcmVlbiAgPGJyZ0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIg
aW4gd2Via2l0LAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9iLzI5NjUxCisKKyAg
ICAgICAgQWxzbyBpbXBsZW1lbnRlZCBpdHMgc2lzdGVyIEFQSSB3aW5kb3cubmF2aWdhdG9yLnJl
Z2lzdGVyQ29udGVudEhhbmRsZXIuCisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBhcmUgYXMgZGVz
Y3JpYmVkIGluIHRoZSBIVE1MNSBzcGVjaWZpY2F0aW9uIHdoaWNoIGNhbiBiZQorICAgICAgICBm
b3VuZCBoZXJlLAorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3
Lmh0bWwjZG9tLW5hdmlnYXRvci1yZWdpc3RlcnByb3RvY29saGFuZGxlcgorICAgICAgICBodHRw
Oi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwjZG9tLW5hdmlnYXRvci1yZWdp
c3RlcmNvbnRlbnRoYW5kbGVyCisKKyAgICAgICAgQXMgc3BlY2lmaWVkIGluIHRoZSBkb2N1bWVu
dCwgdGhlIGJlaGF2aW9yIG9mIHRoZSBicm93c2VyIGlzIGRldGVybWluZWQKKyAgICAgICAgYnkg
dGhlIGN1cnJlbnQgcmVnaXN0ZXJlZCBoYW5kbGVyLiAgVGhlIHN0YXRlIG9mIGEgcmVnaXN0ZXJl
ZCBoYW5kbGVyCisgICAgICAgIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUsIHdpdGggdGhlIHVzZXIg
Y2xlYXJpbmcgYSByZWdpc3RlcmVkIGhhbmRsZXIsCisgICAgICAgIHJlZ2lzdGVyaW5nIGEgZGlm
ZmVyZW50IHBhZ2UgYXMgaGFuZGxlciwgb3IgZGVmZXJyaW5nIHRoZSBoYW5kZXIgdG8gdGhlCisg
ICAgICAgIE9TLiAgSWYgd2Via2l0IHdhcyB0byB0cmFjayB0aGUgc3RhdGUgb2YgdGhlIGN1cnJl
bnRseSByZWdpc3RlcmVkCisgICAgICAgIGhhbmRsZXJzLCBpdCB3b3VsZCBuZWVkIG1vcmUgQVBJ
cyBhbmQgY29tcGxleGl0eSB0byBrZWVwIGluIHN5bmMgd2l0aAorICAgICAgICB1c2VyIGFjdGlv
bnMgcmVwb3J0ZWQgdG8gd2Via2l0IGZyb20gdGhlIFVBLiAgRm9yIHNpbXBsaWNpdHksIHRoZSBz
dGF0ZQorICAgICAgICBvZiBwcm90b2NvbCBoYW5kbGVycyBzaG91bGQgYmUga2VwdCBpc29sYXRl
ZCBmcm9tIHdlYmtpdCBhbmQgd2Via2l0IG9ubHkKKyAgICAgICAgbm90aWZpZXMgdGhlIFVBIHRo
YXQgYSBwYWdlIGhhcyBtYWRlIHRoZSBjYWxsLiAgVGhlIFVBIGlzIHRoZW4KKyAgICAgICAgcmVz
cG9uc2libGUgZm9yIGNvcnJlY3RseSBoYW5kbGluZyB0aGUgcmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXIgY2FsbCBhbmQKKyAgICAgICAgdGhlIHJlZGlyZWN0cyB3aGljaCByZXN1bHQgZnJvbSByZWdp
c3RyYXRpb24uCisgICAgICAgIAorICAgICAgICBXZSBkbyBob3dldmVyIGZvbGxvdyB0aGUgc3Bl
Y2lmaWNhdGlvbiBpbiBpbnN1cmluZyB0aGF0IHRoZSByZXNlcnZlZAorICAgICAgICBzY2hlbWVz
IGFuZCBtaW1lVHlwZXMgYXJlIG5vdCBwYXNzZWQgdG8gdGhlIFVBIGFzIGN1c3RvbSBoYW5kbGVy
CisgICAgICAgIHJlZ2lzdHJhdGlvbiB0ZXN0cy4gIFdlIGFsc28gaW5zdXJlIHRoYXQgdGhlICIl
cyIgdG9rZW4gaXMgcHJlc2VudCBhcworICAgICAgICByZXF1aXJlZCBieSB0aGUgc3BlY2lmaWNh
dGlvbi4KKworICAgICAgICBVcGRhdGVkIHRlc3QgZXhwZWN0YXRpb25zIGZvciB3aW5kb3cuY2xp
ZW50SW5mb3JtYXRpb24gYW5kIG5hdmlnYXRvcgorICAgICAgICBvYmplY3RzLgorCisgICAgICAg
IFRlc3RzOiBmYXN0L2pzL3JlZ2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9qcy9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCisKKyAgICAgICAgKiBwYWdl
L0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJDb250ZW50SGFuZGxl
cik6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZWdpc3RlclByb3RvY29sSGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnJlZ2lzdGVyQ29udGVudEhh
bmRsZXIpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnZlcmlmeUN1c3RvbUhhbmRsZXJVUkwpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UHJvdG9j
b2xIYW5kbGVyU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6cmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UHJvdG9jb2xIYW5kbGVy
TWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlckNvbnRlbnRI
YW5kbGVyKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpmcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6Om9wdGlvbmFsR2VvbG9jYXRpb24pOgorICAg
ICAgICAqIHBhZ2UvTmF2aWdhdG9yLmlkbDoKKwogMjAwOS0xMC0zMCAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJ
bmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAJKHJldmlzaW9uIDUwMzIxKQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwMiw2ICszMDIsMTYgQEAgYm9vbCBDaHJvbWU6OnNob3VsZElu
dGVycnVwdEphdmFTY3JpcHQoKQogICAgIHJldHVybiBtX2NsaWVudC0+c2hvdWxkSW50ZXJydXB0
SmF2YVNjcmlwdCgpOwogfQogCit2b2lkIENocm9tZTo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIo
Y29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpIAoreyAgICAgICAKKyAgICBtX2NsaWVudC0+cmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXIoc2NoZW1lLCBiYXNlVVJMLCB1cmwsIHRpdGxlKTsKK30KKwor
dm9pZCBDaHJvbWU6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKK3sKKyAgICBtX2NsaWVudC0+cmVnaXN0ZXJDb250ZW50SGFuZGxlcihtaW1lVHlw
ZSwgIGJhc2VVUkwsIHVybCwgIHRpdGxlKTsKK30gICAgCisKIEludFJlY3QgQ2hyb21lOjp3aW5k
b3dSZXNpemVyUmVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LT53aW5kb3dSZXNp
emVyUmVjdCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9DaHJvbWUuaAkocmV2aXNpb24gNTAzMjEpCisrKyBXZWJDb3JlL3BhZ2UvQ2hy
b21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChGcmFtZSosIGNvbnN0IFN0cmluZyYp
OwogICAgICAgICBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKIAorICAgICAgICB2
b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICAgICAgdm9pZCByZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOworCiAgICAgICAgIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsK
IAogICAgICAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1
bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDUwMzIxKQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjEsNiArMTIxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpID0gMDsKICAgICAgICAgdmlydHVhbCBi
b29sIHRhYnNUb0xpbmtzKCkgY29uc3QgPSAwOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
Q29udGVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikgeyB9CisKICAgICAgICAgdmlydHVhbCBJbnRSZWN0IHdpbmRvd1Jl
c2l6ZXJSZWN0KCkgY29uc3QgPSAwOwogCiAgICAgICAgIC8vIE1ldGhvZHMgdXNlZCBieSBIb3N0
V2luZG93LgpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHJldmlzaW9uIDUwMzIxKQorKysgV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCwxMiBAQAogI2lu
Y2x1ZGUgIk5hdmlnYXRvci5oIgogCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkdlb2xvY2F0
aW9uLmgiCisjaW5jbHVkZSAiS3VybC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVk
ZSAiTWltZVR5cGVBcnJheS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE2OSw0ICsxNzEsMTAw
IEBAIHZvaWQgTmF2aWdhdG9yOjpnZXRTdG9yYWdlVXBkYXRlcygpCiB9CiAjZW5kaWYKIAorc3Rh
dGljIGJvb2wgdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNv
bnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBUaGUgc3BlY2lm
aWNhdGlvbiByZXF1aXJlcyB0aGF0IGl0IGlzIGEgU1lOVEFYX0VSUiBpZiB0aGUgdGhlICIlcyIg
dG9rZW4KKyAgICAvLyBpcyBub3QgcHJlc2VudC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciB0b2tl
bltdID0gIiVzIjsKKyAgICBpbnQgaW5kZXggPSB1cmwuZmluZCh0b2tlbik7CisgICAgaWYgKC0x
ID09IGluZGV4KSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIC8vIEl0IGlzIGFsc28gYSBTWU5UQVhfRVJSIGlmIHRoZSBjdXN0
b20gaGFuZGxlciBVUkwsIGFzIGNyZWF0ZWQgYnkgcmVtb3ZpbmcKKyAgICAvLyB0aGUgIiVzIiB0
b2tlbiBhbmQgcHJlcGVuZGluZyB0aGUgYmFzZSB1cmwsIGRvZXMgbm90IHJlc29sdmUuCisgICAg
U3RyaW5nIG5ld1VSTCA9IHVybDsKKyAgICBuZXdVUkwucmVtb3ZlKGluZGV4LCBzaXplb2YodG9r
ZW4pIC8gc2l6ZW9mKHRva2VuWzBdKSk7CisKKyAgICBLVVJMIGJhc2UoUGFyc2VkVVJMU3RyaW5n
LCBiYXNlVVJMKTsKKyAgICBLVVJMIGt1cmwoYmFzZSwgbmV3VVJMKTsKKworICAgIGlmIChrdXJs
LmlzRW1wdHkoKSB8fCAha3VybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyBib29sIHZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShjb25zdCBTdHJpbmcmIHNj
aGVtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gSXQgaXMgYSBTRUNVUklUWV9FUlIg
Zm9yIHRoZXNlIHNjaGVtZXMgdG8gYmUgaGFuZGxlZCBieSBhIGN1c3RvbSBoYW5kbGVyLgorICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShzY2hlbWUsICJodHRwIikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2Uoc2NoZW1lLCAiaHR0cHMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShzY2hlbWUsICJmaWxlIikp
IHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTmF2aWdhdG9yOjpyZWdpc3RlclByb3Rv
Y29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdmVyaWZ5UHJv
dG9jb2xIYW5kbGVyU2NoZW1lKHNjaGVtZSwgZWMpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgU3RyaW5nIGJhc2VVUkwgPSBkb2N1bWVudC0+YmFzZVVSTCgpLmJhc2VBc1N0cmlu
ZygpOworCisgICAgaWYgKCF2ZXJpZnlDdXN0b21IYW5kbGVyVVJMKGJhc2VVUkwsIHVybCwgZWMp
KQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwor
ICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+Y2hyb21lKCktPnJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyKHNjaGVtZSwgYmFzZVVSTCwgdXJsLCBtX2ZyYW1lLT5kaXNw
bGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHRpdGxlKSk7Cit9CisKK3N0YXRpYyBib29sIHZl
cmlmeVByb3RvY29sSGFuZGxlck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgLy8gSXQgaXMgYSBTRUNVUklUWV9FUlIgZm9yIHRoZXNlIG1pbWUg
dHlwZXMgdG8gYmUgYXNzaWduZWQgdG8gYSBjdXN0b20KKyAgICAvLyBoYW5kbGVyLgorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh0eXBlLCAidGV4dC9odG1sIikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UodHlwZSwgInRleHQvY3NzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgImFwcGxpY2F0
aW9uL3gtamF2YXNjcmlwdCIpKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE5hdmln
YXRvcjo6cmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCF2ZXJpZnlQcm90b2NvbEhhbmRsZXJNaW1lVHlwZShtaW1lVHlwZSwgZWMpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFk
b2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGJhc2VVUkwgPSBkb2N1bWVu
dC0+YmFzZVVSTCgpLmJhc2VBc1N0cmluZygpOworCisgICAgaWYgKCF2ZXJpZnlDdXN0b21IYW5k
bGVyVVJMKGJhc2VVUkwsIHVybCwgZWMpKQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdlKiBw
YWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcGFnZS0+Y2hyb21lKCktPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobWltZVR5cGUsIGJh
c2VVUkwsIHVybCwgbV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRs
ZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCShyZXZpc2lv
biA1MDMyMSkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGx1Z2luQXJyYXk7
CiAgICAgY2xhc3MgU3RyaW5nOwogCisgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKwog
ICAgIGNsYXNzIE5hdmlnYXRvciA6IHB1YmxpYyBOYXZpZ2F0b3JCYXNlLCBwdWJsaWMgUmVmQ291
bnRlZDxOYXZpZ2F0b3I+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE5hdmlnYXRvcj4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE5h
dmlnYXRvcihmcmFtZSkpOyB9CkBAIC01OSw2ICs2MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gUmVsaW5xdWlzaGVzIHRoZSBzdG9yYWdlIGxvY2ssIGlmIG9uZSBleGlzdHMu
CiAgICAgICAgIHZvaWQgZ2V0U3RvcmFnZVVwZGF0ZXMoKTsKICNlbmRpZgorICAgICAgICAKKyAg
ICAgICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KTsKKyAgICAgICAgdm9pZCByZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25D
b2RlJiBlYyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaWRsCShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxMSBAQCBtb2R1bGUgd2luZG93IHsK
ICNpZiBkZWZpbmVkKEVOQUJMRV9ET01fU1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdFCiAg
ICAgICAgIHZvaWQgZ2V0U3RvcmFnZVVwZGF0ZXMoKTsKICNlbmRpZgorCisgICAgICAgIHZvaWQg
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoaW4gRE9NU3RyaW5nIHNjaGVtZSwgaW4gRE9NU3RyaW5n
IHVybCwgaW4gRE9NU3RyaW5nIHRpdGxlKQorICAgICAgICAgICAgcmFpc2VzKERvbUV4Y2VwdGlv
bik7CisgICAgICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihpbiBET01TdHJpbmcgbWlt
ZVR5cGUsIGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0aXRsZSkKKyAgICAgICAgICAg
IHJhaXNlcyhEb21FeGNlcHRpb24pOwogICAgIH07CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUw
MzIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzEgQEAKKzIwMDktMTAtMzAgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIHRl
c3QgZXhwZWN0YXRpb25zIGZvciBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICB3aW5kb3cubmF2
aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGFuZAorICAgICAgICB3aW5kb3cubmF2aWdh
dG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIuCisgICAgICAgIAorICAgICAgICBUaGVyZSBpcyBh
IGRlZmF1bHQgaW1wbGltZW50YXRpb24gZm9yIHRoZXNlIEFQSXMsIGhlbmNlIGFsbCBwbGF0Zm9y
bXMKKyAgICAgICAgd2l0aCB0aGUgbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdCBh
bmQKKyAgICAgICAgd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQgdGVzdHMgbmVlZGVkIHRvIGJl
IHVwZGF0ZWQuICBXaGlsZQorICAgICAgICBpc29sYXRlZFdvcmxkcyBoYXMgYSB3aW5kb3ctcHJv
cGVydGllcy1leHBlY3RlZCB0ZXN0LCBpdCBoYXMgbm8gd2luZG93CisgICAgICAgIG9iamVjdCBh
bmQgaGVuY2UgZG9lcyBub3QgbmVlZCB0byBiZSB1cGRhZXRkLgorCisgICAgICAgIFdlIGFkZCB0
d28gZmFzdC9kb20gdGVzdHMgdG8gaW5zdXJlIHRoYXQgdGhlIHByb3BlciBleGNlcHRpb25zIGFy
ZQorICAgICAgICB0aHJvd24gd2hlbiBiYWQgc3ludGF4IG9yIHNlY3VyaXR5IHZpb2xhdGlvbnMg
YXJlIG1hZGUgYnkgY2FsbGluZyB0aGUKKyAgICAgICAgbWV0aG9kcy4KKworICAgICAgICAqIGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9u
YXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBl
Y3RlZC50eHQ6CisKIDIwMDktMTAtMjkgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNo
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9u
YXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMyw2ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdp
bnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBp
cyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMg
T0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAg
LTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lu
cyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlz
IE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3Iu
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBP
SwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFu
ZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9y
ZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMCBAQAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJDb250
ZW50SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbi4KKworUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJ0ZXh0L2h0
bWwiIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29s
ICJ0ZXh0L2NzcyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQg
cHJvdG9jb2wgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4
Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgdXJsICIiIHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9u
LgorUGFzczogSW52YWxpZCB1cmwgIiVTIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4KK1Bh
c3M6IFZhbGlkIGNhbGwgc3VjY2VlZGVkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9y
ZWdpc3RlckNvbnRlbnRIYW5kbGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDcxIEBACis8aHRtbD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IG1ha2VzIHN1cmUg
dGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBl
eGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi48L3A+Cis8cHJl
IGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKKyAg
ICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgYy5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKSk7Cit9OworCisvLyBU
ZXN0IGF2YWlsYWJpbGl0eSBvZiB0aGUgcmVnaXN0ZXJDb250ZW50SGFuZGxlciBBUEkKK2lmKHdp
bmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcikgeworICAgIGRlYnVnKCdQYXNz
OiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIgaXMgZGVmaW5lZC4nKQor
fSBlbHNlIHsKKyAgICBkZWJ1ZygnRmFpbDogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRl
bnRIYW5kbGVyIGlzIG5vdCBkZWZpbmVkLicpCit9OworCisvLyBUZXN0IHRoYXQgdGhlIEFQSSBy
ZWdlY3RzIHNlY3VyZWQgcHJvdG9jb2xzLgordmFyIGludmFsaWRfcHJvdG9jb2xzID0gWyd0ZXh0
L2h0bWwnLCAndGV4dC9jc3MnLCAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J107CitpbnZhbGlk
X3Byb3RvY29scy5mb3JFYWNoKGZ1bmN0aW9uKHByb3RvY29sKSB7CisgICAgdmFyIHN1Y2NlZWRl
ZCA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJD
b250ZW50SGFuZGxlcihwcm90b2NvbCwgImludmFsaWQgcHJvdG9jb2wgJXMiLCAidGl0bGUiKTsK
KyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NFQ1VSSVRZX0VSUicgPT0gZS5uYW1lKSB7
CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisKKyAg
ICBpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52YWxpZCBw
cm90b2NvbCAiJyArIHByb3RvY29sICsgJyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4n
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCBwcm90b2NvbCAi
JyArIHByb3RvY29sICsgJyIgYWxsb3dlZC4nKTsKKyAgICB9OworfSk7CisKKy8vIFRlc3QgdGhh
dCB0aGUgQVBJIGNvcnJlY3RseSBwYXJzZXMgdGhlIHVybCBmb3IgJyVzJwordmFyIGludmFsaWRf
dXJscyA9IFsiIiwgIiVTIl0KK2ludmFsaWRfdXJscy5mb3JFYWNoKGZ1bmN0aW9uKHVybCkgewor
ICAgIHZhciBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB3aW5kb3cubmF2
aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoJ215cHJvdG9jb2wnLCB1cmwsICd0aXRsZScp
OworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZignU1lOVEFYX0VSUicgPT0gZS5uYW1lKSB7
CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisKKyAg
ICBpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52YWxpZCB1
cmwgIicgKyB1cmwgKyAnIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4nKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCB1cmwgIicgKyB1cmwgKyAnIiBhbGxv
d2VkLicpOworICAgIH07Cit9KTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkgaGFzIGRlZmF1bHQg
bm8tb3AgaW1wbGVtZW50YXRpb24uCit2YXIgc3VjY2VlZGVkID0gdHJ1ZTsKK3RyeSB7CisgICAg
d2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCdteXByb3RvY29sJywgIiVz
IiwgInRpdGxlIik7Cit9IGNhdGNoKGUpIHsKKyAgICBzdWNjZWVkZWQgPSBmYWxzZTsKK307CisK
K2lmKHN1Y2NlZWRlZCA9PSB0cnVlKSB7CisgICAgZGVidWcoJ1Bhc3M6IFZhbGlkIGNhbGwgc3Vj
Y2VlZGVkLicpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCBjYWxsIGRpZCBu
b3Qgc3VjY2VlZC4nKTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxl
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdp
c3RlclByb3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAgQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyIHRocm93cyB0aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYW5kIGhhcyBuby1vcCBkZWZh
dWx0IGltcGxlbWVudGF0aW9uLgorCitQYXNzOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJodHRwIiB0
aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAiaHR0
cHMiIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29s
ICJmaWxlIiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCB1cmwg
IiIgdGhyZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHVybCAiJVMiIHRo
cmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9uLgorUGFzczogVmFsaWQgY2FsbCBzdWNjZWVkZWQuCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKzxodG1sPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IG5hdmlnYXRvci5yZWdpc3RlclBy
b3RvY29sSGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3Ag
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBkZWJ1ZyhzdHIpIHsKKyAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykKKyAgICBjLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHN0ciArICdcbicpKTsKK307CisKKy8vIFRlc3QgYXZhaWxhYmlsaXR5IG9mIHRoZSBy
ZWdpc3RlclByb3RvY29sSGFuZGxlciBBUEkKK2lmKHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIpIHsKKyAgICBkZWJ1ZygnUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdp
c3RlclByb3RvY29sSGFuZGxlciBpcyBkZWZpbmVkLicpOworfSBlbHNlIHsKKyAgICBkZWJ1Zygn
RmFpbDogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlciBpcyBub3QgZGVm
aW5lZC4nKTsKK307CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIHJlZ2VjdHMgc2VjdXJlZCBwcm90
b2NvbHMuCit2YXIgaW52YWxpZF9wcm90b2NvbHMgPSBbJ2h0dHAnLCAnaHR0cHMnLCAnZmlsZSdd
OworaW52YWxpZF9wcm90b2NvbHMuZm9yRWFjaChmdW5jdGlvbihwcm90b2NvbCkgeworICAgIHZh
ciBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICB3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKHByb3RvY29sLCAiaW52YWxpZCBwcm90b2NvbCAlcyIs
ICJ0aXRsZSIpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZignU0VDVVJJVFlfRVJSJyA9
PSBlLm5hbWUpIHsKKyAgICAgICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7CisgICAgICAgIH07Cisg
ICAgfTsKKworICAgIGlmKHN1Y2NlZWRlZCA9PSB0cnVlKSB7CisgICAgICAgIGRlYnVnKCdQYXNz
OiBJbnZhbGlkIHByb3RvY29sICInICsgcHJvdG9jb2wgKyAnIiB0aHJldyBTRUNVUklUWV9FUlIg
ZXhjZXB0aW9uLicpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKCdGYWlsOiBJbnZhbGlk
IHByb3RvY29sICInICsgcHJvdG9jb2wgKyAnIiBhbGxvd2VkLicpOworICAgIH07Cit9KTsKKwor
Ly8gVGVzdCB0aGF0IHRoZSBBUEkgY29ycmVjdGx5IHBhcnNlcyB0aGUgdXJsIGZvciAnJXMnCit2
YXIgaW52YWxpZF91cmxzID0gWyIiLCAiJVMiXTsKK2ludmFsaWRfdXJscy5mb3JFYWNoKGZ1bmN0
aW9uKHVybCkgeworICAgIHZhciBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgIHRyeSB7CisgICAgICAg
IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoJ215cHJvdG9jb2wnLCB1
cmwsICd0aXRsZScpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZignU1lOVEFYX0VSUicg
PT0gZS5uYW1lKSB7CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9Owor
ICAgIH07CisKKyAgICBpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFz
czogSW52YWxpZCB1cmwgIicgKyB1cmwgKyAnIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4n
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCB1cmwgIicgKyB1
cmwgKyAnIiBhbGxvd2VkLicpOworICAgIH07Cit9KTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkg
aGFzIGRlZmF1bHQgbm8tb3AgaW1wbGVtZW50YXRpb24uCit2YXIgc3VjY2VlZGVkID0gdHJ1ZTsK
K3RyeSB7CisgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoJ215cHJv
dG9jb2wnLCAiJXMiLCAidGl0bGUiKTsKK30gY2F0Y2goZSkgeworICBzdWNjZWVkZWQgPSBmYWxz
ZTsKK307CisKK2lmKHN1Y2NlZWRlZCA9PSB0cnVlKSB7CisgIGRlYnVnKCdQYXNzOiBWYWxpZCBj
YWxsIHN1Y2NlZWRlZC4nKTsKK30gZWxzZSB7CisgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIGNhbGwg
ZGlkIG5vdCBzdWNjZWVkLicpOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDMyMSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE2ODgsNiArMTY4OCw4IEBAIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbGF0Zm9y
bSBbc3RyaW4KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbHVnaW5zIFtwcmludGVkIGFib3Zl
IGFzIHdpbmRvdy5QbHVnaW5BcnJheS5wcm90b3R5cGVdCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRp
b24ucHJvZHVjdCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3RTdWIg
W3N0cmluZ10KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlckNvbnRlbnRIYW5kbGVy
IFtmdW5jdGlvbl0KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlclByb3RvY29sSGFu
ZGxlciBbZnVuY3Rpb25dCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udXNlckFnZW50IFtzdHJp
bmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yIFtzdHJpbmddCiB3aW5kb3cuY2xp
ZW50SW5mb3JtYXRpb24udmVuZG9yU3ViIFtzdHJpbmddCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQCBuYXZpZ2F0
b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJv
ZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxl
cigpIGlzIE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlz
IE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY1Nyw2ICsxNjU3LDggQEAgd2luZG93LmNsaWVudElu
Zm9ybWF0aW9uLnBsYXRmb3JtIFtzdHJpbgogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBsdWdp
bnMgW3ByaW50ZWQgYWJvdmUgYXMgd2luZG93LlBsdWdpbkFycmF5LnByb3RvdHlwZV0KIHdpbmRv
dy5jbGllbnRJbmZvcm1hdGlvbi5wcm9kdWN0IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3Jt
YXRpb24ucHJvZHVjdFN1YiBbc3RyaW5nXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJlZ2lz
dGVyQ29udGVudEhhbmRsZXIgW2Z1bmN0aW9uXQord2luZG93LmNsaWVudEluZm9ybWF0aW9uLnJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyIFtmdW5jdGlvbl0KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlv
bi51c2VyQWdlbnQgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3IgW3N0
cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi52ZW5kb3JTdWIgW3N0cmluZ10KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWxlb3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
bGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBP
SwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZp
Z2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIo
KSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmln
YXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52
ZW5kb3JTdWIgaXMgT0sKQEAgLTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9L
CiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmln
YXRvci5wcm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigp
IGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdh
dG9yLnVzZXJBZ2VudCBpcyBPSwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZl
bmRvclN1YiBpcyBPSwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42198</attachid>
            <date>2009-10-30 02:24:00 -0700</date>
            <delta_ts>2009-10-30 19:20:34 -0700</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handler.txt</filename>
            <type>text/plain</type>
            <size>22236</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMDktMTAtMzAgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRoZSBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorICAgICAgICAKKyAgICAgICAgV2UgZG8gaG93ZXZlciBmb2xsb3cgdGhlIHNwZWNpZmljYXRp
b24gaW4gaW5zdXJpbmcgdGhhdCB0aGUgcmVzZXJ2ZWQKKyAgICAgICAgc2NoZW1lcyBhbmQgbWlt
ZVR5cGVzIGFyZSBub3QgcGFzc2VkIHRvIHRoZSBVQSBhcyBjdXN0b20gaGFuZGxlcgorICAgICAg
ICByZWdpc3RyYXRpb24gdGVzdHMuICBXZSBhbHNvIGluc3VyZSB0aGF0IHRoZSAiJXMiIHRva2Vu
IGlzIHByZXNlbnQgYXMKKyAgICAgICAgcmVxdWlyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uCisK
KyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Igd2luZG93LmNsaWVudEluZm9y
bWF0aW9uIGFuZCBuYXZpZ2F0b3IKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICBUZXN0czog
ZmFzdC9qcy9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
anMvcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRtbAorCisgICAgICAgICogcGFnZS9DaHJvbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKToK
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2ZXJpZnlD
dXN0b21IYW5kbGVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeVByb3RvY29sSGFuZGxl
clNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeVByb3RvY29sSGFuZGxlck1pbWVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6cmVnaXN0ZXJDb250ZW50SGFuZGxlcik6
CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6ZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvcHRpb25hbEdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBw
YWdlL05hdmlnYXRvci5pZGw6CisKIDIwMDktMTAtMzAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDIsNiArMzAyLDE2IEBAIGJvb2wgQ2hyb21lOjpzaG91bGRJbnRlcnJ1cHRK
YXZhU2NyaXB0KCkKICAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEludGVycnVwdEphdmFTY3Jp
cHQoKTsKIH0KIAordm9pZCBDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0
cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKSAKK3sgICAgICAgCisgICAgbV9jbGllbnQtPnJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyKHNjaGVtZSwgYmFzZVVSTCwgdXJsLCB0aXRsZSk7Cit9CisKK3ZvaWQgQ2hy
b21lOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUp
Cit7CisgICAgbV9jbGllbnQtPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobWltZVR5cGUsICBiYXNl
VVJMLCB1cmwsICB0aXRsZSk7Cit9ICAgIAorCiBJbnRSZWN0IENocm9tZTo6d2luZG93UmVzaXpl
clJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC0+d2luZG93UmVzaXplclJlY3Qo
KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgJKHJldmlzaW9uIDUwMzIxKQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAKKyAgICAgICAgdm9pZCByZWdp
c3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgICAg
IHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKKwogICAgICAgICBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICAg
ICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5z
aWduZWQgbW9kaWZpZXJGbGFncyk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1MDMy
MSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIx
LDYgKzEyMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0YWJz
VG9MaW5rcygpIGNvbnN0ID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbnRlbnRI
YW5kbGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpIHsgfQorCiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVj
dCgpIGNvbnN0ID0gMDsKIAogICAgICAgICAvLyBNZXRob2RzIHVzZWQgYnkgSG9zdFdpbmRvdy4K
SW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiA1MDMyMSkKKysrIFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMCArMjQsMTIgQEAKICNpbmNsdWRlICJO
YXZpZ2F0b3IuaCIKIAogI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgor
I2luY2x1ZGUgIkt1cmwuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk1pbWVU
eXBlQXJyYXkuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNjksNCArMTcxLDEwMCBAQCB2b2lk
IE5hdmlnYXRvcjo6Z2V0U3RvcmFnZVVwZGF0ZXMoKQogfQogI2VuZGlmCiAKK3N0YXRpYyBib29s
IHZlcmlmeUN1c3RvbUhhbmRsZXJVUkwoY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhlIHNwZWNpZmljYXRpb24g
cmVxdWlyZXMgdGhhdCBpdCBpcyBhIFNZTlRBWF9FUlIgaWYgdGhlIHRoZSAiJXMiIHRva2VuCisg
ICAgLy8gaXMgbm90IHByZXNlbnQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgdG9rZW5bXSA9ICIl
cyI7CisgICAgaW50IGluZGV4ID0gdXJsLmZpbmQodG9rZW4pOworICAgIGlmICgtMSA9PSBpbmRl
eCkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBJdCBpcyBhbHNvIGEgU1lOVEFYX0VSUiBpZiB0aGUgY3VzdG9tIGhhbmRs
ZXIgVVJMLCBhcyBjcmVhdGVkIGJ5IHJlbW92aW5nCisgICAgLy8gdGhlICIlcyIgdG9rZW4gYW5k
IHByZXBlbmRpbmcgdGhlIGJhc2UgdXJsLCBkb2VzIG5vdCByZXNvbHZlLgorICAgIFN0cmluZyBu
ZXdVUkwgPSB1cmw7CisgICAgbmV3VVJMLnJlbW92ZShpbmRleCwgc2l6ZW9mKHRva2VuKSAvIHNp
emVvZih0b2tlblswXSkpOworCisgICAgS1VSTCBiYXNlKFBhcnNlZFVSTFN0cmluZywgYmFzZVVS
TCk7CisgICAgS1VSTCBrdXJsKGJhc2UsIG5ld1VSTCk7CisKKyAgICBpZiAoa3VybC5pc0VtcHR5
KCkgfHwgIWt1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Ym9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZvciB0aGVz
ZSBzY2hlbWVzIHRvIGJlIGhhbmRsZWQgYnkgYSBjdXN0b20gaGFuZGxlci4KKyAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiaHR0cCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHNjaGVt
ZSwgImh0dHBzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiZmlsZSIpKSB7CisgICAg
ICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIE5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXZlcmlmeVByb3RvY29sSGFu
ZGxlclNjaGVtZShzY2hlbWUsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2Zy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IFN0cmluZyBiYXNlVVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKS5iYXNlQXNTdHJpbmcoKTsKKwor
ICAgIGlmICghdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmwsIGVjKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAo
IXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5yZWdpc3RlclBy
b3RvY29sSGFuZGxlcihzY2hlbWUsIGJhc2VVUkwsIHVybCwgbV9mcmFtZS0+ZGlzcGxheVN0cmlu
Z01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkpOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQcm90
b2NvbEhhbmRsZXJNaW1lVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIC8vIEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZvciB0aGVzZSBtaW1lIHR5cGVzIHRv
IGJlIGFzc2lnbmVkIHRvIGEgY3VzdG9tCisgICAgLy8gaGFuZGxlci4KKyAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UodHlwZSwgInRleHQvaHRtbCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUs
ICJ0ZXh0L2NzcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJhcHBsaWNhdGlvbi94LWph
dmFzY3JpcHQiKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOYXZpZ2F0b3I6OnJl
Z2lzdGVyQ29udGVudEhhbmRsZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghdmVyaWZ5UHJvdG9jb2xIYW5kbGVyTWltZVR5cGUobWltZVR5cGUsIGVjKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBiYXNlVVJMID0gZG9jdW1lbnQtPmJhc2VV
UkwoKS5iYXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChi
YXNlVVJMLCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBh
Z2UtPmNocm9tZSgpLT5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKG1pbWVUeXBlLCBiYXNlVVJMLCB1
cmwsIG1fZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gNTAzMjEp
CisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBsdWdpbkFycmF5OwogICAgIGNs
YXNzIFN0cmluZzsKIAorICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKICAgICBjbGFz
cyBOYXZpZ2F0b3IgOiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8TmF2
aWdhdG9yPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXZpZ2F0
b3I+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3Io
ZnJhbWUpKTsgfQpAQCAtNTksNiArNjEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIFJlbGlucXVpc2hlcyB0aGUgc3RvcmFnZSBsb2NrLCBpZiBvbmUgZXhpc3RzLgogICAgICAg
ICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYKKyAgICAgICAgCisgICAgICAgIHZv
aWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAg
ICAgIHZvaWQgcmVnaXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYgZWMp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF2aWdhdG9yKEZyYW1lKik7CkluZGV4OiBXZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yLmlkbAkocmV2aXNpb24gNTAzMjEpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVm
aW5lZChFTkFCTEVfRE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQogICAgICAgICB2
b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYKKworICAgICAgICB2b2lkIHJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyKGluIERPTVN0cmluZyBzY2hlbWUsIGluIERPTVN0cmluZyB1cmwsIGlu
IERPTVN0cmluZyB0aXRsZSkKKyAgICAgICAgICAgIHJhaXNlcyhEb21FeGNlcHRpb24pOworICAg
ICAgICB2b2lkIHJlZ2lzdGVyQ29udGVudEhhbmRsZXIoaW4gRE9NU3RyaW5nIG1pbWVUeXBlLCBp
biBET01TdHJpbmcgdXJsLCBpbiBET01TdHJpbmcgdGl0bGUpCisgICAgICAgICAgICByYWlzZXMo
RG9tRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDMyMSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisy
MDA5LTEwLTMwICBCcmFkbGV5IEdyZWVuICA8YnJnQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGluZyB0ZXN0IGV4cGVj
dGF0aW9ucyBmb3IgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5y
ZWdpc3RlclByb3RvY29sSGFuZGxlciBhbmQKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5yZWdp
c3RlckNvbnRlbnRIYW5kbGVyLgorICAgICAgICAKKyAgICAgICAgVGhlcmUgaXMgYSBkZWZhdWx0
IGltcGxpbWVudGF0aW9uIGZvciB0aGVzZSBBUElzLCBoZW5jZSBhbGwgcGxhdGZvcm1zCisgICAg
ICAgIHdpdGggdGhlIG5hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3QgYW5kCisgICAg
ICAgIHdpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkIHRlc3RzIG5lZWRlZCB0byBiZSB1cGRhdGVk
LiAgV2hpbGUKKyAgICAgICAgaXNvbGF0ZWRXb3JsZHMgaGFzIGEgd2luZG93LXByb3BlcnRpZXMt
ZXhwZWN0ZWQgdGVzdCwgaXQgaGFzIG5vIHdpbmRvdworICAgICAgICBvYmplY3QgYW5kIGhlbmNl
IGRvZXMgbm90IG5lZWQgdG8gYmUgdXBkYWV0ZC4KKworICAgICAgICBXZSBhZGQgdHdvIGZhc3Qv
ZG9tIHRlc3RzIHRvIGluc3VyZSB0aGF0IHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhcmUKKyAgICAg
ICAgdGhyb3duIHdoZW4gYmFkIHN5bnRheCBvciBzZWN1cml0eSB2aW9sYXRpb25zIGFyZSBtYWRl
IGJ5IGNhbGxpbmcgdGhlCisgICAgICAgIG1ldGhvZHMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9t
L25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3JlZ2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9y
LWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
bGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0
OgorCiAyMDA5LTEwLTI5ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDUwMzIxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9y
LWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiAr
MTMsOCBAQCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9L
CiBuYXZpZ2F0b3IucHJvZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25h
dmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCkgaXMgT0sKK25hdmlnYXRvci5yZWdpc3Rl
clByb3RvY29sSGFuZGxlcigpIGlzIE9LCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZp
Z2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCkBAIC0yOSw2ICsz
MSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sK
IG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBpcyBPSworbmF2
aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmln
YXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyQ29udGVudEhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyQ29udGVudEhhbmRsZXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJD
b250ZW50SGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAK
K1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRs
ZXIgdGhyb3dzIHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhbmQgaGFzIG5vLW9wIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCisKK1Bhc3M6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFu
ZGxlciBpcyBkZWZpbmVkLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAidGV4dC9odG1sIiB0aHJl
dyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAidGV4dC9j
c3MiIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29s
ICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24u
CitQYXNzOiBJbnZhbGlkIHVybCAiIiB0aHJldyBTWU5UQVhfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6
IEludmFsaWQgdXJsICIlUyIgdGhyZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uCitQYXNzOiBWYWxp
ZCBjYWxsIHN1Y2NlZWRlZC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJD
b250ZW50SGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jl
Z2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL3JlZ2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3MSBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2
aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIgdGhyb3dzIHRoZSBwcm9wZXIgZXhjZXB0aW9u
cyBhbmQgaGFzIG5vLW9wIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uPC9wPgorPHByZSBpZD0iY29u
c29sZSI+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZGVidWcoc3RyKSB7CisgICAgdmFyIGMg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgIGMuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyICsgJ1xuJykpOworfTsKKworLy8gVGVzdCBhdmFp
bGFiaWxpdHkgb2YgdGhlIHJlZ2lzdGVyQ29udGVudEhhbmRsZXIgQVBJCitpZih3aW5kb3cubmF2
aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIpIHsKKyAgICBkZWJ1ZygnUGFzczogd2luZG93
Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyIGlzIGRlZmluZWQuJykKK30gZWxzZSB7
CisgICAgZGVidWcoJ0ZhaWw6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxl
ciBpcyBub3QgZGVmaW5lZC4nKQorfTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkgcmVnZWN0cyBz
ZWN1cmVkIHByb3RvY29scy4KK3ZhciBpbnZhbGlkX3Byb3RvY29scyA9IFsndGV4dC9odG1sJywg
J3RleHQvY3NzJywgJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCddOworaW52YWxpZF9wcm90b2Nv
bHMuZm9yRWFjaChmdW5jdGlvbihwcm90b2NvbCkgeworICAgIHZhciBzdWNjZWVkZWQgPSBmYWxz
ZTsKKyAgICB0cnkgeworICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhh
bmRsZXIocHJvdG9jb2wsICJpbnZhbGlkIHByb3RvY29sICVzIiwgInRpdGxlIik7CisgICAgfSBj
YXRjaChlKSB7CisgICAgICAgIGlmKCdTRUNVUklUWV9FUlInID09IGUubmFtZSkgeworICAgICAg
ICAgICAgc3VjY2VlZGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgaWYoc3Vj
Y2VlZGVkID09IHRydWUpIHsKKyAgICAgICAgZGVidWcoJ1Bhc3M6IEludmFsaWQgcHJvdG9jb2wg
IicgKyBwcm90b2NvbCArICciIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uJyk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZGVidWcoJ0ZhaWw6IEludmFsaWQgcHJvdG9jb2wgIicgKyBwcm90
b2NvbCArICciIGFsbG93ZWQuJyk7CisgICAgfTsKK30pOworCisvLyBUZXN0IHRoYXQgdGhlIEFQ
SSBjb3JyZWN0bHkgcGFyc2VzIHRoZSB1cmwgZm9yICclcycKK3ZhciBpbnZhbGlkX3VybHMgPSBb
IiIsICIlUyJdCitpbnZhbGlkX3VybHMuZm9yRWFjaChmdW5jdGlvbih1cmwpIHsKKyAgICB2YXIg
c3VjY2VlZGVkID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5y
ZWdpc3RlckNvbnRlbnRIYW5kbGVyKCdteXByb3RvY29sJywgdXJsLCAndGl0bGUnKTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NZTlRBWF9FUlInID09IGUubmFtZSkgeworICAgICAg
ICAgICAgc3VjY2VlZGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgaWYoc3Vj
Y2VlZGVkID09IHRydWUpIHsKKyAgICAgICAgZGVidWcoJ1Bhc3M6IEludmFsaWQgdXJsICInICsg
dXJsICsgJyIgdGhyZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uJyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZGVidWcoJ0ZhaWw6IEludmFsaWQgdXJsICInICsgdXJsICsgJyIgYWxsb3dlZC4nKTsK
KyAgICB9OworfSk7CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIGhhcyBkZWZhdWx0IG5vLW9wIGlt
cGxlbWVudGF0aW9uLgordmFyIHN1Y2NlZWRlZCA9IHRydWU7Cit0cnkgeworICAgIHdpbmRvdy5u
YXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcignbXlwcm90b2NvbCcsICIlcyIsICJ0aXRs
ZSIpOworfSBjYXRjaChlKSB7CisgICAgc3VjY2VlZGVkID0gZmFsc2U7Cit9OworCitpZihzdWNj
ZWVkZWQgPT0gdHJ1ZSkgeworICAgIGRlYnVnKCdQYXNzOiBWYWxpZCBjYWxsIHN1Y2NlZWRlZC4n
KTsKK30gZWxzZSB7CisgICAgZGVidWcoJ0ZhaWw6IEludmFsaWQgY2FsbCBkaWQgbm90IHN1Y2Nl
ZWQuJyk7Cit9OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitU
aGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IG5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxl
ciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbi4KKworUGFzczogd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFu
ZGxlciBpcyBkZWZpbmVkLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAiaHR0cCIgdGhyZXcgU0VD
VVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImh0dHBzIiB0aHJl
dyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCBwcm90b2NvbCAiZmlsZSIg
dGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgdXJsICIiIHRocmV3
IFNZTlRBWF9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCB1cmwgIiVTIiB0aHJldyBTWU5U
QVhfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IFZhbGlkIGNhbGwgc3VjY2VlZGVkLgorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFu
ZGxlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACis8aHRtbD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhh
bmRsZXIgdGhyb3dzIHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhbmQgaGFzIG5vLW9wIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24uPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gZGVidWcoc3RyKSB7CisgICAgdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpCisgICAgYy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShz
dHIgKyAnXG4nKSk7Cit9OworCisvLyBUZXN0IGF2YWlsYWJpbGl0eSBvZiB0aGUgcmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIgQVBJCitpZih3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKSB7CisgICAgZGVidWcoJ1Bhc3M6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIgaXMgZGVmaW5lZC4nKTsKK30gZWxzZSB7CisgICAgZGVidWcoJ0ZhaWw6IHdp
bmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgaXMgbm90IGRlZmluZWQuJyk7
Cit9OworCisvLyBUZXN0IHRoYXQgdGhlIEFQSSByZWdlY3RzIHNlY3VyZWQgcHJvdG9jb2xzLgor
dmFyIGludmFsaWRfcHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBzJywgJ2ZpbGUnXTsKK2ludmFs
aWRfcHJvdG9jb2xzLmZvckVhY2goZnVuY3Rpb24ocHJvdG9jb2wpIHsKKyAgICB2YXIgc3VjY2Vl
ZGVkID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5yZWdpc3Rl
clByb3RvY29sSGFuZGxlcihwcm90b2NvbCwgImludmFsaWQgcHJvdG9jb2wgJXMiLCAidGl0bGUi
KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NFQ1VSSVRZX0VSUicgPT0gZS5uYW1l
KSB7CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisK
KyAgICBpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBkZWJ1ZygnUGFzczogSW52YWxp
ZCBwcm90b2NvbCAiJyArIHByb3RvY29sICsgJyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlv
bi4nKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFpbDogSW52YWxpZCBwcm90b2Nv
bCAiJyArIHByb3RvY29sICsgJyIgYWxsb3dlZC4nKTsKKyAgICB9OworfSk7CisKKy8vIFRlc3Qg
dGhhdCB0aGUgQVBJIGNvcnJlY3RseSBwYXJzZXMgdGhlIHVybCBmb3IgJyVzJwordmFyIGludmFs
aWRfdXJscyA9IFsiIiwgIiVTIl07CitpbnZhbGlkX3VybHMuZm9yRWFjaChmdW5jdGlvbih1cmwp
IHsKKyAgICB2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisgICB0cnkgeworICAgICAgICB3aW5kb3cu
bmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCdteXByb3RvY29sJywgdXJsLCAndGl0
bGUnKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NZTlRBWF9FUlInID09IGUubmFt
ZSkgeworICAgICAgICAgICAgc3VjY2VlZGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9Owor
CisgICAgaWYoc3VjY2VlZGVkID09IHRydWUpIHsKKyAgICAgICAgZGVidWcoJ1Bhc3M6IEludmFs
aWQgdXJsICInICsgdXJsICsgJyIgdGhyZXcgU1lOVEFYX0VSUiBleGNlcHRpb24uJyk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZGVidWcoJ0ZhaWw6IEludmFsaWQgdXJsICInICsgdXJsICsgJyIg
YWxsb3dlZC4nKTsKKyAgICB9OworfSk7CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIGhhcyBkZWZh
dWx0IG5vLW9wIGltcGxlbWVudGF0aW9uLgordmFyIHN1Y2NlZWRlZCA9IHRydWU7Cit0cnkgewor
ICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCdteXByb3RvY29sJywg
IiVzIiwgInRpdGxlIik7Cit9IGNhdGNoKGUpIHsKKyAgc3VjY2VlZGVkID0gZmFsc2U7Cit9Owor
CitpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICBkZWJ1ZygnUGFzczogVmFsaWQgY2FsbCBzdWNj
ZWVkZWQuJyk7Cit9IGVsc2UgeworICBkZWJ1ZygnRmFpbDogSW52YWxpZCBjYWxsIGRpZCBub3Qg
c3VjY2VlZC4nKTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzMjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
Njg4LDYgKzE2ODgsOCBAQCB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGxhdGZvcm0gW3N0cmlu
CiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGx1Z2lucyBbcHJpbnRlZCBhYm92ZSBhcyB3aW5k
b3cuUGx1Z2luQXJyYXkucHJvdG90eXBlXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1
Y3QgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wcm9kdWN0U3ViIFtzdHJpbmdd
Cit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJDb250ZW50SGFuZGxlciBbZnVuY3Rp
b25dCit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgW2Z1
bmN0aW9uXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnVzZXJBZ2VudCBbc3RyaW5nXQogd2lu
ZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvciBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9y
bWF0aW9uLnZlbmRvclN1YiBbc3RyaW5nXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMzIxKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRm
b3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMg
T0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50
SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBP
SwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBPSwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2
aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwMzIxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTE2NTcsNiArMTY1Nyw4IEBAIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlv
bi5wbGF0Zm9ybSBbc3RyaW4KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wbHVnaW5zIFtwcmlu
dGVkIGFib3ZlIGFzIHdpbmRvdy5QbHVnaW5BcnJheS5wcm90b3R5cGVdCiB3aW5kb3cuY2xpZW50
SW5mb3JtYXRpb24ucHJvZHVjdCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnBy
b2R1Y3RTdWIgW3N0cmluZ10KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlckNvbnRl
bnRIYW5kbGVyIFtmdW5jdGlvbl0KK3dpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5yZWdpc3RlclBy
b3RvY29sSGFuZGxlciBbZnVuY3Rpb25dCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udXNlckFn
ZW50IFtzdHJpbmddCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yIFtzdHJpbmddCiB3
aW5kb3cuY2xpZW50SW5mb3JtYXRpb24udmVuZG9yU3ViIFtzdHJpbmddCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8t
Y3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDUwMzIxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQv
ZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMsNiArMTMsOCBAQCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgT0sKIG5hdmln
YXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBpcyBPSwogbmF2aWdhdG9yLnBy
b2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCkgaXMgT0sK
K25hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIGlzIE9LCiBuYXZpZ2F0b3IudXNl
ckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3Vi
IGlzIE9LCkBAIC0yOSw2ICszMSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdh
dG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJv
ZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSwor
bmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2Vy
QWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIg
aXMgT0sK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42246</attachid>
            <date>2009-10-30 19:18:22 -0700</date>
            <delta_ts>2009-11-01 02:27:11 -0800</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handlers.txt</filename>
            <type>text/plain</type>
            <size>24228</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDktMTAtMzAgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRoZSBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorICAgICAgICAKKyAgICAgICAgV2UgZG8gaG93ZXZlciBmb2xsb3cgdGhlIHNwZWNpZmljYXRp
b24gaW4gaW5zdXJpbmcgdGhhdCB0aGUgcmVzZXJ2ZWQKKyAgICAgICAgc2NoZW1lcyBhbmQgbWlt
ZVR5cGVzIGFyZSBub3QgcGFzc2VkIHRvIHRoZSBVQSBhcyBjdXN0b20gaGFuZGxlcgorICAgICAg
ICByZWdpc3RyYXRpb24gdGVzdHMuICBXZSBhbHNvIGluc3VyZSB0aGF0IHRoZSAiJXMiIHRva2Vu
IGlzIHByZXNlbnQgYXMKKyAgICAgICAgcmVxdWlyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uCisK
KyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Igd2luZG93LmNsaWVudEluZm9y
bWF0aW9uIGFuZCBuYXZpZ2F0b3IKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICBUZXN0czog
ZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCisKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJDb250ZW50SGFuZGxlcik6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlm
eUN1c3RvbUhhbmRsZXJVUkwpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UHJvdG9jb2xIYW5k
bGVyU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UHJvdG9jb2xIYW5kbGVyTWltZVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9y
LmlkbDoKKwogMjAwOS0xMC0zMCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lv
biA1MDM0NykKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDIsNiArMzAyLDE2IEBAIGJvb2wgQ2hyb21lOjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkK
ICAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKIH0KIAor
dm9pZCBDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHRpdGxlKSAKK3sgICAgICAgCisgICAgbV9jbGllbnQtPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
KHNjaGVtZSwgYmFzZVVSTCwgdXJsLCB0aXRsZSk7Cit9CisKK3ZvaWQgQ2hyb21lOjpyZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgbV9j
bGllbnQtPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobWltZVR5cGUsICBiYXNlVVJMLCB1cmwsICB0
aXRsZSk7Cit9ICAgIAorCiBJbnRSZWN0IENocm9tZTo6d2luZG93UmVzaXplclJlY3QoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudC0+d2luZG93UmVzaXplclJlY3QoKTsKSW5kZXg6IFdl
YkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJ
KHJldmlzaW9uIDUwMzQ3KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNiArMTE0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNl
dFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBzaG91
bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAKKyAgICAgICAgdm9pZCByZWdpc3RlclByb3RvY29s
SGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIHZvaWQgcmVnaXN0
ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKwogICAgICAg
ICBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZp
ZXJGbGFncyk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1MDM0NykKKysrIFdlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVw
dEphdmFTY3JpcHQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0YWJzVG9MaW5rcygpIGNv
bnN0ID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsg
fQorCiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0ID0g
MDsKIAogICAgICAgICAvLyBNZXRob2RzIHVzZWQgYnkgSG9zdFdpbmRvdy4KSW5kZXg6IFdlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuY3BwCShyZXZpc2lvbiA1MDM0NykKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCwxMCArMjQsMTIgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIK
IAogI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkt1
cmwuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk1pbWVUeXBlQXJyYXkuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNjksNCArMTcxLDEwMCBAQCB2b2lkIE5hdmlnYXRvcjo6
Z2V0U3RvcmFnZVVwZGF0ZXMoKQogfQogI2VuZGlmCiAKK3N0YXRpYyBib29sIHZlcmlmeUN1c3Rv
bUhhbmRsZXJVUkwoY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhlIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhh
dCBpdCBpcyBhIFNZTlRBWF9FUlIgaWYgdGhlIHRoZSAiJXMiIHRva2VuCisgICAgLy8gaXMgbm90
IHByZXNlbnQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgdG9rZW5bXSA9ICIlcyI7CisgICAgaW50
IGluZGV4ID0gdXJsLmZpbmQodG9rZW4pOworICAgIGlmICgtMSA9PSBpbmRleCkgeworICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBJdCBpcyBhbHNvIGEgU1lOVEFYX0VSUiBpZiB0aGUgY3VzdG9tIGhhbmRsZXIgVVJMLCBhcyBj
cmVhdGVkIGJ5IHJlbW92aW5nCisgICAgLy8gdGhlICIlcyIgdG9rZW4gYW5kIHByZXBlbmRpbmcg
dGhlIGJhc2UgdXJsLCBkb2VzIG5vdCByZXNvbHZlLgorICAgIFN0cmluZyBuZXdVUkwgPSB1cmw7
CisgICAgbmV3VVJMLnJlbW92ZShpbmRleCwgc2l6ZW9mKHRva2VuKSAvIHNpemVvZih0b2tlblsw
XSkpOworCisgICAgS1VSTCBiYXNlKFBhcnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgS1VS
TCBrdXJsKGJhc2UsIG5ld1VSTCk7CisKKyAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwu
aXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQ
cm90b2NvbEhhbmRsZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIC8vIEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZvciB0aGVzZSBzY2hlbWVzIHRv
IGJlIGhhbmRsZWQgYnkgYSBjdXN0b20gaGFuZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2Uoc2NoZW1lLCAiaHR0cCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHNjaGVtZSwgImh0dHBzIikg
fHwgZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiZmlsZSIpKSB7CisgICAgICAgIGVjID0gU0VD
VVJJVFlfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIE5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3Ry
aW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShz
Y2hlbWUsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAg
ICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBiYXNl
VVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKS5iYXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVy
aWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5yZWdpc3RlclByb3RvY29sSGFuZGxl
cihzY2hlbWUsIGJhc2VVUkwsIHVybCwgbV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyh0aXRsZSkpOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJN
aW1lVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8v
IEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZvciB0aGVzZSBtaW1lIHR5cGVzIHRvIGJlIGFzc2lnbmVk
IHRvIGEgY3VzdG9tCisgICAgLy8gaGFuZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dHlwZSwgInRleHQvaHRtbCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJ0ZXh0L2NzcyIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSkg
eworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVu
dEhhbmRsZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdmVyaWZ5UHJv
dG9jb2xIYW5kbGVyTWltZVR5cGUobWltZVR5cGUsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFN0cmluZyBiYXNlVVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKS5iYXNlQXNT
dHJpbmcoKTsKKworICAgIGlmICghdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmws
IGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgp
LT5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKG1pbWVUeXBlLCBiYXNlVVJMLCB1cmwsIG1fZnJhbWUt
PmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gNTAzNDcpCisrKyBXZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBsdWdpbkFycmF5OwogICAgIGNsYXNzIFN0cmluZzsK
IAorICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKICAgICBjbGFzcyBOYXZpZ2F0b3Ig
OiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9yPiB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXZpZ2F0b3I+IGNyZWF0ZShG
cmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3IoZnJhbWUpKTsgfQpA
QCAtNTksNiArNjEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJlbGlucXVp
c2hlcyB0aGUgc3RvcmFnZSBsb2NrLCBpZiBvbmUgZXhpc3RzLgogICAgICAgICB2b2lkIGdldFN0
b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYKKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIHZvaWQgcmVn
aXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgTmF2aWdhdG9yKEZyYW1lKik7CkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkocmV2
aXNpb24gNTAzNDcpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNiArNDYsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVf
RE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQogICAgICAgICB2b2lkIGdldFN0b3Jh
Z2VVcGRhdGVzKCk7CiAjZW5kaWYKKworICAgICAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyKGluIERPTVN0cmluZyBzY2hlbWUsIGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0
aXRsZSkKKyAgICAgICAgICAgIHJhaXNlcyhEb21FeGNlcHRpb24pOworICAgICAgICB2b2lkIHJl
Z2lzdGVyQ29udGVudEhhbmRsZXIoaW4gRE9NU3RyaW5nIG1pbWVUeXBlLCBpbiBET01TdHJpbmcg
dXJsLCBpbiBET01TdHJpbmcgdGl0bGUpCisgICAgICAgICAgICByYWlzZXMoRG9tRXhjZXB0aW9u
KTsKICAgICB9OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDM3NikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDA5LTEwLTMwICBC
cmFkbGV5IEdyZWVuICA8YnJnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGluZyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Ig
aW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3Rv
Y29sSGFuZGxlciBhbmQKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRI
YW5kbGVyLgorICAgICAgICAKKyAgICAgICAgVGhlcmUgaXMgYSBkZWZhdWx0IGltcGxpbWVudGF0
aW9uIGZvciB0aGVzZSBBUElzLCBoZW5jZSBhbGwgcGxhdGZvcm1zCisgICAgICAgIHdpdGggdGhl
IG5hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3QgYW5kCisgICAgICAgIHdpbmRvdy1w
cm9wZXJ0aWVzLWV4cGVjdGVkIHRlc3RzIG5lZWRlZCB0byBiZSB1cGRhdGVkLiAgV2hpbGUKKyAg
ICAgICAgaXNvbGF0ZWRXb3JsZHMgaGFzIGEgd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQgdGVz
dCwgaXQgaGFzIG5vIHdpbmRvdworICAgICAgICBvYmplY3QgYW5kIGhlbmNlIGRvZXMgbm90IG5l
ZWQgdG8gYmUgdXBkYWV0ZC4KKworICAgICAgICBXZSBhZGQgdHdvIGZhc3QvZG9tIHRlc3RzIHRv
IGluc3VyZSB0aGF0IHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhcmUKKyAgICAgICAgdGhyb3duIHdo
ZW4gYmFkIHN5bnRheCBvciBzZWN1cml0eSB2aW9sYXRpb25zIGFyZSBtYWRlIGJ5IGNhbGxpbmcg
dGhlCisgICAgICAgIG1ldGhvZHMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci1k
ZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vcmVnaXN0ZXJD
b250ZW50SGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jl
Z2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2Rv
bS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorCiAyMDA5LTEwLTMw
ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0
YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDUwMzQ3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsOCBAQCBuYXZpZ2F0
b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJv
ZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKCkgdGhyZXcgZXJyIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0
aW9uIDEyCituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSB0aHJldyBlcnIgRXJy
b3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMg
T0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAg
LTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lu
cyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlz
IE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3Iu
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBP
SwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5v
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDUwMzQ3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2
aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUz
LDE0IEBAIGZ1bmN0aW9uIGNoZWNrX25hdmlnYXRvcigpIHsKICAgdmFyIHN0cmluZ3MgPSBbIF07
CiAgIGZvciAocCBpbiBvbGRfbmF2KSB7CiAgICAgaWYgKHR5cGVvZiBvbGRfbmF2W3BdID09ICdm
dW5jdGlvbicpIHsKLSAgICAgIHZhciB2ID0gb2xkX25hdltwXSgpOwotICAgICAgLy8gbm8gY3Jh
c2gsIGl0IGlzIG9rCi0gICAgICBzdHJpbmdzLnB1c2goIm5hdmlnYXRvci4iK3ArIigpIGlzIE9L
Iik7CisgICAgICB0cnkgeworICAgICAgICB2YXIgdiA9IG9sZF9uYXZbcF0oKTsKKyAgICAgICAg
Ly8gbm8gY3Jhc2gsIGl0IGlzIG9rCisgICAgICAgIHN0cmluZ3MucHVzaCgibmF2aWdhdG9yLiIr
cCsiKCkgaXMgT0siKTsKKyAgICAgIH0gY2F0Y2goZXJyKSB7CisgICAgICAgIC8vIG5hdmlnYXRv
ci5yZWdpc3RlclhYWCB3aWxsIHRocm93IG9uIGludmFsaWQgaW5wdXQuCisgICAgICAgIHN0cmlu
Z3MucHVzaCgibmF2aWdhdG9yLiIrcCsiKCkgdGhyZXcgZXJyICIrZXJyKTsKKyAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgdmFyIHYgPSBvbGRfbmF2W3BdOwogICAgICAgLy8gbm8gY3Jhc2gs
IGl0IGlzIG9rLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFu
ZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVn
aXN0ZXJDb250ZW50SGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0
b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFu
ZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKworUGFzczogd2luZG93Lm5hdmln
YXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHBy
b3RvY29sICJ0ZXh0L2h0bWwiIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJ
bnZhbGlkIHByb3RvY29sICJ0ZXh0L2NzcyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4K
K1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIgdGhyZXcg
U0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgdXJsICIiIHRocmV3IFNZTlRB
WF9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCB1cmwgIiVTIiB0aHJldyBTWU5UQVhfRVJS
IGV4Y2VwdGlvbi4KK1Bhc3M6IFZhbGlkIGNhbGwgc3VjY2VlZGVkLgorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACis8aHRtbD4KKzxib2R5PgorPHA+VGhpcyB0
ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciB0aHJv
d3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbi48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworIH0KKyAKK2Z1bmN0aW9uIGRlYnVnKHN0cikgeworICAgIHZhciBjID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICBjLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHN0ciArICdcbicpKTsKK307CisKKy8vIFRlc3QgYXZhaWxhYmlsaXR5
IG9mIHRoZSByZWdpc3RlckNvbnRlbnRIYW5kbGVyIEFQSQoraWYod2luZG93Lm5hdmlnYXRvci5y
ZWdpc3RlckNvbnRlbnRIYW5kbGVyKSB7CisgICAgZGVidWcoJ1Bhc3M6IHdpbmRvdy5uYXZpZ2F0
b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciBpcyBkZWZpbmVkLicpCit9IGVsc2UgeworICAgIGRl
YnVnKCdGYWlsOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIgaXMgbm90
IGRlZmluZWQuJykKK307CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIHJlZ2VjdHMgc2VjdXJlZCBw
cm90b2NvbHMuCit2YXIgaW52YWxpZF9wcm90b2NvbHMgPSBbJ3RleHQvaHRtbCcsICd0ZXh0L2Nz
cycsICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnXTsKK2ludmFsaWRfcHJvdG9jb2xzLmZvckVh
Y2goZnVuY3Rpb24ocHJvdG9jb2wpIHsKKyAgICB2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisgICAg
dHJ5IHsKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKHBy
b3RvY29sLCAiaW52YWxpZCBwcm90b2NvbCAlcyIsICJ0aXRsZSIpOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgICBpZignU0VDVVJJVFlfRVJSJyA9PSBlLm5hbWUpIHsKKyAgICAgICAgICAgIHN1
Y2NlZWRlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKworICAgIGlmKHN1Y2NlZWRlZCA9
PSB0cnVlKSB7CisgICAgICAgIGRlYnVnKCdQYXNzOiBJbnZhbGlkIHByb3RvY29sICInICsgcHJv
dG9jb2wgKyAnIiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLicpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIHByb3RvY29sICInICsgcHJvdG9jb2wgKyAn
IiBhbGxvd2VkLicpOworICAgIH07Cit9KTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkgY29ycmVj
dGx5IHBhcnNlcyB0aGUgdXJsIGZvciAnJXMnCit2YXIgaW52YWxpZF91cmxzID0gWyIiLCAiJVMi
XQoraW52YWxpZF91cmxzLmZvckVhY2goZnVuY3Rpb24odXJsKSB7CisgICAgdmFyIHN1Y2NlZWRl
ZCA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJD
b250ZW50SGFuZGxlcignbXlwcm90b2NvbCcsIHVybCwgJ3RpdGxlJyk7CisgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIGlmKCdTWU5UQVhfRVJSJyA9PSBlLm5hbWUpIHsKKyAgICAgICAgICAgIHN1
Y2NlZWRlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKworICAgIGlmKHN1Y2NlZWRlZCA9
PSB0cnVlKSB7CisgICAgICAgIGRlYnVnKCdQYXNzOiBJbnZhbGlkIHVybCAiJyArIHVybCArICci
IHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9uLicpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRl
YnVnKCdGYWlsOiBJbnZhbGlkIHVybCAiJyArIHVybCArICciIGFsbG93ZWQuJyk7CisgICAgfTsK
K30pOworCisvLyBUZXN0IHRoYXQgdGhlIEFQSSBoYXMgZGVmYXVsdCBuby1vcCBpbXBsZW1lbnRh
dGlvbi4KK3ZhciBzdWNjZWVkZWQgPSB0cnVlOwordHJ5IHsKKyAgICB3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoJ215cHJvdG9jb2wnLCAiJXMiLCAidGl0bGUiKTsKK30g
Y2F0Y2goZSkgeworICAgIHN1Y2NlZWRlZCA9IGZhbHNlOworfTsKKworaWYoc3VjY2VlZGVkID09
IHRydWUpIHsKKyAgICBkZWJ1ZygnUGFzczogVmFsaWQgY2FsbCBzdWNjZWVkZWQuJyk7Cit9IGVs
c2UgeworICAgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIGNhbGwgZGlkIG5vdCBzdWNjZWVkLicpOwor
fTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0
IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgdGhyb3dz
IHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhbmQgaGFzIG5vLW9wIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24uCisKK1Bhc3M6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgaXMg
ZGVmaW5lZC4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImh0dHAiIHRocmV3IFNFQ1VSSVRZX0VS
UiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJodHRwcyIgdGhyZXcgU0VDVVJJ
VFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImZpbGUiIHRocmV3IFNF
Q1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHVybCAiIiB0aHJldyBTWU5UQVhf
RVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgdXJsICIlUyIgdGhyZXcgU1lOVEFYX0VSUiBl
eGNlcHRpb24uCitQYXNzOiBWYWxpZCBjYWxsIHN1Y2NlZWRlZC4KKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMg
dGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIHRo
cm93cyB0aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYW5kIGhhcyBuby1vcCBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uLjwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgfQorIAorZnVuY3Rpb24gZGVidWcoc3RyKSB7CisgICAgdmFyIGMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpCisgICAgYy5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKSk7Cit9OworCisvLyBUZXN0IGF2YWlsYWJpbGl0
eSBvZiB0aGUgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgQVBJCitpZih3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKSB7CisgICAgZGVidWcoJ1Bhc3M6IHdpbmRvdy5uYXZp
Z2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgaXMgZGVmaW5lZC4nKTsKK30gZWxzZSB7Cisg
ICAgZGVidWcoJ0ZhaWw6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIg
aXMgbm90IGRlZmluZWQuJyk7Cit9OworCisvLyBUZXN0IHRoYXQgdGhlIEFQSSByZWdlY3RzIHNl
Y3VyZWQgcHJvdG9jb2xzLgordmFyIGludmFsaWRfcHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBz
JywgJ2ZpbGUnXTsKK2ludmFsaWRfcHJvdG9jb2xzLmZvckVhY2goZnVuY3Rpb24ocHJvdG9jb2wp
IHsKKyAgICB2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgd2luZG93
Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcihwcm90b2NvbCwgImludmFsaWQgcHJv
dG9jb2wgJXMiLCAidGl0bGUiKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NFQ1VS
SVRZX0VSUicgPT0gZS5uYW1lKSB7CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAg
ICAgICB9OworICAgIH07CisKKyAgICBpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBk
ZWJ1ZygnUGFzczogSW52YWxpZCBwcm90b2NvbCAiJyArIHByb3RvY29sICsgJyIgdGhyZXcgU0VD
VVJJVFlfRVJSIGV4Y2VwdGlvbi4nKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFp
bDogSW52YWxpZCBwcm90b2NvbCAiJyArIHByb3RvY29sICsgJyIgYWxsb3dlZC4nKTsKKyAgICB9
OworfSk7CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIGNvcnJlY3RseSBwYXJzZXMgdGhlIHVybCBm
b3IgJyVzJwordmFyIGludmFsaWRfdXJscyA9IFsiIiwgIiVTIl07CitpbnZhbGlkX3VybHMuZm9y
RWFjaChmdW5jdGlvbih1cmwpIHsKKyAgICB2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisgICB0cnkg
eworICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCdteXBy
b3RvY29sJywgdXJsLCAndGl0bGUnKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NZ
TlRBWF9FUlInID09IGUubmFtZSkgeworICAgICAgICAgICAgc3VjY2VlZGVkID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICB9OworCisgICAgaWYoc3VjY2VlZGVkID09IHRydWUpIHsKKyAgICAgICAg
ZGVidWcoJ1Bhc3M6IEludmFsaWQgdXJsICInICsgdXJsICsgJyIgdGhyZXcgU1lOVEFYX0VSUiBl
eGNlcHRpb24uJyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoJ0ZhaWw6IEludmFsaWQg
dXJsICInICsgdXJsICsgJyIgYWxsb3dlZC4nKTsKKyAgICB9OworfSk7CisKKy8vIFRlc3QgdGhh
dCB0aGUgQVBJIGhhcyBkZWZhdWx0IG5vLW9wIGltcGxlbWVudGF0aW9uLgordmFyIHN1Y2NlZWRl
ZCA9IHRydWU7Cit0cnkgeworICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyKCdteXByb3RvY29sJywgIiVzIiwgInRpdGxlIik7Cit9IGNhdGNoKGUpIHsKKyAgc3VjY2Vl
ZGVkID0gZmFsc2U7Cit9OworCitpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICBkZWJ1ZygnUGFz
czogVmFsaWQgY2FsbCBzdWNjZWVkZWQuJyk7Cit9IGVsc2UgeworICBkZWJ1ZygnRmFpbDogSW52
YWxpZCBjYWxsIGRpZCBub3Qgc3VjY2VlZC4nKTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzNDcpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNjg4LDYgKzE2ODgsOCBAQCB3aW5kb3cuY2xpZW50SW5mb3JtYXRp
b24ucGxhdGZvcm0gW3N0cmluCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGx1Z2lucyBbcHJp
bnRlZCBhYm92ZSBhcyB3aW5kb3cuUGx1Z2luQXJyYXkucHJvdG90eXBlXQogd2luZG93LmNsaWVu
dEluZm9ybWF0aW9uLnByb2R1Y3QgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5w
cm9kdWN0U3ViIFtzdHJpbmddCit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJDb250
ZW50SGFuZGxlciBbZnVuY3Rpb25dCit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIgW2Z1bmN0aW9uXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnVzZXJB
Z2VudCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvciBbc3RyaW5nXQog
d2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvclN1YiBbc3RyaW5nXQpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
ZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUw
MzQ3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw2IEBA
IG5hdmlnYXRvci5hcHBDb2RlTmFtZSBpcyBPSwogbmF2aWdhdG9yLmFwcE5hbWUgaXMgT0sKIG5h
dmlnYXRvci5hcHBWZXJzaW9uIGlzIE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxlZCBpcyBPSwot
bmF2aWdhdG9yLmdlb2xvY2F0aW9uIGlzIE9LCiBuYXZpZ2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMo
KSBpcyBPSwogbmF2aWdhdG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFn
ZSBpcyBPSwpAQCAtMTQsNiArMTMsOCBAQCBuYXZpZ2F0b3IucGxhdGZvcm0gaXMgT0sKIG5hdmln
YXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdCBpcyBPSwogbmF2aWdhdG9yLnBy
b2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKCkgdGhyZXcg
ZXJyIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyCituYXZpZ2F0b3IucmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIoKSB0aHJldyBlcnIgRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNl
cHRpb24gMTIKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMg
T0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAgLTIxLDcgKzIyLDYgQEAgbmF2aWdhdG9y
LmFwcENvZGVOYW1lIGlzIE9LCiBuYXZpZ2F0b3IuYXBwTmFtZSBpcyBPSwogbmF2aWdhdG9yLmFw
cFZlcnNpb24gaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVkIGlzIE9LCi1uYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24gaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCiBu
YXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxhbmd1YWdlIGlzIE9LCkBA
IC0zMSw2ICszMSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9yLnBsdWdp
bnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVjdFN1YiBp
cyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMg
T0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3Bl
cnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA1MDM0NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjU3LDYgKzE2
NTcsOCBAQCB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGxhdGZvcm0gW3N0cmluCiB3aW5kb3cu
Y2xpZW50SW5mb3JtYXRpb24ucGx1Z2lucyBbcHJpbnRlZCBhYm92ZSBhcyB3aW5kb3cuUGx1Z2lu
QXJyYXkucHJvdG90eXBlXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1Y3QgW3N0cmlu
Z10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wcm9kdWN0U3ViIFtzdHJpbmddCit3aW5kb3cu
Y2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJDb250ZW50SGFuZGxlciBbZnVuY3Rpb25dCit3aW5k
b3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgW2Z1bmN0aW9uXQog
d2luZG93LmNsaWVudEluZm9ybWF0aW9uLnVzZXJBZ2VudCBbc3RyaW5nXQogd2luZG93LmNsaWVu
dEluZm9ybWF0aW9uLnZlbmRvciBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZl
bmRvclN1YiBbc3RyaW5nXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQv
ZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDM0NykKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hl
ZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYgKzEzLDggQEAg
bmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBPSwogbmF2aWdh
dG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0b3Iu
cmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIHRocmV3IGVyciBFcnJvcjogU1lOVEFYX0VSUjogRE9N
IEV4Y2VwdGlvbiAxMgorbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgdGhyZXcg
ZXJyIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyCiBuYXZpZ2F0b3IudXNlckFn
ZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlz
IE9LCkBAIC0yOSw2ICszMSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdhdG9y
LnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJvZHVj
dFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSworbmF2
aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2VyQWdl
bnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMg
T0sK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42270</attachid>
            <date>2009-11-01 02:27:11 -0800</date>
            <delta_ts>2009-11-03 10:22:32 -0800</delta_ts>
            <desc>Proposed implementation of window.navigator.registerProtocolHandler and registerContentHandler.</desc>
            <filename>register-custom-handlers.txt</filename>
            <type>text/plain</type>
            <size>23724</size>
            <attacher name="B. Green">brg</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDM3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDktMTAtMzAgIEJyYWRsZXkgR3JlZW4gIDxicmdAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGluIHdlYmtp
dCwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8yOTY1MQorCisgICAgICAgIEFs
c28gaW1wbGVtZW50ZWQgaXRzIHNpc3RlciBBUEkgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNv
bnRlbnRIYW5kbGVyLgorCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGFzIGRlc2NyaWJlZCBp
biB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB3aGljaCBjYW4gYmUKKyAgICAgICAgZm91bmQgaGVy
ZSwKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2Rv
bS1uYXZpZ2F0b3ItcmVnaXN0ZXJwcm90b2NvbGhhbmRsZXIKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2RvbS1uYXZpZ2F0b3ItcmVnaXN0ZXJjb250
ZW50aGFuZGxlcgorCisgICAgICAgIEFzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnQsIHRoZSBi
ZWhhdmlvciBvZiB0aGUgYnJvd3NlciBpcyBkZXRlcm1pbmVkCisgICAgICAgIGJ5IHRoZSBjdXJy
ZW50IHJlZ2lzdGVyZWQgaGFuZGxlci4gIFRoZSBzdGF0ZSBvZiBhIHJlZ2lzdGVyZWQgaGFuZGxl
cgorICAgICAgICBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLCB3aXRoIHRoZSB1c2VyIGNsZWFyaW5n
IGEgcmVnaXN0ZXJlZCBoYW5kbGVyLAorICAgICAgICByZWdpc3RlcmluZyBhIGRpZmZlcmVudCBw
YWdlIGFzIGhhbmRsZXIsIG9yIGRlZmVycmluZyB0aGUgaGFuZGVyIHRvIHRoZQorICAgICAgICBP
Uy4gIElmIHdlYmtpdCB3YXMgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgcmVn
aXN0ZXJlZAorICAgICAgICBoYW5kbGVycywgaXQgd291bGQgbmVlZCBtb3JlIEFQSXMgYW5kIGNv
bXBsZXhpdHkgdG8ga2VlcCBpbiBzeW5jIHdpdGgKKyAgICAgICAgdXNlciBhY3Rpb25zIHJlcG9y
dGVkIHRvIHdlYmtpdCBmcm9tIHRoZSBVQS4gIEZvciBzaW1wbGljaXR5LCB0aGUgc3RhdGUKKyAg
ICAgICAgb2YgcHJvdG9jb2wgaGFuZGxlcnMgc2hvdWxkIGJlIGtlcHQgaXNvbGF0ZWQgZnJvbSB3
ZWJraXQgYW5kIHdlYmtpdCBvbmx5CisgICAgICAgIG5vdGlmaWVzIHRoZSBVQSB0aGF0IGEgcGFn
ZSBoYXMgbWFkZSB0aGUgY2FsbC4gIFRoZSBVQSBpcyB0aGVuCisgICAgICAgIHJlc3BvbnNpYmxl
IGZvciBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGNhbGwg
YW5kCisgICAgICAgIHRoZSByZWRpcmVjdHMgd2hpY2ggcmVzdWx0IGZyb20gcmVnaXN0cmF0aW9u
LgorICAgICAgICAKKyAgICAgICAgV2UgZG8gaG93ZXZlciBmb2xsb3cgdGhlIHNwZWNpZmljYXRp
b24gaW4gaW5zdXJpbmcgdGhhdCB0aGUgcmVzZXJ2ZWQKKyAgICAgICAgc2NoZW1lcyBhbmQgbWlt
ZVR5cGVzIGFyZSBub3QgcGFzc2VkIHRvIHRoZSBVQSBhcyBjdXN0b20gaGFuZGxlcgorICAgICAg
ICByZWdpc3RyYXRpb24gdGVzdHMuICBXZSBhbHNvIGluc3VyZSB0aGF0IHRoZSAiJXMiIHRva2Vu
IGlzIHByZXNlbnQgYXMKKyAgICAgICAgcmVxdWlyZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uCisK
KyAgICAgICAgVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Igd2luZG93LmNsaWVudEluZm9y
bWF0aW9uIGFuZCBuYXZpZ2F0b3IKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICBUZXN0czog
ZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCisKKyAgICAgICAgKiBwYWdlL0Nocm9t
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6cmVnaXN0ZXJDb250ZW50SGFuZGxlcik6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnJlZ2lzdGVyQ29udGVudEhhbmRsZXIp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlm
eUN1c3RvbUhhbmRsZXJVUkwpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UHJvdG9jb2xIYW5k
bGVyU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UHJvdG9jb2xIYW5kbGVyTWltZVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpyZWdpc3RlckNvbnRlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9y
LmlkbDoKKwogMjAwOS0xMC0zMCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lv
biA1MDM0NykKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDIsNiArMzAyLDE2IEBAIGJvb2wgQ2hyb21lOjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkK
ICAgICByZXR1cm4gbV9jbGllbnQtPnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKIH0KIAor
dm9pZCBDaHJvbWU6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHRpdGxlKSAKK3sgICAgICAgCisgICAgbV9jbGllbnQtPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
KHNjaGVtZSwgYmFzZVVSTCwgdXJsLCB0aXRsZSk7Cit9CisKK3ZvaWQgQ2hyb21lOjpyZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit7CisgICAgbV9j
bGllbnQtPnJlZ2lzdGVyQ29udGVudEhhbmRsZXIobWltZVR5cGUsICBiYXNlVVJMLCB1cmwsICB0
aXRsZSk7Cit9ICAgIAorCiBJbnRSZWN0IENocm9tZTo6d2luZG93UmVzaXplclJlY3QoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudC0+d2luZG93UmVzaXplclJlY3QoKTsKSW5kZXg6IFdl
YkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJ
KHJldmlzaW9uIDUwMzQ3KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNiArMTE0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNl
dFN0YXR1c2JhclRleHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBzaG91
bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiAKKyAgICAgICAgdm9pZCByZWdpc3RlclByb3RvY29s
SGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgICAgIHZvaWQgcmVnaXN0
ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKwogICAgICAg
ICBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZp
ZXJGbGFncyk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA1MDM0NykKKysrIFdlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVw
dEphdmFTY3JpcHQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB0YWJzVG9MaW5rcygpIGNv
bnN0ID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbnRlbnRIYW5kbGVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsg
fQorCiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0ID0g
MDsKIAogICAgICAgICAvLyBNZXRob2RzIHVzZWQgYnkgSG9zdFdpbmRvdy4KSW5kZXg6IFdlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuY3BwCShyZXZpc2lvbiA1MDM0NykKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCwxMCArMjQsMTIgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIK
IAogI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkt1
cmwuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk1pbWVUeXBlQXJyYXkuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNjksNCArMTcxLDEwMCBAQCB2b2lkIE5hdmlnYXRvcjo6
Z2V0U3RvcmFnZVVwZGF0ZXMoKQogfQogI2VuZGlmCiAKK3N0YXRpYyBib29sIHZlcmlmeUN1c3Rv
bUhhbmRsZXJVUkwoY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhlIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhh
dCBpdCBpcyBhIFNZTlRBWF9FUlIgaWYgdGhlIHRoZSAiJXMiIHRva2VuCisgICAgLy8gaXMgbm90
IHByZXNlbnQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgdG9rZW5bXSA9ICIlcyI7CisgICAgaW50
IGluZGV4ID0gdXJsLmZpbmQodG9rZW4pOworICAgIGlmICgtMSA9PSBpbmRleCkgeworICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBJdCBpcyBhbHNvIGEgU1lOVEFYX0VSUiBpZiB0aGUgY3VzdG9tIGhhbmRsZXIgVVJMLCBhcyBj
cmVhdGVkIGJ5IHJlbW92aW5nCisgICAgLy8gdGhlICIlcyIgdG9rZW4gYW5kIHByZXBlbmRpbmcg
dGhlIGJhc2UgdXJsLCBkb2VzIG5vdCByZXNvbHZlLgorICAgIFN0cmluZyBuZXdVUkwgPSB1cmw7
CisgICAgbmV3VVJMLnJlbW92ZShpbmRleCwgc2l6ZW9mKHRva2VuKSAvIHNpemVvZih0b2tlblsw
XSkpOworCisgICAgS1VSTCBiYXNlKFBhcnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgS1VS
TCBrdXJsKGJhc2UsIG5ld1VSTCk7CisKKyAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwu
aXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQ
cm90b2NvbEhhbmRsZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIC8vIEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZvciB0aGVzZSBzY2hlbWVzIHRv
IGJlIGhhbmRsZWQgYnkgYSBjdXN0b20gaGFuZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2Uoc2NoZW1lLCAiaHR0cCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHNjaGVtZSwgImh0dHBzIikg
fHwgZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiZmlsZSIpKSB7CisgICAgICAgIGVjID0gU0VD
VVJJVFlfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIE5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3Ry
aW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShz
Y2hlbWUsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAg
ICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBiYXNl
VVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKS5iYXNlQXNTdHJpbmcoKTsKKworICAgIGlmICghdmVy
aWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmwsIGVjKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5yZWdpc3RlclByb3RvY29sSGFuZGxl
cihzY2hlbWUsIGJhc2VVUkwsIHVybCwgbV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyh0aXRsZSkpOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJN
aW1lVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8v
IEl0IGlzIGEgU0VDVVJJVFlfRVJSIGZvciB0aGVzZSBtaW1lIHR5cGVzIHRvIGJlIGFzc2lnbmVk
IHRvIGEgY3VzdG9tCisgICAgLy8gaGFuZGxlci4KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dHlwZSwgInRleHQvaHRtbCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJ0ZXh0L2NzcyIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSkg
eworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOYXZpZ2F0b3I6OnJlZ2lzdGVyQ29udGVu
dEhhbmRsZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghdmVyaWZ5UHJv
dG9jb2xIYW5kbGVyTWltZVR5cGUobWltZVR5cGUsIGVjKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFN0cmluZyBiYXNlVVJMID0gZG9jdW1lbnQtPmJhc2VVUkwoKS5iYXNlQXNT
dHJpbmcoKTsKKworICAgIGlmICghdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmws
IGVjKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgp
LT5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKG1pbWVUeXBlLCBiYXNlVVJMLCB1cmwsIG1fZnJhbWUt
PmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gNTAzNDcpCisrKyBXZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBsdWdpbkFycmF5OwogICAgIGNsYXNzIFN0cmluZzsK
IAorICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKICAgICBjbGFzcyBOYXZpZ2F0b3Ig
OiBwdWJsaWMgTmF2aWdhdG9yQmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8TmF2aWdhdG9yPiB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOYXZpZ2F0b3I+IGNyZWF0ZShG
cmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXZpZ2F0b3IoZnJhbWUpKTsgfQpA
QCAtNTksNiArNjEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJlbGlucXVp
c2hlcyB0aGUgc3RvcmFnZSBsb2NrLCBpZiBvbmUgZXhpc3RzLgogICAgICAgICB2b2lkIGdldFN0
b3JhZ2VVcGRhdGVzKCk7CiAjZW5kaWYKKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIHZvaWQgcmVn
aXN0ZXJDb250ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgTmF2aWdhdG9yKEZyYW1lKik7CkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkocmV2
aXNpb24gNTAzNDcpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNiArNDYsMTEgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVf
RE9NX1NUT1JBR0UpICYmIEVOQUJMRV9ET01fU1RPUkFHRQogICAgICAgICB2b2lkIGdldFN0b3Jh
Z2VVcGRhdGVzKCk7CiAjZW5kaWYKKworICAgICAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyKGluIERPTVN0cmluZyBzY2hlbWUsIGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0
aXRsZSkKKyAgICAgICAgICAgIHJhaXNlcyhEb21FeGNlcHRpb24pOworICAgICAgICB2b2lkIHJl
Z2lzdGVyQ29udGVudEhhbmRsZXIoaW4gRE9NU3RyaW5nIG1pbWVUeXBlLCBpbiBET01TdHJpbmcg
dXJsLCBpbiBET01TdHJpbmcgdGl0bGUpCisgICAgICAgICAgICByYWlzZXMoRG9tRXhjZXB0aW9u
KTsKICAgICB9OwogCiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MDM3NikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDA5LTEwLTMwICBC
cmFkbGV5IEdyZWVuICA8YnJnQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGluZyB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Ig
aW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3Rv
Y29sSGFuZGxlciBhbmQKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRI
YW5kbGVyLgorICAgICAgICAKKyAgICAgICAgVGhlcmUgaXMgYSBkZWZhdWx0IGltcGxpbWVudGF0
aW9uIGZvciB0aGVzZSBBUElzLCBoZW5jZSBhbGwgcGxhdGZvcm1zCisgICAgICAgIHdpdGggdGhl
IG5hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3QgYW5kCisgICAgICAgIHdpbmRvdy1w
cm9wZXJ0aWVzLWV4cGVjdGVkIHRlc3RzIG5lZWRlZCB0byBiZSB1cGRhdGVkLiAgV2hpbGUKKyAg
ICAgICAgaXNvbGF0ZWRXb3JsZHMgaGFzIGEgd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQgdGVz
dCwgaXQgaGFzIG5vIHdpbmRvdworICAgICAgICBvYmplY3QgYW5kIGhlbmNlIGRvZXMgbm90IG5l
ZWQgdG8gYmUgdXBkYWV0ZC4KKworICAgICAgICBXZSBhZGQgdHdvIGZhc3QvZG9tIHRlc3RzIHRv
IGluc3VyZSB0aGF0IHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhcmUKKyAgICAgICAgdGhyb3duIHdo
ZW4gYmFkIHN5bnRheCBvciBzZWN1cml0eSB2aW9sYXRpb25zIGFyZSBtYWRlIGJ5IGNhbGxpbmcg
dGhlCisgICAgICAgIG1ldGhvZHMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci1k
ZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vcmVnaXN0ZXJD
b250ZW50SGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jl
Z2lzdGVyQ29udGVudEhhbmRsZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2Rv
bS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorCiAyMDA5LTEwLTMw
ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0
YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDUwMzQ3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsOCBAQCBuYXZpZ2F0
b3IucGxhdGZvcm0gaXMgT0sKIG5hdmlnYXRvci5wbHVnaW5zIGlzIE9LCiBuYXZpZ2F0b3IucHJv
ZHVjdCBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3RTdWIgaXMgT0sKK25hdmlnYXRvci5yZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyKCkgdGhyZXcgZXJyIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0
aW9uIDEyCituYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSB0aHJldyBlcnIgRXJy
b3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIKIG5hdmlnYXRvci51c2VyQWdlbnQgaXMg
T0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIgaXMgT0sKQEAg
LTI5LDYgKzMxLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lu
cyBpcyBPSwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlz
IE9LCituYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIGlzIE9LCituYXZpZ2F0b3Iu
cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKSBpcyBPSwogbmF2aWdhdG9yLnVzZXJBZ2VudCBpcyBP
SwogbmF2aWdhdG9yLnZlbmRvciBpcyBPSwogbmF2aWdhdG9yLnZlbmRvclN1YiBpcyBPSwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5v
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDUwMzQ3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2
aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUz
LDE0IEBAIGZ1bmN0aW9uIGNoZWNrX25hdmlnYXRvcigpIHsKICAgdmFyIHN0cmluZ3MgPSBbIF07
CiAgIGZvciAocCBpbiBvbGRfbmF2KSB7CiAgICAgaWYgKHR5cGVvZiBvbGRfbmF2W3BdID09ICdm
dW5jdGlvbicpIHsKLSAgICAgIHZhciB2ID0gb2xkX25hdltwXSgpOwotICAgICAgLy8gbm8gY3Jh
c2gsIGl0IGlzIG9rCi0gICAgICBzdHJpbmdzLnB1c2goIm5hdmlnYXRvci4iK3ArIigpIGlzIE9L
Iik7CisgICAgICB0cnkgeworICAgICAgICB2YXIgdiA9IG9sZF9uYXZbcF0oKTsKKyAgICAgICAg
Ly8gbm8gY3Jhc2gsIGl0IGlzIG9rCisgICAgICAgIHN0cmluZ3MucHVzaCgibmF2aWdhdG9yLiIr
cCsiKCkgaXMgT0siKTsKKyAgICAgIH0gY2F0Y2goZXJyKSB7CisgICAgICAgIC8vIG5hdmlnYXRv
ci5yZWdpc3RlclhYWCB3aWxsIHRocm93IG9uIGludmFsaWQgaW5wdXQuCisgICAgICAgIHN0cmlu
Z3MucHVzaCgibmF2aWdhdG9yLiIrcCsiKCkgdGhyZXcgZXJyICIrZXJyKTsKKyAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgdmFyIHYgPSBvbGRfbmF2W3BdOwogICAgICAgLy8gbm8gY3Jhc2gs
IGl0IGlzIG9rLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFu
ZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVn
aXN0ZXJDb250ZW50SGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0
b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciB0aHJvd3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFu
ZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKworUGFzczogd2luZG93Lm5hdmln
YXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyIGlzIGRlZmluZWQuCitQYXNzOiBJbnZhbGlkIHBy
b3RvY29sICJ0ZXh0L2h0bWwiIHRocmV3IFNFQ1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJ
bnZhbGlkIHByb3RvY29sICJ0ZXh0L2NzcyIgdGhyZXcgU0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4K
K1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIgdGhyZXcg
U0VDVVJJVFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgdXJsICIiIHRocmV3IFNZTlRB
WF9FUlIgZXhjZXB0aW9uLgorUGFzczogSW52YWxpZCB1cmwgIiVTIiB0aHJldyBTWU5UQVhfRVJS
IGV4Y2VwdGlvbi4KK1Bhc3M6IFZhbGlkIGNhbGwgc3VjY2VlZGVkLgorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZWdpc3RlckNvbnRlbnRIYW5kbGVyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJDb250ZW50SGFuZGxlci5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACis8aHRtbD4KKzxib2R5PgorPHA+VGhpcyB0
ZXN0IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciB0aHJv
d3MgdGhlIHByb3BlciBleGNlcHRpb25zIGFuZCBoYXMgbm8tb3AgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbi48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworIH0KKyAKK2Z1bmN0aW9uIGRlYnVnKHN0cikgeworICAgIHZhciBjID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICBjLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHN0ciArICdcbicpKTsKK307CisKKy8vIFRlc3QgYXZhaWxhYmlsaXR5
IG9mIHRoZSByZWdpc3RlckNvbnRlbnRIYW5kbGVyIEFQSQoraWYod2luZG93Lm5hdmlnYXRvci5y
ZWdpc3RlckNvbnRlbnRIYW5kbGVyKSB7CisgICAgZGVidWcoJ1Bhc3M6IHdpbmRvdy5uYXZpZ2F0
b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlciBpcyBkZWZpbmVkLicpCit9IGVsc2UgeworICAgIGRl
YnVnKCdGYWlsOiB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIgaXMgbm90
IGRlZmluZWQuJykKK307CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIHJlZ2VjdHMgc2VjdXJlZCBw
cm90b2NvbHMuCit2YXIgaW52YWxpZF9wcm90b2NvbHMgPSBbJ3RleHQvaHRtbCcsICd0ZXh0L2Nz
cycsICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnXTsKK2ludmFsaWRfcHJvdG9jb2xzLmZvckVh
Y2goZnVuY3Rpb24ocHJvdG9jb2wpIHsKKyAgICB2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisgICAg
dHJ5IHsKKyAgICAgICAgd2luZG93Lm5hdmlnYXRvci5yZWdpc3RlckNvbnRlbnRIYW5kbGVyKHBy
b3RvY29sLCAiaW52YWxpZCBwcm90b2NvbCAlcyIsICJ0aXRsZSIpOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgICBpZignU0VDVVJJVFlfRVJSJyA9PSBlLm5hbWUpIHsKKyAgICAgICAgICAgIHN1
Y2NlZWRlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKworICAgIGlmKHN1Y2NlZWRlZCA9
PSB0cnVlKSB7CisgICAgICAgIGRlYnVnKCdQYXNzOiBJbnZhbGlkIHByb3RvY29sICInICsgcHJv
dG9jb2wgKyAnIiB0aHJldyBTRUNVUklUWV9FUlIgZXhjZXB0aW9uLicpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIHByb3RvY29sICInICsgcHJvdG9jb2wgKyAn
IiBhbGxvd2VkLicpOworICAgIH07Cit9KTsKKworLy8gVGVzdCB0aGF0IHRoZSBBUEkgY29ycmVj
dGx5IHBhcnNlcyB0aGUgdXJsIGZvciAnJXMnCit2YXIgaW52YWxpZF91cmxzID0gWyIiLCAiJVMi
XQoraW52YWxpZF91cmxzLmZvckVhY2goZnVuY3Rpb24odXJsKSB7CisgICAgdmFyIHN1Y2NlZWRl
ZCA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJD
b250ZW50SGFuZGxlcignbXlwcm90b2NvbCcsIHVybCwgJ3RpdGxlJyk7CisgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIGlmKCdTWU5UQVhfRVJSJyA9PSBlLm5hbWUpIHsKKyAgICAgICAgICAgIHN1
Y2NlZWRlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKworICAgIGlmKHN1Y2NlZWRlZCA9
PSB0cnVlKSB7CisgICAgICAgIGRlYnVnKCdQYXNzOiBJbnZhbGlkIHVybCAiJyArIHVybCArICci
IHRocmV3IFNZTlRBWF9FUlIgZXhjZXB0aW9uLicpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRl
YnVnKCdGYWlsOiBJbnZhbGlkIHVybCAiJyArIHVybCArICciIGFsbG93ZWQuJyk7CisgICAgfTsK
K30pOworCisvLyBUZXN0IHRoYXQgdGhlIEFQSSBoYXMgZGVmYXVsdCBuby1vcCBpbXBsZW1lbnRh
dGlvbi4KK3ZhciBzdWNjZWVkZWQgPSB0cnVlOwordHJ5IHsKKyAgICB3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoJ215cHJvdG9jb2wnLCAiJXMiLCAidGl0bGUiKTsKK30g
Y2F0Y2goZSkgeworICAgIHN1Y2NlZWRlZCA9IGZhbHNlOworfTsKKworaWYoc3VjY2VlZGVkID09
IHRydWUpIHsKKyAgICBkZWJ1ZygnUGFzczogVmFsaWQgY2FsbCBzdWNjZWVkZWQuJyk7Cit9IGVs
c2UgeworICAgIGRlYnVnKCdGYWlsOiBJbnZhbGlkIGNhbGwgZGlkIG5vdCBzdWNjZWVkLicpOwor
fTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0
IG1ha2VzIHN1cmUgdGhhdCBuYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgdGhyb3dz
IHRoZSBwcm9wZXIgZXhjZXB0aW9ucyBhbmQgaGFzIG5vLW9wIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24uCisKK1Bhc3M6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgaXMg
ZGVmaW5lZC4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImh0dHAiIHRocmV3IFNFQ1VSSVRZX0VS
UiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHByb3RvY29sICJodHRwcyIgdGhyZXcgU0VDVVJJ
VFlfRVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgcHJvdG9jb2wgImZpbGUiIHRocmV3IFNF
Q1VSSVRZX0VSUiBleGNlcHRpb24uCitQYXNzOiBJbnZhbGlkIHVybCAiIiB0aHJldyBTWU5UQVhf
RVJSIGV4Y2VwdGlvbi4KK1Bhc3M6IEludmFsaWQgdXJsICIlUyIgdGhyZXcgU1lOVEFYX0VSUiBl
eGNlcHRpb24uCitQYXNzOiBWYWxpZCBjYWxsIHN1Y2NlZWRlZC4KKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZWdpc3RlclByb3RvY29sSGFuZGxlci5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMg
dGVzdCBtYWtlcyBzdXJlIHRoYXQgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIHRo
cm93cyB0aGUgcHJvcGVyIGV4Y2VwdGlvbnMgYW5kIGhhcyBuby1vcCBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uLjwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgfQorIAorZnVuY3Rpb24gZGVidWcoc3RyKSB7CisgICAgdmFyIGMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpCisgICAgYy5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKSk7Cit9OworCisvLyBUZXN0IGF2YWlsYWJpbGl0
eSBvZiB0aGUgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgQVBJCitpZih3aW5kb3cubmF2aWdhdG9y
LnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKSB7CisgICAgZGVidWcoJ1Bhc3M6IHdpbmRvdy5uYXZp
Z2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgaXMgZGVmaW5lZC4nKTsKK30gZWxzZSB7Cisg
ICAgZGVidWcoJ0ZhaWw6IHdpbmRvdy5uYXZpZ2F0b3IucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIg
aXMgbm90IGRlZmluZWQuJyk7Cit9OworCisvLyBUZXN0IHRoYXQgdGhlIEFQSSByZWdlY3RzIHNl
Y3VyZWQgcHJvdG9jb2xzLgordmFyIGludmFsaWRfcHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBz
JywgJ2ZpbGUnXTsKK2ludmFsaWRfcHJvdG9jb2xzLmZvckVhY2goZnVuY3Rpb24ocHJvdG9jb2wp
IHsKKyAgICB2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgd2luZG93
Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcihwcm90b2NvbCwgImludmFsaWQgcHJv
dG9jb2wgJXMiLCAidGl0bGUiKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NFQ1VS
SVRZX0VSUicgPT0gZS5uYW1lKSB7CisgICAgICAgICAgICBzdWNjZWVkZWQgPSB0cnVlOworICAg
ICAgICB9OworICAgIH07CisKKyAgICBpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICAgICAgICBk
ZWJ1ZygnUGFzczogSW52YWxpZCBwcm90b2NvbCAiJyArIHByb3RvY29sICsgJyIgdGhyZXcgU0VD
VVJJVFlfRVJSIGV4Y2VwdGlvbi4nKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygnRmFp
bDogSW52YWxpZCBwcm90b2NvbCAiJyArIHByb3RvY29sICsgJyIgYWxsb3dlZC4nKTsKKyAgICB9
OworfSk7CisKKy8vIFRlc3QgdGhhdCB0aGUgQVBJIGNvcnJlY3RseSBwYXJzZXMgdGhlIHVybCBm
b3IgJyVzJwordmFyIGludmFsaWRfdXJscyA9IFsiIiwgIiVTIl07CitpbnZhbGlkX3VybHMuZm9y
RWFjaChmdW5jdGlvbih1cmwpIHsKKyAgICB2YXIgc3VjY2VlZGVkID0gZmFsc2U7CisgICB0cnkg
eworICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCdteXBy
b3RvY29sJywgdXJsLCAndGl0bGUnKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYoJ1NZ
TlRBWF9FUlInID09IGUubmFtZSkgeworICAgICAgICAgICAgc3VjY2VlZGVkID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICB9OworCisgICAgaWYoc3VjY2VlZGVkID09IHRydWUpIHsKKyAgICAgICAg
ZGVidWcoJ1Bhc3M6IEludmFsaWQgdXJsICInICsgdXJsICsgJyIgdGhyZXcgU1lOVEFYX0VSUiBl
eGNlcHRpb24uJyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcoJ0ZhaWw6IEludmFsaWQg
dXJsICInICsgdXJsICsgJyIgYWxsb3dlZC4nKTsKKyAgICB9OworfSk7CisKKy8vIFRlc3QgdGhh
dCB0aGUgQVBJIGhhcyBkZWZhdWx0IG5vLW9wIGltcGxlbWVudGF0aW9uLgordmFyIHN1Y2NlZWRl
ZCA9IHRydWU7Cit0cnkgeworICB3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyKCdteXByb3RvY29sJywgIiVzIiwgInRpdGxlIik7Cit9IGNhdGNoKGUpIHsKKyAgc3VjY2Vl
ZGVkID0gZmFsc2U7Cit9OworCitpZihzdWNjZWVkZWQgPT0gdHJ1ZSkgeworICBkZWJ1ZygnUGFz
czogVmFsaWQgY2FsbCBzdWNjZWVkZWQuJyk7Cit9IGVsc2UgeworICBkZWJ1ZygnRmFpbDogSW52
YWxpZCBjYWxsIGRpZCBub3Qgc3VjY2VlZC4nKTsKK307Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTAzNDcpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNjg4LDYgKzE2ODgsOCBAQCB3aW5kb3cuY2xpZW50SW5mb3JtYXRp
b24ucGxhdGZvcm0gW3N0cmluCiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGx1Z2lucyBbcHJp
bnRlZCBhYm92ZSBhcyB3aW5kb3cuUGx1Z2luQXJyYXkucHJvdG90eXBlXQogd2luZG93LmNsaWVu
dEluZm9ybWF0aW9uLnByb2R1Y3QgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5w
cm9kdWN0U3ViIFtzdHJpbmddCit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJDb250
ZW50SGFuZGxlciBbZnVuY3Rpb25dCit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIgW2Z1bmN0aW9uXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnVzZXJB
Z2VudCBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvciBbc3RyaW5nXQog
d2luZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvclN1YiBbc3RyaW5nXQpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
ZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUw
MzQ3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0LDYgKzE0LDgg
QEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBPSwogbmF2
aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCituYXZpZ2F0
b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIHRocmV3IGVyciBFcnJvcjogU1lOVEFYX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMgorbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgdGhy
ZXcgZXJyIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyCiBuYXZpZ2F0b3IudXNl
ckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3Vi
IGlzIE9LCkBAIC0zMSw2ICszMyw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwogbmF2aWdh
dG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0b3IucHJv
ZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBpcyBPSwor
bmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRvci51c2Vy
QWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3JTdWIg
aXMgT0sKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA1MDM0NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
NjU3LDYgKzE2NTcsOCBAQCB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGxhdGZvcm0gW3N0cmlu
CiB3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucGx1Z2lucyBbcHJpbnRlZCBhYm92ZSBhcyB3aW5k
b3cuUGx1Z2luQXJyYXkucHJvdG90eXBlXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnByb2R1
Y3QgW3N0cmluZ10KIHdpbmRvdy5jbGllbnRJbmZvcm1hdGlvbi5wcm9kdWN0U3ViIFtzdHJpbmdd
Cit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJDb250ZW50SGFuZGxlciBbZnVuY3Rp
b25dCit3aW5kb3cuY2xpZW50SW5mb3JtYXRpb24ucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgW2Z1
bmN0aW9uXQogd2luZG93LmNsaWVudEluZm9ybWF0aW9uLnVzZXJBZ2VudCBbc3RyaW5nXQogd2lu
ZG93LmNsaWVudEluZm9ybWF0aW9uLnZlbmRvciBbc3RyaW5nXQogd2luZG93LmNsaWVudEluZm9y
bWF0aW9uLnZlbmRvclN1YiBbc3RyaW5nXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LWxlb3BhcmQvZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9mYXN0L2Rv
bS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDM0
NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL2Zhc3QvZG9tL25hdmlnYXRv
ci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDYg
KzEzLDggQEAgbmF2aWdhdG9yLnBsYXRmb3JtIGlzIE9LCiBuYXZpZ2F0b3IucGx1Z2lucyBpcyBP
SwogbmF2aWdhdG9yLnByb2R1Y3QgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0U3ViIGlzIE9LCitu
YXZpZ2F0b3IucmVnaXN0ZXJDb250ZW50SGFuZGxlcigpIHRocmV3IGVyciBFcnJvcjogU1lOVEFY
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMgorbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVy
KCkgdGhyZXcgZXJyIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyCiBuYXZpZ2F0
b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVu
ZG9yU3ViIGlzIE9LCkBAIC0yOSw2ICszMSw4IEBAIG5hdmlnYXRvci5wbGF0Zm9ybSBpcyBPSwog
bmF2aWdhdG9yLnBsdWdpbnMgaXMgT0sKIG5hdmlnYXRvci5wcm9kdWN0IGlzIE9LCiBuYXZpZ2F0
b3IucHJvZHVjdFN1YiBpcyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyQ29udGVudEhhbmRsZXIoKSBp
cyBPSworbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkgaXMgT0sKIG5hdmlnYXRv
ci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52ZW5k
b3JTdWIgaXMgT0sK
</data>
<flag name="review"
          id="23781"
          type_id="1"
          status="+"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="23916"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>