<?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>55427</bug_id>
          
          <creation_ts>2011-02-28 16:48:23 -0800</creation_ts>
          <short_desc>WebKit2: Need a way to send notifications to client when cookies change</short_desc>
          <delta_ts>2011-03-04 01:06:30 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Weinstein">bweinstein</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>jberlin</cc>
    
    <cc>psolanki</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>359489</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-02-28 16:48:23 -0800</bug_when>
    <thetext>WebKit2 needs a way to send a notification to the client when cookies change.

&lt;rdar://problem/9056027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359556</commentid>
    <comment_count>1</comment_count>
      <attachid>84166</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-02-28 17:59:26 -0800</bug_when>
    <thetext>Created attachment 84166
[PATCH] Fix Part 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359576</commentid>
    <comment_count>2</comment_count>
      <attachid>84166</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-02-28 18:10:40 -0800</bug_when>
    <thetext>Comment on attachment 84166
[PATCH] Fix Part 1

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

Overall looks good to me. I don&apos;t have review privileges

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:2123
&gt; +				3354F5B5131C55B800ED70FF /* mac */,

Why is this here?

&gt; Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp:82
&gt; +#if !PLATFORM(MAC) &amp;&amp; !(PLATFORM(WIN) &amp;&amp; USE(CFNETWORK))

Who is not Mac or Win but uses CFNetwork?

&gt; Source/WebKit2/WebProcess/Cookies/win/WebCookieManagerWin.cpp:38
&gt; +const int maxCookiesWaitMsec = 5000;

Where did this value come from? It might be nice to have a comment here explaining it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359580</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-02-28 18:14:41 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 84166 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84166&amp;action=review
&gt; 
&gt; Overall looks good to me. I don&apos;t have review privileges
&gt; 
&gt; &gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:2123
&gt; &gt; +				3354F5B5131C55B800ED70FF /* mac */,
&gt; 
&gt; Why is this here?

This is just something for the project structure.

Cookies
    &gt; mac
        &gt; WebCookieManagerMac.mm
    &gt; WebCookieManager.cpp
    &gt; WebCookieManager.h
    &gt; WebCookieManager.messages.in

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp:82
&gt; &gt; +#if !PLATFORM(MAC) &amp;&amp; !(PLATFORM(WIN) &amp;&amp; USE(CFNETWORK))
&gt; 
&gt; Who is not Mac or Win but uses CFNetwork?

There&apos;s WinCE, who&apos;s Win but doesn&apos;t use CFNetwork.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Cookies/win/WebCookieManagerWin.cpp:38
&gt; &gt; +const int maxCookiesWaitMsec = 5000;
&gt; 
&gt; Where did this value come from? It might be nice to have a comment here explaining it.

This was ported from some other code I was reading. I will add a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359990</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-01 10:16:27 -0800</bug_when>
    <thetext>Alexey thought this code should be in WebCore, which makes sense, but a worry I have is that it does make the callback to WebCookieManager::dispatchDidModifyCookies awkward, because WebCore shouldn&apos;t know about that WebKit function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359997</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-01 10:19:55 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Alexey thought this code should be in WebCore, which makes sense, but a worry I have is that it does make the callback to WebCookieManager::dispatchDidModifyCookies awkward, because WebCore shouldn&apos;t know about that WebKit function.

Right, you wouldn’t call back directly. You have to use a client or a strategy to call back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360441</commentid>
    <comment_count>6</comment_count>
      <attachid>84337</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-01 17:48:43 -0800</bug_when>
    <thetext>Created attachment 84337
[PATCH] Fix Part 1 v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360773</commentid>
    <comment_count>7</comment_count>
      <attachid>84337</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-02 07:06:51 -0800</bug_when>
    <thetext>Comment on attachment 84337
[PATCH] Fix Part 1 v2

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

Looks nice!

&gt; Source/WebCore/platform/CookiesStrategy.h:40
&gt; +    virtual ~CookiesStrategy()
&gt; +    {
&gt; +    }

You can put this all on one line: virtual ~CookiesStrategy() { }

&gt; Source/WebCore/platform/network/CookieStorage.h:33
&gt; +void beginObservingCookieChanges();
&gt; +void finishObservingCookieChanges();

I think start/stop is a little clearer than begin/finish.

&gt; Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:90
&gt; +    callOnMainThread(&amp;notifyCookiesChangedOnMainThread, 0);

No need for the &amp; in C++ code.

&gt; Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:97
&gt; +    CFRunLoopRef runLoop = loaderRunLoop();

I think it&apos;s worth making it clear that we don&apos;t specifically need the loader run loop; we just need any run loop. One way to do this would be to add a new helper function:

static inline CFRunLoopRef cookieStorageObserverRunLoop()
{
    return loaderRunLoop();
}

Then you could put a comment in there explaining why we&apos;re using the load run loop, and maybe a FIXME about renaming loaderRunLoop to something more generic.

&gt; Source/WebCore/platform/network/mac/CookieStorageMac.mm:44
&gt; +-(void)registerForCookieChangeNotifications;
&gt; +-(void)unregisterForCookieChangeNotifications;

I think you could use the same start/stop terminology here as in the CookieStorage functions.

&gt; Source/WebCore/platform/network/mac/CookieStorageMac.mm:60
&gt; +-(void)cookiesChangedNotificationHandler:(NSNotification *)notification
&gt; +{
&gt; +    UNUSED_PARAM(notification);
&gt; +
&gt; +    [self performSelectorOnMainThread:@selector(notifyCookiesChangedOnMainThread) withObject:nil waitUntilDone:FALSE];

I guess you determined that this notification is in fact sent on a non-main thread?

&gt; Source/WebCore/platform/network/mac/CookieStorageMac.mm:87
&gt; +        cookieStorageAdapter = [CookieStorageObjCAdapter alloc];

You&apos;re missing a call to -init here.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:117
&gt; +    WebCookieManager::shared().dispatchDidModifyCookies();

Not directly related to this patch, but: I think WebCookiesManager (with an &quot;s&quot;) is a little better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360895</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-02 10:26:20 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 84337 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84337&amp;action=review
&gt; 
&gt; Looks nice!
&gt; 
&gt; &gt; Source/WebCore/platform/CookiesStrategy.h:40
&gt; &gt; +    virtual ~CookiesStrategy()
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; You can put this all on one line: virtual ~CookiesStrategy() { }

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/network/CookieStorage.h:33
&gt; &gt; +void beginObservingCookieChanges();
&gt; &gt; +void finishObservingCookieChanges();
&gt; 
&gt; I think start/stop is a little clearer than begin/finish.

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:90
&gt; &gt; +    callOnMainThread(&amp;notifyCookiesChangedOnMainThread, 0);
&gt; 
&gt; No need for the &amp; in C++ code.

Removed.

&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp:97
&gt; &gt; +    CFRunLoopRef runLoop = loaderRunLoop();
&gt; 
&gt; I think it&apos;s worth making it clear that we don&apos;t specifically need the loader run loop; we just need any run loop. One way to do this would be to add a new helper function:
&gt; 
&gt; static inline CFRunLoopRef cookieStorageObserverRunLoop()
&gt; {
&gt;     return loaderRunLoop();
&gt; }
&gt; 
&gt; Then you could put a comment in there explaining why we&apos;re using the load run loop, and maybe a FIXME about renaming loaderRunLoop to something more generic.


Done.

&gt; 
&gt; &gt; Source/WebCore/platform/network/mac/CookieStorageMac.mm:44
&gt; &gt; +-(void)registerForCookieChangeNotifications;
&gt; &gt; +-(void)unregisterForCookieChangeNotifications;
&gt; 
&gt; I think you could use the same start/stop terminology here as in the CookieStorage functions.

Fixed.

Renamed to startListeningForCookieChangeNotifications and stopListeningForCookieChangeNotifications.

&gt; 
&gt; &gt; Source/WebCore/platform/network/mac/CookieStorageMac.mm:60
&gt; &gt; +-(void)cookiesChangedNotificationHandler:(NSNotification *)notification
&gt; &gt; +{
&gt; &gt; +    UNUSED_PARAM(notification);
&gt; &gt; +
&gt; &gt; +    [self performSelectorOnMainThread:@selector(notifyCookiesChangedOnMainThread) withObject:nil waitUntilDone:FALSE];
&gt; 
&gt; I guess you determined that this notification is in fact sent on a non-main thread?

Yeah, the notification is sent on a non-main thread.

&gt; 
&gt; &gt; Source/WebCore/platform/network/mac/CookieStorageMac.mm:87
&gt; &gt; +        cookieStorageAdapter = [CookieStorageObjCAdapter alloc];
&gt; 
&gt; You&apos;re missing a call to -init here.

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:117
&gt; &gt; +    WebCookieManager::shared().dispatchDidModifyCookies();
&gt; 
&gt; Not directly related to this patch, but: I think WebCookiesManager (with an &quot;s&quot;) is a little better.

This can be renamed, but will probably be done later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360908</commentid>
    <comment_count>9</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-02 10:45:05 -0800</bug_when>
    <thetext>Landed part 1 in r80145.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360916</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-02 10:52:23 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80145 might have broken WinCE Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361162</commentid>
    <comment_count>11</comment_count>
      <attachid>84483</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-02 16:30:59 -0800</bug_when>
    <thetext>Created attachment 84483
[PATCH] Fix Part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361242</commentid>
    <comment_count>12</comment_count>
      <attachid>84483</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-03-02 17:35:58 -0800</bug_when>
    <thetext>Comment on attachment 84483
[PATCH] Fix Part 2

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

Overall LGTM. However, I don&apos;t have reviewer privileges.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        to listen for cookies changing, and adds a mechanism for the WebProcess to notify the UIProcess

I think you meant &quot;listening&quot; for cookies changing, not &quot;to listen&quot;.

&gt; Source/WebKit2/UIProcess/WebCookieManagerProxyClient.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

Copyright should be 2011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361284</commentid>
    <comment_count>13</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-02 18:20:35 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 84483 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84483&amp;action=review
&gt; 
&gt; Overall LGTM. However, I don&apos;t have reviewer privileges.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:10
&gt; &gt; +        to listen for cookies changing, and adds a mechanism for the WebProcess to notify the UIProcess
&gt; 
&gt; I think you meant &quot;listening&quot; for cookies changing, not &quot;to listen&quot;.

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebCookieManagerProxyClient.cpp:2
&gt; &gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.
&gt; 
&gt; Copyright should be 2011

And fixed.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361334</commentid>
    <comment_count>14</comment_count>
      <attachid>84483</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-02 20:20:44 -0800</bug_when>
    <thetext>Comment on attachment 84483
[PATCH] Fix Part 2

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

&gt; Source/WebKit2/UIProcess/WebCookieManagerProxyClient.h:30
&gt; +#include &quot;WKCookieManager.h&quot;

I don&apos;t think this #include is needed.

&gt; Source/WebKit2/UIProcess/API/C/WKCookieManager.h:41
&gt; +    WKCookieManagerDidModifyCookiesCallback                             didModifyCookies;

CookiesDidChange seems more accurate than DidModifyCookies. The latter makes it sound like the manager itself is modifying cookies.

&gt; Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp:89
&gt; +void WebCookieManager::startObservingCookieChanges()
&gt; +{
&gt; +#if USE(CFNETWORK) || PLATFORM(MAC)
&gt; +    WebCore::startObservingCookieChanges();
&gt; +#endif
&gt; +}
&gt; +
&gt; +void WebCookieManager::stopObservingCookieChanges()
&gt; +{
&gt; +#if USE(CFNETWORK) || PLATFORM(MAC)
&gt; +    WebCore::stopObservingCookieChanges();
&gt; +#endif
&gt; +}

It would be nice if WebKit didn&apos;t have to know which ports have implemented this feature. If all ports implemented this function (but some ports just had stub implementations), WebKit wouldn&apos;t have to care.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361744</commentid>
    <comment_count>15</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-03 11:00:24 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 84483 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84483&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebCookieManagerProxyClient.h:30
&gt; &gt; +#include &quot;WKCookieManager.h&quot;
&gt; 
&gt; I don&apos;t think this #include is needed.

I am seeing compile errors without it - WebCookieManagerProxyClient doesn&apos;t know what a WKCookieManagerClient is.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKCookieManager.h:41
&gt; &gt; +    WKCookieManagerDidModifyCookiesCallback                             didModifyCookies;
&gt; 
&gt; CookiesDidChange seems more accurate than DidModifyCookies. The latter makes it sound like the manager itself is modifying cookies.

I agree - fixed.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp:89
&gt; &gt; +void WebCookieManager::startObservingCookieChanges()
&gt; &gt; +{
&gt; &gt; +#if USE(CFNETWORK) || PLATFORM(MAC)
&gt; &gt; +    WebCore::startObservingCookieChanges();
&gt; &gt; +#endif
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void WebCookieManager::stopObservingCookieChanges()
&gt; &gt; +{
&gt; &gt; +#if USE(CFNETWORK) || PLATFORM(MAC)
&gt; &gt; +    WebCore::stopObservingCookieChanges();
&gt; &gt; +#endif
&gt; &gt; +}
&gt; 
&gt; It would be nice if WebKit didn&apos;t have to know which ports have implemented this feature. If all ports implemented this function (but some ports just had stub implementations), WebKit wouldn&apos;t have to care.

I&apos;d like to take care of this in a follow-up patch - because the other ports don&apos;t have a CookieStorage - and I feel like adding CookieStorage headers and implementations to other ports would make this patch more confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361761</commentid>
    <comment_count>16</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-03 11:14:09 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; It would be nice if WebKit didn&apos;t have to know which ports have implemented this feature. If all ports implemented this function (but some ports just had stub implementations), WebKit wouldn&apos;t have to care.
&gt; 
&gt; I&apos;d like to take care of this in a follow-up patch - because the other ports don&apos;t have a CookieStorage - and I feel like adding CookieStorage headers and implementations to other ports would make this patch more confusing.

It looks like I can use TemporaryLinkStubs for the other platforms. I will implement the stubs in a follow-up and attach it to this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361770</commentid>
    <comment_count>17</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-03 11:16:55 -0800</bug_when>
    <thetext>Landed part 2 in r80263.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361990</commentid>
    <comment_count>18</comment_count>
      <attachid>84637</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-03 15:08:44 -0800</bug_when>
    <thetext>Created attachment 84637
[PATCH] Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362305</commentid>
    <comment_count>19</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-03 23:21:28 -0800</bug_when>
    <thetext>Landed cleanup in r80311.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362354</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-04 01:06:30 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80331 might have broken Windows 7 Release (Tests)
The following tests are not passing:
http/tests/xmlhttprequest/supported-xml-content-types.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84166</attachid>
            <date>2011-02-28 17:59:26 -0800</date>
            <delta_ts>2011-03-01 17:48:43 -0800</delta_ts>
            <desc>[PATCH] Fix Part 1</desc>
            <filename>cookie_observer.patch</filename>
            <type>text/plain</type>
            <size>18941</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5OTQ4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDItMjggIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgV2ViS2l0MjogTmVlZCBhIHdheSB0byBz
ZW5kIG5vdGlmaWNhdGlvbnMgdG8gY2xpZW50IHdoZW4gY29va2llcyBjaGFuZ2UuCisgICAgICAg
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU0Mjc+IGFuZCA8cmRh
cjovL3Byb2JsZW0vOTA1NjAyNz4uCisgICAgICAgIAorICAgICAgICBBZGQgdHdvIG5ldyBtZXRo
b2RzIHRvIFdlYkNvb2tpZU1hbmFnZXIgLSBiZWdpbk9ic2VydmluZ0Nvb2tpZUNoYW5nZXMsIGFu
ZCBmaW5pc2hPYnNlcnZpbmdDb29raWVDaGFuZ2VzLgorICAgICAgICBUaGV5IGN1cnJlbnRseSBh
cmUgbm90IGNhbGxlZCwgYnV0IHdpbGwgYmUgY2FsbGVkIGJ5IG1lc3NhZ2VzIGZyb20gdGhlIFVJ
UHJvY2VzcyAtIGFuZCB3aGVuIHRoZSBjb29raWVzCisgICAgICAgIGNoYW5nZSwgdGhleSBjYWxs
IFdlYkNvb2tpZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5Q29va2llcyAtIHdoaWNoIHdpbGwg
c2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFVJUHJvY2VzcworICAgICAgICB0aGF0IGNvb2tpZXMgaGF2
ZSBjaGFuZ2VkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkaXNwYXRjaERpZE1v
ZGlmeUNvb2tpZXMpOiBBZGRlZCBhIEZJWE1FIHRvIGltcGxlbWVudCB0aGlzIGFuZCBhIG5vdGUg
YWJvdXQgd2hlcmUgaXQgbWF5CisgICAgICAgICAgICBiZSBjYWxsZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXI6OmJlZ2luT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyk6IEFkZGVk
IGEgc3R1YiBmb3Igbm9uLVdpbmRvd3MgYW5kIE1hYyBwbGF0Zm9ybXMuCisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXI6OmZpbmlzaE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOiBEaXR0
by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6IEFk
ZGVkIG5ldyBmdW5jdGlvbnMgYW5kIG1lbWJlciB2YXJpYWJsZXMuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0Nvb2tpZXMvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMv
bWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJDb29raWVN
YW5hZ2VyT2JqQ0FkYXB0ZXIgbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWRdKTogQ2Fs
bCBXZWJDb29raWVNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeUNvb2tpZXMuCisgICAgICAgICgt
W1dlYkNvb2tpZU1hbmFnZXJPYmpDQWRhcHRlciBjb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbkhh
bmRsZXI6XSk6IENhbGwgbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQgb24gdGhlIG1h
aW4gdGhyZWFkLgorICAgICAgICAoLVtXZWJDb29raWVNYW5hZ2VyT2JqQ0FkYXB0ZXIgcmVnaXN0
ZXJGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zXSk6IFJlZ2lzdGVyIGZvciBub3RpZmljYXRp
b25zIHdoZW4gdGhlIGNvb2tpZXMgY2hhbmdlLgorICAgICAgICAoLVtXZWJDb29raWVNYW5hZ2Vy
T2JqQ0FkYXB0ZXIgdW5yZWdpc3RlckZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNdKTogVW5y
ZWdpc3RlciBvdXIgbm90aWZpY2F0aW9ucyB3aGVuIHRoZSBjb29raWVzIGNoYW5nZS4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6YmVnaW5PYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KTogSW5pdGlhbGl6ZSB0aGUgV2ViQ29va2llTWFuYWdlck9iakNBZGFwdGVyIGFuZCBjYWxsIHRo
cm91Z2gKKyAgICAgICAgICAgIHRvIHJlZ2lzdGVyRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9u
cy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZmluaXNoT2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcyk6IENhbGwgdGhyb3VnaCB0byB1bnJlZ2lzdGVyRm9yQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy93aW46IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy93aW4vV2ViQ29va2llTWFuYWdlcldpbi5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpub3RpZnlDb29raWVzQ2hhbmdlZCk6IENhbGwgdGhy
b3VnaCB0byBXZWJDb29raWVNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeUNvb2tpZXMuCisgICAg
ICAgIChXZWJLaXQ6OmNvb2tpZU9ic2VydmVyVGhyZWFkQ2FsbGJhY2tGdW5jdGlvbik6IENhbGxi
YWNrIHdoZW4gb3VyIGNvb2tpZSBvYnNlcnZlciB0aHJlYWQgaXMgY3JlYXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Y29va2llc1RocmVhZCk6IFNldCB1cCB0aGUgY29v
a2llIG9ic2VydmVyIHJ1biBsb29wLgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
OjpiZWdpbk9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOiBTZXQgdXAgb3VyIGNvb2tpZSBvYnNlcnZl
ciB0aHJlYWQgaXRzIHJ1bmxvb3AgYXMgYSBjb29raWUgc3RvcmFnZQorICAgICAgICAgICAgb2Jz
ZXJ2ZXIuCisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmZpbmlzaE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMpOiBUZWFyIGRvd24gdGhlIGNvb2tpZSBvYnNlcnZlciBydW4gbG9vcC4K
KyAgICAgICAgCisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwog
MjAxMS0wMi0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNzk4NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEsNyBAQAogCQkzMzM2
NzY1NjEzMEM5RUNBMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzNjc2NTIx
MzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLzsg
fTsKIAkJMzMzNjc2NTcxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzMzNjc2NTMxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkzMzM2NzY1ODEzMEM5
RUNCMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzM2NzY1NDEzMEM5
RUNBMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggKi87
IH07CisJCTMzNTRGNUI3MTMxQzU1QzkwMEVENzBGRiAvKiBXZWJDb29raWVNYW5hZ2VyTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM1NEY1QjYx
MzFDNTVDOTAwRUQ3MEZGIC8qIFdlYkNvb2tpZU1hbmFnZXJNYWMubW0gKi87IH07CiAJCTMzRjlE
NUI5MTMxMkYxRUUwMDBENjgzRiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzRjlENUI4MTMx
MkYxRUUwMDBENjgzRiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcCAqLzsgfTsK
IAkJMzdGNjIzQjgxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjYyM0I3MTJBNTdCNjIwMEUz
RkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OwogCQk1MTAyMUU5QzEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1l
bnVDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTAyMUU5QjEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMu
bW0gKi87IH07CkBAIC0xMDg0LDYgKzEwODUsNyBAQAogCQkzMzM2NzY1MjEzMEM5RUNBMDA2QzlE
RTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMzY3NjUzMTMwQzlFQ0EwMDZDOURFMiAvKiBXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzM2NzY1NDEz
MEM5RUNBMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzU0RjVCNjEz
MUM1NUM5MDBFRDcwRkYgLyogV2ViQ29va2llTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkNvb2tpZU1hbmFnZXJNYWMubW07IHBhdGggPSBD
b29raWVzL21hYy9XZWJDb29raWVNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzM0Y5RDVCODEzMTJGMUVFMDAwRDY4M0YgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXJDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IFdlYlJl
c291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwOyBwYXRoID0gUmVzb3VyY2VDYWNoZS9jZi9XZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTAyMUU5QjEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1lbnVD
bGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b250ZXh0TWVudUNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTgsNiArMjEyMCw3IEBACiAJCTMzMDkzNDRCMTMxNUI5M0EwMDk3QTdCQyAvKiBDb29raWVzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMzU0RjVCNTEz
MUM1NUI4MDBFRDcwRkYgLyogbWFjICovLAogCQkJCTMzMDkzNDRDMTMxNUI5NEQwMDk3QTdCQyAv
KiBXZWJDb29raWVNYW5hZ2VyLmNwcCAqLywKIAkJCQkzMzA5MzQ0RDEzMTVCOTREMDA5N0E3QkMg
LyogV2ViQ29va2llTWFuYWdlci5oICovLAogCQkJCTMzMDkzNDRFMTMxNUI5NEQwMDk3QTdCQyAv
KiBXZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtMjEzNiw2ICsyMTM5LDIyIEBA
CiAJCQluYW1lID0gUmVzb3VyY2VDYWNoZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCTMzNTRGNUI1MTMxQzU1QjgwMEVENzBGRiAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTMzNTRGNUI2MTMxQzU1QzkwMEVENzBGRiAv
KiBXZWJDb29raWVNYW5hZ2VyTWFjLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBtYWM7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkzMzU0RjVCNTEzMUM1NUI4MDBFRDcwRkYg
LyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkz
MzU0RjVCNjEzMUM1NUM5MDBFRDcwRkYgLyogV2ViQ29va2llTWFuYWdlck1hYy5tbSAqLywKKwkJ
CSk7CisJCQluYW1lID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
MzNGOUQ1QjcxMzEyRjFCMTAwMEQ2ODNGIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM4ODQsNiArMzkwMyw3IEBACiAJCQkJMzMwOTM0NEYxMzE1
Qjk0RDAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzMwOTM0NTUxMzE1Qjk3NTAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzMzA5MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMzNTRGNUI3MTMxQzU1QzkwMEVENzBGRiAvKiBX
ZWJDb29raWVNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCShy
ZXZpc2lvbiA3OTg3NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDEwIEBACiAjaW5j
bHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiTWVzc2FnZUlELmgiCi0jaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5IYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03Niw0ICs3
MywyMCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoCiAgICAgV2Vi
Q29yZTo6ZGVsZXRlQWxsQ29va2llcygpOwogfQogCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRp
c3BhdGNoRGlkTW9kaWZ5Q29va2llcygpCit7CisgICAgLy8gTk9URTogVGhpcyBtYXkgYmUgY2Fs
bGVkIG9uIGEgbm9uLW1haW4gdGhyZWFkLgorICAgIC8vIEZJWE1FIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzU1NDI3PjogU2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFVJUHJvY2VzcyB0aGF0IHRoZSBjb29r
aWVzIGhhdmUgY2hhbmdlZC4KK30KKworI2lmICFQTEFURk9STShNQUMpICYmICEoUExBVEZPUk0o
V0lOKSAmJiBVU0UoQ0ZORVRXT1JLKSkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6YmVnaW5PYnNl
cnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpmaW5p
c2hPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaAkocmV2aXNpb24gNzk4NzYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw4ICsyNywxNyBAQAogI2RlZmluZSBXZWJDb29raWVNYW5hZ2VyX2gKIAogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVU
V09SSykKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KKyNlbmRpZgor
CisjaWYgUExBVEZPUk0oTUFDKQorT0JKQ19DTEFTUyBXZWJDb29raWVNYW5hZ2VyT2JqQ0FkYXB0
ZXI7CisjZW5kaWYKKwogbmFtZXNwYWNlIENvcmVJUEMgewogICAgIGNsYXNzIEFyZ3VtZW50RGVj
b2RlcjsKICAgICBjbGFzcyBDb25uZWN0aW9uOwpAQCAtMzcsMTQgKzQ2LDE4IEBAIG5hbWVzcGFj
ZSBDb3JlSVBDIHsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBTZWN1cml0eU9yaWdp
bkRhdGE7Ci0KIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYkNvb2tpZU1hbmFnZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJDb29raWVNYW5h
Z2VyJiBzaGFyZWQoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CisgICAgCisgICAgdm9pZCBkaXNwYXRjaERpZE1vZGlmeUNvb2tpZXMoKTsKKworI2lmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKKyAgICB2b2lkKiBjb29raWVzVGhyZWFkKCk7Cisj
ZW5kaWYKIAogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyKCk7CkBAIC01NCw2ICs2Nywx
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcygpOwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlV2ViQ29va2llTWFuYWdlck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKKyAgICB2b2lk
IGJlZ2luT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOworICAgIHZvaWQgZmluaXNoT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygpOworCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQor
ICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fY29va2llT2JzZXJ2ZXJSdW5Mb29wOworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBtX2Nvb2tpZVN0b3JhZ2U7CisjZW5k
aWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8V2ViQ29va2llTWFuYWdlck9i
akNBZGFwdGVyPiBtX2FkYXB0ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL21hYy9XZWJDb29raWVN
YW5hZ2VyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9tYWMvV2ViQ29va2llTWFuYWdlck1hYy5tbQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK0BpbnRlcmZhY2UgV2ViQ29va2llTWFuYWdlck9iakNBZGFwdGVyIDogTlNPYmplY3QK
Ky0odm9pZClub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZDsKKy0odm9pZCljb29raWVz
Q2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
OworLSh2b2lkKXJlZ2lzdGVyRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uczsKKy0odm9pZCl1
bnJlZ2lzdGVyRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9uczsKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFdlYkNvb2tpZU1hbmFnZXJPYmpDQWRhcHRlcgorCistKHZvaWQpbm90aWZ5Q29va2ll
c0NoYW5nZWRPbk1haW5UaHJlYWQKK3sKKyAgICBXZWJDb29raWVNYW5hZ2VyOjpzaGFyZWQoKS5k
aXNwYXRjaERpZE1vZGlmeUNvb2tpZXMoKTsKK30KKworLSh2b2lkKWNvb2tpZXNDaGFuZ2VkTm90
aWZpY2F0aW9uSGFuZGxlcjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAgICBb
c2VsZiBwZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKG5vdGlmeUNvb2tpZXND
aGFuZ2VkT25NYWluVGhyZWFkKSB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxEb25lOkZBTFNFXTsK
K30KKworLSh2b2lkKXJlZ2lzdGVyRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucworeworICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoY29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOikgbmFt
ZTpOU0hUVFBDb29raWVNYW5hZ2VyQ29va2llc0NoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0OltO
U0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXV07Cit9CisKKy0odm9p
ZCl1bnJlZ2lzdGVyRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucworeworICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOk5T
SFRUUENvb2tpZU1hbmFnZXJDb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
K30KKworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK3ZvaWQgV2ViQ29va2llTWFu
YWdlcjo6YmVnaW5PYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBpZiAoIW1fYWRhcHRl
cikKKyAgICAgICAgbV9hZGFwdGVyLmFkb3B0TlMoW1dlYkNvb2tpZU1hbmFnZXJPYmpDQWRhcHRl
ciBhbGxvY10pOworICAgIFttX2FkYXB0ZXIuZ2V0KCkgcmVnaXN0ZXJGb3JDb29raWVDaGFuZ2VO
b3RpZmljYXRpb25zXTsKK30KKwordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpmaW5pc2hPYnNlcnZp
bmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBBU1NFUlQobV9hZGFwdGVyKTsKKyAgICBbbV9hZGFw
dGVyLmdldCgpIHVucmVnaXN0ZXJGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zXTsKK30KKwor
fSAvL25hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy93aW4vV2ViQ29va2llTWFuYWdlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3dpbi9XZWJDb29raWVNYW5hZ2VyV2luLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy93aW4vV2ViQ29v
a2llTWFuYWdlcldpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIK
KworI2lmIFVTRShDRk5FVFdPUkspCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2ll
c1ByaXYuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IGludCBt
YXhDb29raWVzV2FpdE1zZWMgPSA1MDAwOworc3RhdGljIEhBTkRMRSBjb29raWVPYnNlcnZlclJ1
bkxvb3BTdGFydGVkRXZlbnQgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKworc3RhdGljIHZvaWQg
bm90aWZ5Q29va2llc0NoYW5nZWQoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBpblN0b3JhZ2UsIHZv
aWQgKmNvbnRleHQpCit7CisgICAgV2ViQ29va2llTWFuYWdlciogY29va2llTWFuYWdlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29va2llTWFuYWdlcio+KGNvbnRleHQpOworICAgIGlmICghY29v
a2llTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29va2llTWFuYWdlci0+ZGlzcGF0
Y2hEaWRNb2RpZnlDb29raWVzKCk7Cit9CisKK3N0YXRpYyB2b2lkKiBjb29raWVPYnNlcnZlclRo
cmVhZENhbGxiYWNrRnVuY3Rpb24odm9pZCogZGF0YSkKK3sKKyAgICBXZWJDb29raWVNYW5hZ2Vy
KiBjb29raWVNYW5hZ2VyID0gc3RhdGljX2Nhc3Q8V2ViQ29va2llTWFuYWdlcio+KGRhdGEpOwor
ICAgIGlmICghY29va2llTWFuYWdlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNv
b2tpZU1hbmFnZXItPmNvb2tpZXNUaHJlYWQoKTsKK30KKwordm9pZCogV2ViQ29va2llTWFuYWdl
cjo6Y29va2llc1RocmVhZCgpCit7CisgICAgbV9jb29raWVPYnNlcnZlclJ1bkxvb3AgPSBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CisgICAgOjpTZXRFdmVudChjb29raWVPYnNlcnZlclJ1bkxvb3BT
dGFydGVkRXZlbnQpOworCisgICAgQVNTRVJUKG1fY29va2llU3RvcmFnZSk7CisgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AobV9jb29raWVTdG9yYWdlLmdldCgpLCBt
X2Nvb2tpZU9ic2VydmVyUnVuTG9vcC5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKwor
ICAgIENGUnVuTG9vcFJ1bigpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6YmVnaW5PYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgQVNTRVJUKCFtX2Nvb2tpZU9ic2VydmVyUnVuTG9vcCAmJiBj
b29raWVPYnNlcnZlclJ1bkxvb3BTdGFydGVkRXZlbnQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUp
OworICAgIG1fY29va2llU3RvcmFnZSA9IGN1cnJlbnRDb29raWVTdG9yYWdlKCk7CisKKyAgICBj
b29raWVPYnNlcnZlclJ1bkxvb3BTdGFydGVkRXZlbnQgPSA6OkNyZWF0ZUV2ZW50KDAsIFRSVUUs
IEZBTFNFLCAwKTsKKyAgICBpZiAoY29va2llT2JzZXJ2ZXJSdW5Mb29wU3RhcnRlZEV2ZW50ID09
IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm47CisKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIHRocmVhZElEID0gY3JlYXRlVGhyZWFkKGNvb2tpZU9ic2VydmVyVGhyZWFkQ2FsbGJh
Y2tGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAiV2ViS2l0MjogQ29va2llT2Jz
ZXJ2ZXIiKTsKKyAgICBpZiAoIXRocmVhZElEKQorICAgICAgICByZXR1cm47CisKKyAgICBkZXRh
Y2hUaHJlYWQodGhyZWFkSUQpOworICAgIGlmICg6OldhaXRGb3JTaW5nbGVPYmplY3QoY29va2ll
T2JzZXJ2ZXJSdW5Mb29wU3RhcnRlZEV2ZW50LCBtYXhDb29raWVzV2FpdE1zZWMpICE9IFdBSVRf
T0JKRUNUXzApCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX2Nvb2tpZVN0b3JhZ2Up
OworICAgIEFTU0VSVChtX2Nvb2tpZU9ic2VydmVyUnVuTG9vcCk7CisKKyAgICAvLyBOb3cgdGhh
dCB3ZSBoYXZlIENGUnVuTG9vcCByZWFkeSwgYWRkIG91cnNlbHZlcyBhcyBhbiBvYnNlcnZlciBz
byB3ZSdsbCBnZXQgbm90aWZpZWQgd2hlbiBjb29raWVzIGNoYW5nZS4KKyAgICBDRkhUVFBDb29r
aWVTdG9yYWdlQWRkT2JzZXJ2ZXIobV9jb29raWVTdG9yYWdlLmdldCgpLCBtX2Nvb2tpZU9ic2Vy
dmVyUnVuTG9vcC5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlLCBub3RpZnlDb29raWVzQ2hh
bmdlZCwgdGhpcyk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZmluaXNoT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIEFT
U0VSVChtX2Nvb2tpZU9ic2VydmVyUnVuTG9vcCk7CisKKyAgICBDRkhUVFBDb29raWVTdG9yYWdl
UmVtb3ZlT2JzZXJ2ZXIobV9jb29raWVTdG9yYWdlLmdldCgpLCBtX2Nvb2tpZU9ic2VydmVyUnVu
TG9vcC5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlLCBub3RpZnlDb29raWVzQ2hhbmdlZCwg
dGhpcyk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVVuc2NoZWR1bGVGcm9tUnVuTG9vcChtX2Nv
b2tpZVN0b3JhZ2UuZ2V0KCksIG1fY29va2llT2JzZXJ2ZXJSdW5Mb29wLmdldCgpLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOworCisgICAgQ0ZSdW5Mb29wU3RvcChtX2Nvb2tpZU9ic2VydmVyUnVu
TG9vcC5nZXQoKSk7CisgICAgbV9jb29raWVPYnNlcnZlclJ1bkxvb3AgPSAwOworCisgICAgaWYg
KGNvb2tpZU9ic2VydmVyUnVuTG9vcFN0YXJ0ZWRFdmVudCAhPSBJTlZBTElEX0hBTkRMRV9WQUxV
RSkKKyAgICAgICAgQ2xvc2VIYW5kbGUoY29va2llT2JzZXJ2ZXJSdW5Mb29wU3RhcnRlZEV2ZW50
KTsKKyAgICBjb29raWVPYnNlcnZlclJ1bkxvb3BTdGFydGVkRXZlbnQgPSBJTlZBTElEX0hBTkRM
RV9WQUxVRTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQ0ZO
RVRXT1JLKQpJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNpb24gNzk4Njkp
CisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE0MzcsNiArMTQzNywxNCBAQAogICAgICAgICAgICAgPEZpbHRlcgogICAgICAgICAgICAgICAg
IE5hbWU9IkNvb2tpZXMiCiAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgIDxGaWx0
ZXIKKwkJCQkJTmFtZT0id2luIgorCQkJCQk+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFdlYlByb2Nlc3NcQ29va2llc1x3aW5cV2ViQ29va2llTWFuYWdlcldpbi5jcHAiCisJ
CQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQk8L0ZpbHRlcj4KICAgICAgICAgICAgICAgICA8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcQ29va2llc1xXZWJDb29raWVNYW5h
Z2VyLmNwcCIKIAkJCQkJPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84337</attachid>
            <date>2011-03-01 17:48:43 -0800</date>
            <delta_ts>2011-03-02 07:06:51 -0800</delta_ts>
            <desc>[PATCH] Fix Part 1 v2</desc>
            <filename>cookie_notification.patch</filename>
            <type>text/plain</type>
            <size>31683</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDMtMDEgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgV2ViS2l0MjogTmVlZCBhIHdheSB0byBz
ZW5kIG5vdGlmaWNhdGlvbnMgdG8gY2xpZW50IHdoZW4gY29va2llcyBjaGFuZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NDI3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS85MDU2MDI3PgorICAgICAgICAKKyAgICAgICAgQWRkIGZ1bmN0aW9ucyBv
biBDb29raWVTdG9yYWdlIHRoYXQgYWxsb3cgbGlzdGVuaW5nIGZvciBjaGFuZ2VzIGluIGNvb2tp
ZXMuIFdoZW4KKyAgICAgICAgdGhlIGNvb2tpZXMgYXJlIGNoYW5nZWQsIHRoZXkgY2FsbCB0aHJv
dWdoIHRvIENvb2tpZXNTdHJhdGVneTo6bm90aWZ5Q29va2llc0NoYW5nZWQuCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGJlaGF2aW9yIHJlcXVpcmluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL0Nvb2tpZXNTdHJhdGVneS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZXNT
dHJhdGVneTo6fkNvb2tpZXNTdHJhdGVneSk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9y
bVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc1N0cmF0ZWd5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llczo6UGxh
dGZvcm1TdHJhdGVnaWVzKToKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ29va2llU3Rv
cmFnZS5oOiBBZGQgbmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkKTogQ2FsbCB0aHJvdWdoIHRvIENvb2tp
ZXNTdHJhdGVneTo6bm90aWZ5Q29va2llc0NoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpub3Rp
ZnlDb29raWVzQ2hhbmdlZCk6IENhbGwgbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQg
b24gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6YmVnaW5PYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKTogU2V0IHVwIGNvb2tpZSBvYnNlcnZlcnMgb24gdGhlIGxvYWRlciBydW4gbG9v
cC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOiBSZW1v
dmUgb3VyIGNvb2tpZSBvYnNlcnZlcnMgZnJvbSB0aGUgbG9hZGVyIHJ1biBsb29wLgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbToKKyAgICAgICAg
KC1bQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhy
ZWFkXSk6IENhbGwgdGhyb3VnaCB0byBDb29raWVzU3RyYXRlZ3k6Om5vdGlmeUNvb2tpZXNDaGFu
Z2VkLgorICAgICAgICAoLVtDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgY29va2llc0NoYW5nZWRO
b3RpZmljYXRpb25IYW5kbGVyOl0pOiBDYWxsIG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhy
ZWFkIG9uIAorICAgICAgICAgICAgdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAoLVtDb29raWVT
dG9yYWdlT2JqQ0FkYXB0ZXIgcmVnaXN0ZXJGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zXSk6
IFNldCB1cCB0aGUgb2JzZXJ2ZXIgZm9yIGNvb2tpZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucy4KKyAg
ICAgICAgKC1bQ29va2llU3RvcmFnZU9iakNBZGFwdGVyIHVucmVnaXN0ZXJGb3JDb29raWVDaGFu
Z2VOb3RpZmljYXRpb25zXSk6IFJlbW92ZSB0aGUgb2JzZXJ2ZXIgZm9yIGNvb2tpZSBjaGFuZ2Ug
bm90aWZpY2F0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OmJlZ2luT2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyk6IENyZWF0ZSBvdXIgQ29va2llU3RvcmFnZU9iakNBZGFwdGVyLCBhbmQgY2FsbCByZWdp
c3RlckZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpmaW5p
c2hPYnNlcnZpbmdDb29raWVDaGFuZ2VzKTogQ2FsbCB1bnJlZ2lzdGVyRm9yQ29va2llQ2hhbmdl
Tm90aWZpY2F0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEFkZCBu
ZXcgZXhwb3J0ZWQgZnVuY3Rpb25zLgorICAgICAgICAKKyAgICAgICAgQWRkIG5ldyBmaWxlLgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogU2V0IHJvbGUgb24gZmlsZXMgd2UgbmVlZCB0
byBpbmNsdWRlIGluIFdlYktpdCB0byBwcml2YXRlLgorCiAyMDExLTAzLTAxICBKZXJlbXkgT3Js
b3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJv
Ymluc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDc5ODc2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4NSw2ICs1ODUs
NyBAQCBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jCiBfX1pON1dlYkNv
cmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja0MxRXYKIF9fWk43V2ViQ29yZTI3YXBwbGlj
YXRpb25Jc0Fkb2JlSW5zdGFsbGVyRXYKIF9fWk43V2ViQ29yZTI3YXBwbGljYXRpb25Jc01pY3Jv
c29mdE15RGF5RXYKK19fWk43V2ViQ29yZTI3YmVnaW5PYnNlcnZpbmdDb29raWVDaGFuZ2VzRXYK
IF9fWk43V2ViQ29yZTI3Y29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzRXYKIF9fWk43V2ViQ29y
ZTI3Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lRXYKIF9fWk43V2ViQ29yZTI4Y29udGV4dE1l
bnVJdGVtVGFnQ2FwaXRhbGl6ZUV2CkBAIC01OTIsNiArNTkzLDcgQEAgX19aTjdXZWJDb3JlMjhj
b250ZXh0TWVudUl0ZW1UYWdTaG93Q29sbwogX19aTjdXZWJDb3JlMjhjb250ZXh0TWVudUl0ZW1U
YWdTbWFydExpbmtzRXYKIF9fWk43V2ViQ29yZTI4Y29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVu
dUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZT
dHJpbmdFCitfX1pON1dlYkNvcmUyOGZpbmlzaE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgogX19a
TjdXZWJDb3JlMjhyZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyRVB2CiBfX1pON1dlYkNvcmUy
OWNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0RXYKIF9fWk43V2ViQ29yZTI5Y29udGV4dE1l
bnVJdGVtVGFnUmlnaHRUb0xlZnRFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDc5ODc2KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1NDUwLDYg
KzI1NDUwLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXENvb2tpZXNTdHJhdGVneS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDcm9zc1RocmVhZENvcGllci5j
cHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzk4NzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTgwMiw4ICs4MDIsMTAgQEAKIAkJMzM5MENBNTUwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlm
aWNhdGlvbkNlbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMzkwQ0E1MTBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCAqLzsgfTsKIAkJMzM5MENBNTYwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM5MENB
NTIwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNlbnRlci5oICovOyB9OwogCQkzMzkw
Q0E1ODBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ29udGVudHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzOTBDQTU0MEZGQzE1N0IwMDky
MTk2MiAvKiBOb3RpZmljYXRpb25Db250ZW50cy5oICovOyB9OworCQkzMzlCNUI2MzEzMURBQTMy
MDBGNDhEMDIgLyogQ29va2llc1N0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMzlCNUI2MjEzMURBQTMyMDBGNDhEMDIgLyogQ29va2llc1N0
cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMzNDMENDRDQxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0MwQ0NEMjExMkM1RTYy
MDBDRTA1N0QgLyogU2VjdXJlVGV4dElucHV0LmNwcCAqLzsgfTsKIAkJMzNDMENDRDUxMTJDNUU2
MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzNDMENDRDMxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRl
eHRJbnB1dC5oICovOyB9OworCQkzM0QwMjEyRDEzMURCMzdCMDA0MDkxQTggLyogQ29va2llU3Rv
cmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEz
RjAxRUExMjcwRTEwRDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzNzFBNjdDQjExQzZDN0RCMDAwNDdC
OEIgLyogSHlwaGVuYXRpb25DRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzNzFBNjdDQTExQzZDN0RCMDAwNDdCOEIgLyogSHlwaGVuYXRpb25DRi5j
cHAgKi87IH07CiAJCTM3MUY0RjQwMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0UwRDI1QjlB
RjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMzcxRjRGNDEwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUY0RjNG
MEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAgKi87IH07CkBAIC03MTY1LDYgKzcxNjcs
NyBAQAogCQkzMzkwQ0E1MjBGRkMxNTdCMDA5MjE5NjIgLyogTm90aWZpY2F0aW9uQ2VudGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbkNlbnRlci5oOyBw
YXRoID0gbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzM5MENBNTMwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlvbkNl
bnRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsg
cGF0aCA9IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzM5MENBNTQwRkZDMTU3QjAwOTIxOTYyIC8qIE5vdGlmaWNhdGlv
bkNvbnRlbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlv
bkNvbnRlbnRzLmg7IHBhdGggPSBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzOUI1QjYyMTMxREFBMzIwMEY0OEQwMiAv
KiBDb29raWVzU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29v
a2llc1N0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzQzBDQ0QyMTEy
QzVFNjIwMENFMDU3RCAvKiBTZWN1cmVUZXh0SW5wdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2VjdXJlVGV4dElucHV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzNDMENDRDMxMTJDNUU2MjAwQ0UwNTdEIC8qIFNlY3VyZVRleHRJbnB1dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWN1cmVUZXh0SW5wdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxQTY3Q0ExMUM2QzdEQjAwMDQ3QjhCIC8qIEh5
cGhlbmF0aW9uQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSHlw
aGVuYXRpb25DRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODI3NCw2ICsx
ODI3Nyw3IEBACiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRl
bS5oICovLAogCQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJ
CQk5MzUyMDg4MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCisJCQkJMzM5QjVC
NjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oICovLAogCQkJCTJFNDM0NjU2
MEY1NDZBOTkwMEIwRjFCQSAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgKi8sCiAJCQkJMkU0MzQ2
NTcwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmggKi8sCiAJCQkJRTExQUYx
NTAxMUI5QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAgKi8sCkBAIC0yMjQ4Miw2ICsyMjQ4Niw4
IEBACiAJCQkJOTNGMTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzOUI1QjYzMTMxREFBMzIwMEY0OEQwMiAvKiBD
b29raWVzU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzRDAyMTJEMTMxREIzN0IwMDQw
OTFBOCAvKiBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvb2tpZXNTdHJhdGVneV9oCisjZGVmaW5lIENv
b2tpZXNTdHJhdGVneV9oCisKKyNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDb29raWVzU3RyYXRlZ3kgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpID0gMDsKKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgfkNvb2tpZXNTdHJhdGVneSgpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorCisj
ZW5kaWYgLy8gQ29va2llc1N0cmF0ZWd5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiA3OTg3NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
MiArMzAsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb29raWVzU3RyYXRl
Z3k7CiBjbGFzcyBQbHVnaW5TdHJhdGVneTsKIGNsYXNzIExvY2FsaXphdGlvblN0cmF0ZWd5Owog
Y2xhc3MgVmlzaXRlZExpbmtTdHJhdGVneTsKIAogY2xhc3MgUGxhdGZvcm1TdHJhdGVnaWVzIHsK
IHB1YmxpYzoKKyAgICBDb29raWVzU3RyYXRlZ3kqIGNvb2tpZXNTdHJhdGVneSgpCisgICAgewor
ICAgICAgICBpZiAoIW1fY29va2llc1N0cmF0ZWd5KQorICAgICAgICAgICAgbV9jb29raWVzU3Ry
YXRlZ3kgPSBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKKyAgICAgICAgcmV0dXJuIG1fY29va2ll
c1N0cmF0ZWd5OworICAgIH0KKwogICAgIFBsdWdpblN0cmF0ZWd5KiBwbHVnaW5TdHJhdGVneSgp
CiAgICAgewogICAgICAgICBpZiAoIW1fcGx1Z2luU3RyYXRlZ3kpCkBAIC01OSw3ICs2Nyw4IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtU3RyYXRlZ2llcygpCi0gICAgICAg
IDogbV9wbHVnaW5TdHJhdGVneSgwKQorICAgICAgICA6IG1fY29va2llc1N0cmF0ZWd5KDApCisg
ICAgICAgICwgbV9wbHVnaW5TdHJhdGVneSgwKQogICAgICAgICAsIG1fbG9jYWxpemF0aW9uU3Ry
YXRlZ3koMCkKICAgICAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RyYXRlZ3koMCkKICAgICB7CkBAIC03
MCwxMCArNzksMTIgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IENvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCkgPSAwOwogICAgIHZpcnR1
YWwgUGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCkgPSAwOwogICAgIHZpcnR1
YWwgTG9jYWxpemF0aW9uU3RyYXRlZ3kqIGNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCkgPSAw
OwogICAgIHZpcnR1YWwgVmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJh
dGVneSgpID0gMDsKIAorICAgIENvb2tpZXNTdHJhdGVneSogbV9jb29raWVzU3RyYXRlZ3k7CiAg
ICAgUGx1Z2luU3RyYXRlZ3kqIG1fcGx1Z2luU3RyYXRlZ3k7CiAgICAgTG9jYWxpemF0aW9uU3Ry
YXRlZ3kqIG1fbG9jYWxpemF0aW9uU3RyYXRlZ3k7CiAgICAgVmlzaXRlZExpbmtTdHJhdGVneSog
bV92aXNpdGVkTGlua1N0cmF0ZWd5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Db29raWVTdG9yYWdlLmgJKHJldmlzaW9uIDc5ODc2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBzZXRDb29raWVTdG9y
YWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsKK3ZvaWQgYmVnaW5PYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKCk7Cit2b2lkIGZpbmlzaE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKTsKIAogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCShyZXZpc2lvbiA3OTg3NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTEgKzI4LDE3IEBACiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCisjaW5jbHVk
ZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQ
cml2Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCisjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCisjaW5jbHVkZSAiQ29va2ll
c1N0cmF0ZWd5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBzX2Nv
b2tpZVN0b3JhZ2U7CkBAIC03MCw2ICs3Niw0OCBAQCB2b2lkIHNldENvb2tpZVN0b3JhZ2VQcml2
YXRlQnJvd3NpbmdFbmFiCiAgICAgICAgIHNfY29va2llU3RvcmFnZSA9IDA7CiB9CiAKK3N0YXRp
YyB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkKHZvaWQqIGNvbnRleHQpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVH
SUVTKQorICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+bm90aWZ5
Q29va2llc0NoYW5nZWQoKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBub3RpZnlDb29raWVz
Q2hhbmdlZChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGluU3RvcmFnZSwgdm9pZCAqY29udGV4dCkK
K3sKKyAgICBjYWxsT25NYWluVGhyZWFkKCZub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVh
ZCwgMCk7Cit9CisKK3ZvaWQgYmVnaW5PYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBsb2Fk
ZXJSdW5Mb29wKCk7CisgICAgQVNTRVJUKHJ1bkxvb3ApOworCisgICAgQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZiBjb29raWVTdG9yYWdlID0gY3VycmVudENvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7CisKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlU2NoZWR1bGVXaXRo
UnVuTG9vcChjb29raWVTdG9yYWdlLCBydW5Mb29wLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwor
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBZGRPYnNlcnZlcihjb29raWVTdG9yYWdlLCBydW5Mb29w
LCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIG5vdGlmeUNvb2tpZXNDaGFuZ2VkLCAwKTsKK30KKwor
dm9pZCBmaW5pc2hPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCisgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBsb2FkZXJSdW5Mb29wKCk7
CisgICAgQVNTRVJUKHJ1bkxvb3ApOworCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29r
aWVTdG9yYWdlID0gY3VycmVudENvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NFUlQoY29va2llU3Rv
cmFnZSk7CisKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlUmVtb3ZlT2JzZXJ2ZXIoY29va2llU3Rv
cmFnZSwgcnVuTG9vcCwga0NGUnVuTG9vcERlZmF1bHRNb2RlLCBub3RpZnlDb29raWVzQ2hhbmdl
ZCwgMCk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVVuc2NoZWR1bGVGcm9tUnVuTG9vcChjb29r
aWVTdG9yYWdlLCBydW5Mb29wLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdl
TWFjLm1tCShyZXZpc2lvbiA3OTg3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDUw
IEBACiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgogCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVW51
c2VkUGFyYW0uaD4KKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorI2luY2x1ZGUgIkNv
b2tpZXNTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2VuZGlm
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIENvb2tpZVN0b3JhZ2VP
YmpDQWRhcHRlciA6IE5TT2JqZWN0CistKHZvaWQpbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5U
aHJlYWQ7CistKHZvaWQpY29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOihOU05vdGlm
aWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0odm9pZClyZWdpc3RlckZvckNvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnM7CistKHZvaWQpdW5yZWdpc3RlckZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnM7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIKKwor
LSh2b2lkKW5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkCit7CisjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVn
eSgpLT5ub3RpZnlDb29raWVzQ2hhbmdlZCgpOworI2VuZGlmCit9CisKKy0odm9pZCljb29raWVz
Q2hhbmdlZE5vdGlmaWNhdGlvbkhhbmRsZXI6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9u
Cit7CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisKKyAgICBbc2VsZiBwZXJmb3Jt
U2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWlu
VGhyZWFkKSB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxEb25lOkZBTFNFXTsKK30KKworLSh2b2lk
KXJlZ2lzdGVyRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucworeworICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2Vs
ZWN0b3IoY29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5kbGVyOikgbmFtZTpOU0hUVFBDb29r
aWVNYW5hZ2VyQ29va2llc0NoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0OltOU0hUVFBDb29raWVT
dG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXV07Cit9CisKKy0odm9pZCl1bnJlZ2lzdGVy
Rm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucworeworICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOk5TSFRUUENvb2tpZU1h
bmFnZXJDb29raWVzQ2hhbmdlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKK30KKworQGVuZAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDQgKzc5LDE5IEBAIHZvaWQgc2V0Q29va2ll
U3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWIKICAgICB3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRl
QnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCitzdGF0aWMgQ29va2llU3RvcmFnZU9iakNB
ZGFwdGVyICpjb29raWVTdG9yYWdlQWRhcHRlcjsKKwordm9pZCBiZWdpbk9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXMoKQoreworICAgIGlmICghY29va2llU3RvcmFnZUFkYXB0ZXIpCisgICAgICAgIGNv
b2tpZVN0b3JhZ2VBZGFwdGVyID0gW0Nvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciBhbGxvY107Cisg
ICAgW2Nvb2tpZVN0b3JhZ2VBZGFwdGVyIHJlZ2lzdGVyRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0
aW9uc107Cit9CisKK3ZvaWQgZmluaXNoT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCit7CisgICAg
QVNTRVJUKGNvb2tpZVN0b3JhZ2VBZGFwdGVyKTsKKyAgICBbY29va2llU3RvcmFnZUFkYXB0ZXIg
dW5yZWdpc3RlckZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnNdOworfQorCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiA4MDA3MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTAzLTAxICBCcmlhbiBXZWluc3RlaW4g
IDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQYXJ0IG9mIFdlYktpdDI6IE5lZWQgYSB3YXkgdG8gc2VuZCBub3Rp
ZmljYXRpb25zIHRvIGNsaWVudCB3aGVuIGNvb2tpZXMgY2hhbmdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTQyNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vOTA1NjAyNz4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGlzcGF0Y2hE
aWRNb2RpZnlDb29raWVzKTogQWRkIGEgc3R1YiB3aXRoIGEgRklYTUUgdG8gc2VuZCBhIAorICAg
ICAgICAgICAgbWVzc2FnZSB0byB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUNvb2tpZXNTdHJhdGVneSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llc0NoYW5nZWQpOiBDYWxs
IFdlYkNvb2tpZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5Q29va2llcy4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorCiAyMDEx
LTAzLTAxICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgbWlzc2VkIHVwZGF0aW5nIGEgY2FsbCB0byBXZWJDb3JlOjpjb21wdXRlVmll
d3BvcnRBdHRyaWJ1dGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA3OTg3NikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDExIEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdl
ci5oIgogCiAjaW5jbHVkZSAiTWVzc2FnZUlELmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5E
YXRhLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC03Niw0ICs3NCw5IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29v
a2llcygKICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKCk7CiB9CiAKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlDb29raWVzKCkKK3sKKyAgICAvLyBGSVhNRSA8
aHR0cDovL3dlYmtpdC5vcmcvYi81NTQyNz46IFNlbmQgYSBtZXNzYWdlIHRvIHRoZSBVSVByb2Nl
c3MgdGhhdCB0aGUgY29va2llcyBoYXZlIGNoYW5nZWQuCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5oCShyZXZpc2lvbiA3OTg3NikKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1zdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwotCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb29raWVNYW5hZ2VyKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViQ29va2llTWFuYWdlciYgc2hhcmVkKCk7CiAKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIAorICAgIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlD
b29raWVzKCk7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29va2llTWFuYWdlcigpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gNzk4NzYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIlBsdWdp
bkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgpAQCAtODksNyArOTAsMTAgQEAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpXZWJQbGF0Zm9y
bVN0cmF0ZQogewogfQogCi0vLyBQbHVnaW5TdHJhdGVneQorQ29va2llc1N0cmF0ZWd5KiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpCit7CisgICAgcmV0dXJu
IHRoaXM7Cit9CiAKIFBsdWdpblN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0
ZVBsdWdpblN0cmF0ZWd5KCkKIHsKQEAgLTEwNiw2ICsxMTAsMTMgQEAgVmlzaXRlZExpbmtTdHJh
dGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaQogICAgIHJldHVybiB0aGlzOwogfQogCisvLyBDb29r
aWVzU3RyYXRlZ3kKKwordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZXND
aGFuZ2VkKCkKK3sKKyAgICBXZWJDb29raWVNYW5hZ2VyOjpzaGFyZWQoKS5kaXNwYXRjaERpZE1v
ZGlmeUNvb2tpZXMoKTsKK30KKwogLy8gUGx1Z2luU3RyYXRlZ3kKIAogdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoKQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiA3OTg3NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogCisj
aW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtU3RyYXRlZ2llcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luU3RyYXRlZ3kuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXphdGlvblN0cmF0ZWd5Lmg+CkBAIC0zNSw3ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRlIFdlYkNvcmU6OlBs
dWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgeworY2xhc3MgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3ksIHBy
aXZhdGUgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6Vmlz
aXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgp
OwogICAgIApAQCAtNDMsMTAgKzQ0LDE0IEBAIHByaXZhdGU6CiAgICAgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzKCk7CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCisgICAg
dmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgp
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0
ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSogY3JlYXRl
TG9jYWxpemF0aW9uU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5r
U3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAorICAgIC8vIFdlYkNvcmU6
OkNvb2tpZXNTdHJhdGVneQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgp
OworCiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgcmVm
cmVzaFBsdWdpbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJD
b3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA4MDA3MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAzLTAxICBCcmlhbiBXZWluc3Rl
aW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIFdlYktpdDI6IE5lZWQgYSB3YXkgdG8gc2VuZCBu
b3RpZmljYXRpb25zIHRvIGNsaWVudCB3aGVuIGNvb2tpZXMgY2hhbmdlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTQyNworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vOTA1NjAyNz4KKyAgICAgICAgCisgICAgICAgIEFkZCBzdHVicyBmb3IgQ29va2ll
c1N0cmF0ZWd5IG9uIE1hYyBXZWJLaXQxLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVD
b29raWVzU3RyYXRlZ3kpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlD
b29raWVzQ2hhbmdlZCk6CisKIDIwMTEtMDItMjMgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gNzk4NzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTIgKzI2LDEzIEBACiAjaWZuZGVmIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCiAjZGVmaW5l
IFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZXNTdHJh
dGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbHVnaW5TdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemF0
aW9uU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaD4K
IAotY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
U3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJD
b3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQ
bGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2
YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkxvY2FsaXphdGlv
blN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKICAgICAKQEAgLTM5LDEwICs0MCwxNCBA
QCBwcml2YXRlOgogICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llcygpOwogICAgIAogICAgIC8vIFdl
YkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcworICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBs
dWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kqIGNyZWF0ZUxvY2FsaXphdGlvblN0cmF0ZWd5KCk7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlu
a1N0cmF0ZWd5KCk7CiAKKyAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKKyAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKKwogICAgIC8vIFdlYkNvcmU6OlBsdWdp
blN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7CiAgICAgdmlydHVh
bCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkocmV2aXNpb24gNzk4NzYp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDEwIEBAIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6V2ViUGxhdGZvcm1TdHJhdGUKIHsKIH0KIAotLy8gUGx1Z2luU3RyYXRlZ3kKK0Nvb2tp
ZXNTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVDb29raWVzU3RyYXRlZ3ko
KQoreworICAgIHJldHVybiB0aGlzOworfQogCiBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSgpCiB7CkBAIC02Nyw2ICs3MCwxMCBAQCBW
aXNpdGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpCiAgICAgcmV0dXJuIHRoaXM7
CiB9CiAKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlDb29raWVzQ2hhbmdlZCgp
Cit7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCiB7
CiAgICAgW1tXZWJQbHVnaW5EYXRhYmFzZSBzaGFyZWREYXRhYmFzZV0gcmVmcmVzaF07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODAwNzMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAzLTAxICBCcmlhbiBX
ZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIFdlYktpdDI6IE5lZWQgYSB3YXkgdG8g
c2VuZCBub3RpZmljYXRpb25zIHRvIGNsaWVudCB3aGVuIGNvb2tpZXMgY2hhbmdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTQyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vOTA1NjAyNz4KKyAgICAgICAgCisgICAgICAgIEFkZCBzdHVicyBmb3Ig
Q29va2llc1N0cmF0ZWd5IG9uIFF0IFdlYktpdDEuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjcmVhdGVDb29raWVzU3RyYXRlZ3kpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpub3RpZnlDb29raWVzQ2hhbmdlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTEtMDMtMDEgIEpvc2VwaCBQZWNvcmFybyAgPGpv
ZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDc5ODc2KQorKysg
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1NywxMCBAQCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OldlYlBsYXRmb3JtU3RyYXRlCiB9CiAKIAotLy8gUGx1Z2luU3RyYXRlZ3kKK0Nvb2tpZXNTdHJh
dGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVDb29raWVzU3RyYXRlZ3koKQorewor
ICAgIHJldHVybiB0aGlzOworfQogCiBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjcmVhdGVQbHVnaW5TdHJhdGVneSgpCiB7CkBAIC03NCw2ICs3NywxMCBAQCBWaXNpdGVk
TGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAK
K3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlDb29raWVzQ2hhbmdlZCgpCit7Cit9
CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCiB7CiAgICAg
UGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+cmVmcmVzaCgpOwpJbmRleDogU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCShyZXZpc2lvbiA3OTg3NikKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZm5kZWYgV2ViUGxhdGZvcm1TdHJhdGVnaWVzX2gKICNkZWZpbmUgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzX2gKIAorI2luY2x1ZGUgPENvb2tpZXNTdHJhdGVneS5oPgogI2luY2x1ZGUg
PExvY2FsaXphdGlvblN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8UGxhdGZvcm1TdHJhdGVnaWVzLmg+
CiAjaW5jbHVkZSA8UGx1Z2luU3RyYXRlZ3kuaD4KQEAgLTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUGFnZTsKIH0KIAotY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpQ
bHVnaW5TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSwgcHJp
dmF0ZSBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKK2NsYXNzIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2Vi
Q29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZp
c2l0ZWRMaW5rU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUo
KTsKIApAQCAtNDUsOSArNDYsMTMgQEAgcHJpdmF0ZToKICAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMoKTsKIAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcworICAgIHZpcnR1YWwg
V2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3kqIGNyZWF0ZUxvY2FsaXph
dGlvblN0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CisgICAgCisgICAgLy8gV2ViQ29yZTo6Q29v
a2llc1N0cmF0ZWd5CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7CiAK
ICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNo
UGx1Z2lucygpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gODAwNzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAxMS0wMy0wMSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBXZWJL
aXQyOiBOZWVkIGEgd2F5IHRvIHNlbmQgbm90aWZpY2F0aW9ucyB0byBjbGllbnQgd2hlbiBjb29r
aWVzIGNoYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTU0MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwNTYwMjc+CisgICAgICAgIAorICAg
ICAgICBBZGQgc3R1YnMgZm9yIENvb2tpZXNTdHJhdGVneSBvbiBXaW5kb3dzIFdlYktpdDEuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVDb29raWVzU3RyYXRlZ3kpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlDb29raWVzQ2hhbmdlZCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTEtMDIt
MjggIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBS
eW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDc5ODc2KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsMTAgQEAgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpXZWJQbGF0Zm9ybVN0cmF0ZQogICAgIHNldFBsYXRmb3JtU3RyYXRlZ2llcyh0aGlzKTsK
IH0KIAotLy8gUGx1Z2luU3RyYXRlZ3kKK0Nvb2tpZXNTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjcmVhdGVDb29raWVzU3RyYXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQog
CiBQbHVnaW5TdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQbHVnaW5TdHJh
dGVneSgpCiB7CkBAIC02Myw2ICs2NiwxMCBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK3ZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpub3RpZnlDb29raWVzQ2hhbmdlZCgpCit7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCiB7CiAgICAgUGx1Z2luRGF0YWJhc2U6Omluc3Rh
bGxlZFBsdWdpbnMoKS0+cmVmcmVzaCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9u
IDc5ODc2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxMyBAQAogI2lmbmRlZiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaAogI2RlZmluZSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaAog
CisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVzU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0xvY2FsaXphdGlvblN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmF0
ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9WaXNpdGVkTGlua1N0cmF0ZWd5Lmg+CiAKLWNsYXNzIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcyA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29y
ZTo6UGx1Z2luU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9jYWxpemF0aW9uU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSB7CitjbGFzcyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzLCBwcml2YXRl
IFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpQbHVnaW5TdHJhdGVn
eSwgcHJpdmF0ZSBXZWJDb3JlOjpMb2NhbGl6YXRpb25TdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3Jl
OjpWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplKCk7CiAgICAgCkBAIC0zOSwxMCArNDAsMTQgQEAgcHJpdmF0ZToKICAgICBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMoKTsKICAgICAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0
ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2lu
U3RyYXRlZ3koKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkxvY2FsaXphdGlvblN0cmF0ZWd5KiBj
cmVhdGVMb2NhbGl6YXRpb25TdHJhdGVneSgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRl
ZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwogCisgICAgLy8gV2Vi
Q29yZTo6Q29va2llc1N0cmF0ZWd5CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFu
Z2VkKCk7CisKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQogICAgIHZpcnR1YWwgdm9p
ZCByZWZyZXNoUGx1Z2lucygpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0
IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsK
</data>
<flag name="review"
          id="76309"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84483</attachid>
            <date>2011-03-02 16:30:59 -0800</date>
            <delta_ts>2011-03-02 20:20:44 -0800</delta_ts>
            <desc>[PATCH] Fix Part 2</desc>
            <filename>cookie_notification_client.patch</filename>
            <type>text/plain</type>
            <size>24137</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMTgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDIgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc3Qgb2YgV2ViS2l0MjogTmVlZCBhIHdheSB0byBz
ZW5kIG5vdGlmaWNhdGlvbnMgdG8gY2xpZW50IHdoZW4gY29va2llcyBjaGFuZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NDI3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS85MDU2MDI3PgorCisgICAgICAgIEFkZCBmdW5jdGlvbnMgdG8gYmUgZXhw
b3J0ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKwogMjAxMS0wMy0wMiAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYXNzZXJ0aW9uIGZh
aWx1cmVzIG9uIEd0ayBib3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gODAx
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAt
NTc4LDYgKzU3OCw3IEBAIF9fWk43V2ViQ29yZTI2VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IK
IF9fWk43V2ViQ29yZTI2VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IyOGZvY3VzZWRFbGVtZW50
QXRHZXN0dXJlU3RhcnRFdgogX19aTjdXZWJDb3JlMjZjb250ZXh0TWVudUl0ZW1UYWdGb250TWVu
dUV2CiBfX1pON1dlYkNvcmUyNmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rRXYKK19fWk43V2Vi
Q29yZTI2c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgogX19aTjdXZWJDb3JlMjZ1c2VzVGVz
dE1vZGVGb2N1c1JpbmdDb2xvckV2CiBfX1pON1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQmFzZUMyRXYKIF9fWk43V2ViQ29yZTI3Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uQzFF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktOUzFfNlN0cmluZ0UKQEAgLTU4Nyw2ICs1
ODgsNyBAQCBfX1pON1dlYkNvcmUyN2FwcGxpY2F0aW9uSXNBZG9iZUluc3RhbGxlCiBfX1pON1dl
YkNvcmUyN2FwcGxpY2F0aW9uSXNNaWNyb3NvZnRNeURheUV2CiBfX1pON1dlYkNvcmUyN2NvbnRl
eHRNZW51SXRlbVRhZ1Nob3dGb250c0V2CiBfX1pON1dlYkNvcmUyN2NvbnRleHRNZW51SXRlbVRh
Z1VuZGVybGluZUV2CitfX1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0V2
CiBfX1pON1dlYkNvcmUyOGNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemVFdgogX19aTjdXZWJD
b3JlMjhjb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzRXYKIF9fWk43V2ViQ29yZTI4Y29udGV4
dE1lbnVJdGVtVGFnU21hcnRMaW5rc0V2CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDE4MikK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUy
IEBACisyMDExLTAzLTAyICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXN0IG9m
IFdlYktpdDI6IE5lZWQgYSB3YXkgdG8gc2VuZCBub3RpZmljYXRpb25zIHRvIGNsaWVudCB3aGVu
IGNvb2tpZXMgY2hhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NTQyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA1NjAyNz4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBXZWJQ
cm9jZXNzIDwtPiBVSVByb2Nlc3MgYWJvdXQgc3RhcnRpbmcvc3RvcHBpbmcKKyAgICAgICAgdG8g
bGlzdGVuIGZvciBjb29raWVzIGNoYW5naW5nLCBhbmQgYWRkcyBhIG1lY2hhbmlzbSBmb3IgdGhl
IFdlYlByb2Nlc3MgdG8gbm90aWZ5IHRoZSBVSVByb2Nlc3MKKyAgICAgICAgd2hlbiB0aGUgY29v
a2llcyBoYXZlIGNoYW5nZWQuIFRoZSBXZWJQcm9jZXNzIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUg
VUlQcm9jZXNzIHdoZW4gdGhlIGNvb2tpZXMKKyAgICAgICAgY2hhbmdlLCBhbmQgdGhlIFVJUHJv
Y2VzcyBwYXNzZXMgdGhpcyBhbG9uZyB0byB0aGUgV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHA6CisgICAg
ICAgIChXS0Nvb2tpZU1hbmFnZXJTZXRDbGllbnQpOiBDYWxsIHRocm91Z2ggdG8gV2ViQ29va2ll
TWFuYWdlclByb3h5LgorICAgICAgICAoV0tDb29raWVNYW5hZ2VyU3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKTogRGl0dG8uCisgICAgICAgIChXS0Nvb2tpZU1hbmFnZXJTdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29v
a2llTWFuYWdlci5oOiBBZGQgbmV3IGZ1bmN0aW9ucyBhbmQgYSBXS0Nvb2tpZU1hbmFnZXJDbGll
bnQKKyAgICAgICAgICAgIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBkaWRNb2RpZnlDb29raWVz
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKTogU2VuZCB0aGUgbWVzc2FnZSBkb3duIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzdG9wT2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmRpZE1vZGlmeUNvb2tpZXMpOiBUZWxsIHRoZSBXS0Nvb2tpZU1hbmFnZXJDbGllbnQgdGhlIGNv
b2tpZXMgd2VyZQorICAgICAgICAgICAgbW9kaWZpZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW46IEFkZCBuZXcgbWVzc2FnZXMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudDo6ZGlkTW9kaWZ5Q29va2llcyk6IENh
bGxzIHRocm91Z2ggdG8gdGhlIGNsaWVudCBzYXlpbmcgdGhhdAorICAgICAgICAgICAgY29va2ll
cyB3ZXJlIG1vZGlmaWVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHlDbGllbnQuaDogQWRkZWQuCisgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpz
dGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOiBDYWxsIHRocm91Z2ggdG8gV2ViQ29yZTo6c3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzCisgICAgICAgICAgICAob24gcGxhdGZvcm1zIHRoYXQg
c3VwcG9ydCBpdCkuCisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKTogRGl0dG8gKGZvciBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdl
cykuCisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5
Q29va2llcyk6IFNlbmQgYSBtZXNzYWdlIHRvIHRoZSBVSSBwcm9jZXNzIHRoYXQgY29va2llcyBj
aGFuZ2VkLgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMu
aW46CisgICAgICAgIAorICAgICAgICBBZGQgbmV3IGZpbGVzLgorICAgICAgICAqIFdlYktpdDIu
cHJvOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIw
MTEtMDMtMDIgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9u
IDgwMTQ5KQorKysgU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTQxNiw2ICs0MTYsOCBAQCBsaWJXZWJLaXQyX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmNwcCBcCisJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcCBc
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gODAxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9X
ZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5oIFwKKyAgICBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50
LmggXAogICAgIFVJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIFwKICAgICBVSVBy
b2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dl
YkRvd25sb2FkQ2xpZW50LmggXApAQCAtMzQ1LDYgKzM0Niw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwKICAgICBVSVBy
b2Nlc3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuY3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xp
ZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcCBcCiAg
ICAgVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5Q2xpZW50LmNwcCBcCiAgICAgVUlQ
cm9jZXNzL1dlYkRvd25sb2FkQ2xpZW50LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gODAxNDkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTEgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmludmFsaWRhdGUoKQogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJh
Y2tzKTsKIH0KIAordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmluaXRpYWxpemVDbGllbnQo
Y29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOworfQorCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVz
c2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7
CiAgICAgZGlkUmVjZWl2ZVdlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwg
bWVzc2FnZUlELCBhcmd1bWVudHMpOwpAQCAtMTA1LDQgKzExMCwyNSBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29vCiAgICAgbV93ZWJDb250ZXh0LT5wcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXMoKSwgMCk7
CiB9CiAKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoKQoreworICAgIEFTU0VSVChtX3dlYkNvbnRleHQpOworICAgIGlmICghbV93ZWJDb250
ZXh0LT5oYXNWYWxpZFByb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fd2ViQ29udGV4
dC0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCit7CisgICAgQVNTRVJUKG1fd2ViQ29udGV4
dCk7CisgICAgaWYgKCFtX3dlYkNvbnRleHQtPmhhc1ZhbGlkUHJvY2VzcygpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV93ZWJDb250ZXh0LT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OlN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCksIDApOworfQorCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkTW9kaWZ5Q29va2llcygpCit7CisgICAgbV9jbGll
bnQuZGlkTW9kaWZ5Q29va2llcyh0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5oCShyZXZpc2lvbiA4MDE0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUg
IkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQsMTEgKzU1LDE2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBtX3dlYkNv
bnRleHQgPSAwOyB9CisKKyAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVN
YW5hZ2VyQ2xpZW50Kik7CiAgICAgCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQ
YXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+KTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKICAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMo
KTsKIAorICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CisgICAgdm9pZCBz
dG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOworCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqKTsKIAogcHJpdmF0ZToKQEAgLTY3LDExICs3MywxNSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQogCiAgICAg
dm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworCisgICAgdm9pZCBkaWRNb2RpZnlDb29raWVzKCk7CiAgICAg
CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqKTsKIAogICAgIFdlYkNvbnRleHQqIG1fd2ViQ29udGV4dDsKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gPiBtX2FycmF5Q2FsbGJhY2tzOworCisgICAgV2Vi
Q29va2llTWFuYWdlclByb3h5Q2xpZW50IG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDgwMTQ5KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMjIsNCArMjIsNiBAQAogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewogICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxXVEY6
OlN0cmluZz4gaG9zdG5hbWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICAKKyAgICBEaWRN
b2RpZnlDb29raWVzKCkKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmgiCisKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5Q2xpZW50OjpkaWRNb2RpZnlDb29raWVzKFdlYkNvb2tpZU1hbmFnZXJQcm94
eSogY29va2llTWFuYWdlcikKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZE1vZGlmeUNvb2tpZXMp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZE1vZGlmeUNvb2tpZXModG9BUEko
Y29va2llTWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvb2tpZU1hbmFnZXJQcm94
eUNsaWVudF9oCisjZGVmaW5lIFdlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudF9oCisKKyNpbmNs
dWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS0Nvb2tpZU1hbmFnZXIuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29va2ll
TWFuYWdlclByb3h5OworCitjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQgOiBwdWJs
aWMgQVBJQ2xpZW50PFdLQ29va2llTWFuYWdlckNsaWVudD4geworcHVibGljOgorICAgIHZvaWQg
ZGlkTW9kaWZ5Q29va2llcyhXZWJDb29raWVNYW5hZ2VyUHJveHkqKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50X2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1h
bmFnZXIuY3BwCShyZXZpc2lvbiA4MDE0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMyBA
QCBXS1R5cGVJRCBXS0Nvb2tpZU1hbmFnZXJHZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQSShX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkFQSVR5cGUpOwogfQogCit2b2lkIFdLQ29va2llTWFuYWdl
clNldENsaWVudChXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlclJlZiwgY29uc3QgV0tD
b29raWVNYW5hZ2VyQ2xpZW50KiB3a0NsaWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYgd2tD
bGllbnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwoY29va2llTWFuYWdl
clJlZiktPmluaXRpYWxpemVDbGllbnQod2tDbGllbnQpOworfQorCiB2b2lkIFdLQ29va2llTWFu
YWdlckdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5h
Z2VyUmVmLCB2b2lkKiBjb250ZXh0LCBXS0Nvb2tpZU1hbmFnZXJHZXRDb29raWVIb3N0bmFtZXNG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICB0b0ltcGwoY29va2llTWFuYWdlclJlZiktPmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFj
aykpOwpAQCAtNTAsMyArNTcsMTMgQEAgdm9pZCBXS0Nvb2tpZU1hbmFnZXJEZWxldGVBbGxDb29r
aWVzKFdLQwogewogICAgIHRvSW1wbChjb29raWVNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsQ29va2ll
cygpOwogfQorCit2b2lkIFdLQ29va2llTWFuYWdlclN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cyhXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlcikKK3sKKyAgICB0b0ltcGwoY29va2ll
TWFuYWdlciktPnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOworfQorCit2b2lkIFdLQ29v
a2llTWFuYWdlclN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdLQ29va2llTWFuYWdlclJlZiBj
b29raWVNYW5hZ2VyKQoreworICAgIHRvSW1wbChjb29raWVNYW5hZ2VyKS0+c3RvcE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0Nvb2tpZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmgJKHJldmlzaW9uIDgwMTQ5KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwxNCArMzIsMjkgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8vIENvb2tpZSBNYW5h
Z2VyIENsaWVudAordHlwZWRlZiB2b2lkICgqV0tDb29raWVNYW5hZ2VyRGlkTW9kaWZ5Q29va2ll
c0NhbGxiYWNrKShXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS0Nvb2tpZU1hbmFnZXJDbGllbnQgeworICAgIGludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tDb29raWVN
YW5hZ2VyRGlkTW9kaWZ5Q29va2llc0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRNb2RpZnlDb29raWVzOworfTsKK3R5cGVkZWYgc3RydWN0IFdLQ29va2llTWFuYWdlckNs
aWVudCBXS0Nvb2tpZU1hbmFnZXJDbGllbnQ7CisKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0Nvb2tp
ZU1hbmFnZXJHZXRUeXBlSUQoKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb29raWVNYW5hZ2VyU2V0
Q2xpZW50KFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyLCBjb25zdCBXS0Nvb2tpZU1h
bmFnZXJDbGllbnQqIGNsaWVudCk7CisKIHR5cGVkZWYgdm9pZCAoKldLQ29va2llTWFuYWdlckdl
dENvb2tpZUhvc3RuYW1lc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7
CiBXS19FWFBPUlQgdm9pZCBXS0Nvb2tpZU1hbmFnZXJHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhX
S0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tDb29raWVN
YW5hZ2VyR2V0Q29va2llSG9zdG5hbWVzRnVuY3Rpb24gZnVuY3Rpb24pOwogCiBXS19FWFBPUlQg
dm9pZCBXS0Nvb2tpZU1hbmFnZXJEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV0tDb29raWVNYW5h
Z2VyUmVmIGNvb2tpZU1hbmFnZXIsIFdLU3RyaW5nUmVmIGhvc3RuYW1lKTsKIFdLX0VYUE9SVCB2
b2lkIFdLQ29va2llTWFuYWdlckRlbGV0ZUFsbENvb2tpZXMoV0tDb29raWVNYW5hZ2VyUmVmIGNv
b2tpZU1hbmFnZXIpOwogCitXS19FWFBPUlQgdm9pZCBXS0Nvb2tpZU1hbmFnZXJTdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV0tDb29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIpOworV0tf
RVhQT1JUIHZvaWQgV0tDb29raWVNYW5hZ2VyU3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV0tD
b29raWVNYW5hZ2VyUmVmIGNvb2tpZU1hbmFnZXIpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gODAxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsyNjEs
OCBAQAogCQkzMzM2NzY1NjEzMEM5RUNBMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzMzNjc2NTIxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyTWVz
c2FnZXMuaCAqLzsgfTsKIAkJMzMzNjc2NTcxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzNjc2NTMxMzBDOUVDQTAwNkM5REUyIC8qIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkz
MzM2NzY1ODEzMEM5RUNCMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MzM2NzY1NDEzMEM5RUNBMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmggKi87IH07CisJCTMzQUExMDY2MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVN
YW5hZ2VyUHJveHlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzNBQTEwNjQxMzFGMDYwMDAwRDRBNTc1IC8qIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eUNsaWVudC5jcHAgKi87IH07CisJCTMzQUExMDY3MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJD
b29raWVNYW5hZ2VyUHJveHlDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMzQUExMDY1MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5h
Z2VyUHJveHlDbGllbnQuaCAqLzsgfTsKIAkJMzNGOUQ1QjkxMzEyRjFFRTAwMEQ2ODNGIC8qIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzNGOUQ1QjgxMzEyRjFFRTAwMEQ2ODNGIC8qIFdlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwICovOyB9OwogCQkzN0M0RTlGNjEzMUM2RTdFMDAyOUJE
NUEgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMzk2RUE1NTEyRTBFRDJEMDBGNEZFQjcgLyogY29uZmlnLmggKi87IH07CiAJCTM3RjYy
M0I4MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZERjYgLyog
V0tGaW5kT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKQEAgLTEwODAsNiArMTA4Miw4IEBACiAJCTMzMzY3NjUyMTMwQzlFQ0EwMDZDOURFMiAv
KiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzNjc2NTMxMzBDOUVDQTAwNkM5REUyIC8qIFdlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMzY3NjU0MTMwQzlF
Q0EwMDZDOURFMiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzQUExMDY0MTMxRjA2
MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzNBQTEwNjUxMzFGMDYwMDAwRDRBNTc1
IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzNGOUQ1QjgxMzEyRjFFRTAwMEQ2ODNGIC8qIFdlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IG5hbWUg
PSBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcDsgcGF0aCA9IFJlc291cmNlQ2FjaGUv
Y2YvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3RjYyM0I3MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZE9wdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRl
eHRNZW51Q2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMzUxLDYgKzIzNTUsOCBAQAogCQkJCTMzMDkzNDUyMTMxNUI5NzUwMDk3QTdCQyAvKiBX
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTMzMDkzNDUzMTMxNUI5NzUwMDk3QTdC
QyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQkzMzA5MzQ1NDEzMTVCOTc1MDA5
N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTMzQUEx
MDY0MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuY3BwICov
LAorCQkJCTMzQUExMDY1MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlD
bGllbnQuaCAqLywKIAkJCQlGNjJBNzY1OTEyQjFBQkMzMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyUHJveHkuY3BwICovLAogCQkJCUY2MkE3NjVBMTJCMUFCQzMwMDA1RjFCNiAvKiBXZWJE
YXRhYmFzZU1hbmFnZXJQcm94eS5oICovLAogCQkJCUY2MkE3NjVCMTJCMUFCQzMwMDA1RjFCNiAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTMzODMsNiArMzM4
OSw3IEBACiAJCQkJQkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0U4MUQ5OTEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVw
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDNEU5RjYxMzFDNkU3RTAwMjlCRDVBIC8qIGNv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzNBQTEwNjcxMzFGMDYwMDAwRDRBNTc1IC8qIFdl
YkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zOTYwLDYgKzM5
NjcsNyBAQAogCQkJCTMzMDkzNDVBMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tpZU1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFODFEOEMxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJ
bmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTgxRDk4MTMxQUUwMjEwMDI0MTkxMCAvKiBE
aWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMzQUExMDY2MTMxRjA2
MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA4MDE0OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzQsOSArNzQsMjMgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVz
KAogICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoKTsKIH0KIAordm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQoreworI2lmIFVTRShDRk5FVFdP
UkspIHx8IFBMQVRGT1JNKE1BQykKKyAgICBXZWJDb3JlOjpzdGFydE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZp
bmdDb29raWVDaGFuZ2VzKCkKK3sKKyNpZiBVU0UoQ0ZORVRXT1JLKSB8fCBQTEFURk9STShNQUMp
CisgICAgV2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKTsKKyNlbmRpZgorfQor
CiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5Q29va2llcygpCiB7Ci0g
ICAgLy8gRklYTUUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTU0Mjc+OiBTZW5kIGEgbWVzc2FnZSB0
byB0aGUgVUlQcm9jZXNzIHRoYXQgdGhlIGNvb2tpZXMgaGF2ZSBjaGFuZ2VkLgorICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpEaWRNb2RpZnlDb29raWVzKCksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuaAkocmV2aXNpb24gODAxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw2ICs1Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKCk7CiAKKyAgICB2b2lk
IHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOworICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nv
b2tpZUNoYW5nZXMoKTsKKwogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkNvb2tpZU1hbmFnZXJNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciopOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9D
b29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDgwMTQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI3LDQgKzI3LDcg
QEAKICAgICB2b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV1RGOjpTdHJpbmcgaG9zdG5hbWUp
CiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzKCkKKyAgICAKKyAgICB2b2lkIFN0YXJ0T2JzZXJ2
aW5nQ29va2llQ2hhbmdlcygpCisgICAgdm9pZCBTdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygp
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA4MDE0OSkKKysr
IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQx
MSw2ICsyNDExLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuY3BwIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3Nc
V2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgo=
</data>
<flag name="review"
          id="76463"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84637</attachid>
            <date>2011-03-03 15:08:44 -0800</date>
            <delta_ts>2011-03-03 15:17:26 -0800</delta_ts>
            <desc>[PATCH] Cleanup</desc>
            <filename>cookie_notification_cleanup.patch</filename>
            <type>text/plain</type>
            <size>7379</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMjg3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDMtMDMgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFudXAgZnJvbSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU0MjcuCisgICAgICAgIAorICAgICAgICBDYWxsIFdlYkNv
cmU6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyBhbmQgV2ViQ29yZTo6c3RvcE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMKKyAgICAgICAgb24gYWxsIHBsYXRmb3JtcywgYW5kIHN0dWIgdGhlIGZ1
bmN0aW9ucyBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBpbXBsZW1lbnQgdGhlbS4KKyAgICAgICAg
CisgICAgICAgIEFkZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMgYW5kIHN0b3BPYnNlcnZp
bmdDb29raWVDaGFuZ2VzIHRvIFRlbXBvcmFyeUxpbmtTdHVicworICAgICAgICBmb3IgcGxhdGZv
cm1zIHRoYXQgZG9uJ3QgaW1wbGVtZW50IHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmRy
b2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYnJldy9UZW1w
b3JhcnlMaW5rU3R1YnMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1RlbXBvcmFy
eUxpbmtTdHVicy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vaGFpa3UvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnNRdC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6CisKIDIwMTEtMDMtMDMgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXhl
cy4gVXNlIEZvbnQ6OnRleHRNZXRyaWNzIHRvIGdldCBhc2NlbnQgdmFsdWUsIGFuZCBhZGQgbWlz
c2luZyBpbmNsdWRlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9UZW1w
b3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuZHJvaWQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkocmV2aXNpb24gODAyODMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwMyw0ICs1MDMsMTQgQEAgdm9pZCBzZXRDb29raWVTdG9yYWdlUHJpdmF0
ZUJyb3dzaW5nRW5hYgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgc3RhcnRPYnNl
cnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9icmV3L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYnJldy9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiA4MDI4MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JyZXcvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNSArMzYsMTUgQEAgdm9pZCBzZXRDb29raWVTdG9yYWdlUHJp
dmF0ZUJyb3dzaW5nRW5hYgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RlbXBv
cmFyeUxpbmtTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkocmV2aXNpb24gODAyODMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw0ICs1NCwxNCBAQCB2b2lkIHNldENvb2tpZVN0b3JhZ2VQcml2YXRl
QnJvd3NpbmdFbmFiCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiA4MDI4MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw1ICs2MSwxNSBAQCB2b2lkIHNldENvb2tpZVN0b3JhZ2VQcml2YXRl
QnJvd3NpbmdFbmFiCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtT
dHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBv
cmFyeUxpbmtTdHVicy5jcHAJKHJldmlzaW9uIDgwMjgzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDUg
KzQ4LDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPgogU3RyaW5n
IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgs
IGNvbnN0IFN0cmluZyAmY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBLVVJMICZ1cmwpIHsgcmV0dXJu
IFN0cmluZygpOyB9CiBmbG9hdCB1c2VySWRsZVRpbWUoKSB7IG5vdEltcGxlbWVudGVkKCk7IHJl
dHVybiBGTFRfTUFYOyB9IC8vIHJldHVybiBhbiBhcmJpdHJhcmlseSBoaWdoIHVzZXJJZGxlVGlt
ZSBzbyB0aGF0IHJlbGVhc2luZyBwYWdlcyBmcm9tIHRoZSBwYWdlIGNhY2hlIGlzbid0IHBvc3Rw
b25lZAogdm9pZCBzZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkg
eyBub3RJbXBsZW1lbnRlZCgpOyB9Cit2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2hhaWt1L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaGFpa3UvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkocmV2aXNpb24gODAyODMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9UZW1wb3JhcnlMaW5rU3R1YnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw1ICs4MiwxNSBAQCB2b2lkIHNldENvb2tpZVN0b3JhZ2VQ
cml2YXRlQnJvd3NpbmdFbmFiCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcAkocmV2aXNpb24g
ODAyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnNR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsMTYgQEAgdm9pZCBzZXRDb29raWVT
dG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3Zv
aWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCiB9CiAKIC8vIHZpbTogdHM9NCBzdz00IGV0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkocmV2
aXNpb24gODAyODMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlu
a1N0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNCArMzMsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogLy8gPGtleWdlbj4KIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKSB7IG5vdEltcGxlbWVu
dGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQogdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0
b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisjaWYgIVVTRShDRk5FVFdPUksp
Cit2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQordm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDgwMjg3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMDMgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENsZWFudXAgZnJvbSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTU0MjcuCisgICAgICAgIAorICAgICAgICBDYWxsIFdlYkNvcmU6OnN0YXJ0T2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcyBhbmQgV2ViQ29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMKKyAgICAg
ICAgb24gYWxsIHBsYXRmb3JtcywgYW5kIHN0dWIgdGhlIGZ1bmN0aW9ucyBvbiBwbGF0Zm9ybXMg
dGhhdCBkb24ndCBpbXBsZW1lbnQgdGhlbS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlcjo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorCiAyMDExLTAzLTAzICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QnJhZHkgRWlkc29uLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gODAyODMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDE2ICs3NiwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUFsbENvb2tpZXMoCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKCkKIHsKLSNpZiBVU0UoQ0ZORVRXT1JLKSB8fCBQTEFURk9STShNQUMpCiAgICAg
V2ViQ29yZTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiB7Ci0jaWYg
VVNFKENGTkVUV09SSykgfHwgUExBVEZPUk0oTUFDKQogICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZp
bmdDb29raWVDaGFuZ2VzKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpk
aXNwYXRjaENvb2tpZXNEaWRDaGFuZ2UoKQo=
</data>
<flag name="review"
          id="76655"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>