<?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>97398</bug_id>
          
          <creation_ts>2012-09-22 14:30:14 -0700</creation_ts>
          <short_desc>Script run from an isolated world should be able to bypass a page&apos;s CSP (V8 side).</short_desc>
          <delta_ts>2012-12-06 14:27:45 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>99582</dependson>
          <blocked>100815</blocked>
    
    <blocked>104305</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike West">mkwst</reporter>
          <assigned_to name="Mike West">mkwst</assigned_to>
          <cc>aa</cc>
    
    <cc>abarth</cc>
    
    <cc>dcarney</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>726177</commentid>
    <comment_count>0</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-22 14:30:14 -0700</bug_when>
    <thetext>Content Security Policy shouldn&apos;t block script run in an isolated world (a Chrome extension, for instance) from loading resources. Aaron suggested checking which world is topmost in the stack at the time a resource is loaded, and canceling the CSP check entirely if it&apos;s an isolated world. That seems worth checking out.

The patch I&apos;ll upload in a moment depends on some refactoring work being done in bug 96637, so I&apos;m not going to hand it to the bots, as it&apos;ll simply explode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726178</commentid>
    <comment_count>1</comment_count>
      <attachid>165269</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-22 14:37:31 -0700</bug_when>
    <thetext>Created attachment 165269
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726838</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 10:52:32 -0700</bug_when>
    <thetext>I wonder if this isn&apos;t quite the right check.  We might use isolated worlds for many things, but it&apos;s only really extensions that we want to be able to bypass the CSP checks.  Perhaps we need to ask the ScriptController something more semantic...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726854</commentid>
    <comment_count>3</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-24 11:10:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I wonder if this isn&apos;t quite the right check.  We might use isolated worlds for many things, but it&apos;s only really extensions that we want to be able to bypass the CSP checks.  Perhaps we need to ask the ScriptController something more semantic...

It seems like what we really want is something like Chromium&apos;s UserScriptSlave::GetExtensionIdForIsolatedWorld. If the isolated world is an extension&apos;s isolated world, then do something.

Could we do something clever in Chromium&apos;s UserScriptSlave::InitializeIsolatedWorld to tag the world as bypassing CSP, and store that as a flag on the world itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726877</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 11:36:27 -0700</bug_when>
    <thetext>Yeah, we probably want the embedder to tell us that this particular isolated world should ignore CSP when it creates it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727669</commentid>
    <comment_count>5</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-25 08:29:33 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Yeah, we probably want the embedder to tell us that this particular isolated world should ignore CSP when it creates it.

I&apos;ll sit down with Dan at some point in the near future (Hi, Dan!) to talk about how I might go about implementing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727685</commentid>
    <comment_count>6</comment_count>
    <who name="Aaron Boodman">aa</who>
    <bug_when>2012-09-25 08:58:31 -0700</bug_when>
    <thetext>If you&apos;re going to go to the work of adding API to push down &quot;Ignore main world CSP for world X&quot;, can you instead push down &quot;This is the CSP to use for world X&quot;.

That would allow us to implement support for using the extension&apos;s own CSP in its content script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730646</commentid>
    <comment_count>7</comment_count>
      <attachid>166251</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-28 07:39:19 -0700</bug_when>
    <thetext>Created attachment 166251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730647</commentid>
    <comment_count>8</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-28 07:40:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; If you&apos;re going to go to the work of adding API to push down &quot;Ignore main world CSP for world X&quot;, can you instead push down &quot;This is the CSP to use for world X&quot;.
&gt; 
&gt; That would allow us to implement support for using the extension&apos;s own CSP in its content script.

I&apos;ll take a stab at something like this. As a first step, we can accept a string and store it on the world. I have no idea how we&apos;d make the world use a separate CSP than the main world; I&apos;ll have to talk with Adam about how something like that might look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730719</commentid>
    <comment_count>9</comment_count>
      <attachid>166251</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 09:07:00 -0700</bug_when>
    <thetext>Comment on attachment 166251
Patch

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

&gt; Source/WebCore/bindings/v8/ScriptController.h:122
&gt; +    virtual void setIsolatedWorldContentSecurityPolicy(int worldID, const String&amp;);

No need for virtual here.  ScriptController doesn&apos;t have any subclasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731165</commentid>
    <comment_count>10</comment_count>
      <attachid>166357</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-29 02:56:41 -0700</bug_when>
    <thetext>Created attachment 166357
WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731167</commentid>
    <comment_count>11</comment_count>
      <attachid>166357</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-29 02:58:18 -0700</bug_when>
    <thetext>Comment on attachment 166357
WDYT?

Now that Dan&apos;s changes landed, I&apos;ve cleaned up the patch, and I&apos;d appreciate you taking a look Adam. It&apos;s V8-only right now, which might or might not be acceptable.

Does this approach make sense? How do you think we could support a full-blown CSP-override in the future?

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731168</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-29 02:59:47 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731169</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-29 03:00:12 -0700</bug_when>
    <thetext>Attachment 166357 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1
LayoutTests/platform/wincairo/TestExpectations:1:  No port uses path LayoutTests/platform/wincairo/TestExpectations for test_expectations  [test/expectations] [5]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731229</commentid>
    <comment_count>14</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-09-29 13:00:26 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 166357 [details])
&gt; Now that Dan&apos;s changes landed, I&apos;ve cleaned up the patch, and I&apos;d appreciate you taking a look Adam. It&apos;s V8-only right now, which might or might not be acceptable.
&gt; 
&gt; Does this approach make sense? How do you think we could support a full-blown CSP-override in the future?
&gt; 
&gt; Thanks!

Assuming that you are just setting the csp once per world, you can set this more easily at the DOMWrapperWorld level.  It would then probably be more appropriate there instead of setting it a the per frame/per world level.   Currently, the SecurityOrigin are set like this, but I&apos;ve got an upcoming patch to push those to DOMWrapperWorld as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744148</commentid>
    <comment_count>15</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-17 04:43:00 -0700</bug_when>
    <thetext>you can drop dependence on 96637 and add one for 99582 as discussed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744153</commentid>
    <comment_count>16</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-17 04:46:10 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; you can drop dependence on 96637 and add one for 99582 as discussed

Cool, thanks Dan. I&apos;ll rework this patch on top of that one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745197</commentid>
    <comment_count>17</comment_count>
      <attachid>169401</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-18 06:17:20 -0700</bug_when>
    <thetext>Created attachment 169401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745202</commentid>
    <comment_count>18</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-18 06:21:09 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=169401) [details]
&gt; Patch

This patch creates another HashMap on DOMWrapperWorld to store Content Security Policies, in the same way Dan&apos;s patch did for SecurityOrigins. 

Given his refactoring, there&apos;s no particular reason for the bits on WebFrame, other than the fact that we need some way of exposing the DOMWrapperWorld API to the code on the other side (DRT, for instance). Would it make sense to create some new class there to store these sorts of things in another patch? WebDOMWrapperWorld?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749580</commentid>
    <comment_count>19</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-24 05:31:04 -0700</bug_when>
    <thetext>Friendly ping, Adam. Would you mind taking a look at this to validate the approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750404</commentid>
    <comment_count>20</comment_count>
      <attachid>169401</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 23:16:35 -0700</bug_when>
    <thetext>Comment on attachment 169401
Patch

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

This looks great.  I&apos;d keep the API as a String, but I would use a bool in WebCore to represent this state.  We can always elaborate the WebCore state if/when we want to support a full CSP policy.

Sorry for the delay in reviewing this patch.  For some reason I was hesitating to review it, but now I see that my hesitation was misplaced.

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:152
&gt; +typedef HashMap&lt;int, String&gt; IsolatedWorldContentSecurityPolicyMap;
&gt; +static IsolatedWorldContentSecurityPolicyMap&amp; isolatedWorldContentSecurityPolicies()
&gt; +{
&gt; +    ASSERT(isMainThread());
&gt; +    DEFINE_STATIC_LOCAL(IsolatedWorldContentSecurityPolicyMap, map, ());
&gt; +    return map;
&gt; +}

I really dislike these maps keyed on the world ID.  I know you&apos;re just following the pattern here, but this should really just be a bool on DOMWrapperWord.

&gt; Source/WebCore/bindings/v8/ScriptController.h:113
&gt; +    // Returns true if the current world is isolated, and has its own Content
&gt; +    // Security Policy. In this case, the policy of the main world should be
&gt; +    // ignored when evaluating resources injected into the DOM.
&gt; +    bool shouldBypassMainWorldContentSecurityPolicy();

This API should take a DOMWrapperWorld* argument and the caller should call it with currentWorld().  You can look at how the other functions that take DOMWrapperWorld* arguments work in JSC.  We&apos;d like to switch over to using an approach more like JSC, but for now we do things a bit differently.  Given that ScriptController is a shared interface with JSC, we should do things the JSC way.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:307
&gt; +    bool shouldBypassMainWorldContentSecurityPolicy = (document()-&gt;frame() &amp;&amp; document()-&gt;frame()-&gt;script()-&gt;shouldBypassMainWorldContentSecurityPolicy());

There&apos;s already a frame() accessor that you can use on CachedResourceLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750460</commentid>
    <comment_count>21</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 00:03:54 -0700</bug_when>
    <thetext>Thanks!

(In reply to comment #20)
&gt; This looks great.  I&apos;d keep the API as a String, but I would use a bool in WebCore to represent this state.  We can always elaborate the WebCore state if/when we want to support a full CSP policy.

Makes sense. The other open question I had is whether it&apos;s worth doing a JSC implementation. We haven&apos;t done one for SecurityOrigin, but I&apos;m not sure it&apos;s a good idea to continue to add properties that other ports won&apos;t be able to make use of. Should we ping some JSC folks to see if they&apos;re interested?

&gt; &gt; Source/WebCore/bindings/v8/DOMWrapperWorld.cpp:152
&gt; &gt; +typedef HashMap&lt;int, String&gt; IsolatedWorldContentSecurityPolicyMap;
&gt; &gt; +static IsolatedWorldContentSecurityPolicyMap&amp; isolatedWorldContentSecurityPolicies()
&gt; &gt; +{
&gt; &gt; +    ASSERT(isMainThread());
&gt; &gt; +    DEFINE_STATIC_LOCAL(IsolatedWorldContentSecurityPolicyMap, map, ());
&gt; &gt; +    return map;
&gt; &gt; +}
&gt; 
&gt; I really dislike these maps keyed on the world ID.  I know you&apos;re just following the pattern here, but this should really just be a bool on DOMWrapperWord.

I&apos;ve talked to Dan about this, he&apos;s saying there are good reasons that it can&apos;t be a bool on the world itself, as the world might or might not actually exist at various points in time. I don&apos;t know enough about the lifecycle to weigh in here. Dan, can you add some context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750497</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-25 00:42:17 -0700</bug_when>
    <thetext>&gt; Makes sense. The other open question I had is whether it&apos;s worth doing a JSC implementation. We haven&apos;t done one for SecurityOrigin, but I&apos;m not sure it&apos;s a good idea to continue to add properties that other ports won&apos;t be able to make use of. Should we ping some JSC folks to see if they&apos;re interested?

Yeah, let&apos;s ask them what they&apos;d like.  The main question is whether they want to use it in Safari for Safari&apos;s extension system.  My guess is &quot;yes&quot;, but it seems silly to have all the code without an API to use it.

In any case, we can do the JSC and the V8 change in separate patches.

&gt; I&apos;ve talked to Dan about this, he&apos;s saying there are good reasons that it can&apos;t be a bool on the world itself, as the world might or might not actually exist at various points in time. I don&apos;t know enough about the lifecycle to weigh in here. Dan, can you add some context?

Yeah, I think he&apos;s right, but that&apos;s what I&apos;d like to change.  I don&apos;t think that should hold up your change though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750680</commentid>
    <comment_count>23</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2012-10-25 04:47:23 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; Makes sense. The other open question I had is whether it&apos;s worth doing a JSC implementation. We haven&apos;t done one for SecurityOrigin, but I&apos;m not sure it&apos;s a good idea to continue to add properties that other ports won&apos;t be able to make use of. Should we ping some JSC folks to see if they&apos;re interested?
&gt; 
&gt; Yeah, let&apos;s ask them what they&apos;d like.  The main question is whether they want to use it in Safari for Safari&apos;s extension system.  My guess is &quot;yes&quot;, but it seems silly to have all the code without an API to use it.
&gt; 
&gt; In any case, we can do the JSC and the V8 change in separate patches.
&gt; 
&gt; &gt; I&apos;ve talked to Dan about this, he&apos;s saying there are good reasons that it can&apos;t be a bool on the world itself, as the world might or might not actually exist at various points in time. I don&apos;t know enough about the lifecycle to weigh in here. Dan, can you add some context?
&gt; 
&gt; Yeah, I think he&apos;s right, but that&apos;s what I&apos;d like to change.  I don&apos;t think that should hold up your change though.


Just to jump in here. Mike&apos;s solution at the moment is the only way to go (unfortunately). There&apos;s a whole slew of problems related to having to use worldId in the api everywhere and not having an object on the other side of the chrome api to reference it from: WebDOMWrapperWorld or whatever. I&apos;ve been meaning to discuss it with you so I know how to go forward, but the following are needed in such a class:

securityOrigin setter
csp setter
static variables for the mainWorldId and uninitializedWorldId in DOMWrapperWorld that would be accessible from chrome
a reference to the DOMWrapperWorld for the purpose of keeping it alive in accordance with chrome&apos;s need for it as opposed to the current implementation which is to keep it alive as long as a frame has a handle on it

then I&apos;d want to:
change all the chrome apis to use WebDOMWrapperWorld instead of worldId
change all the webkit apis to use DOMWrapperWorld instead of worldId if apple would be okay with it

I&apos;ve been waiting till after m24 to start sending changes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750712</commentid>
    <comment_count>24</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 05:46:36 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 169401 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169401&amp;action=review
&gt; &gt; Source/WebCore/bindings/v8/ScriptController.h:113
&gt; &gt; +    // Returns true if the current world is isolated, and has its own Content
&gt; &gt; +    // Security Policy. In this case, the policy of the main world should be
&gt; &gt; +    // ignored when evaluating resources injected into the DOM.
&gt; &gt; +    bool shouldBypassMainWorldContentSecurityPolicy();
&gt; 
&gt; This API should take a DOMWrapperWorld* argument and the caller should call it with currentWorld().  You can look at how the other functions that take DOMWrapperWorld* arguments work in JSC.  We&apos;d like to switch over to using an approach more like JSC, but for now we do things a bit differently.  Given that ScriptController is a shared interface with JSC, we should do things the JSC way.

&apos;currentWorld&apos; doesn&apos;t look like it&apos;s used at all outside bindings code at the moment, and requires a ScriptState as a parameter, which I don&apos;t think I have any way of getting a pointer to from within CachedResourceLoader.

And actually, it doesn&apos;t look like it&apos;s implemented at all in the V8 bindings.

I&apos;ll upload a patch with the other issues addressed, but I don&apos;t see how to make this suggestion work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750790</commentid>
    <comment_count>25</comment_count>
      <attachid>170642</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-25 07:16:51 -0700</bug_when>
    <thetext>Created attachment 170642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750793</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 07:22:32 -0700</bug_when>
    <thetext>Attachment 170642 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1
LayoutTests/platform/qt/TestExpectations:2480:  Path does not exist.  [test/expectations] [5]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754161</commentid>
    <comment_count>27</comment_count>
      <attachid>171408</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-30 03:38:36 -0700</bug_when>
    <thetext>Created attachment 171408
Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754162</commentid>
    <comment_count>28</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-30 03:40:04 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 169401 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169401&amp;action=review
&gt; &gt; &gt; Source/WebCore/bindings/v8/ScriptController.h:113
&gt; &gt; &gt; +    // Returns true if the current world is isolated, and has its own Content
&gt; &gt; &gt; +    // Security Policy. In this case, the policy of the main world should be
&gt; &gt; &gt; +    // ignored when evaluating resources injected into the DOM.
&gt; &gt; &gt; +    bool shouldBypassMainWorldContentSecurityPolicy();
&gt; &gt; 
&gt; &gt; This API should take a DOMWrapperWorld* argument and the caller should call it with currentWorld().  You can look at how the other functions that take DOMWrapperWorld* arguments work in JSC.  We&apos;d like to switch over to using an approach more like JSC, but for now we do things a bit differently.  Given that ScriptController is a shared interface with JSC, we should do things the JSC way.
&gt; 
&gt; &apos;currentWorld&apos; doesn&apos;t look like it&apos;s used at all outside bindings code at the moment, and requires a ScriptState as a parameter, which I don&apos;t think I have any way of getting a pointer to from within CachedResourceLoader.
&gt; 
&gt; And actually, it doesn&apos;t look like it&apos;s implemented at all in the V8 bindings.
&gt; 
&gt; I&apos;ll upload a patch with the other issues addressed, but I don&apos;t see how to make this suggestion work.

Friendly post-branch point ping. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754690</commentid>
    <comment_count>29</comment_count>
      <attachid>171408</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-30 15:06:10 -0700</bug_when>
    <thetext>Comment on attachment 171408
Rebased.

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

My only hesitation with this patch is that we&apos;re leaning on V8&apos;s static state to implicitly remember whether we&apos;re in an isolated world.  That might be tricky to implement in JSC.  We should try the JSC implementation soon to make sure we don&apos;t need to restructure things too much.

&gt; Source/WebCore/bindings/v8/DOMWrapperWorld.h:75
&gt; +
&gt; +

These blank lines look extra</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754694</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-30 15:08:29 -0700</bug_when>
    <thetext>Please watch the http-bloat perf tests when your change rolls in to Chromium to make sure we don&apos;t regress performances.  The http-bloat dataset seems to stress CachedResourceLoader for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754697</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-30 15:08:59 -0700</bug_when>
    <thetext>http://build.chromium.org/f/chromium/perf/xp-release-dual-core/bloat-http/report.html?history=50&amp;rev=-1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754993</commentid>
    <comment_count>32</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-30 23:13:03 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 171408 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171408&amp;action=review
&gt; 
&gt; My only hesitation with this patch is that we&apos;re leaning on V8&apos;s static state to implicitly remember whether we&apos;re in an isolated world.  That might be tricky to implement in JSC.  We should try the JSC implementation soon to make sure we don&apos;t need to restructure things too much.

Filed https://bugs.webkit.org/show_bug.cgi?id=100815 to cover that work. Can you suggest someone familiar with JSC who might be able to help me put together a reasonable implementation?

&gt; &gt; Source/WebCore/bindings/v8/DOMWrapperWorld.h:75
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; These blank lines look extra

They are indeed. I&apos;ll spin a new patch for landing.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755054</commentid>
    <comment_count>33</comment_count>
      <attachid>171597</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-31 01:39:01 -0700</bug_when>
    <thetext>Created attachment 171597
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755102</commentid>
    <comment_count>34</comment_count>
      <attachid>171597</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-31 03:00:05 -0700</bug_when>
    <thetext>Comment on attachment 171597
Patch for landing

Clearing flags on attachment: 171597

Committed r133006: &lt;http://trac.webkit.org/changeset/133006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755103</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-31 03:00:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755423</commentid>
    <comment_count>36</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-31 10:18:02 -0700</bug_when>
    <thetext>&gt; Filed https://bugs.webkit.org/show_bug.cgi?id=100815 to cover that work. Can you suggest someone familiar with JSC who might be able to help me put together a reasonable implementation?

Sam Weinig might be able to help.  I&apos;m also pretty familiar with the JSC side.  It&apos;s probably best if you take first swing at it so folks have a patch to use as a starting point for discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756191</commentid>
    <comment_count>37</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-11-01 07:08:05 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; http://build.chromium.org/f/chromium/perf/xp-release-dual-core/bloat-http/report.html?history=50&amp;rev=-1

It&apos;s a bit tough to tell, but it doesn&apos;t look like anything&apos;s changed significantly in those reports.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165269</attachid>
            <date>2012-09-22 14:37:31 -0700</date>
            <delta_ts>2012-09-28 07:39:15 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-97398-20120922233653.patch</filename>
            <type>text/plain</type>
            <size>10989</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE2MTNhM2UxODRjOWU2
NTgzYWIzNzQ3ODIxMWY2NzI5ZDgzNDAwNy4uZWU5NGJlNGVmODE4ZDZlNGQ5MzUxODk1NzAyZjJj
YTcyY2NlZTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA5LTIyICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFu
IGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZS1hbGxvd2VkLWZyb20taXNvbGF0ZWQt
d29ybGQuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbklzb2xhdGVkV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgICAgICBKU0MgaW1wbGVt
ZW50YXRpb24gb2YgJ2luSXNvbGF0ZWRXb3JsZCcuCisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpp
bklzb2xhdGVkV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAg
ICAgICAgICBWOCBpbXBsZW1lbnRhdGlvbiBvZiAnaW5Jc29sYXRlZFdvcmxkJy4KKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAgICAgQ2hlY2sg
J1NjcmlwdENvbnRyb2xsZXI6OmluSXNvbGF0ZWRXb3JsZCcsIGFuZCBvbmx5IHBlcmZvcm0gQ1NQ
CisgICAgICAgICAgICBjaGVja3MgaWYgd2UncmUgZXhlY3V0aW5nIGNvZGUgZnJvbSB0aGUgbWFp
biB3b3JsZC4KKwogMjAxMi0wOS0yMiAgRGFuIENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBbVjhdIEdpdmUgaXNvbGF0ZWQgc2hlbGxzIGEgbGlmZWN5Y2xlIGxpa2UgdGhh
dCBvZiBtYWluIHNoZWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA0OGY2OGM4YTMyODZmNWQ5YTgyZTBmMWEwN2VmYThjZGQ0ZTI1
ZTUyLi5mNDNkN2FkNTVkZjg0Nzk2YjlmNGFlZjg5MGJlNzA0MzExNjNkYzQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzU2LDYg
KzM1NiwxMiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRz
KFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLAogCiAjZW5kaWYKIAorYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjppbklzb2xhdGVkV29ybGQoKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCk7CisgICAgcmV0dXJuICFjdXJy
ZW50V29ybGQoZXhlYyktPmlzTm9ybWFsKCk7Cit9CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKIAogTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE5QT2Jq
ZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApp
bmRleCAxODdmYWI1MmJlZjBhZDIxY2Y1NGRlNTA2YTRlZjY1MWNmZmRiZWJhLi5jZWRmZmJlOGRj
NDYzMWFlMDIxNjQ3OTViYjNmMWJkMjVhM2E4NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNjMsNiArMTYzLDggQEAgcHVibGljOgog
ICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgpOwogI2VuZGlmCiAKKyAgICBib29s
IGluSXNvbGF0ZWRXb3JsZCgpOworCiBwcml2YXRlOgogICAgIEpTRE9NV2luZG93U2hlbGwqIGlu
aXRTY3JpcHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWFlZGRiZWM1YjVlNmJiODIx
OTNkNWVkMjg4N2NhNWM0M2UzNjVmOC4uZGUzZjlhNTAxMGVlOGM2NGIyZGE0MjNiNzA1ZjY2MzA2
ZTFlZjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKQEAgLTY4Nyw2ICs2ODcsMTIgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xs
ZWN0SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPFNjcmlwdFN0YXRlKiwgU2UKIH0K
ICNlbmRpZgogCitib29sIFNjcmlwdENvbnRyb2xsZXI6OmluSXNvbGF0ZWRXb3JsZCgpCit7Cisg
ICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250ZXh0RGF0YSogaXNvbGF0ZWREYXRhID0g
VjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVkQ29udGV4dERhdGEoKTsKKyAgICByZXR1
cm4gISFpc29sYXRlZERhdGE7Cit9CisKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2V0Q29udGV4
dERlYnVnSWQoaW50IGRlYnVnSWQpCiB7CiAgICAgQVNTRVJUKGRlYnVnSWQgPiAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlODFiZDI3
OTNhMGZlOTE2ZThiYTIzNzZkZjYyMmMxMzRlZTU1NDNkLi5mMjEzMzM1MWQ2ODMzYTU4NjkyNTQ0
NWRkMTU1NjAwOTdhODgwODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5oCkBAIC0xODUsNiArMTg1LDggQEAgcHVibGljOgogICAgIGJvb2wgc2V0
Q29udGV4dERlYnVnSWQoaW50KTsKICAgICBzdGF0aWMgaW50IGNvbnRleHREZWJ1Z0lkKHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+KTsKIAorICAgIGJvb2wgaW5Jc29sYXRlZFdvcmxkKCk7CisKIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgT3duUHRyPFY4RE9NV2luZG93U2hlbGw+
ID4gSXNvbGF0ZWRXb3JsZE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+ID4gSXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luTWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMzUzYTYyYWE2NDBkYmRkNWU1MTI3ZDkwYjEwODQ1NmQ0YWM3Y2VkYi4uMjA5ZjU1MWVjZjc1
ODE4ODMxM2FkMGM3ODQzYWQyNGUxZGJhZTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTcsNiArMjk3LDgg
QEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6
VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisg
ICAgYm9vbCBpbklzb2xhdGVkV29ybGQgPSBkb2N1bWVudCgpLT5mcmFtZSgpICYmIGRvY3VtZW50
KCktPmZyYW1lKCktPnNjcmlwdCgpLT5pbklzb2xhdGVkV29ybGQoKTsKKwogICAgIC8vIFNvbWUg
dHlwZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdp
bi4gIE90aGVyCiAgICAgLy8gdHlwZXMgb2YgcmVzb3VyY2VzLCBsaWtlIEltYWdlcywgU2NyaXB0
cywgYW5kIENTUywgY2FuIGJlIGxvYWRlZCBmcm9tCiAgICAgLy8gYW55IFVSTC4KQEAgLTMzNyw3
ICszMzksNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlhTTFN0eWxlU2hlZXQ6CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3Jp
cHQ6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93U2NyaXB0RnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIWluSXNvbGF0ZWRXb3JsZCAm
JiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U2NyaXB0RnJvbVNv
dXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChmcmFt
ZSgpKSB7CkBAIC0zNTMsMTQgKzM1NSwxNCBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpj
YW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAg
ICAgICAvLyBTaW5jZSBzaGFkZXJzIGFyZSByZWZlcmVuY2VkIGZyb20gQ1NTIFN0eWxlcyB1c2Ug
dGhlIHNhbWUgcnVsZXMgaGVyZS4KICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNT
U1N0eWxlU2hlZXQ6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmFsbG93U3R5bGVGcm9tU291cmNlKHVybCkpCisgICAgICAgIGlmICghaW5Jc29sYXRl
ZFdvcmxkICYmICFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTdHls
ZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJl
YWs7CiAjaWYgRU5BQkxFKFNWRykKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVu
dFJlc291cmNlOgogI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJj
ZToKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxs
b3dJbWFnZUZyb21Tb3VyY2UodXJsKSkKKyAgICAgICAgaWYgKCFpbklzb2xhdGVkV29ybGQgJiYg
IW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ltYWdlRnJvbVNvdXJj
ZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChmcmFtZSgp
KSB7CkBAIC0zNzAsNyArMzcyLDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVx
dWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAg
fQogICAgICAgICBicmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6
IHsKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxs
b3dGb250RnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIWluSXNvbGF0ZWRXb3JsZCAmJiAh
bV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9udEZyb21Tb3VyY2Uo
dXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMzg0LDcgKzM4Niw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Qo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U6CiAgICAgICAgIC8vIEN1ZXMgYXJlbid0IGNh
bGxlZCBvdXQgaW4gdGhlIENQUyBzcGVjIHlldCwgYnV0IHRoZXkgb25seSB3b3JrIHdpdGggYSBt
ZWRpYSBlbGVtZW50CiAgICAgICAgIC8vIHNvIHVzZSB0aGUgbWVkaWEgcG9saWN5LgotICAgICAg
ICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01lZGlhRnJv
bVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIWluSXNvbGF0ZWRXb3JsZCAmJiAhbV9kb2N1bWVu
dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YjVkZGFlYTYzODgxYTIxODc5MmNjOTJlYjk5MDJkMjc5YzI2MTg5Yy4uZjkzZjhiNWMxMTgzYjI1
ZjhmNWE4Zjc5YjI1NmVkOWFhOGEwYWY1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5
LTIyICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1
biBmcm9tIGFuIGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSdsbCBuZWVkIHNv
bWUgbW9yZSB0ZXN0cywgb2YgY291cnNlLi4uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZS1hbGxvd2VkLWZyb20taXNvbGF0ZWQt
d29ybGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZS1hbGxvd2VkLWZyb20taXNvbGF0ZWQtd29y
bGQuaHRtbDogQWRkZWQuCisgICAgICAgICAgICBDaGVjayB0aGF0IGFuIGltYWdlIGlzIGJsb2Nr
ZWQgaW4gdGhlIG1haW4gd29ybGQsIGJ1dCBsb2FkYWJsZSB2aWEKKyAgICAgICAgICAgIHRoZSBp
c29sYXRlZCB3b3JsZCdzIHNjcmlwdC4KKwogMjAxMi0wOS0yMiAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCB3ZWVrZW5kIGdh
cmRlbmluZywgdW5za2lwIG5vdyBwYXNzaW5nIHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2UtYWxs
b3dlZC1mcm9tLWlzb2xhdGVkLXdvcmxkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlLWFsbG93ZWQtZnJv
bS1pc29sYXRlZC13b3JsZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBiZmJhN2IxODVlODM4
OGI5MDUxMjMzYzhmYzg4YzEwOGJiZDllYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlLWFsbG93
ZWQtZnJvbS1pc29sYXRlZC13b3JsZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorQ09O
U09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxvYWQgdGhlIGltYWdlICdodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2FiZS5wbmcnIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhl
IGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICJpbWctc3JjICdu
b25lJyIuCisKK0FMRVJUOiBCTE9DS0VEIGluIG1haW4gd29ybGQKK0FMRVJUOiBMT0FERUQgaW4g
aXNvbGF0ZWQgd29ybGQKK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBsb2FkIHRoZSBpbWFn
ZSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9hYmUucG5nJyBiZWNh
dXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGly
ZWN0aXZlOiAiaW1nLXNyYyAnbm9uZSciLgorCitBTEVSVDogQkxPQ0tFRCBpbiBtYWluIHdvcmxk
CitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHNjcmlwdHMgcnVuIGluIGlzb2xhdGVkIHdvcmxkcyBh
cmVuJ3QgZWZmZWN0ZWQgYnkgdGhlIHBhZ2UncyBjb250ZW50IHNlY3VyaXR5IHBvbGljeS4gRXh0
ZW5zaW9ucywgZm9yIGV4YW1wbGUsIHNob3VsZCBiZSBhYmxlIHRvIGxvYWQgYW55IHJlc291cmNl
IHRoZXkgbGlrZS4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZS1hbGxvd2VkLWZyb20taXNvbGF0ZWQt
d29ybGQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3Jlc291cmNlLWFsbG93ZWQtZnJvbS1pc29sYXRlZC13b3JsZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ1NTQ1MjU0OWEzMWY3YWVmOWRmMDAyOTYyYTc4M2ZiNWFhMDQ0YWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9yZXNvdXJjZS1hbGxvd2VkLWZyb20taXNvbGF0ZWQtd29ybGQuaHRtbApAQCAtMCww
ICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJYLVdlYktpdC1DU1AiIGNvbnRlbnQ9ImltZy1zcmMgJ25vbmUnIj4KKzxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB0
ZXN0cyA9IDM7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlv
bihtZXNzYWdlKSB7CisgICAgICAgIHRlc3RzIC09IDE7CisgICAgICAgIHRlc3QoKTsKKyAgICB9
LCBmYWxzZSk7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBmdW5jdGlvbiBzZXRJ
bWdTcmMoaXNvbGF0ZWQpIHsKKyAgICAgICAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpbWcnKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1n
KTsKKyAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgYWxlcnQoJ0xPQURFRCBpbiAnICsgKGlzb2xhdGVkID8gImlzb2xhdGVkIHdvcmxkIiA6ICJt
YWluIHdvcmxkIikpOworICAgICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgibmV4dCIs
ICIqIik7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgYWxlcnQoJ0JMT0NLRUQgaW4gJyArIChpc29sYXRlZCA/
ICJpc29sYXRlZCB3b3JsZCIgOiAibWFpbiB3b3JsZCIpKTsKKyAgICAgICAgICAgICAgICB3aW5k
b3cucG9zdE1lc3NhZ2UoIm5leHQiLCAiKiIpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IGltZy5zcmMgPSAiLi4vcmVzb3VyY2VzL2FiZS5wbmciOworICAgICAgICB9CisKKyAgICAgICAg
c3dpdGNoICh0ZXN0cykgeworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIHNl
dEltZ1NyYyhmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRX
b3JsZCgxLCBTdHJpbmcoZXZhbCgic2V0SW1nU3JjIikpICsgIlxuc2V0SW1nU3JjKHRydWUpOyIp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAg
ICAgICAgIHNldEltZ1NyYyhmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0ndGVzdCgpOyc+CisgICAgPHA+CisgICAgICAgIFRoaXMgdGVzdCBl
bnN1cmVzIHRoYXQgc2NyaXB0cyBydW4gaW4gaXNvbGF0ZWQgd29ybGRzIGFyZW4ndCBlZmZlY3Rl
ZAorICAgICAgICBieSB0aGUgcGFnZSdzIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5LiBFeHRlbnNp
b25zLCBmb3IgZXhhbXBsZSwgc2hvdWxkCisgICAgICAgIGJlIGFibGUgdG8gbG9hZCBhbnkgcmVz
b3VyY2UgdGhleSBsaWtlLgorICAgIDwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166251</attachid>
            <date>2012-09-28 07:39:19 -0700</date>
            <delta_ts>2012-09-29 02:56:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97398-20120928163835.patch</filename>
            <type>text/plain</type>
            <size>21409</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5ODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzMxNjRhMjdkNzc4Zjg4
YjIzNzkzNTA4ZDVhODU4Y2E4OGQxN2ExOS4uMzE3ZGU2YTA1YzVhNTM2MTljYzIzZTRkNGVjODk3
OGRiMGI5ZWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA5LTI4ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFu
IGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZS1hbGxvd2VkLWZyb20taXNvbGF0ZWQt
d29ybGQuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbklzb2xhdGVkV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgICAgICBKU0MgaW1wbGVt
ZW50YXRpb24gb2YgJ2luSXNvbGF0ZWRXb3JsZCcuCisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpp
bklzb2xhdGVkV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAg
ICAgICAgICBWOCBpbXBsZW1lbnRhdGlvbiBvZiAnaW5Jc29sYXRlZFdvcmxkJy4KKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAgICAgQ2hlY2sg
J1NjcmlwdENvbnRyb2xsZXI6OmluSXNvbGF0ZWRXb3JsZCcsIGFuZCBvbmx5IHBlcmZvcm0gQ1NQ
CisgICAgICAgICAgICBjaGVja3MgaWYgd2UncmUgZXhlY3V0aW5nIGNvZGUgZnJvbSB0aGUgbWFp
biB3b3JsZC4KKwogMjAxMi0wOS0yOCAgRGFuIENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50ZXJlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDE4N2ZhYjUyYmVm
MGFkMjFjZjU0ZGU1MDZhNGVmNjUxY2ZmZGJlYmEuLjk2ZDBmNjJlNjdhOGZiNmI3MzRiZWE4ZDgw
YjNiYzM4ZDhiM2I2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmgKQEAgLTE2Myw2ICsxNjMsOSBAQCBwdWJsaWM6CiAgICAgTlBPYmplY3QqIHdp
bmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnRh
dGlvbiEKKyAgICBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgSlNET01XaW5kb3dTaGVsbCog
aW5pdFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAzMDIzZTc5ZWIzZDViNmNh
YmViMTdiOWQyZmY0Yjg1ZTVjZDBiOTViLi45Zjk3Y2Q4MjMyMzdkZjQ2NjUwN2VmYzI0MDRlNGY0
NmMwM2EwMTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtNDE3LDYgKzQxNywxNCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNl
dElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihpbnQgd29ybGRJRCwgUGFzc1JlZlB0cjxTZQog
ICAgICAgICBpdGVyLT5zZWNvbmQtPnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbik7CiB9CiAKK3ZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeShpbnQgd29ybGRJRCwgY29uc3QgU3RyaW5nJiBwb2xpY3kpCit7CisgICAgQVNTRVJUKHdv
cmxkSUQpOworICAgIElzb2xhdGVkV29ybGRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2lzb2xhdGVk
V29ybGRzLmZpbmQod29ybGRJRCk7CisgICAgaWYgKGl0ZXIgIT0gbV9pc29sYXRlZFdvcmxkcy5l
bmQoKSkKKyAgICAgICAgaXRlci0+c2Vjb25kLT5zZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5KHBvbGljeSk7Cit9CisKIFRleHRQb3NpdGlvbiBTY3JpcHRDb250cm9sbGVyOjpl
dmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIoKTsKQEAgLTY4OCw2ICs2OTYsMTQgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjb2xsZWN0
SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPFNjcmlwdFN0YXRlKiwgU2UKIH0KICNl
bmRpZgogCitib29sIFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSgpCit7CisgICAgVjhET01XaW5kb3dTaGVsbDo6SXNvbGF0ZWRDb250
ZXh0RGF0YSogaXNvbGF0ZWREYXRhID0gVjhET01XaW5kb3dTaGVsbDo6ZW50ZXJlZElzb2xhdGVk
Q29udGV4dERhdGEoKTsKKyAgICBpZiAoISFpc29sYXRlZERhdGEpCisgICAgICAgIHJldHVybiBp
c29sYXRlZERhdGEtPndvcmxkKCktPmlzb2xhdGVkV29ybGRIYXNDb250ZW50U2VjdXJpdHlQb2xp
Y3koKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2V0
Q29udGV4dERlYnVnSWQoaW50IGRlYnVnSWQpCiB7CiAgICAgQVNTRVJUKGRlYnVnSWQgPiAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBk
ZmZlZTM1MDNhZGEwNGY3ZjAyYzA0N2U1ZDEzNGZjZmNhOWQ4Y2ExLi40MzZiNzc1OTMxN2U5OWJi
NTI0ODU5Yzk5ZDA5ZWU4N2ZhZWM3OWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMTIsNiArMTEyLDE1IEBAIHB1YmxpYzoKICAgICAv
LyB0byBjb21lIGZyb20gdGhhdCBvcmlnaW4sIG5vdCB0aGUgZnJhbWUncy4KICAgICB2b2lkIHNl
dElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihpbnQgd29ybGRJRCwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4pOwogCisgICAgLy8gQXNzb2NpYXRlcyBhIGNvbnRlbnQgc2VjdXJpdHkgcG9s
aWN5IHdpdGggYW4gaXNvbGF0ZWQgd29ybGQuIFRoaXMgcG9saWN5CisgICAgLy8gc2hvdWxkIGJl
IHVzZWQgd2hlbiBldmFsdWF0aW5nIHNjcmlwdCBpbiB0aGUgaXNvbGF0ZWQgd29ybGQsIGFuZCBz
aG91bGQKKyAgICAvLyBhbHNvIHJlcGxhY2UgYSBwcm90ZWN0ZWQgcmVzb3VyY2UncyBDU1Agd2hl
biBldmFsdWF0aW5nIHJlc291cmNlcworICAgIC8vIGluamVjdGVkIGludG8gdGhlIERPTS4KKyAg
ICAvLworICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoaXMgc2ltcGx5IGJ5cGFzc2VzIHRoZSBwcm90
ZWN0ZWQgcmVzb3VyY2UncyBDU1AuIEl0CisgICAgLy8gICAgIGRvZXNuJ3QgeWV0IHJlc3RyaWN0
IHRoZSBpc29sYXRlZCB3b3JsZCB0byB0aGUgcHJvdmlkZWQgcG9saWN5LgorICAgIHZpcnR1YWwg
dm9pZCBzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElELCBj
b25zdCBTdHJpbmcmKTsKKwogICAgIC8vIENyZWF0ZXMgYSBwcm9wZXJ0eSBvZiB0aGUgZ2xvYmFs
IG9iamVjdCBvZiBhIGZyYW1lLgogICAgIHZvaWQgYmluZFRvV2luZG93T2JqZWN0KEZyYW1lKiwg
Y29uc3QgU3RyaW5nJiBrZXksIE5QT2JqZWN0Kik7CiAKQEAgLTE4NSw2ICsxOTQsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZXRDb250ZXh0RGVidWdJZChpbnQpOwogICAgIHN0YXRpYyBpbnQgY29u
dGV4dERlYnVnSWQodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogCisgICAgYm9vbCBzaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKwogcHJpdmF0ZToKICAgICAv
LyBOb3RlOiBhbHRob3VnaCB0aGUgcG9pbnRlciBpcyByYXcsIHRoZSBpbnN0YW5jZSBpcyBrZXB0
IGFsaXZlIGJ5IGEgc3Ryb25nCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoZSB2OCBjb250ZXh0IGl0
IGNvbnRhaW5zLCB3aGljaCBpcyBub3QgbWFkZSB3ZWFrIHVudGlsIHdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGQ0ZTA1YmQzMjIx
YjQxODE5M2JjOWE3ZGZmODcwY2E4NjZhYzU5N2UuLmVmYjg2ZTg1NmU4YzE2NzlkMmFhZGM5YzQy
NGE2YmVlMTVjMmE0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V2luZG93U2hlbGwuY3BwCkBAIC02MjIsNCArNjIyLDEwIEBAIHZvaWQgVjhET01XaW5kb3dTaGVs
bDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+CiAgICAgICAgIG1faXNvbGF0ZWRDb250ZXh0RGF0YS0+c2V0U2VjdXJpdHlPcmlnaW4obV9p
c29sYXRlZFdvcmxkU2hlbGxTZWN1cml0eU9yaWdpbik7CiB9CiAKK3ZvaWQgVjhET01XaW5kb3dT
aGVsbDo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcm
IHBvbGljeSkKK3sKKyAgICBBU1NFUlQoIW1fd29ybGQtPmlzTWFpbldvcmxkKCkpOworICAgIG1f
aXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSA9IFN0cmluZyhwb2xpY3kpOworfQor
CiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuaAppbmRleCA1MDQ5ZmYwYmJkMjg3NmE5MjVmZjczMTQ5MWYzY2M2MDM0N2U0OGQzLi5j
MmVmMTFhZmI3MTYzNDlhMmUwYjgzZWVhNmVkMGJkMGNmMzQ3ZTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCkBAIC0xMjAsNiArMTIwLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmln
aW4uZ2V0KCk7CiAgICAgfTsKIAorICAgIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeShjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGlzb2xhdGVkV29ybGRIYXNDb250
ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3dvcmxk
LT5pc01haW5Xb3JsZCgpKTsKKyAgICAgICAgcmV0dXJuIG1faXNvbGF0ZWRXb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeS5pc051bGwoKTsKKyAgICB9OworCiAgICAgaW5saW5lIHN0YXRpYyBJc29s
YXRlZENvbnRleHREYXRhKiBlbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0YSgpCiAgICAgewogICAg
ICAgICBpZiAoTElLRUxZKCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkp
CkBAIC0xNjQsNiArMTcxLDggQEAgcHJpdmF0ZToKIAogICAgIC8vIEZJWE1FOiBFaXRoZXIgcmVt
b3ZlIHRoaXMgb3IgdGhlIG1hcCBpbiBTY3JpcHRDb250cm9sbGVyLgogICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gbV9pc29sYXRlZFdvcmxkU2hlbGxTZWN1cml0eU9yaWdpbjsKKworICAgIFN0
cmluZyBtX2lzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3k7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiYjY4NzQwNTFiY2I5NDgxZGU0ZDBmYjRhYWU0
NmM2MjEwMjIxM2YyLi5lNTRjYWQ3NzRiNzljMmIwZjE4MTYxMGE2NDJkOGNhZWY3YTU5MmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTI5Niw2ICsyOTYsMTAgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3kgPSAoZG9jdW1lbnQoKS0+ZnJhbWUoKQorICAgICAgICAmJiBk
b2N1bWVudCgpLT5mcmFtZSgpLT5zY3JpcHQoKS0+c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5KCkKKyAgICAgICAgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2NyaXB0
KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKKwogICAg
IC8vIFNvbWUgdHlwZXMgb2YgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBz
YW1lIG9yaWdpbi4gIE90aGVyCiAgICAgLy8gdHlwZXMgb2YgcmVzb3VyY2VzLCBsaWtlIEltYWdl
cywgU2NyaXB0cywgYW5kIENTUywgY2FuIGJlIGxvYWRlZCBmcm9tCiAgICAgLy8gYW55IFVSTC4K
QEAgLTMzNiw3ICszNDAsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0
KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpTY3JpcHQ6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmFsbG93U2NyaXB0RnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPmFsbG93U2NyaXB0RnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChmcmFtZSgpKSB7CkBAIC0zNTIsMTggKzM1
NiwxOCBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICAvLyBTaW5jZSBzaGFkZXJz
IGFyZSByZWZlcmVuY2VkIGZyb20gQ1NTIFN0eWxlcyB1c2UgdGhlIHNhbWUgcnVsZXMgaGVyZS4K
ICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAg
IGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U3R5bGVGcm9t
U291cmNlKHVybCkpCisgICAgICAgIGlmICghc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5ICYmICFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxs
b3dTdHlsZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgYnJlYWs7CiAjaWYgRU5BQkxFKFNWRykKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdE
b2N1bWVudFJlc291cmNlOgogI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VS
ZXNvdXJjZToKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+YWxsb3dJbWFnZUZyb21Tb3VyY2UodXJsKSkKKyAgICAgICAgaWYgKCFzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLT5hbGxvd0ltYWdlRnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250
UmVzb3VyY2U6IHsKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xp
Y3koKS0+YWxsb3dGb250RnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93Rm9udEZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzc3LDcgKzM4MSw3IEBAIGJv
b2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNr
UmVzb3VyY2U6CiAgICAgICAgIC8vIEN1ZXMgYXJlbid0IGNhbGxlZCBvdXQgaW4gdGhlIENQUyBz
cGVjIHlldCwgYnV0IHRoZXkgb25seSB3b3JrIHdpdGggYSBtZWRpYSBlbGVtZW50CiAgICAgICAg
IC8vIHNvIHVzZSB0aGUgbWVkaWEgcG9saWN5LgotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01lZGlhRnJvbVNvdXJjZSh1cmwpKQorICAgICAg
ICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiAhbV9k
b2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVy
bCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAppbmRleCBjNzNmZmE2Yjk4ZmFm
NTg1NDYzN2UzYjU5NWIyMzVhNWUzMDAzNzdlLi42NDUxMDVjYmM4MWE3OGY1YmRjNGM5MGFkMjU2
MTMyZjc1ZDIzNTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgK
QEAgLTI2Niw2ICsyNjYsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJc29sYXRl
ZFdvcmxkU2VjdXJpdHlPcmlnaW4oCiAgICAgICAgIGludCB3b3JsZElELCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYpID0gMDsKIAorICAgIC8vIEFzc29jaWF0ZXMgYSBjb250ZW50IHNlY3VyaXR5
IHBvbGljeSB3aXRoIGFuIGlzb2xhdGVkIHdvcmxkLiBUaGlzIHBvbGljeQorICAgIC8vIHNob3Vs
ZCBiZSB1c2VkIHdoZW4gZXZhbHVhdGluZyBzY3JpcHQgaW4gdGhlIGlzb2xhdGVkIHdvcmxkLCBh
bmQgc2hvdWxkCisgICAgLy8gYWxzbyByZXBsYWNlIGEgcHJvdGVjdGVkIHJlc291cmNlJ3MgQ1NQ
IHdoZW4gZXZhbHVhdGluZyByZXNvdXJjZXMKKyAgICAvLyBpbmplY3RlZCBpbnRvIHRoZSBET00u
CisgICAgLy8KKyAgICAvLyBGSVhNRTogU2V0dGluZyB0aGlzIHNpbXBseSBieXBhc3NlcyB0aGUg
cHJvdGVjdGVkIHJlc291cmNlJ3MgQ1NQLiBJdAorICAgIC8vICAgICBkb2Vzbid0IHlldCByZXN0
cmljdCB0aGUgaXNvbGF0ZWQgd29ybGQgdG8gdGhlIHByb3ZpZGVkIHBvbGljeS4KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgKKyAgICAgICAg
aW50IHdvcmxkSUQsIGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKwogICAgIC8vIExvZ3MgdG8gdGhl
IGNvbnNvbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnJhbWUuCiAgICAgdmlydHVhbCB2b2lkIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgV2ViQ29uc29sZU1lc3NhZ2UmKSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDRiOTYzY2I5Nzdl
N2Q1ZTZkNWExNTA3YzVmN2M0Y2E2YjZhMGRlOTQuLmVlYzE5OTE3NDU2NDg4YTczZGRlYzI0ZmRl
ZGJmYjAxMjgyODkwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcApAQCAtODYyLDYgKzg2MiwxMSBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6c2V0SXNvbGF0
ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3JsZElELCBjb25zdCBXZWJTZWN1cml0eQogICAg
IG1fZnJhbWUtPnNjcmlwdCgpLT5zZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4od29ybGRJ
RCwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogfQogCit2b2lkIFdlYkZyYW1lSW1wbDo6c2V0SXNv
bGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCwgY29uc3QgV2ViU3Ry
aW5nJiBwb2xpY3kpCit7CisgICAgbV9mcmFtZS0+c2NyaXB0KCktPnNldElzb2xhdGVkV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3kod29ybGRJRCwgcG9saWN5KTsKK30KKwogdm9pZCBXZWJGcmFt
ZUltcGw6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgV2ViQ29uc29sZU1lc3NhZ2UmIG1lc3Nh
Z2UpCiB7CiAgICAgQVNTRVJUKGZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuaAppbmRleCAzODQ2NmU3NzA1MWQ1M2NhYTM1YjZiMWI4ZDRhNmJjMWZiZDQ2
YTE4Li5jNjBiNzJlZTYwZDg5Y2VhZThjMGFiYTcxOTc0MTkyMDM5ODkzYTI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaApAQCAtMTEwLDYgKzExMCw3IEBAIHB1
YmxpYzoKICAgICAgICAgaW50IHdvcmxkSUQsIGNvbnN0IFdlYlNjcmlwdFNvdXJjZSogc291cmNl
cywgdW5zaWduZWQgbnVtU291cmNlcywKICAgICAgICAgaW50IGV4dGVuc2lvbkdyb3VwKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3JsZElE
LCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc29sYXRl
ZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElELCBjb25zdCBXZWJTdHJpbmcm
KTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25zb2xl
TWVzc2FnZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwogICAgIHZpcnR1
YWwgYm9vbCBjaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KGNvbnN0IFdlYlVSTCYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcAppbmRl
eCBmNGYzYWVkMjI4YTdhMjk3NTc4MmJkOWMyYzY0NDJlNzhlNzFiMjg5Li40MWE5NDdiNWU5ZTli
ZWNmZWQxMzBjYjYyMGQ3YTc3M2VkMjRmOTg3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcApAQCAtMTU1LDYgKzE1NSw3IEBAIERSVFRlc3RS
dW5uZXI6OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJl
dmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCIsICZEUlRUZXN0UnVubmVyOjpldmFsdWF0ZVNj
cmlwdEluSXNvbGF0ZWRXb3JsZCk7CiAgICAgYmluZE1ldGhvZCgiZXZhbHVhdGVTY3JpcHRJbklz
b2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZSIsICZEUlRUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRJc29s
YXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4iLCAmRFJUVGVzdFJ1bm5lcjo6c2V0SXNvbGF0ZWRXb3Js
ZFNlY3VyaXR5T3JpZ2luKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRJc29sYXRlZFdvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5IiwgJkRSVFRlc3RSdW5uZXI6OnNldElzb2xhdGVkV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3kpOwogICAgIGJpbmRNZXRob2QoImV4ZWNDb21tYW5kIiwgJkRSVFRlc3RS
dW5uZXI6OmV4ZWNDb21tYW5kKTsKICAgICBiaW5kTWV0aG9kKCJmb3JjZVJlZFNlbGVjdGlvbkNv
bG9ycyIsICZEUlRUZXN0UnVubmVyOjpmb3JjZVJlZFNlbGVjdGlvbkNvbG9ycyk7CiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCkBAIC0xNDAxLDYgKzE0MDIsMTcgQEAgdm9pZCBEUlRUZXN0UnVu
bmVyOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWUKICAgICAgICAgV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY3Bw
VmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpKTsKIH0KIAordm9pZCBEUlRUZXN0UnVu
bmVyOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5z
ZXROdWxsKCk7CisKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAyIHx8ICFhcmd1bWVudHNb
MF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+Zm9jdXNlZEZyYW1lKCktPnNldElzb2xhdGVk
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koCisgICAgICAgIGFyZ3VtZW50c1swXS50b0ludDMy
LCBjcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKK30KKwogdm9pZCBEUlRUZXN0
UnVubmVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCA1NTk0MGFjZDFmNDdi
YjI2YWYyOWRkNWJiNmQ1MzBkMmFlZTA2NmQyLi4xZGM0MTRlNjc2Y2QzYTU4ZGMzZTkxMTI0ZWEw
ZjAzYzcwNjA0MDQwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
UlRUZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5oCkBAIC0yODAsNiArMjgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZXZhbHVhdGVT
Y3JpcHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZShjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRJc29sYXRl
ZFdvcmxkU2VjdXJpdHlPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OworICAgIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sgbWV0
aG9kIGlzIGNhbGxlZCB3aGVuIGEgbm9uZXhpc3RlbnQgbWV0aG9kIGlzIGNhbGxlZCBvbgogICAg
IC8vIHRoZSBsYXlvdXQgdGVzdCBjb250cm9sbGVyIG9iamVjdC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMzU1MGFkODkz
ZjRhMWQxMDZlNDA5ZWI1YjE0M2NmMGYxZGUzYmZjLi42YmI2ZDAwN2YxYWY1NThiZjljNmJiNzkw
ZTRhOTFkNjQ4Yzc1Yjg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMjggIE1pa2Ug
V2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JpcHQgcnVuIGZyb20gYW4g
aXNvbGF0ZWQgd29ybGQgc2hvdWxkIGJ5cGFzcyBhIHBhZ2UncyBDU1AuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlJ2xsIG5lZWQgc29tZSBtb3JlIHRl
c3RzLCBvZiBjb3Vyc2UuLi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3Jlc291cmNlLWFsbG93ZWQtZnJvbS1pc29sYXRlZC13b3JsZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3Jlc291cmNlLWFsbG93ZWQtZnJvbS1pc29sYXRlZC13b3JsZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgICAgIENoZWNrIHRoYXQgYW4gaW1hZ2UgaXMgYmxvY2tlZCBpbiB0aGUg
bWFpbiB3b3JsZCwgYnV0IGxvYWRhYmxlIHZpYQorICAgICAgICAgICAgdGhlIGlzb2xhdGVkIHdv
cmxkJ3Mgc2NyaXB0LgorCiAyMDEyLTA5LTI4ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0Bn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
cmVzb3VyY2UtYWxsb3dlZC1mcm9tLWlzb2xhdGVkLXdvcmxkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNl
LWFsbG93ZWQtZnJvbS1pc29sYXRlZC13b3JsZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBi
ZmJhN2IxODVlODM4OGI5MDUxMjMzYzhmYzg4YzEwOGJiZDllYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jl
c291cmNlLWFsbG93ZWQtZnJvbS1pc29sYXRlZC13b3JsZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxvYWQgdGhlIGltYWdlICdodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2FiZS5wbmcnIGJlY2F1c2UgaXQg
dmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6
ICJpbWctc3JjICdub25lJyIuCisKK0FMRVJUOiBCTE9DS0VEIGluIG1haW4gd29ybGQKK0FMRVJU
OiBMT0FERUQgaW4gaXNvbGF0ZWQgd29ybGQKK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBs
b2FkIHRoZSBpbWFnZSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9h
YmUucG5nJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgZGlyZWN0aXZlOiAiaW1nLXNyYyAnbm9uZSciLgorCitBTEVSVDogQkxPQ0tFRCBp
biBtYWluIHdvcmxkCitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHNjcmlwdHMgcnVuIGluIGlzb2xh
dGVkIHdvcmxkcyBhcmVuJ3QgZWZmZWN0ZWQgYnkgdGhlIHBhZ2UncyBjb250ZW50IHNlY3VyaXR5
IHBvbGljeS4gRXh0ZW5zaW9ucywgZm9yIGV4YW1wbGUsIHNob3VsZCBiZSBhYmxlIHRvIGxvYWQg
YW55IHJlc291cmNlIHRoZXkgbGlrZS4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZS1hbGxvd2VkLWZy
b20taXNvbGF0ZWQtd29ybGQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlLWFsbG93ZWQtZnJvbS1pc29sYXRlZC13b3Js
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ1NTQ1MjU0OWEzMWY3YWVmOWRmMDAyOTYyYTc4M2ZiNWFhMDQ0
YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZS1hbGxvd2VkLWZyb20taXNvbGF0ZWQtd29ybGQu
aHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBodHRwLWVxdWl2PSJYLVdlYktpdC1DU1AiIGNvbnRlbnQ9ImltZy1zcmMgJ25vbmUnIj4K
KzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB9CisKKyAgICB0ZXN0cyA9IDM7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCBmdW5jdGlvbihtZXNzYWdlKSB7CisgICAgICAgIHRlc3RzIC09IDE7CisgICAgICAgIHRl
c3QoKTsKKyAgICB9LCBmYWxzZSk7CisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBm
dW5jdGlvbiBzZXRJbWdTcmMoaXNvbGF0ZWQpIHsKKyAgICAgICAgICAgIHZhciBpbWcgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoaW1nKTsKKyAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgYWxlcnQoJ0xPQURFRCBpbiAnICsgKGlzb2xhdGVkID8gImlzb2xhdGVk
IHdvcmxkIiA6ICJtYWluIHdvcmxkIikpOworICAgICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVz
c2FnZSgibmV4dCIsICIqIik7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaW1nLm9uZXJy
b3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYWxlcnQoJ0JMT0NLRUQgaW4gJyAr
IChpc29sYXRlZCA/ICJpc29sYXRlZCB3b3JsZCIgOiAibWFpbiB3b3JsZCIpKTsKKyAgICAgICAg
ICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIm5leHQiLCAiKiIpOworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGltZy5zcmMgPSAiLi4vcmVzb3VyY2VzL2FiZS5wbmciOworICAgICAgICB9
CisKKyAgICAgICAgc3dpdGNoICh0ZXN0cykgeworICAgICAgICAgICAgY2FzZSAzOgorICAgICAg
ICAgICAgICAgIHNldEltZ1NyYyhmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZCgxLCBTdHJpbmcoZXZhbCgic2V0SW1nU3JjIikpICsgIlxuc2V0SW1n
U3JjKHRydWUpOyIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgICAgIHNldEltZ1NyYyhmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ndGVzdCgpOyc+CisgICAgPHA+CisgICAgICAg
IFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2NyaXB0cyBydW4gaW4gaXNvbGF0ZWQgd29ybGRzIGFy
ZW4ndCBlZmZlY3RlZAorICAgICAgICBieSB0aGUgcGFnZSdzIGNvbnRlbnQgc2VjdXJpdHkgcG9s
aWN5LiBFeHRlbnNpb25zLCBmb3IgZXhhbXBsZSwgc2hvdWxkCisgICAgICAgIGJlIGFibGUgdG8g
bG9hZCBhbnkgcmVzb3VyY2UgdGhleSBsaWtlLgorICAgIDwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3Js
ZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNjMyMWU4M2NhNzJlYjQ4MmYyNjlkOGI0YTA2Y2Y1ZGQ2MzFhMzc1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFz
cy1tYWluLXdvcmxkLWNzcC5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IlgtV2ViS2l0LUNTUCIgY29udGVudD0i
aW1nLXNyYyAnbm9uZSciPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHRlc3RzID0gNDsKKyAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKG1lc3NhZ2UpIHsKKyAgICAgICAgdGVzdHMg
LT0gMTsKKyAgICAgICAgdGVzdCgpOworICAgIH0sIGZhbHNlKTsKKworICAgIGZ1bmN0aW9uIHRl
c3QoKSB7CisgICAgICAgIGZ1bmN0aW9uIHNldEltZ1NyYyhpc29sYXRlZCkgeworICAgICAgICAg
ICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOworICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOworICAgICAgICAgICAgaW1nLm9ubG9hZCA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhbGVydCgnTE9BREVEIGluICcgKyAoaXNv
bGF0ZWQgPyAiaXNvbGF0ZWQgd29ybGQiIDogIm1haW4gd29ybGQiKSk7CisgICAgICAgICAgICAg
ICAgd2luZG93LnBvc3RNZXNzYWdlKCJuZXh0IiwgIioiKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhbGVy
dCgnQkxPQ0tFRCBpbiAnICsgKGlzb2xhdGVkID8gImlzb2xhdGVkIHdvcmxkIiA6ICJtYWluIHdv
cmxkIikpOworICAgICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgibmV4dCIsICIqIik7
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaW1nLnNyYyA9ICIuLi9yZXNvdXJjZXMvYWJl
LnBuZyI7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHRlc3RzKSB7CisgICAgICAgICAg
ICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgc2V0SW1nU3JjKGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKDEsIFN0cmluZyhldmFsKCJzZXRJbWdT
cmMiKSkgKyAiXG5zZXRJbWdTcmModHJ1ZSk7Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgYWxlcnQoIlN0YXJ0aW5nIHRvIGJ5
cGFzcyBtYWluIHdvcmxkJ3MgQ1NQOiIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgxLCAnaW1nLXNyYyAqJyk7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCgxLCBT
dHJpbmcoZXZhbCgic2V0SW1nU3JjIikpICsgIlxuc2V0SW1nU3JjKHRydWUpOyIpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIHNl
dEltZ1NyYyhmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IDA6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0ndGVzdCgpOyc+CisgICAgPHA+CisgICAgICAgIFRoaXMgdGVzdCBlbnN1cmVzIHRo
YXQgc2NyaXB0cyBydW4gaW4gaXNvbGF0ZWQgd29ybGRzIG1hcmtlZCB3aXRoIHRoZWlyCisgICAg
ICAgIG93biBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBhcmVuJ3QgYWZmZWN0ZWQgYnkgdGhlIHBh
Z2UncyBjb250ZW50CisgICAgICAgIHNlY3VyaXR5IHBvbGljeS4gRXh0ZW5zaW9ucywgZm9yIGV4
YW1wbGUsIHNob3VsZCBiZSBhYmxlIHRvIGxvYWQgYW55CisgICAgICAgIHJlc291cmNlIHRoZXkg
bGlrZS4KKyAgICA8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166357</attachid>
            <date>2012-09-29 02:56:41 -0700</date>
            <delta_ts>2012-10-18 06:17:14 -0700</delta_ts>
            <desc>WDYT?</desc>
            <filename>bug-97398-20120929115556.patch</filename>
            <type>text/plain</type>
            <size>26694</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE2N2FiOWJlNjRmMDVm
OWZhMmM0MDkyZjMxMTRmYWFkM2E4Y2VhOS4uNDZhYTA2NDQwYWQxZWQ3MDQ5ZWVmYTI5ZGI0Yjk1
ZjhhOGNmZTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA5LTI5ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFu
IGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOT1QgRk9SIExBTkRJTkcgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9yZXNvdXJjZS1hbGxvd2VkLWZyb20taXNvbGF0ZWQtd29ybGQuaHRtbAorCisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjppbklzb2xhdGVkV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0
Q29udHJvbGxlcik6CisgICAgICAgICAgICBKU0MgaW1wbGVtZW50YXRpb24gb2YgJ2luSXNvbGF0
ZWRXb3JsZCcuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjppbklzb2xhdGVkV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
OgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgICAgICBWOCBpbXBsZW1lbnRh
dGlvbiBvZiAnaW5Jc29sYXRlZFdvcmxkJy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAgICAgQ2hlY2sgJ1NjcmlwdENvbnRyb2xsZXI6Omlu
SXNvbGF0ZWRXb3JsZCcsIGFuZCBvbmx5IHBlcmZvcm0gQ1NQCisgICAgICAgICAgICBjaGVja3Mg
aWYgd2UncmUgZXhlY3V0aW5nIGNvZGUgZnJvbSB0aGUgbWFpbiB3b3JsZC4KKwogMjAxMi0wOS0y
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtWOF0gVGhlIGNv
bmNlcHQgb2YgZm9yY2VOZXdPYmplY3QgaXMgdW5uZWVkZWQgKGRvbS10cmF2ZXJzZSBnZXRzIDMl
IGZhc3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aAppbmRleCBiY2VkM2Y4MzU4ZTJiYjA1YmRiNmQwZDVjNTQ3MWEwYTQxYzA2OTdjLi5mNDFjOTBl
Yzk1YzU5NDRjZDRjNDk5ZDY1ZmZkNzg1ZmNlNDk5YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNjAsNiArMTYwLDkgQEAgcHVibGlj
OgogICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgpOwogI2VuZGlmCiAKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50YXRpb24uCisgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3koKSB7IHJldHVybiBmYWxzZTsgfTsKKwogcHJpdmF0ZToKICAg
ICBKU0RPTVdpbmRvd1NoZWxsKiBpbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29ybGQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDkxZjMwNWU3Nzc3ZjEyYzhiOWUxNDY2NDI1OTM4MGFjY2JlMWNiZTguLmZmYzRjZDdlZTAw
OGJmZTA3NzM5ZWYxOTljN2U4NDlkYjU4NzM5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00MTcsNiArNDE3LDE0IEBAIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3Js
ZElELCBQYXNzUmVmUHRyPFNlCiAgICAgICAgIGl0ZXItPnNlY29uZC0+c2V0SXNvbGF0ZWRXb3Js
ZFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKIH0KIAordm9pZCBTY3JpcHRDb250cm9s
bGVyOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElELCBj
b25zdCBTdHJpbmcmIHBvbGljeSkKK3sKKyAgICBBU1NFUlQod29ybGRJRCk7CisgICAgSXNvbGF0
ZWRXb3JsZE1hcDo6aXRlcmF0b3IgaXRlciA9IG1faXNvbGF0ZWRXb3JsZHMuZmluZCh3b3JsZElE
KTsKKyAgICBpZiAoaXRlciAhPSBtX2lzb2xhdGVkV29ybGRzLmVuZCgpKQorICAgICAgICBpdGVy
LT5zZWNvbmQtPnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kocG9saWN5KTsK
K30KKwogVGV4dFBvc2l0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9u
KCkgY29uc3QKIHsKICAgICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpOwpAQCAtNjg4LDYgKzY5
NiwxNCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZl
Y3RvcjxzdGQ6OnBhaXI8U2NyaXB0U3RhdGUqLCBTZQogfQogI2VuZGlmCiAKK2Jvb2wgU2NyaXB0
Q29udHJvbGxlcjo6c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkK
K3sKKyAgICBWOERPTVdpbmRvd1NoZWxsOjpJc29sYXRlZENvbnRleHREYXRhKiBpc29sYXRlZERh
dGEgPSBWOERPTVdpbmRvd1NoZWxsOjplbnRlcmVkSXNvbGF0ZWRDb250ZXh0RGF0YSgpOworICAg
IGlmICghIWlzb2xhdGVkRGF0YSkKKyAgICAgICAgcmV0dXJuIGlzb2xhdGVkRGF0YS0+aGFzQ29u
dGVudFNlY3VyaXR5UG9saWN5KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFNjcmlw
dENvbnRyb2xsZXI6OnNldENvbnRleHREZWJ1Z0lkKGludCBkZWJ1Z0lkKQogewogICAgIEFTU0VS
VChkZWJ1Z0lkID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggZGZmZWUzNTAzYWRhMDRmN2YwMmMwNDdlNWQxMzRmY2ZjYTlkOGNhMS4u
ZGQzNjZhODUzYTE5ZjE3ZWExYjU0MzFjMDFlNzAwM2I2OTNhOWI2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTEyLDYgKzExMiwxNiBA
QCBwdWJsaWM6CiAgICAgLy8gdG8gY29tZSBmcm9tIHRoYXQgb3JpZ2luLCBub3QgdGhlIGZyYW1l
J3MuCiAgICAgdm9pZCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oaW50IHdvcmxkSUQs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsKIAorICAgIC8vIEFzc29jaWF0ZXMgYSBjb250
ZW50IHNlY3VyaXR5IHBvbGljeSB3aXRoIGFuIGlzb2xhdGVkIHdvcmxkLiBUaGlzIHBvbGljeQor
ICAgIC8vIHNob3VsZCBiZSB1c2VkIHdoZW4gZXZhbHVhdGluZyBzY3JpcHQgaW4gdGhlIGlzb2xh
dGVkIHdvcmxkLCBhbmQgc2hvdWxkCisgICAgLy8gYWxzbyByZXBsYWNlIGEgcHJvdGVjdGVkIHJl
c291cmNlJ3MgQ1NQIHdoZW4gZXZhbHVhdGluZyByZXNvdXJjZXMKKyAgICAvLyBpbmplY3RlZCBp
bnRvIHRoZSBET00uCisgICAgLy8KKyAgICAvLyBGSVhNRTogU2V0dGluZyB0aGlzIHNpbXBseSBi
eXBhc3NlcyB0aGUgcHJvdGVjdGVkIHJlc291cmNlJ3MgQ1NQLiBJdAorICAgIC8vICAgICBkb2Vz
bid0IHlldCByZXN0cmljdCB0aGUgaXNvbGF0ZWQgd29ybGQgdG8gdGhlIHByb3ZpZGVkIHBvbGlj
eS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eShpbnQgd29ybGRJRCwgY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKwogICAgIC8vIENyZWF0ZXMgYSBwcm9wZXJ0
eSBvZiB0aGUgZ2xvYmFsIG9iamVjdCBvZiBhIGZyYW1lLgogICAgIHZvaWQgYmluZFRvV2luZG93
T2JqZWN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBrZXksIE5QT2JqZWN0Kik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggMDcyZGFk
MzRmY2IwMWZhNjIyNzJlMmI3NmQ4YTIyOTExYmUwMzQ3MS4uMjUwOTUzMGUwYTE4ZjFlOTM2N2Vk
Y2FkNWQxYWFkNjNiMzU3Y2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCBib29sIFY4RE9NV2luZG93
U2hlbGw6OmluaXRpYWxpemVJZk5lZWRlZCgpCiAgICAgICAgIG1haW5XaW5kb3ctPmluaXRpYWxp
emVJZk5lZWRlZCgpOwogICAgICAgICBpZiAoIW1haW5XaW5kb3ctPmNvbnRleHQoKS5Jc0VtcHR5
KCkpCiAgICAgICAgICAgICBzZXRJbmplY3RlZFNjcmlwdENvbnRleHREZWJ1Z0lkKG1fY29udGV4
dC5nZXQoKSwgbV9mcmFtZS0+c2NyaXB0KCktPmNvbnRleHREZWJ1Z0lkKG1haW5XaW5kb3ctPmNv
bnRleHQoKSkpOwotICAgICAgICBtX2lzb2xhdGVkQ29udGV4dERhdGEgPSBJc29sYXRlZENvbnRl
eHREYXRhOjpjcmVhdGUobV93b3JsZCwgbV9wZXJDb250ZXh0RGF0YS5yZWxlYXNlKCksIG1faXNv
bGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4pOworICAgICAgICBtX2lzb2xhdGVkQ29udGV4
dERhdGEgPSBJc29sYXRlZENvbnRleHREYXRhOjpjcmVhdGUobV93b3JsZCwgbV9wZXJDb250ZXh0
RGF0YS5yZWxlYXNlKCksIG1faXNvbGF0ZWRXb3JsZFNoZWxsU2VjdXJpdHlPcmlnaW4sIG1faXNv
bGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgICAgIHNldElzb2xhdGVkV29y
bGRGaWVsZChtX2lzb2xhdGVkQ29udGV4dERhdGEuZ2V0KCksIGNvbnRleHQpOwogICAgIH0KIApA
QCAtNjIyLDQgKzYyMiwxMiBAQCB2b2lkIFY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVkV29y
bGRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPgogICAgICAgICBtX2lz
b2xhdGVkQ29udGV4dERhdGEtPnNldFNlY3VyaXR5T3JpZ2luKG1faXNvbGF0ZWRXb3JsZFNoZWxs
U2VjdXJpdHlPcmlnaW4pOwogfQogCit2b2lkIFY4RE9NV2luZG93U2hlbGw6OnNldElzb2xhdGVk
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3kpCit7CisgICAg
QVNTRVJUKCFtX3dvcmxkLT5pc01haW5Xb3JsZCgpKTsKKyAgICBtX2lzb2xhdGVkV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3kgPSBwb2xpY3k7CisgICAgaWYgKG1faXNvbGF0ZWRDb250ZXh0RGF0
YSkKKyAgICAgICAgbV9pc29sYXRlZENvbnRleHREYXRhLT5zZXRDb250ZW50U2VjdXJpdHlQb2xp
Y3kobV9pc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KTsKK30KKwogfSAvLyBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgKaW5k
ZXggZGUyYzJhMjBkOGU3ZjRlYWFjNTFlNGZkNDdiMDkwNzdkM2VkNTc4ZS4uMzM0ZDQ5Mzg5ODRi
ODFkZTQ0NTc1NjdlZWUxZWYyNWNlNDgxMWI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaApAQCAtNTksMjYgKzU5LDMwIEBAIHB1YmxpYzoKICAg
ICBjbGFzcyBJc29sYXRlZENvbnRleHREYXRhIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSXNvbGF0ZWRDb250ZXh0RGF0YSk7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c093blB0cjxJc29sYXRlZENvbnRleHREYXRhPiBjcmVhdGUoUGFzc1JlZlB0cjxET01XcmFwcGVy
V29ybGQ+IHdvcmxkLCBQYXNzT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IHBlckNvbnRleHREYXRh
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKKyAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8SXNvbGF0ZWRDb250ZXh0RGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8RE9N
V3JhcHBlcldvcmxkPiB3b3JsZCwgUGFzc093blB0cjxWOFBlckNvbnRleHREYXRhPiBwZXJDb250
ZXh0RGF0YSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IElzb2xhdGVkQ29udGV4dERhdGEod29ybGQsIHBlckNvbnRleHRE
YXRhLCBzZWN1cml0eU9yaWdpbikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJ
c29sYXRlZENvbnRleHREYXRhKHdvcmxkLCBwZXJDb250ZXh0RGF0YSwgc2VjdXJpdHlPcmlnaW4s
IGNvbnRlbnRTZWN1cml0eVBvbGljeSkpOwogICAgICAgICB9CiAgICAgICAgIERPTVdyYXBwZXJX
b3JsZCogd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAgICAgICAgIFY4UGVyQ29u
dGV4dERhdGEqIHBlckNvbnRleHREYXRhKCkgeyByZXR1cm4gbV9wZXJDb250ZXh0RGF0YS5nZXQo
KTsgfQogICAgICAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbikgeyBtX3NlY3VyaXR5T3JpZ2luID0gb3JpZ2luOyB9CiAgICAgICAgIFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4u
Z2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3Ry
aW5nJiAvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgKi8pIHsgbV9oYXNDb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSB0cnVlOyB9CisgICAgICAgIGJvb2wgaGFzQ29udGVudFNlY3VyaXR5UG9saWN5KCkg
eyByZXR1cm4gbV9oYXNDb250ZW50U2VjdXJpdHlQb2xpY3k7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIElzb2xhdGVkQ29udGV4dERhdGEoUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+IHdv
cmxkLCBQYXNzT3duUHRyPFY4UGVyQ29udGV4dERhdGE+IHBlckNvbnRleHREYXRhLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKKyAgICAgICAgSXNvbGF0ZWRDb250
ZXh0RGF0YShQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gd29ybGQsIFBhc3NPd25QdHI8VjhQ
ZXJDb250ZXh0RGF0YT4gcGVyQ29udGV4dERhdGEsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAg
ICAgICAgICAgIDogbV93b3JsZCh3b3JsZCkKICAgICAgICAgICAgICwgbV9wZXJDb250ZXh0RGF0
YShwZXJDb250ZXh0RGF0YSkKICAgICAgICAgICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0
eU9yaWdpbikKKyAgICAgICAgICAgICwgbV9oYXNDb250ZW50U2VjdXJpdHlQb2xpY3koIWNvbnRl
bnRTZWN1cml0eVBvbGljeS5pc051bGwoKSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAg
ICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAgICAgICAgT3duUHRyPFY4UGVy
Q29udGV4dERhdGE+IG1fcGVyQ29udGV4dERhdGE7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICAgICAgYm9vbCBtX2hhc0NvbnRlbnRTZWN1cml0
eVBvbGljeTsKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8VjhET01XaW5kb3dTaGVs
bD4gY3JlYXRlKEZyYW1lKiwgUGFzc1JlZlB0cjxET01XcmFwcGVyV29ybGQ+KTsKQEAgLTExOSw2
ICsxMjMsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pc29sYXRlZFdvcmxkU2hlbGxT
ZWN1cml0eU9yaWdpbi5nZXQoKTsKICAgICB9OwogCisgICAgdm9pZCBzZXRJc29sYXRlZFdvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgaXNvbGF0ZWRX
b3JsZEhhc0NvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoIW1fd29ybGQtPmlzTWFpbldvcmxkKCkpOworICAgICAgICByZXR1cm4gbV9pc29sYXRlZFdv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5LmlzTnVsbCgpOworICAgIH07CisKICAgICBpbmxpbmUg
c3RhdGljIElzb2xhdGVkQ29udGV4dERhdGEqIGVudGVyZWRJc29sYXRlZENvbnRleHREYXRhKCkK
ICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3Js
ZHNFeGlzdCgpKSkKQEAgLTE2Myw2ICsxNzQsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gRklYTUU6
IEVpdGhlciByZW1vdmUgdGhpcyBvciB0aGUgbWFwIGluIFNjcmlwdENvbnRyb2xsZXIuCiAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX2lzb2xhdGVkV29ybGRTaGVsbFNlY3VyaXR5T3JpZ2lu
OworCisgICAgU3RyaW5nIG1faXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJiNjg3NDA1MWJjYjk0ODFk
ZTRkMGZiNGFhZTQ2YzYyMTAyMjEzZjIuLmU1NGNhZDc3NGI3OWMyYjBmMTgxNjEwYTY0MmQ4Y2Fl
ZjdhNTkyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMjk2LDYgKzI5NiwxMCBAQCBib29sIENhY2hlZFJlc291
cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtV
UkwmIHVybAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBib29sIHNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSA9IChkb2N1bWVudCgpLT5mcmFtZSgpCisg
ICAgICAgICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnNjcmlwdCgpLT5zaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKQorICAgICAgICAmJiBkb2N1bWVudCgpLT5mcmFt
ZSgpLT5zY3JpcHQoKS0+c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
KCkpOworCiAgICAgLy8gU29tZSB0eXBlcyBvZiByZXNvdXJjZXMgY2FuIGJlIGxvYWRlZCBvbmx5
IGZyb20gdGhlIHNhbWUgb3JpZ2luLiAgT3RoZXIKICAgICAvLyB0eXBlcyBvZiByZXNvdXJjZXMs
IGxpa2UgSW1hZ2VzLCBTY3JpcHRzLCBhbmQgQ1NTLCBjYW4gYmUgbG9hZGVkIGZyb20KICAgICAv
LyBhbnkgVVJMLgpAQCAtMzM2LDcgKzM0MCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKICNlbmRpZgogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRGcm9tU291cmNlKHVybCkpCisgICAgICAgIGlm
ICghc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFtX2RvY3Vt
ZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRGcm9tU291cmNlKHVybCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKGZyYW1lKCkpIHsKQEAg
LTM1MiwxOCArMzU2LDE4IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Qo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgICAgIC8vIFNp
bmNlIHNoYWRlcnMgYXJlIHJlZmVyZW5jZWQgZnJvbSBDU1MgU3R5bGVzIHVzZSB0aGUgc2FtZSBy
dWxlcyBoZXJlLgogI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVl
dDoKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxs
b3dTdHlsZUZyb21Tb3VyY2UodXJsKSkKKyAgICAgICAgaWYgKCFzaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5hbGxvd1N0eWxlRnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoU1ZHKQogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlNWR0RvY3VtZW50UmVzb3VyY2U6CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpJbWFnZVJlc291cmNlOgotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpLT5hbGxvd0ltYWdlRnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkZvbnRSZXNvdXJjZTogewotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5hbGxvd0ZvbnRGcm9tU291cmNlKHVybCkpCisgICAgICAgIGlmICgh
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFtX2RvY3VtZW50
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dGb250RnJvbVNvdXJjZSh1cmwpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zNzcsNyAr
MzgxLDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNv
dXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpUZXh0VHJhY2tSZXNvdXJjZToKICAgICAgICAgLy8gQ3VlcyBhcmVuJ3QgY2FsbGVkIG91dCBp
biB0aGUgQ1BTIHNwZWMgeWV0LCBidXQgdGhleSBvbmx5IHdvcmsgd2l0aCBhIG1lZGlhIGVsZW1l
bnQKICAgICAgICAgLy8gc28gdXNlIHRoZSBtZWRpYSBwb2xpY3kuCi0gICAgICAgIGlmICghbV9k
b2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVy
bCkpCisgICAgICAgIGlmICghc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5ICYmICFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRpYUZy
b21Tb3VyY2UodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IGM3
M2ZmYTZiOThmYWY1ODU0NjM3ZTNiNTk1YjIzNWE1ZTMwMDM3N2UuLjY0NTEwNWNiYzgxYTc4ZjVi
ZGM0YzkwYWQyNTYxMzJmNzVkMjM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRnJhbWUuaApAQCAtMjY2LDYgKzI2NiwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbigKICAgICAgICAgaW50IHdvcmxkSUQsIGNv
bnN0IFdlYlNlY3VyaXR5T3JpZ2luJikgPSAwOwogCisgICAgLy8gQXNzb2NpYXRlcyBhIGNvbnRl
bnQgc2VjdXJpdHkgcG9saWN5IHdpdGggYW4gaXNvbGF0ZWQgd29ybGQuIFRoaXMgcG9saWN5Cisg
ICAgLy8gc2hvdWxkIGJlIHVzZWQgd2hlbiBldmFsdWF0aW5nIHNjcmlwdCBpbiB0aGUgaXNvbGF0
ZWQgd29ybGQsIGFuZCBzaG91bGQKKyAgICAvLyBhbHNvIHJlcGxhY2UgYSBwcm90ZWN0ZWQgcmVz
b3VyY2UncyBDU1Agd2hlbiBldmFsdWF0aW5nIHJlc291cmNlcworICAgIC8vIGluamVjdGVkIGlu
dG8gdGhlIERPTS4KKyAgICAvLworICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoaXMgc2ltcGx5IGJ5
cGFzc2VzIHRoZSBwcm90ZWN0ZWQgcmVzb3VyY2UncyBDU1AuIEl0CisgICAgLy8gICAgIGRvZXNu
J3QgeWV0IHJlc3RyaWN0IHRoZSBpc29sYXRlZCB3b3JsZCB0byB0aGUgcHJvdmlkZWQgcG9saWN5
LgorICAgIHZpcnR1YWwgdm9pZCBzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
KAorICAgICAgICBpbnQgd29ybGRJRCwgY29uc3QgV2ViU3RyaW5nJikgPSAwOworCiAgICAgLy8g
TG9ncyB0byB0aGUgY29uc29sZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBmcmFtZS4KICAgICB2aXJ0
dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25zb2xlTWVzc2FnZSYpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXgg
MjVmYTNlZjRmMzEzOTQzNzE5NGU3MTUwN2E1M2I5NWYwMWQ4ODdhNS4uMWVlZmM0ZjJhNDY2YmMz
MGVmMmQ2NDRmNzg5YzA0Y2I2MDg5MDZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCkBAIC04MzYsNiArODM2LDExIEBAIHZvaWQgV2ViRnJhbWVJbXBs
OjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oaW50IHdvcmxkSUQsIGNvbnN0IFdlYlNl
Y3VyaXR5CiAgICAgZnJhbWUoKS0+c2NyaXB0KCktPnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9y
aWdpbih3b3JsZElELCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVJ
bXBsOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElELCBj
b25zdCBXZWJTdHJpbmcmIHBvbGljeSkKK3sKKyAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+c2V0SXNv
bGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSh3b3JsZElELCBwb2xpY3kpOworfQorCiB2
b2lkIFdlYkZyYW1lSW1wbDo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25zb2xlTWVz
c2FnZSYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoZnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDI2ODZhYWQxZGQzMWI5YmVhNjhlOTQ1YWJm
Njg0MjUxYmIxNGZhOGQuLjcyMmVjZjU1OTc0NTBlY2U1NGI2ZGU0MmFiODhhMTAzOGZlYzFkMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0xMTQsNiAr
MTE0LDcgQEAgcHVibGljOgogICAgICAgICBpbnQgd29ybGRJRCwgY29uc3QgV2ViU2NyaXB0U291
cmNlKiBzb3VyY2VzLCB1bnNpZ25lZCBudW1Tb3VyY2VzLAogICAgICAgICBpbnQgZXh0ZW5zaW9u
R3JvdXApOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4o
aW50IHdvcmxkSUQsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJik7CisgICAgdmlydHVhbCB2b2lk
IHNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koaW50IHdvcmxkSUQsIGNvbnN0
IFdlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0
IFdlYkNvbnNvbGVNZXNzYWdlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7
CiAgICAgdmlydHVhbCBib29sIGNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoY29uc3QgV2ViVVJM
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRU
ZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5u
ZXIuY3BwCmluZGV4IGY0ZjNhZWQyMjhhN2EyOTc1NzgyYmQ5YzJjNjQ0MmU3OGU3MWIyODkuLjVj
ZTJiOWY2NjkzNjc2OWI5NjYwODlmYjUzMjc5NmU5NjJhMTQ5YjUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCkBAIC0xNTUsNiArMTU1LDcg
QEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJp
bmRNZXRob2QoImV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkIiwgJkRSVFRlc3RSdW5uZXI6
OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKTsKICAgICBiaW5kTWV0aG9kKCJldmFsdWF0
ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlIiwgJkRSVFRlc3RSdW5uZXI6OmV2
YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFsdWUpOwogICAgIGJpbmRNZXRo
b2QoInNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiIsICZEUlRUZXN0UnVubmVyOjpzZXRJ
c29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4pOworICAgIGJpbmRNZXRob2QoInNldElzb2xhdGVk
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0SXNvbGF0ZWRX
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgYmluZE1ldGhvZCgiZXhlY0NvbW1hbmQi
LCAmRFJUVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQpOwogICAgIGJpbmRNZXRob2QoImZvcmNlUmVk
U2VsZWN0aW9uQ29sb3JzIiwgJkRSVFRlc3RSdW5uZXI6OmZvcmNlUmVkU2VsZWN0aW9uQ29sb3Jz
KTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKQEAgLTE0MDEsNiArMTQwMiwxNyBAQCB2b2lk
IERSVFRlc3RSdW5uZXI6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZQogICAgICAgICBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSkpOwogfQogCit2b2lk
IERSVFRlc3RSdW5uZXI6OnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAg
ICByZXN1bHQtPnNldE51bGwoKTsKKworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIgfHwg
IWFyZ3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9zaGVsbC0+d2ViVmlldygpLT5mb2N1c2VkRnJhbWUoKS0+
c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgKKyAgICAgICAgYXJndW1lbnRz
WzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOworfQor
CiB2b2lkIERSVFRlc3RSdW5uZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7
CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCmluZGV4
IDU1OTQwYWNkMWY0N2JiMjZhZjI5ZGQ1YmI2ZDUzMGQyYWVlMDY2ZDIuLjFkYzQxNGU2NzZjZDNh
NThkYzNlOTExMjRlYTBmMDNjNzA2MDQwNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKQEAgLTI4MCw2ICsyODAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5J
c29sYXRlZFdvcmxkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2
b2lkIHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIFRo
ZSBmYWxsYmFjayBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBub25leGlzdGVudCBtZXRob2QgaXMg
Y2FsbGVkIG9uCiAgICAgLy8gdGhlIGxheW91dCB0ZXN0IGNvbnRyb2xsZXIgb2JqZWN0LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDk1MTcyYzA3YTU4MDdjMDI3NjEwMjlkMjYzNzI5MDYxYWIzMTg2NjEuLjkzZTc2NjlkMGIz
Y2IyZWRlYTQyYTkyYjVhY2M5MjhiZmExY2NmOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Mi0wOS0yOSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcmlw
dCBydW4gZnJvbSBhbiBpc29sYXRlZCB3b3JsZCBzaG91bGQgYnlwYXNzIGEgcGFnZSdzIENTUC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UnbGwgbmVl
ZCBzb21lIG1vcmUgdGVzdHMsIG9mIGNvdXJzZS4uLgorCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2UtYWxsb3dlZC1mcm9tLWlzb2xh
dGVkLXdvcmxkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2UtYWxsb3dlZC1mcm9tLWlzb2xhdGVk
LXdvcmxkLmh0bWw6IEFkZGVkLgorICAgICAgICAgICAgQ2hlY2sgdGhhdCBhbiBpbWFnZSBpcyBi
bG9ja2VkIGluIHRoZSBtYWluIHdvcmxkLCBidXQgbG9hZGFibGUgdmlhCisgICAgICAgICAgICB0
aGUgaXNvbGF0ZWQgd29ybGQncyBzY3JpcHQuCisKIDIwMTItMDktMjggIEVtaWwgQSBFa2x1bmQg
IDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcHJvdmUgc2F0dXJhdGlvbiBhcml0aG1l
dGljIHN1cHBvcnQgaW4gRnJhY3Rpb25hbExheW91dFVuaXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1j
c3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRl
ZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJj
OWJmMWU1N2JjZjc1ODhmNmEzZTQzZTE2NzM1MjAzYTcwNjU0MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFp
bi13b3JsZC1jc3AtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NPTlNPTEUgTUVTU0FH
RTogUmVmdXNlZCB0byBsb2FkIHRoZSBpbWFnZSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9hYmUucG5nJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiaW1nLXNyYyAnbm9uZSciLgorCitB
TEVSVDogQkxPQ0tFRCBpbiBtYWluIHdvcmxkCitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8g
bG9hZCB0aGUgaW1hZ2UgJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
YWJlLnBuZycgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJp
dHkgUG9saWN5IGRpcmVjdGl2ZTogImltZy1zcmMgJ25vbmUnIi4KKworQUxFUlQ6IEJMT0NLRUQg
aW4gaXNvbGF0ZWQgd29ybGQKK0FMRVJUOiBTdGFydGluZyB0byBieXBhc3MgbWFpbiB3b3JsZCdz
IENTUDoKK0FMRVJUOiBMT0FERUQgaW4gaXNvbGF0ZWQgd29ybGQKK0NPTlNPTEUgTUVTU0FHRTog
UmVmdXNlZCB0byBsb2FkIHRoZSBpbWFnZSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3Jlc291cmNlcy9hYmUucG5nJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiaW1nLXNyYyAnbm9uZSciLgorCitBTEVS
VDogQkxPQ0tFRCBpbiBtYWluIHdvcmxkCitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHNjcmlwdHMg
cnVuIGluIGlzb2xhdGVkIHdvcmxkcyBtYXJrZWQgd2l0aCB0aGVpciBvd24gQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgYXJlbid0IGFmZmVjdGVkIGJ5IHRoZSBwYWdlJ3MgY29udGVudCBzZWN1cml0
eSBwb2xpY3kuIEV4dGVuc2lvbnMsIGZvciBleGFtcGxlLCBzaG91bGQgYmUgYWJsZSB0byBsb2Fk
IGFueSByZXNvdXJjZSB0aGV5IGxpa2UuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1t
YWluLXdvcmxkLWNzcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2MzIxZTgzY2E3MmViNDgyZjI2OWQ4YjRh
MDZjZjVkZDYzMWEzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLmh0bWwKQEAgLTAs
MCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1l
cXVpdj0iWC1XZWJLaXQtQ1NQIiBjb250ZW50PSJpbWctc3JjICdub25lJyI+Cis8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAg
dGVzdHMgPSA0OworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rp
b24obWVzc2FnZSkgeworICAgICAgICB0ZXN0cyAtPSAxOworICAgICAgICB0ZXN0KCk7CisgICAg
fSwgZmFsc2UpOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgZnVuY3Rpb24gc2V0
SW1nU3JjKGlzb2xhdGVkKSB7CisgICAgICAgICAgICB2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW1nJyk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlt
Zyk7CisgICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGFsZXJ0KCdMT0FERUQgaW4gJyArIChpc29sYXRlZCA/ICJpc29sYXRlZCB3b3JsZCIgOiAi
bWFpbiB3b3JsZCIpKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIm5leHQi
LCAiKiIpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGltZy5vbmVycm9yID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGFsZXJ0KCdCTE9DS0VEIGluICcgKyAoaXNvbGF0ZWQg
PyAiaXNvbGF0ZWQgd29ybGQiIDogIm1haW4gd29ybGQiKSk7CisgICAgICAgICAgICAgICAgd2lu
ZG93LnBvc3RNZXNzYWdlKCJuZXh0IiwgIioiKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAg
ICBpbWcuc3JjID0gIi4uL3Jlc291cmNlcy9hYmUucG5nIjsKKyAgICAgICAgfQorCisgICAgICAg
IHN3aXRjaCAodGVzdHMpIHsKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICBz
ZXRJbWdTcmMoZmFsc2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAzOgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQoMSwgU3RyaW5nKGV2YWwoInNldEltZ1NyYyIpKSArICJcbnNldEltZ1NyYyh0cnVlKTsi
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgICAgICBhbGVydCgiU3RhcnRpbmcgdG8gYnlwYXNzIG1haW4gd29ybGQncyBDU1A6Iik7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5KDEsICdpbWctc3JjIConKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmV2YWx1
YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKDEsIFN0cmluZyhldmFsKCJzZXRJbWdTcmMiKSkgKyAi
XG5zZXRJbWdTcmModHJ1ZSk7Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDE6CisgICAgICAgICAgICAgICAgc2V0SW1nU3JjKGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSd0ZXN0KCk7Jz4KKyAgICA8cD4K
KyAgICAgICAgVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBzY3JpcHRzIHJ1biBpbiBpc29sYXRlZCB3
b3JsZHMgbWFya2VkIHdpdGggdGhlaXIKKyAgICAgICAgb3duIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGFyZW4ndCBhZmZlY3RlZCBieSB0aGUgcGFnZSdzIGNvbnRlbnQKKyAgICAgICAgc2VjdXJp
dHkgcG9saWN5LiBFeHRlbnNpb25zLCBmb3IgZXhhbXBsZSwgc2hvdWxkIGJlIGFibGUgdG8gbG9h
ZCBhbnkKKyAgICAgICAgcmVzb3VyY2UgdGhleSBsaWtlLgorICAgIDwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzAy
NzNmOTY1ZWJhMmEzOWFhNDVhMDAyMThjMGI5ZDc1OGQzMGEyNS4uMmExYWIxZmYwM2RmNzUxYWE5
Yjc2ODE4NDY0NDViOTU4NDFiNTUxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTk0MCw2ICs5NDAsNyBAQCBCdWcoRUZMKSBzdG9yYWdlL2RvbXN0b3Jh
Z2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyCiAKICMgSlNDIGRvZXMgbm90IHN1cHBvcnQg
c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luLgogd2Via2l0Lm9yZy9iLzYxNTQwIGh0dHAv
dGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwgWyBGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi8zMTUwOCB3ZWJraXQub3JnL2IvNjE1NDAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvNjE1NDAgaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1h
dWRpdHMtY29udGVudC1zY3JpcHQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzYxNTQw
IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtZXZhbC1jb250ZW50LXNjcmlwdC5odG1s
IFsgRmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggM2E5OGRjODgzOWI3NTRmMGEzYzFmNDBmNGU1NjliN2U0OWE5MTE0YS4uZGRmNGEzZDU5
NjdhZjAwODNhYmQyM2YwYTZlMjU4OWJlOTVlMGM4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQwNSw2ICs0MDUsNyBAQCB3ZWJraXQub3JnL2IvODc5
MDggZWRpdGluZy91bmRvbWFuYWdlcgogIyBOZXcgdGVzdCBpbmZyYXN0cnVjdHVyZSByZXF1aXJl
ZCAtLSBuZWVkIGlzb2xhdGVkIHdvcmxkcwogd2Via2l0Lm9yZy9iLzMxNTA4IGh0dHAvdGVzdHMv
c2VjdXJpdHkvaXNvbGF0ZWRXb3JsZCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzMxNTA4IHdlYmtp
dC5vcmcvYi82MTU0MCBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvY3Jvc3Mtb3Jp
Z2luLXhoci5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMzE1MDggd2Via2l0Lm9yZy9iLzYx
NTQwIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1j
c3AuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzMxNTA4IHBsdWdpbnMvbnBydW50aW1lL292
ZXJyaWRlcy1hbGwtcHJvcGVydGllcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMzE1MDgg
c3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1jcmVhdGlvbi1jYWxsYmFjay1pc29sYXRlZC13
b3JsZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMzE1MDggc3RvcmFnZS93ZWJzcWwvc3Rh
dGVtZW50LWVycm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLmh0bWwgWyBTa2lwIF0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMWI2OTViNDExMTVlMWI4
ZjE4MGNkMTE2ODhiOTFkYWZhZjU1MTkzNy4uZDA1MDkyNmQwMTAxMzU5NmIxNmY5YjYxODUxNjBj
ODc3ZGUzMWZlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTQyMSw2ICs0MjEsNyBAQCBlZGl0aW5nL3NoYWRvdwogCiAjIEpTQyBkb2VzIG5vdCBzdXBw
b3J0IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82
MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhy
Lmh0bWwKK2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3Js
ZC1jc3AuaHRtbAogCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzI4MiBsYXllclRyZWVBc1RleHQgZG9lc24ndCB3b3JrIGZvciBpZnJhbWVzCiBjb21wb3NpdGlu
Zy9ydGwvcnRsLWlmcmFtZS1hYnNvbHV0ZS1vdmVyZmxvdy1zY3JvbGxlZC5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkZjA3NDJiYWQxNDM0ZGRjN2Vm
MWY1ZGJkZTFhNjk2NWM2ZDc3YWMyLi4yOGQwYWZhOTI3ZDE0NGY2Y2NiNWVlYTliMzFhMDkzNzYy
Mjk3ZTEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMz
MCw2ICszMzAsNyBAQCBmYXN0L2pzL2kxOG4tYmluZGluZ3MtbG9jYWxlLmh0bWwKIAogIyBKU0Mg
ZG9lcyBub3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4sIChodHRwOi8v
d2Via2l0Lm9yZy9iLzYxNTQwKQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Ny
b3NzLW9yaWdpbi14aHIuaHRtbAoraHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5
cGFzcy1tYWluLXdvcmxkLWNzcC5odG1sCiAKICMgVGhpcyB0ZXN0IGlzIGZvciBjbGllbnRzIHRo
YXQgY2hvb3NlIHRvIG1ha2UgdGhlIG1pc3NpbmcgcGx1Z2luIGluZGljYXRvciBhIGJ1dHRvbgog
cGx1Z2lucy9jbGlja2luZy1taXNzaW5nLXBsdWdpbi1maXJlcy1kZWxlZ2F0ZS5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGUxYzk2YjJhMTgzY2Yy
MzliMTYxMzUzNzBhYjRhZThmZjk2YjMzZmIuLmRkNjI1ODI2MjgwZGY3ZTdiZTRjYmI5OWVkOGIw
OTZkMDIwMGNmOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xNDY2LDYgKzE0NjYsNyBAQCBsb2FkZXIvbmF2aWdhdGlvbi13aGlsZS1kZWZlcnJpbmct
bG9hZHMuaHRtbAogCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRTZWN1
cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJp
dHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKK2h0dHAvdGVzdHMvc2VjdXJp
dHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbAogCiAjIEVOQUJMRShX
RUJHTCkgaXMgZGlzYWJsZWQKIGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2Zh
Y2UtdmlzaWJpbGl0eS13ZWJnbC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fp
cm8vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4ODE1OWYwNDAyMWFmYjFjODhlZDc3YjE3NDQ4YTYz
OTM3ODg5NmI4Li40ZTQwYTlmYjM5NjA3ODcxOTc0ODJkMDRjMTZlMTU4ZTU5NjQ2NTU4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE5
OTUsNiArMTk5NSw3IEBAIGxvYWRlci9uYXZpZ2F0aW9uLXdoaWxlLWRlZmVycmluZy1sb2Fkcy5o
dG1sCiAKICMgSlNDIGRvZXMgbm90IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3Jp
Z2luIChodHRwOi8vd2Via2l0Lm9yZy9iLzYxNTQwKQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29s
YXRlZFdvcmxkL2Nyb3NzLW9yaWdpbi14aHIuaHRtbAoraHR0cC90ZXN0cy9zZWN1cml0eS9pc29s
YXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5odG1sCiAKICMgRU5BQkxFKFdFQkdMKSBp
cyBkaXNhYmxlZAogY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNp
YmlsaXR5LXdlYmdsLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169401</attachid>
            <date>2012-10-18 06:17:20 -0700</date>
            <delta_ts>2012-10-25 07:16:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97398-20121018151605.patch</filename>
            <type>text/plain</type>
            <size>27310</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk1NGU3MGE0ZTQ2ODVh
MjJkMDQ0MDViZWFlYzgxZTkzMjg0MmQwNy4uZTc3YTIwYmM5NzEwYmRjMDM5OGFlZDM3NDY0NjQy
NDQ1ZWJhNzdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTE4ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFu
IGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIHBhZ2UncyBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSBjdXJyZW50bHkgYXBwbGllcyB0byBhbGwgcmVzb3VyY2VzCisgICAgICAgIGxv
YWRlZCwgcmVnYXJkbGVzcyBvZiB0aGVpciBzb3VyY2UuIFRoYXQgZ2VuZXJhbGx5IG1ha2VzIHNl
bnNlLCBidXQKKyAgICAgICAgcHJvdmVzIHByb2JsZW1hdGljIHdoZW4gY29uc2lkZXJpbmcgc2Ny
aXB0IHJ1biBmcm9tIGFuIGlzb2xhdGVkCisgICAgICAgIHdvcmxkIChDaHJvbWUgZXh0ZW5zaW9u
cywgZm9yIGluc3RhbmNlKS4gVGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgYWxsb3dlZAorICAgICAg
ICB0byBpbmplY3QgcmVzb3VyY2VzIGludG8gYSBwYWdlJ3MgRE9NIHdpdGhvdXQgZWloZXIgYmVp
bmcgcmVzdHJpY3RlZCBieQorICAgICAgICB0aGUgcGFnZSdzIGFjdGl2ZSBDU1AsIG9yIGdlbmVy
YXRpbmcgdmlvbGF0aW9uIHJlcG9ydHMgdGhhdCBzcGFtIHRoZQorICAgICAgICBwYWdlIG93bmVy
LgorCisgICAgICAgIElkZWFsbHksIHRoZSBpc29sYXRlZCB3b3JsZCBjb3VsZCBkZWZpbmUgaXRz
IG93biBDb250ZW50IFNlY3VyaXR5IFBvbGljeQorICAgICAgICB3aGljaCBzaG91bGQgYmUgYXBw
bGllZCB0byByZXNvdXJjZXMgaXQgbG9hZHMuIEZvciB0aGUgbW9tZW50LCB0aGlzCisgICAgICAg
IHBhdGNoIGFjY2VwdHMgYSBTdHJpbmcgdGhhdCB3ZSBjYW4gcGFyc2UgbGF0ZXIgb24sIGJ1dCBv
bmx5IHVzZXMgaXQgaW4KKyAgICAgICAgYSBiaW5hcnkgd2F5LiBJZiBhIG5vbi1lbXB0eSBwb2xp
Y3kgU3RyaW5nIGlzIHByb3ZpZGVkLCB3ZSBieXBhc3MgdGhlCisgICAgICAgIG1haW4gd29ybGQn
cyBDU1AgY2hlY2tzLiBJZiBhbiBlbXB0eSBTdHJpbmcgaXMgcHJvdmlkZWQsIHRoZSBtYWluCisg
ICAgICAgIHdvcmxkJ3MgQ1NQIGNoZWNrcyByZW1haW4gYWN0aXZlLgorICAgICAgICAKKyAgICAg
ICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdv
cmxkLWNzcC5odG1sCisKKyAgICAgICAgKFdlYkNvcmU6Omlzb2xhdGVkV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY2llcyk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6Omlzb2xh
dGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3Jh
cHBlcldvcmxkOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6Y2xlYXJJc29sYXRlZFdvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaDoK
KyAgICAgICAgKERPTVdyYXBwZXJXb3JsZCk6CisgICAgICAgICAgICBNZWNoYW5pc21zIGZvciBz
ZXR0aW5nIGFuZCBjbGVhcmluZyBDb250ZW50IFNlY3VyaXR5IFBvbGljaWVzIGZyb20KKyAgICAg
ICAgICAgIGlzb2xhdGVkIHdvcmxkczsgaW1wbGVtZW50ZWQgaW4gdGhlIHNhbWUgSGFzaE1hcHB5
IHdheSBhcworICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW4uCisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgor
ICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgICAgICBBZGRpbmcgYSBtZXRob2Qg
dG8gU2NyaXB0Q29udHJvbGxlciB0byBxdWVyeSB0aGUgc3RhdGUgb2YgdGhlCisgICAgICAgICAg
ICBjdXJyZW50IHdvcmxkJ3MgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIFdlJ2xsIGRyb3AgdGhp
cyBvbmNlIHdlIGNhbgorICAgICAgICAgICAgYXBwbHkgYSBwb2xpY3kgbW9yZSBkaXJlY3RseSwg
YnV0IGZvciB0aGUgbW9tZW50IGl0J3MgbmVjZXNzYXJ5IGZvcgorICAgICAgICAgICAgdGhlIG5l
eHQgYml0LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCk6Cisg
ICAgICAgICAgICBDaGVjayB0aGUgbmV3IFNjcmlwdENvbnRyb2xsZXIgbWV0aG9kLCBhbmQgb25s
eSBwZXJmb3JtIENTUCBjaGVja3MKKyAgICAgICAgICAgIHdoZW4gbG9hZGluZyByZXNvdXJjZXMg
aWYgd2UncmUgZXhlY3V0aW5nIGNvZGUgZnJvbSB0aGUgbWFpbiB3b3JsZCwKKyAgICAgICAgICAg
IG9yIGFuIGlzb2xhdGVkIHdvcmxkIHdpdGggbm8gQ29udGVudCBTZWN1cml0eSBQb2xpY3kgc2V0
LgorCiAyMDEyLTEwLTE4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBTZXQgbWluLXdpZHRoIHByb3BlcnR5IGluc3RlYWQgb2Ygd2lkdGggcHJvcGVydHkgZm9y
IGRhdGUvdGltZSBmaWVsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWJlMTUzYjhl
NjA5OGMxZjI3YTY3NzAwYTA0MjIyYjc2NDg2NjU3NC4uNTA4ZTVhYzAxN2Q1Yzk0NDNhYWU0YTQ5
MjliODhhYmViZDU4YjU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxMi0xMC0xOCAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFNjcmlwdCBydW4gZnJvbSBhbiBpc29sYXRlZCB3b3JsZCBzaG91bGQgYnlwYXNzIGEgcGFn
ZSdzIENTUC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYkZyYW1lKToKKyAgICAgICAgKiBzcmMv
V2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzZXRJc29s
YXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUltcGwp
OgorICAgICAgICAgICAgUGlwaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhyb3VnaCBX
ZWJGcmFtZSwgaW4gdGhlIHNhbWUgd2F5CisgICAgICAgICAgICB3ZSdyZSBjdXJyZW50bHkgZG9p
bmcgZm9yIFNlY3VyaXR5T3JpZ2luLiBBcyBhIGRyaXZlLWJ5LCB0aGlzIGFsc28KKyAgICAgICAg
ICAgIHVzZXMgdGhlIHN0YXRpYyBtZXRob2Qgb24gRE9NV3JhcHBlcldpbmRvdyB0byBzZXQgdGhl
IHNlY3VyaXR5CisgICAgICAgICAgICBvcmlnaW4sIHJhdGhlciB0aGFuIHJvdXRpbmcgdGhyb3Vn
aCB0aGUgZnJhbWUncyBTY3JpcHRDb250cm9sbGVyLgorCiAyMDEyLTEwLTE3ICBNaWtlIFdlc3Qg
IDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBtaXhlZCBjb250ZW50IGxvZ2lj
IG91dCBvZiBGcmFtZUxvYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCmluZGV4IGZhZDRkNDQzYTdjMTdlMmVkODBiMzk5NWFlNjY2YTM5ZDIxOTY1
OGEuLmMyMjgxYTYyZjBiZDZmYzg5NjY2MDdlZDAyYTMwMGQ1Njg0YmI3YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTE2MCw2ICsxNjAs
OSBAQCBwdWJsaWM6CiAgICAgTlBPYmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CiAjZW5k
aWYKIAorICAgIC8vIEZJWE1FKD8pOiBTdHViIGZvciBwYXJpdHkgd2l0aCBWOCBpbXBsZW1lbnRh
dGlvbi4KKyAgICBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgSlNET01XaW5kb3dTaGVsbCog
aW5pdFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKaW5kZXggNmRmMGI3MmQ1YWIyNGI2MWEz
ZDFmYzBiMDcxZjUyYzlhZmE4ZTRhZS4uOGRmOTI2MWM2NWExMDAwNjMwZDk2YTMwMDE1YjkxZjA1
NTk0ZTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBl
cldvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29y
bGQuY3BwCkBAIC0xNDMsNCArMTQzLDM1IEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVhcklz
b2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihpbnQgd29ybGRJRCkKICAgICBpc29sYXRlZFdvcmxk
U2VjdXJpdHlPcmlnaW5zKCkucmVtb3ZlKHdvcmxkSUQpOwogfQogCit0eXBlZGVmIEhhc2hNYXA8
aW50LCBTdHJpbmc+IElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3lNYXA7CitzdGF0
aWMgSXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeU1hcCYgaXNvbGF0ZWRXb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljaWVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoSXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eU1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKworU3RyaW5nIERPTVdyYXBwZXJX
b3JsZDo6aXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpCit7CisgICAgQVNTRVJU
KHRoaXMtPmlzSXNvbGF0ZWRXb3JsZCgpKTsKKyAgICBJc29sYXRlZFdvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5TWFwJiBwb2xpY2llcyA9IGlzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y2llcygpOworICAgIElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3lNYXA6Oml0ZXJh
dG9yIGl0ID0gcG9saWNpZXMuZmluZCh3b3JsZElkKCkpOworICAgIHJldHVybiBpdCA9PSBwb2xp
Y2llcy5lbmQoKSA/IFN0cmluZygpIDogaXQtPnZhbHVlOworfQorCit2b2lkIERPTVdyYXBwZXJX
b3JsZDo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCwg
Y29uc3QgU3RyaW5nJiBwb2xpY3kpCit7CisgICAgQVNTRVJUKERPTVdyYXBwZXJXb3JsZDo6aXNJ
c29sYXRlZFdvcmxkSWQod29ybGRJRCkpOworICAgIGlmICghcG9saWN5LmlzRW1wdHkoKSkKKyAg
ICAgICAgaXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljaWVzKCkuc2V0KHdvcmxkSUQs
IHBvbGljeSk7CisgICAgZWxzZQorICAgICAgICBpc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5
UG9saWNpZXMoKS5yZW1vdmUod29ybGRJRCk7Cit9CisKK3ZvaWQgRE9NV3JhcHBlcldvcmxkOjpj
bGVhcklzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koaW50IHdvcmxkSUQpCit7Cisg
ICAgQVNTRVJUKERPTVdyYXBwZXJXb3JsZDo6aXNJc29sYXRlZFdvcmxkSWQod29ybGRJRCkpOwor
ICAgIGlzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY2llcygpLnJlbW92ZSh3b3JsZElE
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01XcmFwcGVyV29ybGQuaAppbmRleCBhZGYxMjRlYzI3NWI4ODk5OThiMjdlNGE3NzBi
ZTViZDg4OTU2YWQ1Li43MzkzZTdlOTc5YTllMmVmN2FkNmZmYzVlMGE3NTA3NjI3YjYxYzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsNiArNTcsMjEgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihp
bnQgd29ybGRJRCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOwogICAgIHN0YXRpYyB2b2lk
IGNsZWFySXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3JsZElEKTsKICAgICBTZWN1
cml0eU9yaWdpbiogaXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKCk7CisKKyAgICAvLyBBc3Nv
Y2lhdGVkIGFuIGlzb2xhdGVkIHdvcmxkIHdpdGggYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4g
UmVzb3VyY2VzCisgICAgLy8gZW1iZWRkZWQgaW50byB0aGUgbWFpbiB3b3JsZCdzIERPTSBmcm9t
IHNjcmlwdCBleGVjdXRlZCBpbiBhbiBpc29sYXRlZAorICAgIC8vIHdvcmxkIHNob3VsZCBiZSBy
ZXN0cmljdGVkIGJhc2VkIG9uIHRoZSBpc29sYXRlZCB3b3JsZCdzIERPTSwgbm90IHRoZQorICAg
IC8vIG1haW4gd29ybGQncy4KKyAgICAvLworICAgIC8vIEZJWE1FOiBSaWdodCBub3csIHJlc291
cmNlIGluamVjdGlvbiBzaW1wbHkgYnlwYXNzZXMgdGhlIG1haW4gd29ybGQncworICAgIC8vIERP
TS4gTW9yZSB3b3JrIGlzIG5lY2Vzc2FyeSB0byBhbGxvdyB0aGUgaXNvbGF0ZWQgd29ybGQncyBw
b2xpY3kgdG8gYmUKKyAgICAvLyBhcHBsaWVkIGNvcnJlY3RseS4KKyAgICBzdGF0aWMgdm9pZCBz
ZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElELCBjb25zdCBT
dHJpbmcmIHBvbGljeSk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJJc29sYXRlZFdvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElEKTsKKyAgICBTdHJpbmcgaXNvbGF0ZWRXb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSgpOworCisKKwogICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgd29y
a2Fyb3VuZCBmb3IgYSBwcm9ibGVtIGluIFdlYlZpZXdJbXBsLgogICAgIC8vIERvIG5vdCB1c2Ug
dGhpcyBhbnl3aGVyZSBlbHNlISEKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFwcGVyV29y
bGQ+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRXb3JsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBiMmE5Yjk2YTlkODdkYWNjZmIxMjI4
N2QyZjI5ZDkzNjkyYjlmZTRmLi5lYTIyZjBmZWU5ZTFmNmJlNjVkZGEzMGI5M2E1ZWU0YWYxNjhm
MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMzk5LDYgKzM5OSwxMyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
SW5Jc29sYXRlZFdvcmxkKGludCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0UwogICAgIH0K
IH0KIAorYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3koKQoreworICAgIGlmIChWOERPTVdpbmRvd1NoZWxsKiBpc29sYXRlZFdv
cmxkU2hlbGwgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkpCisgICAgICAgIHJldHVy
biAhaXNvbGF0ZWRXb3JsZFNoZWxsLT53b3JsZCgpLT5pc29sYXRlZFdvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5KCkuaXNFbXB0eSgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogVGV4dFBvc2l0
aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3QKIHsKICAg
ICBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDVhMWZmNDU3ODVhYzEyNTU2ZjIyYmM2ZTQxZTE4
YjdlOWEyYmVjMDguLmRmMjkxNTU5Y2NjNDNlNTQ1NjAxMTI2MzQ3N2U2YTlkZTE2MDE1ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTEw
Nyw2ICsxMDcsMTEgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIGV4dGVuc2lv
bkdyb3VwIGhlcmUuCiAgICAgdm9pZCBldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJ
RCwgY29uc3QgVmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+JiBzb3VyY2VzLCBpbnQgZXh0ZW5zaW9u
R3JvdXAsIFZlY3RvcjxTY3JpcHRWYWx1ZT4qIHJlc3VsdHMpOwogCisgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBjdXJyZW50IHdvcmxkIGlzIGlzb2xhdGVkLCBhbmQgaGFzIGl0cyBvd24gQ29u
dGVudAorICAgIC8vIFNlY3VyaXR5IFBvbGljeS4gSW4gdGhpcyBjYXNlLCB0aGUgcG9saWN5IG9m
IHRoZSBtYWluIHdvcmxkIHNob3VsZCBiZQorICAgIC8vIGlnbm9yZWQgd2hlbiBldmFsdWF0aW5n
IHJlc291cmNlcyBpbmplY3RlZCBpbnRvIHRoZSBET00uCisgICAgYm9vbCBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKwogICAgIC8vIEZJWE1FOiBSZW1vdmUg
cmVmZXJlbmNlcyB0byB0aGlzIGNhbGwgaW4gY2hyb21pdW0gYW5kIGRlbGV0ZSBpdC4KICAgICBp
bmxpbmUgc3RhdGljIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3Js
ZElELCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggN2M0MjBjMDY2OGY4ODNhYzY4OWIyZjBlZTU3MDJmZDgwODA4Nzc5NS4uODIwODhkMjA3Nzg5
Nzk1ZWYzMWY4ZDU4MzE2MjAwZjUyYjk4MWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMDQsNiArMzA0LDgg
QEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6
VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisg
ICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSAoZG9j
dW1lbnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5zY3JpcHQoKS0+c2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkpOworCiAgICAgLy8gU29tZSB0
eXBlcyBvZiByZXNvdXJjZXMgY2FuIGJlIGxvYWRlZCBvbmx5IGZyb20gdGhlIHNhbWUgb3JpZ2lu
LiAgT3RoZXIKICAgICAvLyB0eXBlcyBvZiByZXNvdXJjZXMsIGxpa2UgSW1hZ2VzLCBTY3JpcHRz
LCBhbmQgQ1NTLCBjYW4gYmUgbG9hZGVkIGZyb20KICAgICAvLyBhbnkgVVJMLgpAQCAtMzQ0LDcg
KzM0Niw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6WFNMU3R5bGVTaGVldDoKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlw
dDoKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxs
b3dTY3JpcHRGcm9tU291cmNlKHVybCkpCisgICAgICAgIGlmICghc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+YWxsb3dTY3JpcHRGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgaWYgKGZyYW1lKCkpIHsKQEAgLTM2MCwxOCArMzYyLDE4IEBAIGJv
b2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgICAgIC8vIFNpbmNlIHNoYWRlcnMgYXJlIHJlZmVy
ZW5jZWQgZnJvbSBDU1MgU3R5bGVzIHVzZSB0aGUgc2FtZSBydWxlcyBoZXJlLgogI2VuZGlmCiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgaWYgKCFtX2Rv
Y3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTdHlsZUZyb21Tb3VyY2UodXJs
KSkKKyAgICAgICAgaWYgKCFzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3kgJiYgIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1N0eWxlRnJv
bVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsK
ICNpZiBFTkFCTEUoU1ZHKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0RvY3VtZW50UmVz
b3VyY2U6CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgot
ICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0lt
YWdlRnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTog
ewotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d0ZvbnRGcm9tU291cmNlKHVybCkpCisgICAgICAgIGlmICghc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5ICYmICFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xp
Y3koKS0+YWxsb3dGb250RnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zODUsNyArMzg3LDcgQEAgYm9vbCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25z
dCBLVVJMJiB1cmwKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNvdXJjZToK
ICAgICAgICAgLy8gQ3VlcyBhcmVuJ3QgY2FsbGVkIG91dCBpbiB0aGUgQ1BTIHNwZWMgeWV0LCBi
dXQgdGhleSBvbmx5IHdvcmsgd2l0aCBhIG1lZGlhIGVsZW1lbnQKICAgICAgICAgLy8gc28gdXNl
IHRoZSBtZWRpYSBwb2xpY3kuCi0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCkpCisgICAgICAgIGlmICghc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFtX2RvY3VtZW50LT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IGQxZWEzODk2OTQzZTkzYzFmMTMwYzQ2
NGNhOWFmOWNjZDc3OTJmOTguLjYwMDcyNTJkZjIzNDlhZDdkYTFmMTA3MTVjNDJkMDE2OTYyN2Fj
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaApAQCAtMjUyLDYg
KzI1MiwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldElzb2xhdGVkV29ybGRTZWN1
cml0eU9yaWdpbigKICAgICAgICAgaW50IHdvcmxkSUQsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
JikgPSAwOwogCisgICAgLy8gQXNzb2NpYXRlcyBhIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5IHdp
dGggYW4gaXNvbGF0ZWQgd29ybGQuIFRoaXMgcG9saWN5CisgICAgLy8gc2hvdWxkIGJlIHVzZWQg
d2hlbiBldmFsdWF0aW5nIHNjcmlwdCBpbiB0aGUgaXNvbGF0ZWQgd29ybGQsIGFuZCBzaG91bGQK
KyAgICAvLyBhbHNvIHJlcGxhY2UgYSBwcm90ZWN0ZWQgcmVzb3VyY2UncyBDU1Agd2hlbiBldmFs
dWF0aW5nIHJlc291cmNlcworICAgIC8vIGluamVjdGVkIGludG8gdGhlIERPTS4KKyAgICAvLwor
ICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoaXMgc2ltcGx5IGJ5cGFzc2VzIHRoZSBwcm90ZWN0ZWQg
cmVzb3VyY2UncyBDU1AuIEl0CisgICAgLy8gICAgIGRvZXNuJ3QgeWV0IHJlc3RyaWN0IHRoZSBp
c29sYXRlZCB3b3JsZCB0byB0aGUgcHJvdmlkZWQgcG9saWN5LgorICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KAorICAgICAgICBpbnQgd29ybGRJ
RCwgY29uc3QgV2ViU3RyaW5nJikgPSAwOworCiAgICAgLy8gTG9ncyB0byB0aGUgY29uc29sZSBh
c3NvY2lhdGVkIHdpdGggdGhpcyBmcmFtZS4KICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShjb25zdCBXZWJDb25zb2xlTWVzc2FnZSYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggZmY0YTBiNDRjNzE0NGU0ODYzNDUw
MGEzNWZjODkzNWYxNDA3OTViZC4uMmE5OTdiMTgyMWJmODQ0OWQwMTgyZWJjNGQzYWMxYTgzN2Jl
Yzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBA
IC04Miw2ICs4Miw3IEBACiAjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRPTVdpbmRvd0ludGVudHMuaCIKKyNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEZWxpdmVyZWRJbnRlbnQuaCIKICNpbmNs
dWRlICJEZWxpdmVyZWRJbnRlbnRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50
cnkuaCIKQEAgLTgyNSw3ICs4MjYsMTMgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmV4ZWN1dGVTY3Jp
cHRJbklzb2xhdGVkV29ybGQoaW50IHdvcmxkSUQsIGNvbnN0IFdlYlNjcmlwdFNvdXIKIHZvaWQg
V2ViRnJhbWVJbXBsOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oaW50IHdvcmxkSUQs
IGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBBU1NFUlQo
ZnJhbWUoKSk7Ci0gICAgZnJhbWUoKS0+c2NyaXB0KCktPnNldElzb2xhdGVkV29ybGRTZWN1cml0
eU9yaWdpbih3b3JsZElELCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgRE9NV3JhcHBlcldv
cmxkOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4od29ybGRJRCwgc2VjdXJpdHlPcmln
aW4uZ2V0KCkpOworfQorCit2b2lkIFdlYkZyYW1lSW1wbDo6c2V0SXNvbGF0ZWRXb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCwgY29uc3QgV2ViU3RyaW5nJiBwb2xpY3kpCit7
CisgICAgQVNTRVJUKGZyYW1lKCkpOworICAgIERPTVdyYXBwZXJXb3JsZDo6c2V0SXNvbGF0ZWRX
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSh3b3JsZElELCBwb2xpY3kpOwogfQogCiB2b2lkIFdl
YkZyYW1lSW1wbDo6YWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25zb2xlTWVzc2FnZSYg
bWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXgg
MjY4NmFhZDFkZDMxYjliZWE2OGU5NDVhYmY2ODQyNTFiYjE0ZmE4ZC4uNzIyZWNmNTU5NzQ1MGVj
ZTU0YjZkZTQyYWI4OGExMDM4ZmVjMWQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGludCB3
b3JsZElELCBjb25zdCBXZWJTY3JpcHRTb3VyY2UqIHNvdXJjZXMsIHVuc2lnbmVkIG51bVNvdXJj
ZXMsCiAgICAgICAgIGludCBleHRlbnNpb25Hcm91cCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElz
b2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihpbnQgd29ybGRJRCwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeShpbnQgd29ybGRJRCwgY29uc3QgV2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lk
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgV2ViQ29uc29sZU1lc3NhZ2UmKTsKICAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hlY2tJZlJ1bklu
c2VjdXJlQ29udGVudChjb25zdCBXZWJVUkwmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiN2ViNmRjMGI2NTVmMWY1ZTcwOGI2ZmNj
OGZjZTNmMTNmNGRlMDU5Li4yYzU4MDlhZTRmMDdmMjZkOWRlYTljYjk5ZmQ2ZDVjMDUyMjVkMDEy
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMTAtMTggIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4K
KworICAgICAgICBTY3JpcHQgcnVuIGZyb20gYW4gaXNvbGF0ZWQgd29ybGQgc2hvdWxkIGJ5cGFz
cyBhIHBhZ2UncyBDU1AuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NzM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChEUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKERSVFRlc3RSdW5u
ZXI6OnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaDoKKyAgICAgICAgKERSVFRlc3RS
dW5uZXIpOgorICAgICAgICAgICAgQWRkaW5nIGEgbWVjaGFuaXNtIHRvIHNldCB0aGUgQ29udGVu
dCBTZWN1cml0eSBQb2xpY3kgZm9yIGFuCisgICAgICAgICAgICBpc29sYXRlZCB3b3JsZCB0byBD
aHJvbWl1bSdzIHRlc3RSdW5uZXIuCisKIDIwMTItMTAtMTggIFNpbW9uIEhhdXNtYW5uICA8c2lt
b24uaGF1c21hbm5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUmVkdWNlIG1lbW9yeSBwcmVz
c3VyZSBkdXJpbmcgbGluayB0aW1lCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IDA4MjU5N2ExMTdiOTJkNTk3MjgwN2U5ZjBlM2EzNzIz
NGVkOWMyYTMuLmE4NTIyNGUwZDI4YWY5OGZiM2U1OTNjM2IwMWRjZjM5ZDIzY2RhMmEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCkBAIC0x
NTUsNiArMTU1LDcgQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNo
ZWxsKQogICAgIGJpbmRNZXRob2QoImV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkIiwgJkRS
VFRlc3RSdW5uZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKTsKICAgICBiaW5kTWV0
aG9kKCJldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlIiwgJkRSVFRl
c3RSdW5uZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFsdWUpOwog
ICAgIGJpbmRNZXRob2QoInNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiIsICZEUlRUZXN0
UnVubmVyOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4pOworICAgIGJpbmRNZXRob2Qo
InNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kiLCAmRFJUVGVzdFJ1bm5lcjo6
c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgYmluZE1ldGhvZCgi
ZXhlY0NvbW1hbmQiLCAmRFJUVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQpOwogICAgIGJpbmRNZXRo
b2QoImZvcmNlUmVkU2VsZWN0aW9uQ29sb3JzIiwgJkRSVFRlc3RSdW5uZXI6OmZvcmNlUmVkU2Vs
ZWN0aW9uQ29sb3JzKTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKQEAgLTE0MDEsNiArMTQw
MiwxNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZQogICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+
Zm9jdXNlZEZyYW1lKCktPnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihhcmd1bWVudHNb
MF0udG9JbnQzMigpLCBvcmlnaW4pOwogfQogCit2b2lkIERSVFRlc3RSdW5uZXI6OnNldElzb2xh
dGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKwor
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigp
IHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9z
aGVsbC0+d2ViVmlldygpLT5mb2N1c2VkRnJhbWUoKS0+c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeShhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBWYXJpYW50VG9XZWJTdHJp
bmcoYXJndW1lbnRzWzFdKSk7Cit9CisKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYg
YXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlRUZXN0UnVubmVyLmgKaW5kZXggMzA0MWI4NmE3M2M1YWIyZTAzOWM4ZWUxZDBhNzkyN2I3
MmU5NzUxMi4uMmMzZjNmNTc5YTNkOGU2ZjVhYWVhMDJlOGZhYzhmODBhYTAxODI1NiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAtMjgwLDYg
KzI4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxk
QW5kUmV0dXJuVmFsdWUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAg
IHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lu
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldElzb2xh
dGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogCiAgICAgLy8gVGhlIGZhbGxiYWNrIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBh
IG5vbmV4aXN0ZW50IG1ldGhvZCBpcyBjYWxsZWQgb24KICAgICAvLyB0aGUgbGF5b3V0IHRlc3Qg
Y29udHJvbGxlciBvYmplY3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWUzNDRkYmZmZGM5ODYzN2Y4ODRlNWFhYjcxYzJl
OWFjZjE2YWY5ZC4uZWZjNWM0OTM3MzU3NTZkYTIwNjBhZjJhYmMxYzM3NTkwNDhkMGUxMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTE4ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFuIGlzb2xhdGVkIHdvcmxkIHNob3Vs
ZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mt
bWFpbi13b3JsZC1jc3AtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICAgICBTa2lwIHRoZSBuZXcgdGVzdHMgb24gcG9ydHMgdGhhdCBkb24ndCBzdXBwb3J0
IHRoZSBuZXcgZnVuY3Rpb25hbGl0eQorCiAyMDEyLTEwLTE4ICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEdhcmRlbmlu
ZyBhZnRlciByMTMxNjQwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13
b3JsZC1jc3AtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYzliZjFlNTdiY2Y3NTg4ZjZhM2U0
M2UxNjczNTIwM2E3MDY1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCB0
aGUgaW1hZ2UgJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvYWJlLnBu
ZycgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGRpcmVjdGl2ZTogImltZy1zcmMgJ25vbmUnIi4KKworQUxFUlQ6IEJMT0NLRUQgaW4gbWFp
biB3b3JsZAorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxvYWQgdGhlIGltYWdlICdodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2FiZS5wbmcnIGJlY2F1c2UgaXQg
dmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6
ICJpbWctc3JjICdub25lJyIuCisKK0FMRVJUOiBCTE9DS0VEIGluIGlzb2xhdGVkIHdvcmxkCitB
TEVSVDogU3RhcnRpbmcgdG8gYnlwYXNzIG1haW4gd29ybGQncyBDU1A6CitBTEVSVDogTE9BREVE
IGluIGlzb2xhdGVkIHdvcmxkCitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCB0aGUg
aW1hZ2UgJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvYWJlLnBuZycg
YmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IGRpcmVjdGl2ZTogImltZy1zcmMgJ25vbmUnIi4KKworQUxFUlQ6IEJMT0NLRUQgaW4gbWFpbiB3
b3JsZAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBzY3JpcHRzIHJ1biBpbiBpc29sYXRlZCB3b3Js
ZHMgbWFya2VkIHdpdGggdGhlaXIgb3duIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGFyZW4ndCBh
ZmZlY3RlZCBieSB0aGUgcGFnZSdzIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5LiBFeHRlbnNpb25z
LCBmb3IgZXhhbXBsZSwgc2hvdWxkIGJlIGFibGUgdG8gbG9hZCBhbnkgcmVzb3VyY2UgdGhleSBs
aWtlLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNv
bGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNjMyMWU4M2NhNzJlYjQ4MmYyNjlkOGI0YTA2Y2Y1ZGQ2MzFhMzc1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdv
cmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5odG1sCkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IlgtV2ViS2l0LUNTUCIg
Y29udGVudD0iaW1nLXNyYyAnbm9uZSciPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHRlc3RzID0gNDsKKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKG1lc3NhZ2UpIHsKKyAgICAg
ICAgdGVzdHMgLT0gMTsKKyAgICAgICAgdGVzdCgpOworICAgIH0sIGZhbHNlKTsKKworICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGZ1bmN0aW9uIHNldEltZ1NyYyhpc29sYXRlZCkgewor
ICAgICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOworICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOworICAgICAgICAgICAgaW1n
Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhbGVydCgnTE9BREVEIGlu
ICcgKyAoaXNvbGF0ZWQgPyAiaXNvbGF0ZWQgd29ybGQiIDogIm1haW4gd29ybGQiKSk7CisgICAg
ICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJuZXh0IiwgIioiKTsKKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBhbGVydCgnQkxPQ0tFRCBpbiAnICsgKGlzb2xhdGVkID8gImlzb2xhdGVkIHdvcmxkIiA6
ICJtYWluIHdvcmxkIikpOworICAgICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgibmV4
dCIsICIqIik7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaW1nLnNyYyA9ICIuLi9yZXNv
dXJjZXMvYWJlLnBuZyI7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHRlc3RzKSB7Cisg
ICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgc2V0SW1nU3JjKGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKDEsIFN0cmluZyhldmFs
KCJzZXRJbWdTcmMiKSkgKyAiXG5zZXRJbWdTcmModHJ1ZSk7Iik7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgYWxlcnQoIlN0YXJ0
aW5nIHRvIGJ5cGFzcyBtYWluIHdvcmxkJ3MgQ1NQOiIpOworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgxLCAnaW1nLXNyYyAq
Jyk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRX
b3JsZCgxLCBTdHJpbmcoZXZhbCgic2V0SW1nU3JjIikpICsgIlxuc2V0SW1nU3JjKHRydWUpOyIp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAg
ICAgICAgIHNldEltZ1NyYyhmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0ndGVzdCgpOyc+CisgICAgPHA+CisgICAgICAgIFRoaXMgdGVzdCBl
bnN1cmVzIHRoYXQgc2NyaXB0cyBydW4gaW4gaXNvbGF0ZWQgd29ybGRzIG1hcmtlZCB3aXRoIHRo
ZWlyCisgICAgICAgIG93biBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBhcmVuJ3QgYWZmZWN0ZWQg
YnkgdGhlIHBhZ2UncyBjb250ZW50CisgICAgICAgIHNlY3VyaXR5IHBvbGljeS4gRXh0ZW5zaW9u
cywgZm9yIGV4YW1wbGUsIHNob3VsZCBiZSBhYmxlIHRvIGxvYWQgYW55CisgICAgICAgIHJlc291
cmNlIHRoZXkgbGlrZS4KKyAgICA8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGExNTcwNjQ0ZTBkZjU0MWI4MzEzYjQw
MDcxYWNmZDBhNWM3ODAyYTYuLjIzODlmMjg5MTFjZWMwYzY0ODE5ZjYwOTdmYWYwNzQ5ZTdkNDI5
YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDAy
LDYgKzE0MDIsOSBAQCB3ZWJraXQub3JnL2IvNjE1NDAgaHR0cC90ZXN0cy9zZWN1cml0eS9pc29s
YXRlZFdvcmxkL2Nyb3NzLW9yaWdpbi14aHIuaHRtbCBbIEZhaQogd2Via2l0Lm9yZy9iLzYxNTQw
IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLWNvbnRlbnQtc2NyaXB0Lmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi82MTU0MCBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9l
eHRlbnNpb25zLWV2YWwtY29udGVudC1zY3JpcHQuaHRtbCBbIEZhaWx1cmUgXQogCisjIEpTQyBh
bHNvIGRvZXNuJ3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
Cit3ZWJraXQub3JnL2IvMzE1MDggd2Via2l0Lm9yZy9iLzYxNTQwIGh0dHAvdGVzdHMvc2VjdXJp
dHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbCBbIEZhaWx1cmUgXQor
CiAjX193b3JsZElEIGlzIHVuZGVmaW5lZCBpbiBpc29sYXRlZCB3b3JsZAogQnVnKEVGTCkgaHR0
cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2RpZENsZWFyV2luZG93T2JqZWN0Lmh0bWwK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5NzgyMGQ1
MmY1Njc0MDU0OWEwMTcwM2I4YTA0NTIxZDIzMDk1NzI2Li5mYjAxMmNjMmU2NzVkNDMyNzFhZTQz
NDFlMTZmMWZmNDNjNjg1ODAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNDI3LDYgKzQyNyw5IEBAIGVkaXRpbmcvc2hhZG93CiAjIEpTQyBkb2VzIG5v
dCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5v
cmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmln
aW4teGhyLmh0bWwKIAorIyBKU0MgYWxzbyBkb2Vzbid0IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSAod2Via2l0Lm9yZy9iLzMxNTA4IHdlYmtpdC5vcmcvYi82
MTU0MCkKK2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3Js
ZC1jc3AuaHRtbAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzI4MiBsYXllclRyZWVBc1RleHQgZG9lc24ndCB3b3JrIGZvciBpZnJhbWVzCiBjb21wb3NpdGlu
Zy9ydGwvcnRsLWlmcmFtZS1hYnNvbHV0ZS1vdmVyZmxvdy1zY3JvbGxlZC5odG1sCiBjb21wb3Np
dGluZy9ydGwvcnRsLWlmcmFtZS1hYnNvbHV0ZS1vdmVyZmxvdy5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2YWZkYTk0MGI4ODIzZDNiZThlNTZhNzgz
NDMyNTg4YjFlNWRiZjQ4Li5kMDBmNTAxZmE5ZWMzNmZlZDJhMTlmZjk5NjhhZGM5ZDYyYjZhMzEw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMyNCw2ICsz
MjQsOSBAQCBmYXN0L2pzL2kxOG4tYmluZGluZ3MtbG9jYWxlLmh0bWwKICMgSlNDIGRvZXMgbm90
IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luLCAoaHR0cDovL3dlYmtpdC5v
cmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmln
aW4teGhyLmh0bWwKIAorIyBKU0MgYWxzbyBkb2Vzbid0IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSAod2Via2l0Lm9yZy9iLzMxNTA4IHdlYmtpdC5vcmcvYi82
MTU0MCkKK2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3Js
ZC1jc3AuaHRtbAorCiAjIFRoaXMgdGVzdCBpcyBmb3IgY2xpZW50cyB0aGF0IGNob29zZSB0byBt
YWtlIHRoZSBtaXNzaW5nIHBsdWdpbiBpbmRpY2F0b3IgYSBidXR0b24KIHBsdWdpbnMvY2xpY2tp
bmctbWlzc2luZy1wbHVnaW4tZmlyZXMtZGVsZWdhdGUuaHRtbAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE2MmJmZTYyOTllZmMyYTIzYzczNDhiODcw
MWYzYzA3Mzk2OGVhZjQuLmI5ZjE3MTE5Y2ZhYjE4MzU0Y2RhNGFhODhiY2E0MWNlMTJmMzcyNmYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDc3LDYg
KzE0NzcsOSBAQCBsb2FkZXIvbmF2aWdhdGlvbi13aGlsZS1kZWZlcnJpbmctbG9hZHMuaHRtbAog
IyBKU0MgZG9lcyBub3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4gKGh0
dHA6Ly93ZWJraXQub3JnL2IvNjE1NDApCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29y
bGQvY3Jvc3Mtb3JpZ2luLXhoci5odG1sCiAKKyMgSlNDIGFsc28gZG9lc24ndCBzdXBwb3J0IHNl
dElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgKHdlYmtpdC5vcmcvYi8zMTUwOCB3
ZWJraXQub3JnL2IvNjE1NDApCitodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlw
YXNzLW1haW4td29ybGQtY3NwLmh0bWwKKwogIyBFTkFCTEUoV0VCR0wpIGlzIGRpc2FibGVkCiBj
b21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktd2ViZ2wu
aHRtbAogY29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LXNpbXBsZS13ZWJnbC1sYXll
ci5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170642</attachid>
            <date>2012-10-25 07:16:51 -0700</date>
            <delta_ts>2012-10-30 03:38:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97398-20121025161524.patch</filename>
            <type>text/plain</type>
            <size>27869</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJmMDc1NDQyY2I5OWZm
ODI5NTZlNmM1YTVhNjQzMzFmMjMxNGIyYS4uOWE5YmY2Nzc0MmNmYTUyMjk1YTMwMzhlNzMyY2Rj
ZmU2ZjIzMGJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTI1ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFu
IGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIHBhZ2UncyBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSBjdXJyZW50bHkgYXBwbGllcyB0byBhbGwgcmVzb3VyY2VzCisgICAgICAgIGxv
YWRlZCwgcmVnYXJkbGVzcyBvZiB0aGVpciBzb3VyY2UuIFRoYXQgZ2VuZXJhbGx5IG1ha2VzIHNl
bnNlLCBidXQKKyAgICAgICAgcHJvdmVzIHByb2JsZW1hdGljIHdoZW4gY29uc2lkZXJpbmcgc2Ny
aXB0IHJ1biBmcm9tIGFuIGlzb2xhdGVkCisgICAgICAgIHdvcmxkIChDaHJvbWUgZXh0ZW5zaW9u
cywgZm9yIGluc3RhbmNlKS4gVGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgYWxsb3dlZAorICAgICAg
ICB0byBpbmplY3QgcmVzb3VyY2VzIGludG8gYSBwYWdlJ3MgRE9NIHdpdGhvdXQgZWloZXIgYmVp
bmcgcmVzdHJpY3RlZCBieQorICAgICAgICB0aGUgcGFnZSdzIGFjdGl2ZSBDU1AsIG9yIGdlbmVy
YXRpbmcgdmlvbGF0aW9uIHJlcG9ydHMgdGhhdCBzcGFtIHRoZQorICAgICAgICBwYWdlIG93bmVy
LgorCisgICAgICAgIElkZWFsbHksIHRoZSBpc29sYXRlZCB3b3JsZCBjb3VsZCBkZWZpbmUgaXRz
IG93biBDb250ZW50IFNlY3VyaXR5IFBvbGljeQorICAgICAgICB3aGljaCBzaG91bGQgYmUgYXBw
bGllZCB0byByZXNvdXJjZXMgaXQgbG9hZHMuIEZvciB0aGUgbW9tZW50LCB0aGlzCisgICAgICAg
IHBhdGNoIGFjY2VwdHMgYSBTdHJpbmcgdGhhdCB3ZSBjYW4gcGFyc2UgbGF0ZXIgb24sIGJ1dCBv
bmx5IHVzZXMgaXQgaW4KKyAgICAgICAgYSBiaW5hcnkgd2F5LiBJZiBhIG5vbi1lbXB0eSBwb2xp
Y3kgU3RyaW5nIGlzIHByb3ZpZGVkLCB3ZSBieXBhc3MgdGhlCisgICAgICAgIG1haW4gd29ybGQn
cyBDU1AgY2hlY2tzLiBJZiBhbiBlbXB0eSBTdHJpbmcgaXMgcHJvdmlkZWQsIHRoZSBtYWluCisg
ICAgICAgIHdvcmxkJ3MgQ1NQIGNoZWNrcyByZW1haW4gYWN0aXZlLgorCisgICAgICAgIFRlc3Q6
IGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Au
aHRtbAorCisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxk
SGFzQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZDo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmNsZWFySXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6CisgICAg
ICAgIChET01XcmFwcGVyV29ybGQpOgorICAgICAgICAgICAgTWVjaGFuaXNtcyBmb3Igc2V0dGlu
ZyBhbmQgY2xlYXJpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY2llcyBmcm9tCisgICAgICAgICAg
ICBpc29sYXRlZCB3b3JsZHM7IGltcGxlbWVudGVkIGluIHRoZSBzYW1lIEhhc2hNYXBweSB3YXkg
YXMKKyAgICAgICAgICAgIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAgICAgQWRkaW5nIGEgbWV0aG9kIHRvIFNj
cmlwdENvbnRyb2xsZXIgdG8gcXVlcnkgdGhlIHN0YXRlIG9mIHRoZQorICAgICAgICAgICAgY3Vy
cmVudCB3b3JsZCdzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiBXZSdsbCBkcm9wIHRoaXMgb25j
ZSB3ZSBjYW4KKyAgICAgICAgICAgIGFwcGx5IGEgcG9saWN5IG1vcmUgZGlyZWN0bHksIGJ1dCBm
b3IgdGhlIG1vbWVudCBpdCdzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgIHRoZSBuZXh0IGJp
dC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAg
ICAgICAgQ2hlY2sgdGhlIG5ldyBTY3JpcHRDb250cm9sbGVyIG1ldGhvZCwgYW5kIG9ubHkgcGVy
Zm9ybSBDU1AgY2hlY2tzCisgICAgICAgICAgICB3aGVuIGxvYWRpbmcgcmVzb3VyY2VzIGlmIHdl
J3JlIGV4ZWN1dGluZyBjb2RlIGZyb20gdGhlIG1haW4gd29ybGQsCisgICAgICAgICAgICBvciBh
biBpc29sYXRlZCB3b3JsZCB3aXRoIG5vIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHNldC4KKwog
MjAxMi0xMC0yNSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogTk1JIGluc3RydW1lbnQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC4gSXQgdXNlcyBhIGxvdCBvZiBtZW1vcnkgb24gaGVhdnkganMgc2l0ZXMgYmVjYXVzZSBpdCBr
ZWVwcyBhbGwgdGhlIHNjcmlwdHMgaW4gYSBtYXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGYyMGQxMmRiMDhlY2FhY2U0ZTFiMTVhNDI3NDJkNmQwMzkwOTQ3MzkuLmEwMmU5Nzg4NGI1
ZTA1ZGMyZjRjMTdiMDk1MmMxZWU5M2ZkY2FmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTAtMjUgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBTY3JpcHQgcnVuIGZyb20gYW4gaXNvbGF0ZWQgd29ybGQgc2hvdWxk
IGJ5cGFzcyBhIHBhZ2UncyBDU1AuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NzM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJGcmFtZSk6Cisg
ICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
SW1wbDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAo
V2ViRnJhbWVJbXBsKToKKyAgICAgICAgICAgIFBpcGluZyBhIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IHRocm91Z2ggV2ViRnJhbWUsIGluIHRoZSBzYW1lIHdheQorICAgICAgICAgICAgd2UncmUg
Y3VycmVudGx5IGRvaW5nIGZvciBTZWN1cml0eU9yaWdpbi4gQXMgYSBkcml2ZS1ieSwgdGhpcyBh
bHNvCisgICAgICAgICAgICB1c2VzIHRoZSBzdGF0aWMgbWV0aG9kIG9uIERPTVdyYXBwZXJXaW5k
b3cgdG8gc2V0IHRoZSBzZWN1cml0eQorICAgICAgICAgICAgb3JpZ2luLCByYXRoZXIgdGhhbiBy
b3V0aW5nIHRocm91Z2ggdGhlIGZyYW1lJ3MgU2NyaXB0Q29udHJvbGxlci4KKwogMjAxMi0xMC0y
NCAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEFsbG93IHB1c2hTdGF0ZSBhbmQgcmVsYXRlZCBoaXN0b3J5IEFQSXMgdG8gYmUgZGlz
YWJsZWQgcGVyIGNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaAppbmRleCBmYWQ0ZDQ0M2E3YzE3ZTJlZDgwYjM5OTVhZTY2NmEzOWQyMTk2NThh
Li45NmUzNjhmNjlmYjZmYjc0NTFiZWY2NGMwYTEyNzE0ZjdhZGNkMTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNjAsNiArMTYwLDkg
QEAgcHVibGljOgogICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgpOwogI2VuZGlm
CiAKKyAgICAvLyBGSVhNRTogU3R1YiBmb3IgcGFyaXR5IHdpdGggVjggaW1wbGVtZW50YXRpb24u
CisgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSB7
IHJldHVybiBmYWxzZTsgfQorCiBwcml2YXRlOgogICAgIEpTRE9NV2luZG93U2hlbGwqIGluaXRT
Y3JpcHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCmluZGV4IDZkZjBiNzJkNWFiMjRiNjFhM2QxZmMw
YjA3MWY1MmM5YWZhOGU0YWUuLjBiOWYwNTViNmViNGYyYTc3YjM3NDVmMTVhOTRjN2IzYjAwOTRm
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3Js
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNw
cApAQCAtMTQzLDQgKzE0MywzNSBAQCB2b2lkIERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJJc29sYXRl
ZFdvcmxkU2VjdXJpdHlPcmlnaW4oaW50IHdvcmxkSUQpCiAgICAgaXNvbGF0ZWRXb3JsZFNlY3Vy
aXR5T3JpZ2lucygpLnJlbW92ZSh3b3JsZElEKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPGludCwg
Ym9vbD4gSXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeU1hcDsKK3N0YXRpYyBJc29s
YXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5TWFwJiBpc29sYXRlZFdvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWNpZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5TWFwLCBt
YXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCitib29sIERPTVdyYXBwZXJXb3JsZDo6aXNv
bGF0ZWRXb3JsZEhhc0NvbnRlbnRTZWN1cml0eVBvbGljeSgpCit7CisgICAgQVNTRVJUKHRoaXMt
PmlzSXNvbGF0ZWRXb3JsZCgpKTsKKyAgICBJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5TWFwJiBwb2xpY2llcyA9IGlzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY2llcygp
OworICAgIElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3lNYXA6Oml0ZXJhdG9yIGl0
ID0gcG9saWNpZXMuZmluZCh3b3JsZElkKCkpOworICAgIHJldHVybiBpdCA9PSBwb2xpY2llcy5l
bmQoKSA/IGZhbHNlIDogaXQtPnZhbHVlOworfQorCit2b2lkIERPTVdyYXBwZXJXb3JsZDo6c2V0
SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCwgY29uc3QgU3Ry
aW5nJiBwb2xpY3kpCit7CisgICAgQVNTRVJUKERPTVdyYXBwZXJXb3JsZDo6aXNJc29sYXRlZFdv
cmxkSWQod29ybGRJRCkpOworICAgIGlmICghcG9saWN5LmlzRW1wdHkoKSkKKyAgICAgICAgaXNv
bGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljaWVzKCkuc2V0KHdvcmxkSUQsIHRydWUpOwor
ICAgIGVsc2UKKyAgICAgICAgaXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljaWVzKCku
cmVtb3ZlKHdvcmxkSUQpOworfQorCit2b2lkIERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJJc29sYXRl
ZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElEKQoreworICAgIEFTU0VSVChE
T01XcmFwcGVyV29ybGQ6OmlzSXNvbGF0ZWRXb3JsZElkKHdvcmxkSUQpKTsKKyAgICBpc29sYXRl
ZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWNpZXMoKS5yZW1vdmUod29ybGRJRCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTVdyYXBwZXJXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3Jh
cHBlcldvcmxkLmgKaW5kZXggYWY1NWM5NDA5MGYwNmQxMzEwMmQ3YjAwOTcwY2ViNzIxOGRjM2Iy
ZS4uYWM3ZWYwM2E4MTVhN2Y2ZWU3NjA0NmFkMzFiNzllMjgyNjg5ZjVhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU3LDYgKzU4LDIxIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oaW50IHdvcmxkSUQs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsKICAgICBzdGF0aWMgdm9pZCBjbGVhcklzb2xh
dGVkV29ybGRTZWN1cml0eU9yaWdpbihpbnQgd29ybGRJRCk7CiAgICAgU2VjdXJpdHlPcmlnaW4q
IGlzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbigpOworCisgICAgLy8gQXNzb2NpYXRlZCBhbiBp
c29sYXRlZCB3b3JsZCB3aXRoIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIFJlc291cmNlcwor
ICAgIC8vIGVtYmVkZGVkIGludG8gdGhlIG1haW4gd29ybGQncyBET00gZnJvbSBzY3JpcHQgZXhl
Y3V0ZWQgaW4gYW4gaXNvbGF0ZWQKKyAgICAvLyB3b3JsZCBzaG91bGQgYmUgcmVzdHJpY3RlZCBi
YXNlZCBvbiB0aGUgaXNvbGF0ZWQgd29ybGQncyBET00sIG5vdCB0aGUKKyAgICAvLyBtYWluIHdv
cmxkJ3MuCisgICAgLy8KKyAgICAvLyBGSVhNRTogUmlnaHQgbm93LCByZXNvdXJjZSBpbmplY3Rp
b24gc2ltcGx5IGJ5cGFzc2VzIHRoZSBtYWluIHdvcmxkJ3MKKyAgICAvLyBET00uIE1vcmUgd29y
ayBpcyBuZWNlc3NhcnkgdG8gYWxsb3cgdGhlIGlzb2xhdGVkIHdvcmxkJ3MgcG9saWN5IHRvIGJl
CisgICAgLy8gYXBwbGllZCBjb3JyZWN0bHkuCisgICAgc3RhdGljIHZvaWQgc2V0SXNvbGF0ZWRX
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCwgY29uc3QgU3RyaW5nJiBwb2xp
Y3kpOworICAgIHN0YXRpYyB2b2lkIGNsZWFySXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeShpbnQgd29ybGRJRCk7CisgICAgYm9vbCBpc29sYXRlZFdvcmxkSGFzQ29udGVudFNlY3Vy
aXR5UG9saWN5KCk7CisKKworCiAgICAgLy8gRklYTUU6IHRoaXMgaXMgYSB3b3JrYXJvdW5kIGZv
ciBhIHByb2JsZW0gaW4gV2ViVmlld0ltcGwuCiAgICAgLy8gRG8gbm90IHVzZSB0aGlzIGFueXdo
ZXJlIGVsc2UhIQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gY3JlYXRl
VW5pbml0aWFsaXplZFdvcmxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIyYTliOTZhOWQ4N2RhY2NmYjEyMjg3ZDJmMjlkOTM2
OTJiOWZlNGYuLmQ3M2ZiNjYxYTAxYmNhMmIyYWQwYmYzY2Y5YzBhNjBhOWFhNjE2OWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0z
OTksNiArMzk5LDEzIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbklzb2xhdGVk
V29ybGQoaW50IHdvcmxkSUQsIGNvbnN0IFZlY3RvcjxTY3JpcHRTCiAgICAgfQogfQogCitib29s
IFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSgpCit7CisgICAgaWYgKFY4RE9NV2luZG93U2hlbGwqIGlzb2xhdGVkV29ybGRTaGVsbCA9
IFY4RE9NV2luZG93U2hlbGw6OmdldEVudGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIGlzb2xhdGVk
V29ybGRTaGVsbC0+d29ybGQoKS0+aXNvbGF0ZWRXb3JsZEhhc0NvbnRlbnRTZWN1cml0eVBvbGlj
eSgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogVGV4dFBvc2l0aW9uIFNjcmlwdENvbnRyb2xs
ZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oCmluZGV4IDVhMWZmNDU3ODVhYzEyNTU2ZjIyYmM2ZTQxZTE4YjdlOWEyYmVjMDguLmRmMjkx
NTU5Y2NjNDNlNTQ1NjAxMTI2MzQ3N2U2YTlkZTE2MDE1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTEwNyw2ICsxMDcsMTEgQEAgcHVi
bGljOgogICAgIC8vIEZJWE1FOiBHZXQgcmlkIG9mIGV4dGVuc2lvbkdyb3VwIGhlcmUuCiAgICAg
dm9pZCBldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJRCwgY29uc3QgVmVjdG9yPFNj
cmlwdFNvdXJjZUNvZGU+JiBzb3VyY2VzLCBpbnQgZXh0ZW5zaW9uR3JvdXAsIFZlY3RvcjxTY3Jp
cHRWYWx1ZT4qIHJlc3VsdHMpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50
IHdvcmxkIGlzIGlzb2xhdGVkLCBhbmQgaGFzIGl0cyBvd24gQ29udGVudAorICAgIC8vIFNlY3Vy
aXR5IFBvbGljeS4gSW4gdGhpcyBjYXNlLCB0aGUgcG9saWN5IG9mIHRoZSBtYWluIHdvcmxkIHNo
b3VsZCBiZQorICAgIC8vIGlnbm9yZWQgd2hlbiBldmFsdWF0aW5nIHJlc291cmNlcyBpbmplY3Rl
ZCBpbnRvIHRoZSBET00uCisgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3koKTsKKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVmZXJlbmNlcyB0byB0aGlz
IGNhbGwgaW4gY2hyb21pdW0gYW5kIGRlbGV0ZSBpdC4KICAgICBpbmxpbmUgc3RhdGljIHZvaWQg
c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3JsZElELCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTM1OWNkNjRjY2UxOGZi
MWY0NGY3M2JhMzcyYTRlNTkxOTM3NTZlMy4uNjQ2MmI2MzYzNWYwYTFlZmM5YWRhMGM1ZGVlZDAx
YmJmMDkwNTMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yOTYsMTEgKzI5NiwxMyBAQCBib29sIENhY2hlZFJl
c291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IEtVUkwmIHVybAogCiAgICAgaWYgKCFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5E
aXNwbGF5KHVybCkpIHsKICAgICAgICAgaWYgKCFmb3JQcmVsb2FkKQotICAgICAgICAgICAgRnJh
bWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChkb2N1bWVudCgpLT5mcmFtZSgpLCB1cmwu
c3RyaW5nKCkpOworICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxl
ZChmcmFtZSgpLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2Vk
IGJ5IFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAorICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
ID0gKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2NyaXB0KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSgpKTsKKwogICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVzb3VyY2Vz
IGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gIE90aGVyCiAgICAgLy8g
dHlwZXMgb2YgcmVzb3VyY2VzLCBsaWtlIEltYWdlcywgU2NyaXB0cywgYW5kIENTUywgY2FuIGJl
IGxvYWRlZCBmcm9tCiAgICAgLy8gYW55IFVSTC4KQEAgLTM0MSw3ICszNDMsNyBAQCBib29sIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6
CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6Ci0gICAgICAgIGlmICgh
bV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U2NyaXB0RnJvbVNvdXJj
ZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U2Ny
aXB0RnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAg
IGlmIChmcmFtZSgpKSB7CkBAIC0zNTcsMTggKzM1OSwxOCBAQCBib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwm
IHVybAogICAgICAgICAvLyBTaW5jZSBzaGFkZXJzIGFyZSByZWZlcmVuY2VkIGZyb20gQ1NTIFN0
eWxlcyB1c2UgdGhlIHNhbWUgcnVsZXMgaGVyZS4KICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93U3R5bGVGcm9tU291cmNlKHVybCkpCisgICAgICAgIGlmICgh
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFtX2RvY3VtZW50
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTdHlsZUZyb21Tb3VyY2UodXJsKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFNWRykK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgogI2VuZGlmCiAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgaWYgKCFtX2Rv
Y3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFnZUZyb21Tb3VyY2UodXJs
KSkKKyAgICAgICAgaWYgKCFzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3kgJiYgIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ltYWdlRnJv
bVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6IHsKLSAgICAgICAgaWYgKCFt
X2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dGb250RnJvbVNvdXJjZSh1
cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9udEZy
b21Tb3VyY2UodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMzgyLDcgKzM4NCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNh
blJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsCiAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U6CiAgICAgICAgIC8vIEN1ZXMg
YXJlbid0IGNhbGxlZCBvdXQgaW4gdGhlIENQUyBzcGVjIHlldCwgYnV0IHRoZXkgb25seSB3b3Jr
IHdpdGggYSBtZWRpYSBlbGVtZW50CiAgICAgICAgIC8vIHNvIHVzZSB0aGUgbWVkaWEgcG9saWN5
LgotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d01lZGlhRnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRnJhbWUuaAppbmRleCBkMWVhMzg5Njk0M2U5M2MxZjEzMGM0NjRjYTlhZjljY2Q3NzkyZjk4
Li42MDA3MjUyZGYyMzQ5YWQ3ZGExZjEwNzE1YzQyZDAxNjk2MjdhYzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTI1Miw2ICsyNTIsMTYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oCiAgICAg
ICAgIGludCB3b3JsZElELCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYpID0gMDsKIAorICAgIC8v
IEFzc29jaWF0ZXMgYSBjb250ZW50IHNlY3VyaXR5IHBvbGljeSB3aXRoIGFuIGlzb2xhdGVkIHdv
cmxkLiBUaGlzIHBvbGljeQorICAgIC8vIHNob3VsZCBiZSB1c2VkIHdoZW4gZXZhbHVhdGluZyBz
Y3JpcHQgaW4gdGhlIGlzb2xhdGVkIHdvcmxkLCBhbmQgc2hvdWxkCisgICAgLy8gYWxzbyByZXBs
YWNlIGEgcHJvdGVjdGVkIHJlc291cmNlJ3MgQ1NQIHdoZW4gZXZhbHVhdGluZyByZXNvdXJjZXMK
KyAgICAvLyBpbmplY3RlZCBpbnRvIHRoZSBET00uCisgICAgLy8KKyAgICAvLyBGSVhNRTogU2V0
dGluZyB0aGlzIHNpbXBseSBieXBhc3NlcyB0aGUgcHJvdGVjdGVkIHJlc291cmNlJ3MgQ1NQLiBJ
dAorICAgIC8vICAgICBkb2Vzbid0IHlldCByZXN0cmljdCB0aGUgaXNvbGF0ZWQgd29ybGQgdG8g
dGhlIHByb3ZpZGVkIHBvbGljeS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSgKKyAgICAgICAgaW50IHdvcmxkSUQsIGNvbnN0IFdlYlN0cmlu
ZyYpID0gMDsKKwogICAgIC8vIExvZ3MgdG8gdGhlIGNvbnNvbGUgYXNzb2NpYXRlZCB3aXRoIHRo
aXMgZnJhbWUuCiAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgV2Vi
Q29uc29sZU1lc3NhZ2UmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCmluZGV4IDdlZWYyOTM0MzE1M2ZlMzEzY2E5N2RlYTgwOWY1MWExMjk1OTVl
NzcuLjg0MGJjNDAzZTM2NDAxMjgyYTA3MmY1YWJhOGUxYjI2MWIzNDA4MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtODIsNiArODIsNyBAQAog
I2luY2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJET01XaW5kb3dJbnRlbnRzLmgiCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxk
LmgiCiAjaW5jbHVkZSAiRGVsaXZlcmVkSW50ZW50LmgiCiAjaW5jbHVkZSAiRGVsaXZlcmVkSW50
ZW50Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCkBAIC04MjUsNyAr
ODI2LDEzIEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpleGVjdXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxk
KGludCB3b3JsZElELCBjb25zdCBXZWJTY3JpcHRTb3VyCiB2b2lkIFdlYkZyYW1lSW1wbDo6c2V0
SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3JsZElELCBjb25zdCBXZWJTZWN1cml0
eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGZyYW1lKCkpOwotICAgIGZy
YW1lKCktPnNjcmlwdCgpLT5zZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4od29ybGRJRCwg
c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgIERPTVdyYXBwZXJXb3JsZDo6c2V0SXNvbGF0ZWRX
b3JsZFNlY3VyaXR5T3JpZ2luKHdvcmxkSUQsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsKK30KKwor
dm9pZCBXZWJGcmFtZUltcGw6OnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ko
aW50IHdvcmxkSUQsIGNvbnN0IFdlYlN0cmluZyYgcG9saWN5KQoreworICAgIEFTU0VSVChmcmFt
ZSgpKTsKKyAgICBET01XcmFwcGVyV29ybGQ6OnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3kod29ybGRJRCwgcG9saWN5KTsKIH0KIAogdm9pZCBXZWJGcmFtZUltcGw6OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoY29uc3QgV2ViQ29uc29sZU1lc3NhZ2UmIG1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDI2ODZhYWQxZGQzMWI5YmVh
NjhlOTQ1YWJmNjg0MjUxYmIxNGZhOGQuLjcyMmVjZjU1OTc0NTBlY2U1NGI2ZGU0MmFiODhhMTAz
OGZlYzFkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBA
IC0xMTQsNiArMTE0LDcgQEAgcHVibGljOgogICAgICAgICBpbnQgd29ybGRJRCwgY29uc3QgV2Vi
U2NyaXB0U291cmNlKiBzb3VyY2VzLCB1bnNpZ25lZCBudW1Tb3VyY2VzLAogICAgICAgICBpbnQg
ZXh0ZW5zaW9uR3JvdXApOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc29sYXRlZFdvcmxkU2VjdXJp
dHlPcmlnaW4oaW50IHdvcmxkSUQsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJik7CisgICAgdmly
dHVhbCB2b2lkIHNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koaW50IHdvcmxk
SUQsIGNvbnN0IFdlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9Db25z
b2xlKGNvbnN0IFdlYkNvbnNvbGVNZXNzYWdlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RH
YXJiYWdlKCk7CiAgICAgdmlydHVhbCBib29sIGNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoY29u
c3QgV2ViVVJMJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNDZjZWIwZGY5NzRhZmI1NGVhNTA3ZmNlZmEyYTgxMzNhZTBiYzIyNi4u
MTI3MDdkNGQ3YmYyNGVkYWQyMzM3YzBjNThlZDYwYzM4NDg2MzJjOSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEy
LTEwLTI1ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0
IHJ1biBmcm9tIGFuIGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5l
cjo6RFJUVGVzdFJ1bm5lcik6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpzZXRJc29sYXRlZFdv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlRUZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0UnVubmVyKToKKyAgICAgICAg
ICAgIEFkZGluZyBhIG1lY2hhbmlzbSB0byBzZXQgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IGZvciBhbgorICAgICAgICAgICAgaXNvbGF0ZWQgd29ybGQgdG8gQ2hyb21pdW0ncyB0ZXN0UnVu
bmVyLgorCiAyMDEyLTEwLTI1ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5l
bmlAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gSmF2YVNjcmlwdCBwb3B1cHMgYXJl
IG5vdCBmb2N1c2VkIHdoZW4gb3BlbmVkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IGY3Y2Q4MDBlYTlmMDVkMmI1MDA5NGQ2YTczMTM1
ZjkzZWE5MjEzZDEuLjYyNmRjNzg5ZTgxOWNkNjIwNmZiNmE3NDRjMjFmM2MwNjhiMDkwNGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCkBA
IC0xNTcsNiArMTU3LDcgQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwq
IHNoZWxsKQogICAgIGJpbmRNZXRob2QoImV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkIiwg
JkRSVFRlc3RSdW5uZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKTsKICAgICBiaW5k
TWV0aG9kKCJldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlIiwgJkRS
VFRlc3RSdW5uZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFsdWUp
OwogICAgIGJpbmRNZXRob2QoInNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiIsICZEUlRU
ZXN0UnVubmVyOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4pOworICAgIGJpbmRNZXRo
b2QoInNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kiLCAmRFJUVGVzdFJ1bm5l
cjo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgYmluZE1ldGhv
ZCgiZXhlY0NvbW1hbmQiLCAmRFJUVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQpOwogICAgIGJpbmRN
ZXRob2QoImZvcmNlUmVkU2VsZWN0aW9uQ29sb3JzIiwgJkRSVFRlc3RSdW5uZXI6OmZvcmNlUmVk
U2VsZWN0aW9uQ29sb3JzKTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKQEAgLTE0MDMsNiAr
MTQwNCwxNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9y
aWdpbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZQogICAgIG1fc2hlbGwtPndlYlZpZXco
KS0+Zm9jdXNlZEZyYW1lKCktPnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihhcmd1bWVu
dHNbMF0udG9JbnQzMigpLCBvcmlnaW4pOwogfQogCit2b2lkIERSVFRlc3RSdW5uZXI6OnNldElz
b2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
KworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJl
cigpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zaGVsbC0+d2ViVmlldygpLT5mb2N1c2VkRnJhbWUoKS0+c2V0SXNvbGF0ZWRXb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeShhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBWYXJpYW50VG9XZWJT
dHJpbmcoYXJndW1lbnRzWzFdKSk7Cit9CisKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAg
JiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXggZWM0Nzc4ZmQ1YzQ2ZjhmMzI4NzU4YTE1N2EzMjgy
MTQ1NGI1YjIyMS4uMmUyNmRkMDI5ZjBmM2RhNTg5NDBmODY1OTM2OThmMmQ0YjQ3ZGZkMiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAtMjgx
LDYgKzI4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdv
cmxkQW5kUmV0dXJuVmFsdWUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
ICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3Jp
Z2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldElz
b2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogCiAgICAgLy8gVGhlIGZhbGxiYWNrIG1ldGhvZCBpcyBjYWxsZWQgd2hl
biBhIG5vbmV4aXN0ZW50IG1ldGhvZCBpcyBjYWxsZWQgb24KICAgICAvLyB0aGUgbGF5b3V0IHRl
c3QgY29udHJvbGxlciBvYmplY3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjUwOTYxZjBjOGQ1NzE4M2UxMGM2ZmU0Y2Q0
ZTQxNmI2ZTJjYjY1NC4uZjdlNGZiYjNjN2MxOWJkYWExZWJiYzMzYzg2ODZmNzNhOTk0MGEwNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTI1ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFuIGlzb2xhdGVkIHdvcmxkIHNo
b3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBh
c3MtbWFpbi13b3JsZC1jc3AtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICAgICBTa2lwIHRoZSBuZXcgdGVzdHMgb24gcG9ydHMgdGhhdCBkb24ndCBzdXBw
b3J0IHRoZSBuZXcgZnVuY3Rpb25hbGl0eQorCiAyMDEyLTEwLTI1ICBNaWtoYWlsIFBvemRueWFr
b3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEdhcmRl
bmluZyBhZnRlciByMTMyMzk0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFp
bi13b3JsZC1jc3AtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYzliZjFlNTdiY2Y3NTg4ZjZh
M2U0M2UxNjczNTIwM2E3MDY1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9h
ZCB0aGUgaW1hZ2UgJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvYWJl
LnBuZycgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IGRpcmVjdGl2ZTogImltZy1zcmMgJ25vbmUnIi4KKworQUxFUlQ6IEJMT0NLRUQgaW4g
bWFpbiB3b3JsZAorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxvYWQgdGhlIGltYWdlICdo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2FiZS5wbmcnIGJlY2F1c2Ug
aXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3Rp
dmU6ICJpbWctc3JjICdub25lJyIuCisKK0FMRVJUOiBCTE9DS0VEIGluIGlzb2xhdGVkIHdvcmxk
CitBTEVSVDogU3RhcnRpbmcgdG8gYnlwYXNzIG1haW4gd29ybGQncyBDU1A6CitBTEVSVDogTE9B
REVEIGluIGlzb2xhdGVkIHdvcmxkCitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCB0
aGUgaW1hZ2UgJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvYWJlLnBu
ZycgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGRpcmVjdGl2ZTogImltZy1zcmMgJ25vbmUnIi4KKworQUxFUlQ6IEJMT0NLRUQgaW4gbWFp
biB3b3JsZAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBzY3JpcHRzIHJ1biBpbiBpc29sYXRlZCB3
b3JsZHMgbWFya2VkIHdpdGggdGhlaXIgb3duIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGFyZW4n
dCBhZmZlY3RlZCBieSB0aGUgcGFnZSdzIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5LiBFeHRlbnNp
b25zLCBmb3IgZXhhbXBsZSwgc2hvdWxkIGJlIGFibGUgdG8gbG9hZCBhbnkgcmVzb3VyY2UgdGhl
eSBsaWtlLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
aXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYWRkNjFmYjYwYWQ2YjY1NGY0ZTEwM2ZlMmEzZTdiMjdiMzlhY2RhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRl
ZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IlgtV2ViS2l0LUNT
UCIgY29udGVudD0iaW1nLXNyYyAnbm9uZSciPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHRlc3RzID0gNDsKKyAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKG1lc3NhZ2UpIHsKKyAg
ICAgICAgdGVzdHMgLT0gMTsKKyAgICAgICAgdGVzdCgpOworICAgIH0sIGZhbHNlKTsKKworICAg
IGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGZ1bmN0aW9uIHNldEltZ1NyYyhpc29sYXRlZCkg
eworICAgICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwor
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbWcpOworICAgICAgICAgICAg
aW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhbGVydCgnTE9BREVE
IGluICcgKyAoaXNvbGF0ZWQgPyAiaXNvbGF0ZWQgd29ybGQiIDogIm1haW4gd29ybGQiKSk7Cisg
ICAgICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJuZXh0IiwgIioiKTsKKyAgICAgICAg
ICAgIH07CisgICAgICAgICAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBhbGVydCgnQkxPQ0tFRCBpbiAnICsgKGlzb2xhdGVkID8gImlzb2xhdGVkIHdvcmxk
IiA6ICJtYWluIHdvcmxkIikpOworICAgICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgi
bmV4dCIsICIqIik7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaW1nLnNyYyA9ICIuLi9y
ZXNvdXJjZXMvYWJlLnBuZyI7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHRlc3RzKSB7
CisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgc2V0SW1nU3JjKGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKDEsIFN0cmluZyhl
dmFsKCJzZXRJbWdTcmMiKSkgKyAiXG5zZXRJbWdTcmModHJ1ZSk7Iik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgYWxlcnQoIlN0
YXJ0aW5nIHRvIGJ5cGFzcyBtYWluIHdvcmxkJ3MgQ1NQOiIpOworICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgxLCAnaW1nLXNy
YyAqJyk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0
ZWRXb3JsZCgxLCBTdHJpbmcoZXZhbCgic2V0SW1nU3JjIikpICsgIlxuc2V0SW1nU3JjKHRydWUp
OyIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOgorICAgICAg
ICAgICAgICAgIHNldEltZ1NyYyhmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRJc29sYXRlZFdv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KDEsICcnKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSd0ZXN0KCk7Jz4KKyAgICA8cD4K
KyAgICAgICAgVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBzY3JpcHRzIHJ1biBpbiBpc29sYXRlZCB3
b3JsZHMgbWFya2VkIHdpdGggdGhlaXIKKyAgICAgICAgb3duIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IGFyZW4ndCBhZmZlY3RlZCBieSB0aGUgcGFnZSdzIGNvbnRlbnQKKyAgICAgICAgc2VjdXJp
dHkgcG9saWN5LiBFeHRlbnNpb25zLCBmb3IgZXhhbXBsZSwgc2hvdWxkIGJlIGFibGUgdG8gbG9h
ZCBhbnkKKyAgICAgICAgcmVzb3VyY2UgdGhleSBsaWtlLgorICAgIDwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGY2
NjFjOGE2MjZmZDE4ZWE3OTRmZWFhMGFlNjUxMTU0YTY2NDhjNC4uNDBlNDEyNTZhNjJmYjcwMjVj
NGViZGMzNzZlZGRjNGFmNDRlMWE0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTE0MDAsNiArMTQwMCw5IEBAIHdlYmtpdC5vcmcvYi82MTU0MCBodHRw
L3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvY3Jvc3Mtb3JpZ2luLXhoci5odG1sIFsgRmFp
CiB3ZWJraXQub3JnL2IvNjE1NDAgaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRp
dHMtY29udGVudC1zY3JpcHQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzYxNTQwIGlu
c3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtZXZhbC1jb250ZW50LXNjcmlwdC5odG1sIFsg
RmFpbHVyZSBdCiAKKyMgSlNDIGFsc28gZG9lc24ndCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3kKK3dlYmtpdC5vcmcvYi8zMTUwOCB3ZWJraXQub3JnL2IvNjE1
NDAgaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNz
cC5odG1sIFsgRmFpbHVyZSBdCisKICNfX3dvcmxkSUQgaXMgdW5kZWZpbmVkIGluIGlzb2xhdGVk
IHdvcmxkCiBCdWcoRUZMKSBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZGlkQ2xl
YXJXaW5kb3dPYmplY3QuaHRtbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGQzOTMzZWFjYmMzNWZhMzc2NjQyOThjZGViZGIxNzBjNzdjYmUxNGEuLjcz
OTcxZTgyNTdlOGUzZjlkMjI5YjA3ZTc3M2E1NzFhYTg2OTg1ZTYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC00MjgsNiArNDI4LDkgQEAgaW5zcGVjdG9y
L2VsZW1lbnRzL3VwZGF0ZS1zaGFkb3dkb20uaHRtbAogIyBKU0MgZG9lcyBub3Qgc3VwcG9ydCBz
ZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4gKGh0dHA6Ly93ZWJraXQub3JnL2IvNjE1NDAp
CiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvY3Jvc3Mtb3JpZ2luLXhoci5odG1s
CiAKKyMgSlNDIGFsc28gZG9lc24ndCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3kgKHdlYmtpdC5vcmcvYi8zMTUwOCB3ZWJraXQub3JnL2IvNjE1NDApCitodHRw
L3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLmh0bWwK
KwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMyODIgbGF5ZXJU
cmVlQXNUZXh0IGRvZXNuJ3Qgd29yayBmb3IgaWZyYW1lcwogY29tcG9zaXRpbmcvcnRsL3J0bC1p
ZnJhbWUtYWJzb2x1dGUtb3ZlcmZsb3ctc2Nyb2xsZWQuaHRtbAogY29tcG9zaXRpbmcvcnRsL3J0
bC1pZnJhbWUtYWJzb2x1dGUtb3ZlcmZsb3cuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggMDE5N2FiOThkM2IzNDFhMGJkZGExYzM5NzZkZDNjNzAwMTg0
N2MyMy4uNzAzMTkyMTIzYWZiZjMwOTc5YjBlNDNkMTRlNWM0ZDNkMjM5YjFmMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMzMsNiArMzMzLDkgQEAgZmFz
dC9qcy9pMThuLWJpbmRpbmdzLWxvY2FsZS5odG1sCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0IHNl
dElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiwgKGh0dHA6Ly93ZWJraXQub3JnL2IvNjE1NDAp
CiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvY3Jvc3Mtb3JpZ2luLXhoci5odG1s
CiAKKyMgSlNDIGFsc28gZG9lc24ndCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3kgKHdlYmtpdC5vcmcvYi8zMTUwOCB3ZWJraXQub3JnL2IvNjE1NDApCitodHRw
L3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLmh0bWwK
KwogIyBUaGlzIHRlc3QgaXMgZm9yIGNsaWVudHMgdGhhdCBjaG9vc2UgdG8gbWFrZSB0aGUgbWlz
c2luZyBwbHVnaW4gaW5kaWNhdG9yIGEgYnV0dG9uCiBwbHVnaW5zL2NsaWNraW5nLW1pc3Npbmct
cGx1Z2luLWZpcmVzLWRlbGVnYXRlLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA1ZDFhMmNiMDVkN2Y1ZDBlODllMzU4MzRiODA5ZjNkYjk4Mjdh
MmU0Li5mMmMzODNjNDEwZjdmZmFjYWRlMjU4OTVlNmQ0MmM1OGU0NDZjMDA5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQ3OCw2ICsxNDc4LDkgQEAg
bG9hZGVyL25hdmlnYXRpb24td2hpbGUtZGVmZXJyaW5nLWxvYWRzLmh0bWwKICMgSlNDIGRvZXMg
bm90IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luIChodHRwOi8vd2Via2l0
Lm9yZy9iLzYxNTQwKQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Nyb3NzLW9y
aWdpbi14aHIuaHRtbAogCisjIEpTQyBhbHNvIGRvZXNuJ3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICh3ZWJraXQub3JnL2IvMzE1MDggd2Via2l0Lm9yZy9i
LzYxNTQwKQoraHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdv
cmxkLWNzcC5odG1sCisKICMgRU5BQkxFKFdFQkdMKSBpcyBkaXNhYmxlZAogY29tcG9zaXRpbmcv
YmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5LXdlYmdsLmh0bWwKIGNvbXBv
c2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1zaW1wbGUtd2ViZ2wtbGF5ZXIuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171408</attachid>
            <date>2012-10-30 03:38:36 -0700</date>
            <delta_ts>2012-10-31 01:38:53 -0700</delta_ts>
            <desc>Rebased.</desc>
            <filename>bug-97398-20121030113701.patch</filename>
            <type>text/plain</type>
            <size>27759</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWIzNzU0NDk4OWQ2MDY3
ZWQ5MDk4MWE1MTcxMDA1NDlhM2JmYzdhZC4uYjY0MjIxMmI2ZTcyYTc3NWNkNmQ2ZTM0MjY3Yjgw
ZjY1Yjk3NjU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTMwICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFu
IGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIHBhZ2UncyBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSBjdXJyZW50bHkgYXBwbGllcyB0byBhbGwgcmVzb3VyY2VzCisgICAgICAgIGxv
YWRlZCwgcmVnYXJkbGVzcyBvZiB0aGVpciBzb3VyY2UuIFRoYXQgZ2VuZXJhbGx5IG1ha2VzIHNl
bnNlLCBidXQKKyAgICAgICAgcHJvdmVzIHByb2JsZW1hdGljIHdoZW4gY29uc2lkZXJpbmcgc2Ny
aXB0IHJ1biBmcm9tIGFuIGlzb2xhdGVkCisgICAgICAgIHdvcmxkIChDaHJvbWUgZXh0ZW5zaW9u
cywgZm9yIGluc3RhbmNlKS4gVGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgYWxsb3dlZAorICAgICAg
ICB0byBpbmplY3QgcmVzb3VyY2VzIGludG8gYSBwYWdlJ3MgRE9NIHdpdGhvdXQgZWloZXIgYmVp
bmcgcmVzdHJpY3RlZCBieQorICAgICAgICB0aGUgcGFnZSdzIGFjdGl2ZSBDU1AsIG9yIGdlbmVy
YXRpbmcgdmlvbGF0aW9uIHJlcG9ydHMgdGhhdCBzcGFtIHRoZQorICAgICAgICBwYWdlIG93bmVy
LgorCisgICAgICAgIElkZWFsbHksIHRoZSBpc29sYXRlZCB3b3JsZCBjb3VsZCBkZWZpbmUgaXRz
IG93biBDb250ZW50IFNlY3VyaXR5IFBvbGljeQorICAgICAgICB3aGljaCBzaG91bGQgYmUgYXBw
bGllZCB0byByZXNvdXJjZXMgaXQgbG9hZHMuIEZvciB0aGUgbW9tZW50LCB0aGlzCisgICAgICAg
IHBhdGNoIGFjY2VwdHMgYSBTdHJpbmcgdGhhdCB3ZSBjYW4gcGFyc2UgbGF0ZXIgb24sIGJ1dCBv
bmx5IHVzZXMgaXQgaW4KKyAgICAgICAgYSBiaW5hcnkgd2F5LiBJZiBhIG5vbi1lbXB0eSBwb2xp
Y3kgU3RyaW5nIGlzIHByb3ZpZGVkLCB3ZSBieXBhc3MgdGhlCisgICAgICAgIG1haW4gd29ybGQn
cyBDU1AgY2hlY2tzLiBJZiBhbiBlbXB0eSBTdHJpbmcgaXMgcHJvdmlkZWQsIHRoZSBtYWluCisg
ICAgICAgIHdvcmxkJ3MgQ1NQIGNoZWNrcyByZW1haW4gYWN0aXZlLgorCisgICAgICAgIFRlc3Q6
IGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Au
aHRtbAorCisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxk
SGFzQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZDo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmNsZWFySXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmg6CisgICAg
ICAgIChET01XcmFwcGVyV29ybGQpOgorICAgICAgICAgICAgTWVjaGFuaXNtcyBmb3Igc2V0dGlu
ZyBhbmQgY2xlYXJpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY2llcyBmcm9tCisgICAgICAgICAg
ICBpc29sYXRlZCB3b3JsZHM7IGltcGxlbWVudGVkIGluIHRoZSBzYW1lIEhhc2hNYXBweSB3YXkg
YXMKKyAgICAgICAgICAgIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKFNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAgICAgQWRkaW5nIGEgbWV0aG9kIHRvIFNj
cmlwdENvbnRyb2xsZXIgdG8gcXVlcnkgdGhlIHN0YXRlIG9mIHRoZQorICAgICAgICAgICAgY3Vy
cmVudCB3b3JsZCdzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiBXZSdsbCBkcm9wIHRoaXMgb25j
ZSB3ZSBjYW4KKyAgICAgICAgICAgIGFwcGx5IGEgcG9saWN5IG1vcmUgZGlyZWN0bHksIGJ1dCBm
b3IgdGhlIG1vbWVudCBpdCdzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgIHRoZSBuZXh0IGJp
dC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAg
ICAgICAgQ2hlY2sgdGhlIG5ldyBTY3JpcHRDb250cm9sbGVyIG1ldGhvZCwgYW5kIG9ubHkgcGVy
Zm9ybSBDU1AgY2hlY2tzCisgICAgICAgICAgICB3aGVuIGxvYWRpbmcgcmVzb3VyY2VzIGlmIHdl
J3JlIGV4ZWN1dGluZyBjb2RlIGZyb20gdGhlIG1haW4gd29ybGQsCisgICAgICAgICAgICBvciBh
biBpc29sYXRlZCB3b3JsZCB3aXRoIG5vIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHNldC4KKwog
MjAxMi0xMC0yOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFr
ZSByZW5kZXJpbmcgdGFibGVzIHdpdGggPGNvbGdyb3Vwcz4gdHdpY2UgYXMgZmFzdCBieSBhdm9p
ZGluZyB3YWxraW5nIHRoZSBET00gZm9yIGNvbGdyb3VwcyA0IHRpbWVzIGZvciBlYWNoIGNlbGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZTMxNGE2YjE4ZmE1MzRkNjFjNzkzN2I2M2Ey
MmIwMDRiZWVhYWUxMy4uNjNjOTU5ZjQ0ZGVlMzVjYmMzNzNhMWQ2MzM5MzNjYjk3MjRlZThjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0xMC0zMCAg
TWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcmlwdCBydW4gZnJv
bSBhbiBpc29sYXRlZCB3b3JsZCBzaG91bGQgYnlwYXNzIGEgcGFnZSdzIENTUC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWUu
aDoKKyAgICAgICAgKFdlYkZyYW1lKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBs
OjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKiBzcmMv
V2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUltcGwpOgorICAgICAgICAgICAgUGlw
aW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhyb3VnaCBXZWJGcmFtZSwgaW4gdGhlIHNh
bWUgd2F5CisgICAgICAgICAgICB3ZSdyZSBjdXJyZW50bHkgZG9pbmcgZm9yIFNlY3VyaXR5T3Jp
Z2luLiBBcyBhIGRyaXZlLWJ5LCB0aGlzIGFsc28KKyAgICAgICAgICAgIHVzZXMgdGhlIHN0YXRp
YyBtZXRob2Qgb24gRE9NV3JhcHBlcldpbmRvdyB0byBzZXQgdGhlIHNlY3VyaXR5CisgICAgICAg
ICAgICBvcmlnaW4sIHJhdGhlciB0aGFuIHJvdXRpbmcgdGhyb3VnaCB0aGUgZnJhbWUncyBTY3Jp
cHRDb250cm9sbGVyLgorCiAyMDEyLTEwLTI5ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZmFkNGQ0NDNhN2MxN2Uy
ZWQ4MGIzOTk1YWU2NjZhMzlkMjE5NjU4YS4uOTZlMzY4ZjY5ZmI2ZmI3NDUxYmVmNjRjMGExMjcx
NGY3YWRjZDE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaApAQCAtMTYwLDYgKzE2MCw5IEBAIHB1YmxpYzoKICAgICBOUE9iamVjdCogd2luZG93
U2NyaXB0TlBPYmplY3QoKTsKICNlbmRpZgogCisgICAgLy8gRklYTUU6IFN0dWIgZm9yIHBhcml0
eSB3aXRoIFY4IGltcGxlbWVudGF0aW9uLgorICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5KCkgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJpdmF0ZToKICAg
ICBKU0RPTVdpbmRvd1NoZWxsKiBpbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29ybGQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAppbmRl
eCA2ZGYwYjcyZDVhYjI0YjYxYTNkMWZjMGIwNzFmNTJjOWFmYThlNGFlLi4wYjlmMDU1YjZlYjRm
MmE3N2IzNzQ1ZjE1YTk0YzdiM2IwMDk0ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKQEAgLTE0Myw0ICsxNDMsMzUgQEAgdm9pZCBET01X
cmFwcGVyV29ybGQ6OmNsZWFySXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3JsZElE
KQogICAgIGlzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbnMoKS5yZW1vdmUod29ybGRJRCk7CiB9
CiAKK3R5cGVkZWYgSGFzaE1hcDxpbnQsIGJvb2w+IElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3lNYXA7CitzdGF0aWMgSXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeU1h
cCYgaXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljaWVzKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSXNvbGF0ZWRXb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeU1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKwor
Ym9vbCBET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRIYXNDb250ZW50U2VjdXJpdHlQb2xp
Y3koKQoreworICAgIEFTU0VSVCh0aGlzLT5pc0lzb2xhdGVkV29ybGQoKSk7CisgICAgSXNvbGF0
ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeU1hcCYgcG9saWNpZXMgPSBpc29sYXRlZFdvcmxk
Q29udGVudFNlY3VyaXR5UG9saWNpZXMoKTsKKyAgICBJc29sYXRlZFdvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5TWFwOjppdGVyYXRvciBpdCA9IHBvbGljaWVzLmZpbmQod29ybGRJZCgpKTsKKyAg
ICByZXR1cm4gaXQgPT0gcG9saWNpZXMuZW5kKCkgPyBmYWxzZSA6IGl0LT52YWx1ZTsKK30KKwor
dm9pZCBET01XcmFwcGVyV29ybGQ6OnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3koaW50IHdvcmxkSUQsIGNvbnN0IFN0cmluZyYgcG9saWN5KQoreworICAgIEFTU0VSVChET01X
cmFwcGVyV29ybGQ6OmlzSXNvbGF0ZWRXb3JsZElkKHdvcmxkSUQpKTsKKyAgICBpZiAoIXBvbGlj
eS5pc0VtcHR5KCkpCisgICAgICAgIGlzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY2ll
cygpLnNldCh3b3JsZElELCB0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIGlzb2xhdGVkV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY2llcygpLnJlbW92ZSh3b3JsZElEKTsKK30KKwordm9pZCBET01X
cmFwcGVyV29ybGQ6OmNsZWFySXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShpbnQg
d29ybGRJRCkKK3sKKyAgICBBU1NFUlQoRE9NV3JhcHBlcldvcmxkOjppc0lzb2xhdGVkV29ybGRJ
ZCh3b3JsZElEKSk7CisgICAgaXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljaWVzKCku
cmVtb3ZlKHdvcmxkSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oCmluZGV4IGFmNTVjOTQwOTBmMDZk
MTMxMDJkN2IwMDk3MGNlYjcyMThkYzNiMmUuLmFjN2VmMDNhODE1YTdmNmVlNzYwNDZhZDMxYjc5
ZTI4MjY4OWY1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdy
YXBwZXJXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJX
b3JsZC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
Nyw2ICs1OCwyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZFNl
Y3VyaXR5T3JpZ2luKGludCB3b3JsZElELCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CiAg
ICAgc3RhdGljIHZvaWQgY2xlYXJJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oaW50IHdvcmxk
SUQpOwogICAgIFNlY3VyaXR5T3JpZ2luKiBpc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oKTsK
KworICAgIC8vIEFzc29jaWF0ZWQgYW4gaXNvbGF0ZWQgd29ybGQgd2l0aCBhIENvbnRlbnQgU2Vj
dXJpdHkgUG9saWN5LiBSZXNvdXJjZXMKKyAgICAvLyBlbWJlZGRlZCBpbnRvIHRoZSBtYWluIHdv
cmxkJ3MgRE9NIGZyb20gc2NyaXB0IGV4ZWN1dGVkIGluIGFuIGlzb2xhdGVkCisgICAgLy8gd29y
bGQgc2hvdWxkIGJlIHJlc3RyaWN0ZWQgYmFzZWQgb24gdGhlIGlzb2xhdGVkIHdvcmxkJ3MgRE9N
LCBub3QgdGhlCisgICAgLy8gbWFpbiB3b3JsZCdzLgorICAgIC8vCisgICAgLy8gRklYTUU6IFJp
Z2h0IG5vdywgcmVzb3VyY2UgaW5qZWN0aW9uIHNpbXBseSBieXBhc3NlcyB0aGUgbWFpbiB3b3Js
ZCdzCisgICAgLy8gRE9NLiBNb3JlIHdvcmsgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IHRoZSBpc29s
YXRlZCB3b3JsZCdzIHBvbGljeSB0byBiZQorICAgIC8vIGFwcGxpZWQgY29ycmVjdGx5LgorICAg
IHN0YXRpYyB2b2lkIHNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koaW50IHdv
cmxkSUQsIGNvbnN0IFN0cmluZyYgcG9saWN5KTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhcklzb2xh
dGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koaW50IHdvcmxkSUQpOworICAgIGJvb2wgaXNv
bGF0ZWRXb3JsZEhhc0NvbnRlbnRTZWN1cml0eVBvbGljeSgpOworCisKKwogICAgIC8vIEZJWE1F
OiB0aGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBwcm9ibGVtIGluIFdlYlZpZXdJbXBsLgogICAg
IC8vIERvIG5vdCB1c2UgdGhpcyBhbnl3aGVyZSBlbHNlISEKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01XcmFwcGVyV29ybGQ+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRXb3JsZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA3ODM2YTBm
ODY4ODYyYWFmMzI0OWQ2YTcwMTMzNmU5NTdiODg0MzRjLi5mY2IxZjUzNDhlMzI2ZDNmZjQ5N2Ji
YmI3ZGU1YTRiMTI0NjM1MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzk2LDYgKzM5NiwxMyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlSW5Jc29sYXRlZFdvcmxkKGludCB3b3JsZElELCBjb25zdCBWZWN0b3I8
U2NyaXB0UwogICAgIH0KIH0KIAorYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKQoreworICAgIGlmIChWOERPTVdpbmRvd1No
ZWxsKiBpc29sYXRlZFdvcmxkU2hlbGwgPSBWOERPTVdpbmRvd1NoZWxsOjpnZXRFbnRlcmVkKCkp
CisgICAgICAgIHJldHVybiBpc29sYXRlZFdvcmxkU2hlbGwtPndvcmxkKCktPmlzb2xhdGVkV29y
bGRIYXNDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFRl
eHRQb3NpdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0
CiB7CiAgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBiNjZjZWQ3ZmI0OWVkZDFjMWE0YzRl
ZjU5NjhmZTg3ODA1YjA5ODdhLi44NDBkYzRjYWY5YThlNThhYTQ5N2IzZDQ5MDMwZDJkOTQ0NDNm
ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
CkBAIC0xMDcsNiArMTA3LDExIEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogR2V0IHJpZCBvZiBl
eHRlbnNpb25Hcm91cCBoZXJlLgogICAgIHZvaWQgZXZhbHVhdGVJbklzb2xhdGVkV29ybGQoaW50
IHdvcmxkSUQsIGNvbnN0IFZlY3RvcjxTY3JpcHRTb3VyY2VDb2RlPiYgc291cmNlcywgaW50IGV4
dGVuc2lvbkdyb3VwLCBWZWN0b3I8U2NyaXB0VmFsdWU+KiByZXN1bHRzKTsKIAorICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCB3b3JsZCBpcyBpc29sYXRlZCwgYW5kIGhhcyBpdHMg
b3duIENvbnRlbnQKKyAgICAvLyBTZWN1cml0eSBQb2xpY3kuIEluIHRoaXMgY2FzZSwgdGhlIHBv
bGljeSBvZiB0aGUgbWFpbiB3b3JsZCBzaG91bGQgYmUKKyAgICAvLyBpZ25vcmVkIHdoZW4gZXZh
bHVhdGluZyByZXNvdXJjZXMgaW5qZWN0ZWQgaW50byB0aGUgRE9NLgorICAgIGJvb2wgc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CisKICAgICAvLyBGSVhNRTog
UmVtb3ZlIHJlZmVyZW5jZXMgdG8gdGhpcyBjYWxsIGluIGNocm9taXVtIGFuZCBkZWxldGUgaXQu
CiAgICAgaW5saW5lIHN0YXRpYyB2b2lkIHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihp
bnQgd29ybGRJRCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDE1NjVjNmMwNTdkMDAyZWE0Y2Y2YjczMjQ0Yzk3OTkwYThlYjVmMzEuLmY0ZDhh
MjYwMTQ0OWNlYzA5NzE2NzA5NzQzMzczNjJhYzE1MjI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMzAxLDEx
ICszMDEsMTMgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKIHsKICAgICBpZiAoZG9jdW1lbnQo
KSAmJiAhZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAg
ICAgICAgIGlmICghZm9yUHJlbG9hZCkKLSAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRM
b2NhbExvYWRGYWlsZWQoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgdXJsLnN0cmluZygpKTsKKyAgICAg
ICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUoKSwgdXJsLnN0
cmluZygpKTsKICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0UmVzb3VyY2UgVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdp
bjo6Y2FuRGlzcGxheSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSA9IChmcmFtZSgpICYmIGZy
YW1lKCktPnNjcmlwdCgpLT5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3koKSk7CisKICAgICAvLyBTb21lIHR5cGVzIG9mIHJlc291cmNlcyBjYW4gYmUgbG9hZGVkIG9u
bHkgZnJvbSB0aGUgc2FtZSBvcmlnaW4uICBPdGhlcgogICAgIC8vIHR5cGVzIG9mIHJlc291cmNl
cywgbGlrZSBJbWFnZXMsIFNjcmlwdHMsIGFuZCBDU1MsIGNhbiBiZSBsb2FkZWQgZnJvbQogICAg
IC8vIGFueSBVUkwuCkBAIC0zNDcsNyArMzQ5LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgogI2VuZGlmCiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0OgotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdEZyb21Tb3VyY2UodXJsKSkKKyAgICAgICAg
aWYgKCFzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgIW1fZG9j
dW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdEZyb21Tb3VyY2UodXJs
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoZnJhbWUoKSkgewpA
QCAtMzYzLDE4ICszNjUsMTggQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVz
dChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAgLy8g
U2luY2Ugc2hhZGVycyBhcmUgcmVmZXJlbmNlZCBmcm9tIENTUyBTdHlsZXMgdXNlIHRoZSBzYW1l
IHJ1bGVzIGhlcmUuCiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNo
ZWV0OgotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5h
bGxvd1N0eWxlRnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCktPmFsbG93U3R5bGVGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShTVkcpCiAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6U1ZHRG9jdW1lbnRSZXNvdXJjZToKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCisgICAgICAgIGlmICgh
c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFtX2RvY3VtZW50
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFnZUZyb21Tb3VyY2UodXJsKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9udEZyb21Tb3VyY2UodXJsKSkKKyAgICAgICAgaWYg
KCFzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgIW1fZG9jdW1l
bnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ZvbnRGcm9tU291cmNlKHVybCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM4OSw3
ICszOTEsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlRleHRUcmFja1Jlc291cmNlOgogICAgICAgICAvLyBDdWVzIGFyZW4ndCBjYWxsZWQgb3V0
IGluIHRoZSBDUFMgc3BlYyB5ZXQsIGJ1dCB0aGV5IG9ubHkgd29yayB3aXRoIGEgbWVkaWEgZWxl
bWVudAogICAgICAgICAvLyBzbyB1c2UgdGhlIG1lZGlhIHBvbGljeS4KLSAgICAgICAgaWYgKCFt
X2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2Uo
dXJsKSkKKyAgICAgICAgaWYgKCFzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3kgJiYgIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01lZGlh
RnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVh
azsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKaW5kZXgg
ZDFlYTM4OTY5NDNlOTNjMWYxMzBjNDY0Y2E5YWY5Y2NkNzc5MmY5OC4uNjAwNzI1MmRmMjM0OWFk
N2RhMWYxMDcxNWM0MmQwMTY5NjI3YWM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZS5oCkBAIC0yNTIsNiArMjUyLDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKAogICAgICAgICBpbnQgd29ybGRJRCwg
Y29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mKSA9IDA7CiAKKyAgICAvLyBBc3NvY2lhdGVzIGEgY29u
dGVudCBzZWN1cml0eSBwb2xpY3kgd2l0aCBhbiBpc29sYXRlZCB3b3JsZC4gVGhpcyBwb2xpY3kK
KyAgICAvLyBzaG91bGQgYmUgdXNlZCB3aGVuIGV2YWx1YXRpbmcgc2NyaXB0IGluIHRoZSBpc29s
YXRlZCB3b3JsZCwgYW5kIHNob3VsZAorICAgIC8vIGFsc28gcmVwbGFjZSBhIHByb3RlY3RlZCBy
ZXNvdXJjZSdzIENTUCB3aGVuIGV2YWx1YXRpbmcgcmVzb3VyY2VzCisgICAgLy8gaW5qZWN0ZWQg
aW50byB0aGUgRE9NLgorICAgIC8vCisgICAgLy8gRklYTUU6IFNldHRpbmcgdGhpcyBzaW1wbHkg
YnlwYXNzZXMgdGhlIHByb3RlY3RlZCByZXNvdXJjZSdzIENTUC4gSXQKKyAgICAvLyAgICAgZG9l
c24ndCB5ZXQgcmVzdHJpY3QgdGhlIGlzb2xhdGVkIHdvcmxkIHRvIHRoZSBwcm92aWRlZCBwb2xp
Y3kuCisgICAgdmlydHVhbCB2b2lkIHNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3koCisgICAgICAgIGludCB3b3JsZElELCBjb25zdCBXZWJTdHJpbmcmKSA9IDA7CisKICAgICAv
LyBMb2dzIHRvIHRoZSBjb25zb2xlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZyYW1lLgogICAgIHZp
cnR1YWwgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFdlYkNvbnNvbGVNZXNzYWdlJikg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRl
eCA5ZTZlYWM0NGQ0ZDllNDcwNTZlM2RmMzY0MDE4YzliOTEyYTg3YWI1Li5lMTE0OTllZWVmMWIy
YjMwNTVjOTk2ODkyNmIwOGViYTY2NWRjYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRlICJET01VdGls
aXRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRE9NV2lu
ZG93SW50ZW50cy5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRl
bGl2ZXJlZEludGVudC5oIgogI2luY2x1ZGUgIkRlbGl2ZXJlZEludGVudENsaWVudEltcGwuaCIK
ICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgpAQCAtODI2LDcgKzgyNywxMyBAQCB2b2lkIFdl
YkZyYW1lSW1wbDo6ZXhlY3V0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJRCwgY29u
c3QgV2ViU2NyaXB0U291cgogdm9pZCBXZWJGcmFtZUltcGw6OnNldElzb2xhdGVkV29ybGRTZWN1
cml0eU9yaWdpbihpbnQgd29ybGRJRCwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5
T3JpZ2luKQogewogICAgIEFTU0VSVChmcmFtZSgpKTsKLSAgICBmcmFtZSgpLT5zY3JpcHQoKS0+
c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKHdvcmxkSUQsIHNlY3VyaXR5T3JpZ2luLmdl
dCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQ6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bih3b3JsZElELCBzZWN1cml0eU9yaWdpbi5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViRnJhbWVJbXBs
OjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElELCBjb25z
dCBXZWJTdHJpbmcmIHBvbGljeSkKK3sKKyAgICBBU1NFUlQoZnJhbWUoKSk7CisgICAgRE9NV3Jh
cHBlcldvcmxkOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KHdvcmxkSUQs
IHBvbGljeSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBsOjphZGRNZXNzYWdlVG9Db25zb2xlKGNv
bnN0IFdlYkNvbnNvbGVNZXNzYWdlJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuaAppbmRleCAyNjg2YWFkMWRkMzFiOWJlYTY4ZTk0NWFiZjY4NDI1MWJi
MTRmYThkLi43MjJlY2Y1NTk3NDUwZWNlNTRiNmRlNDJhYjg4YTEwMzhmZWMxZDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaApAQCAtMTE0LDYgKzExNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgaW50IHdvcmxkSUQsIGNvbnN0IFdlYlNjcmlwdFNvdXJjZSogc291
cmNlcywgdW5zaWduZWQgbnVtU291cmNlcywKICAgICAgICAgaW50IGV4dGVuc2lvbkdyb3VwKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3Js
ZElELCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc29s
YXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGludCB3b3JsZElELCBjb25zdCBXZWJTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShjb25zdCBXZWJDb25z
b2xlTWVzc2FnZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwogICAgIHZp
cnR1YWwgYm9vbCBjaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KGNvbnN0IFdlYlVSTCYpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgy
NmJhMzJmOGU2YzhlZDI0MjY1NDE0MWU5MzcyYmE0MDg3YzQ1N2IuLjAxZTQzZDgzZjVhMDUxNTRm
NDNlNTRjOWQ4ZjkyOThiMzY2MGY5MzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMC0zMCAgTWlrZSBXZXN0
ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcmlwdCBydW4gZnJvbSBhbiBpc29s
YXRlZCB3b3JsZCBzaG91bGQgYnlwYXNzIGEgcGFnZSdzIENTUC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
UlRUZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIp
OgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5oOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcik6CisgICAgICAgICAgICBBZGRpbmcgYSBtZWNo
YW5pc20gdG8gc2V0IHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3IgYW4KKyAgICAgICAg
ICAgIGlzb2xhdGVkIHdvcmxkIHRvIENocm9taXVtJ3MgdGVzdFJ1bm5lci4KKwogMjAxMi0xMC0y
NyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFQUxfUExBVEZP
Uk1fTkFNRSBidWlsZCBzZXR0aW5nIGlzIG5vIGxvbmdlciBuZWVkZWQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMjA1Y2VjMGI1NWNl
Y2ZkZjc2ZmQ3NjQ0YWYzYWM2NmJmNDNlZTk1NS4uZGFmYWZhMTgxZWRiNmI2M2IyNGViY2JlNGU0
ZWEyYTFlZWQ0ZDlhMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJUVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5jcHAKQEAgLTE1Nyw2ICsxNTcsNyBAQCBEUlRUZXN0UnVubmVyOjpEUlRUZXN0
UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgiZXZhbHVhdGVTY3JpcHRJ
bklzb2xhdGVkV29ybGQiLCAmRFJUVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQpOwogICAgIGJpbmRNZXRob2QoImV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5k
UmV0dXJuVmFsdWUiLCAmRFJUVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29y
bGRBbmRSZXR1cm5WYWx1ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0SXNvbGF0ZWRXb3JsZFNlY3Vy
aXR5T3JpZ2luIiwgJkRSVFRlc3RSdW5uZXI6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bik7CisgICAgYmluZE1ldGhvZCgic2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSIsICZEUlRUZXN0UnVubmVyOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
KTsKICAgICBiaW5kTWV0aG9kKCJleGVjQ29tbWFuZCIsICZEUlRUZXN0UnVubmVyOjpleGVjQ29t
bWFuZCk7CiAgICAgYmluZE1ldGhvZCgiZm9yY2VSZWRTZWxlY3Rpb25Db2xvcnMiLCAmRFJUVGVz
dFJ1bm5lcjo6Zm9yY2VSZWRTZWxlY3Rpb25Db2xvcnMpOwogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQpAQCAtMTQwMyw2ICsxNDA0LDE2IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0SXNvbGF0
ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAgICAg
bV9zaGVsbC0+d2ViVmlldygpLT5mb2N1c2VkRnJhbWUoKS0+c2V0SXNvbGF0ZWRXb3JsZFNlY3Vy
aXR5T3JpZ2luKGFyZ3VtZW50c1swXS50b0ludDMyKCksIG9yaWdpbik7CiB9CiAKK3ZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJl
c3VsdC0+c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMiB8fCAhYXJn
dW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3NoZWxsLT53ZWJWaWV3KCktPmZvY3VzZWRGcmFtZSgpLT5zZXRJ
c29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGFyZ3VtZW50c1swXS50b0ludDMyKCks
IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKK30KKwogdm9pZCBEUlRUZXN0
UnVubmVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChhcmd1
bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBlYzQ3NzhmZDVjNDZm
OGYzMjg3NThhMTU3YTMyODIxNDU0YjViMjIxLi4yZTI2ZGQwMjlmMGYzZGE1ODk0MGY4NjU5MzY5
OGYyZDRiNDdkZmQyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
UlRUZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5oCkBAIC0yODEsNiArMjgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZXZhbHVhdGVT
Y3JpcHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZShjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRJc29sYXRl
ZFdvcmxkU2VjdXJpdHlPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OworICAgIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sgbWV0
aG9kIGlzIGNhbGxlZCB3aGVuIGEgbm9uZXhpc3RlbnQgbWV0aG9kIGlzIGNhbGxlZCBvbgogICAg
IC8vIHRoZSBsYXlvdXQgdGVzdCBjb250cm9sbGVyIG9iamVjdC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MmU1ZjFjMjNl
N2MwNWJlNjEwMjc5Yjc5NmRiODVmZmNjY2FmOWMzLi5jNzMyMjc0OGQ3MDcwN2Y0OGIzYTNlNjY1
ZGU3YjgzNjJmNzBkMWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTAtMzAgIE1pa2Ug
V2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JpcHQgcnVuIGZyb20gYW4g
aXNvbGF0ZWQgd29ybGQgc2hvdWxkIGJ5cGFzcyBhIHBhZ2UncyBDU1AuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13
b3JsZC1jc3AuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIFNraXAgdGhlIG5ldyB0ZXN0cyBvbiBwb3J0
cyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlIG5ldyBmdW5jdGlvbmFsaXR5CisKIDIwMTItMTAtMjkg
IE5hbmRvciBIdXN6a2EgIDxobmFuZG9yQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRd
IFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNz
LW1haW4td29ybGQtY3NwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmM5YmYxZTU3YmNmNzU4
OGY2YTNlNDNlMTY3MzUyMDNhNzA2NTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRv
IGxvYWQgdGhlIGltYWdlICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L2FiZS5wbmcnIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSBkaXJlY3RpdmU6ICJpbWctc3JjICdub25lJyIuCisKK0FMRVJUOiBCTE9DS0VE
IGluIG1haW4gd29ybGQKK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBsb2FkIHRoZSBpbWFn
ZSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9hYmUucG5nJyBiZWNh
dXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGly
ZWN0aXZlOiAiaW1nLXNyYyAnbm9uZSciLgorCitBTEVSVDogQkxPQ0tFRCBpbiBpc29sYXRlZCB3
b3JsZAorQUxFUlQ6IFN0YXJ0aW5nIHRvIGJ5cGFzcyBtYWluIHdvcmxkJ3MgQ1NQOgorQUxFUlQ6
IExPQURFRCBpbiBpc29sYXRlZCB3b3JsZAorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxv
YWQgdGhlIGltYWdlICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Fi
ZS5wbmcnIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSBkaXJlY3RpdmU6ICJpbWctc3JjICdub25lJyIuCisKK0FMRVJUOiBCTE9DS0VEIGlu
IG1haW4gd29ybGQKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2NyaXB0cyBydW4gaW4gaXNvbGF0
ZWQgd29ybGRzIG1hcmtlZCB3aXRoIHRoZWlyIG93biBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBh
cmVuJ3QgYWZmZWN0ZWQgYnkgdGhlIHBhZ2UncyBjb250ZW50IHNlY3VyaXR5IHBvbGljeS4gRXh0
ZW5zaW9ucywgZm9yIGV4YW1wbGUsIHNob3VsZCBiZSBhYmxlIHRvIGxvYWQgYW55IHJlc291cmNl
IHRoZXkgbGlrZS4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3Nw
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWFkZDYxZmI2MGFkNmI2NTRmNGUxMDNmZTJhM2U3YjI3YjM5YWNk
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNv
bGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbApAQCAtMCwwICsxLDYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJYLVdlYktp
dC1DU1AiIGNvbnRlbnQ9ImltZy1zcmMgJ25vbmUnIj4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB0ZXN0cyA9IDQ7Cisg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihtZXNzYWdlKSB7
CisgICAgICAgIHRlc3RzIC09IDE7CisgICAgICAgIHRlc3QoKTsKKyAgICB9LCBmYWxzZSk7CisK
KyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICBmdW5jdGlvbiBzZXRJbWdTcmMoaXNvbGF0
ZWQpIHsKKyAgICAgICAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcn
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKyAgICAgICAg
ICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYWxlcnQoJ0xP
QURFRCBpbiAnICsgKGlzb2xhdGVkID8gImlzb2xhdGVkIHdvcmxkIiA6ICJtYWluIHdvcmxkIikp
OworICAgICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgibmV4dCIsICIqIik7CisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgYWxlcnQoJ0JMT0NLRUQgaW4gJyArIChpc29sYXRlZCA/ICJpc29sYXRlZCB3
b3JsZCIgOiAibWFpbiB3b3JsZCIpKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cucG9zdE1lc3Nh
Z2UoIm5leHQiLCAiKiIpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGltZy5zcmMgPSAi
Li4vcmVzb3VyY2VzL2FiZS5wbmciOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICh0ZXN0
cykgeworICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIHNldEltZ1NyYyhmYWxz
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCgxLCBTdHJp
bmcoZXZhbCgic2V0SW1nU3JjIikpICsgIlxuc2V0SW1nU3JjKHRydWUpOyIpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIGFsZXJ0
KCJTdGFydGluZyB0byBieXBhc3MgbWFpbiB3b3JsZCdzIENTUDoiKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koMSwgJ2lt
Zy1zcmMgKicpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVTY3JpcHRJbklz
b2xhdGVkV29ybGQoMSwgU3RyaW5nKGV2YWwoInNldEltZ1NyYyIpKSArICJcbnNldEltZ1NyYyh0
cnVlKTsiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgICAgICBzZXRJbWdTcmMoZmFsc2UpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0SXNvbGF0
ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgxLCAnJyk7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ndGVzdCgpOyc+CisgICAg
PHA+CisgICAgICAgIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgc2NyaXB0cyBydW4gaW4gaXNvbGF0
ZWQgd29ybGRzIG1hcmtlZCB3aXRoIHRoZWlyCisgICAgICAgIG93biBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSBhcmVuJ3QgYWZmZWN0ZWQgYnkgdGhlIHBhZ2UncyBjb250ZW50CisgICAgICAgIHNl
Y3VyaXR5IHBvbGljeS4gRXh0ZW5zaW9ucywgZm9yIGV4YW1wbGUsIHNob3VsZCBiZSBhYmxlIHRv
IGxvYWQgYW55CisgICAgICAgIHJlc291cmNlIHRoZXkgbGlrZS4KKyAgICA8L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDJhNzJkZDNjYWU1ZTQyOWJhNGFhY2RkZTQxYTg2ZDM1MWQwNzA2MmIuLmFmZWU4NDIyMjVjNDlj
NDhkNGEyMjRmN2RkOTgyZmJiNDM2MGQwMjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xMDA5LDYgKzEwMDksOSBAQCB3ZWJraXQub3JnL2IvNjE1NDAg
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Nyb3NzLW9yaWdpbi14aHIuaHRtbCBb
IEZhaQogd2Via2l0Lm9yZy9iLzYxNTQwIGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMt
YXVkaXRzLWNvbnRlbnQtc2NyaXB0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi82MTU0
MCBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWV2YWwtY29udGVudC1zY3JpcHQuaHRt
bCBbIEZhaWx1cmUgXQogCisjIEpTQyBhbHNvIGRvZXNuJ3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5Cit3ZWJraXQub3JnL2IvMzE1MDggd2Via2l0Lm9yZy9i
LzYxNTQwIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3Js
ZC1jc3AuaHRtbCBbIEZhaWx1cmUgXQorCiAjX193b3JsZElEIGlzIHVuZGVmaW5lZCBpbiBpc29s
YXRlZCB3b3JsZAogQnVnKEVGTCkgaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Rp
ZENsZWFyV2luZG93T2JqZWN0Lmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBkMzkzM2VhY2JjMzVmYTM3NjY0Mjk4Y2RlYmRiMTcwYzc3Y2JlMTRh
Li43Mzk3MWU4MjU3ZThlM2Y5ZDIyOWIwN2U3NzNhNTcxYWE4Njk4NWU2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDI4LDYgKzQyOCw5IEBAIGluc3Bl
Y3Rvci9lbGVtZW50cy91cGRhdGUtc2hhZG93ZG9tLmh0bWwKICMgSlNDIGRvZXMgbm90IHN1cHBv
cnQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luIChodHRwOi8vd2Via2l0Lm9yZy9iLzYx
NTQwKQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Nyb3NzLW9yaWdpbi14aHIu
aHRtbAogCisjIEpTQyBhbHNvIGRvZXNuJ3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5ICh3ZWJraXQub3JnL2IvMzE1MDggd2Via2l0Lm9yZy9iLzYxNTQwKQor
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5o
dG1sCisKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMjgyIGxh
eWVyVHJlZUFzVGV4dCBkb2Vzbid0IHdvcmsgZm9yIGlmcmFtZXMKIGNvbXBvc2l0aW5nL3J0bC9y
dGwtaWZyYW1lLWFic29sdXRlLW92ZXJmbG93LXNjcm9sbGVkLmh0bWwKIGNvbXBvc2l0aW5nL3J0
bC9ydGwtaWZyYW1lLWFic29sdXRlLW92ZXJmbG93Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDcyOGJhNmVkODVmZmFiNjI2M2JhYjcyMTI1NTI4YWZl
OTY2ZmUyYjkuLmQ1NTU1YmExZWU1OTQ2YTFjODIwNzg3MzVhMTIwMzQ0YTBjNWU2N2UgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQwLDYgKzM0MCw5IEBA
IGZhc3QvanMvaTE4bi1iaW5kaW5ncy1sb2NhbGUuaHRtbAogIyBKU0MgZG9lcyBub3Qgc3VwcG9y
dCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4sIChodHRwOi8vd2Via2l0Lm9yZy9iLzYx
NTQwKQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Nyb3NzLW9yaWdpbi14aHIu
aHRtbAogCisjIEpTQyBhbHNvIGRvZXNuJ3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5ICh3ZWJraXQub3JnL2IvMzE1MDggd2Via2l0Lm9yZy9iLzYxNTQwKQor
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5o
dG1sCisKICMgVGhpcyB0ZXN0IGlzIGZvciBjbGllbnRzIHRoYXQgY2hvb3NlIHRvIG1ha2UgdGhl
IG1pc3NpbmcgcGx1Z2luIGluZGljYXRvciBhIGJ1dHRvbgogcGx1Z2lucy9jbGlja2luZy1taXNz
aW5nLXBsdWdpbi1maXJlcy1kZWxlZ2F0ZS5odG1sCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzY0OTVhNjFjZjc3NzRkNzU0NjgzYmJiNmFjMTY1OTRh
N2I3MzBhNi4uNWY0OTA0MThlYjRjZGE1Y2FkY2M3NjMwYzM1OWRkOWU0ZmMzYWQ2NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0ODEsNiArMTQ4MSw5
IEBAIGxvYWRlci9uYXZpZ2F0aW9uLXdoaWxlLWRlZmVycmluZy1sb2Fkcy5odG1sCiAjIEpTQyBk
b2VzIG5vdCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dl
YmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9z
cy1vcmlnaW4teGhyLmh0bWwKIAorIyBKU0MgYWxzbyBkb2Vzbid0IHN1cHBvcnQgc2V0SXNvbGF0
ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAod2Via2l0Lm9yZy9iLzMxNTA4IHdlYmtpdC5v
cmcvYi82MTU0MCkKK2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFp
bi13b3JsZC1jc3AuaHRtbAorCiAjIEVOQUJMRShXRUJHTCkgaXMgZGlzYWJsZWQKIGNvbXBvc2l0
aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS13ZWJnbC5odG1sCiBj
b21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktc2ltcGxlLXdlYmdsLWxheWVyLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171597</attachid>
            <date>2012-10-31 01:39:01 -0700</date>
            <delta_ts>2012-10-31 03:00:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97398-20121031093725.patch</filename>
            <type>text/plain</type>
            <size>27988</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyOTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNjMTg3NWYyNTRjNjM5
MDUwMzE2MWM2M2QyN2ZlNzk4MWQ0YzY3NS4uZDI4MWUyZTMxYzY3N2E5YmVhNjliYjgxZDNkNzRk
MDBiYjA5NmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTMwICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2NyaXB0IHJ1biBmcm9tIGFu
IGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3MgQ1NQLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEEgcGFnZSdzIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IGN1cnJlbnRseSBhcHBsaWVzIHRvIGFsbCByZXNvdXJjZXMKKyAgICAgICAgbG9hZGVk
LCByZWdhcmRsZXNzIG9mIHRoZWlyIHNvdXJjZS4gVGhhdCBnZW5lcmFsbHkgbWFrZXMgc2Vuc2Us
IGJ1dAorICAgICAgICBwcm92ZXMgcHJvYmxlbWF0aWMgd2hlbiBjb25zaWRlcmluZyBzY3JpcHQg
cnVuIGZyb20gYW4gaXNvbGF0ZWQKKyAgICAgICAgd29ybGQgKENocm9tZSBleHRlbnNpb25zLCBm
b3IgaW5zdGFuY2UpLiBUaGVzZSBzY3JpcHRzIHNob3VsZCBiZSBhbGxvd2VkCisgICAgICAgIHRv
IGluamVjdCByZXNvdXJjZXMgaW50byBhIHBhZ2UncyBET00gd2l0aG91dCBlaWhlciBiZWluZyBy
ZXN0cmljdGVkIGJ5CisgICAgICAgIHRoZSBwYWdlJ3MgYWN0aXZlIENTUCwgb3IgZ2VuZXJhdGlu
ZyB2aW9sYXRpb24gcmVwb3J0cyB0aGF0IHNwYW0gdGhlCisgICAgICAgIHBhZ2Ugb3duZXIuCisK
KyAgICAgICAgSWRlYWxseSwgdGhlIGlzb2xhdGVkIHdvcmxkIGNvdWxkIGRlZmluZSBpdHMgb3du
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5CisgICAgICAgIHdoaWNoIHNob3VsZCBiZSBhcHBsaWVk
IHRvIHJlc291cmNlcyBpdCBsb2Fkcy4gRm9yIHRoZSBtb21lbnQsIHRoaXMKKyAgICAgICAgcGF0
Y2ggYWNjZXB0cyBhIFN0cmluZyB0aGF0IHdlIGNhbiBwYXJzZSBsYXRlciBvbiwgYnV0IG9ubHkg
dXNlcyBpdCBpbgorICAgICAgICBhIGJpbmFyeSB3YXkuIElmIGEgbm9uLWVtcHR5IHBvbGljeSBT
dHJpbmcgaXMgcHJvdmlkZWQsIHdlIGJ5cGFzcyB0aGUKKyAgICAgICAgbWFpbiB3b3JsZCdzIENT
UCBjaGVja3MuIElmIGFuIGVtcHR5IFN0cmluZyBpcyBwcm92aWRlZCwgdGhlIG1haW4KKyAgICAg
ICAgd29ybGQncyBDU1AgY2hlY2tzIHJlbWFpbiBhY3RpdmUuCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5odG1s
CisKKyAgICAgICAgKFdlYkNvcmU6Omlzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY2ll
cyk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRIYXND
b250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
OjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdyYXBwZXJXb3JsZDo6Y2xlYXJJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaDoKKyAgICAgICAg
KERPTVdyYXBwZXJXb3JsZCk6CisgICAgICAgICAgICBNZWNoYW5pc21zIGZvciBzZXR0aW5nIGFu
ZCBjbGVhcmluZyBDb250ZW50IFNlY3VyaXR5IFBvbGljaWVzIGZyb20KKyAgICAgICAgICAgIGlz
b2xhdGVkIHdvcmxkczsgaW1wbGVtZW50ZWQgaW4gdGhlIHNhbWUgSGFzaE1hcHB5IHdheSBhcwor
ICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW4uCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAo
U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgICAgICBBZGRpbmcgYSBtZXRob2QgdG8gU2NyaXB0
Q29udHJvbGxlciB0byBxdWVyeSB0aGUgc3RhdGUgb2YgdGhlCisgICAgICAgICAgICBjdXJyZW50
IHdvcmxkJ3MgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIFdlJ2xsIGRyb3AgdGhpcyBvbmNlIHdl
IGNhbgorICAgICAgICAgICAgYXBwbHkgYSBwb2xpY3kgbW9yZSBkaXJlY3RseSwgYnV0IGZvciB0
aGUgbW9tZW50IGl0J3MgbmVjZXNzYXJ5IGZvcgorICAgICAgICAgICAgdGhlIG5leHQgYml0Lgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgICAg
ICBDaGVjayB0aGUgbmV3IFNjcmlwdENvbnRyb2xsZXIgbWV0aG9kLCBhbmQgb25seSBwZXJmb3Jt
IENTUCBjaGVja3MKKyAgICAgICAgICAgIHdoZW4gbG9hZGluZyByZXNvdXJjZXMgaWYgd2UncmUg
ZXhlY3V0aW5nIGNvZGUgZnJvbSB0aGUgbWFpbiB3b3JsZCwKKyAgICAgICAgICAgIG9yIGFuIGlz
b2xhdGVkIHdvcmxkIHdpdGggbm8gQ29udGVudCBTZWN1cml0eSBQb2xpY3kgc2V0LgorCiAyMDEy
LTEwLTMxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBTcGF0aWFsaXplZCBwYW5uaW5nIHJlbmRlcnMgaW5jb3JyZWN0bHkgd2l0aCBVU0VfQ09OQ0FU
RU5BVEVEX0lNUFVMU0VfUkVTUE9OU0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA1
ZDU0YTVhMjU1YjgwZTI3MzcwNWUzZGNhM2UyYWI0MGIxNGQ5NmMuLjQ0OWM2MDE0YzVlNGE0ZmRh
MGJjMGJjNmUwYmE1NDNkODVmODA3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTItMTAtMzAgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4K
KworICAgICAgICBTY3JpcHQgcnVuIGZyb20gYW4gaXNvbGF0ZWQgd29ybGQgc2hvdWxkIGJ5cGFz
cyBhIHBhZ2UncyBDU1AuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NzM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYkZyYW1lKToKKyAgICAgICAgKiBz
cmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzZXRJ
c29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUlt
cGwpOgorICAgICAgICAgICAgUGlwaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgdGhyb3Vn
aCBXZWJGcmFtZSwgaW4gdGhlIHNhbWUgd2F5CisgICAgICAgICAgICB3ZSdyZSBjdXJyZW50bHkg
ZG9pbmcgZm9yIFNlY3VyaXR5T3JpZ2luLiBBcyBhIGRyaXZlLWJ5LCB0aGlzIGFsc28KKyAgICAg
ICAgICAgIHVzZXMgdGhlIHN0YXRpYyBtZXRob2Qgb24gRE9NV3JhcHBlcldpbmRvdyB0byBzZXQg
dGhlIHNlY3VyaXR5CisgICAgICAgICAgICBvcmlnaW4sIHJhdGhlciB0aGFuIHJvdXRpbmcgdGhy
b3VnaCB0aGUgZnJhbWUncyBTY3JpcHRDb250cm9sbGVyLgorCiAyMDEyLTEwLTMwICBXLiBKYW1l
cyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1d
IFRyYW5zZm9ybSBtb3VzZS9nZXN0dXJlIGV2ZW50IGNvb3JkaW5hdGVzIHRvIGFjY291bnQgZm9y
IHBpbmNoLXpvb20gaW4gY29tcG9zaXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCBmYWQ0ZDQ0M2E3YzE3ZTJlZDgwYjM5OTVhZTY2NmEz
OWQyMTk2NThhLi4yOTdjZjdiMmQ0MDI0NzhjODEzY2Q1Mzg2NGYzMjVlNWY5N2I3NDNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNjAs
NiArMTYwLDkgQEAgcHVibGljOgogICAgIE5QT2JqZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgp
OwogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogU3R1YiBmb3IgcGFyaXR5IHdpdGggVjggaW1wbGVt
ZW50YXRpb24uIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwODE1CisgICAgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSB7IHJldHVybiBmYWxzZTsgfQorCiBw
cml2YXRlOgogICAgIEpTRE9NV2luZG93U2hlbGwqIGluaXRTY3JpcHQoRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdy
YXBwZXJXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29y
bGQuY3BwCmluZGV4IDZkZjBiNzJkNWFiMjRiNjFhM2QxZmMwYjA3MWY1MmM5YWZhOGU0YWUuLjBi
OWYwNTViNmViNGYyYTc3YjM3NDVmMTVhOTRjN2IzYjAwOTRmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtMTQzLDQgKzE0MywzNSBA
QCB2b2lkIERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4o
aW50IHdvcmxkSUQpCiAgICAgaXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lucygpLnJlbW92ZSh3
b3JsZElEKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPGludCwgYm9vbD4gSXNvbGF0ZWRXb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeU1hcDsKK3N0YXRpYyBJc29sYXRlZFdvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5TWFwJiBpc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWNpZXMoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJc29s
YXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5TWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4g
bWFwOworfQorCitib29sIERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZEhhc0NvbnRlbnRT
ZWN1cml0eVBvbGljeSgpCit7CisgICAgQVNTRVJUKHRoaXMtPmlzSXNvbGF0ZWRXb3JsZCgpKTsK
KyAgICBJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5TWFwJiBwb2xpY2llcyA9IGlz
b2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY2llcygpOworICAgIElzb2xhdGVkV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3lNYXA6Oml0ZXJhdG9yIGl0ID0gcG9saWNpZXMuZmluZCh3b3Js
ZElkKCkpOworICAgIHJldHVybiBpdCA9PSBwb2xpY2llcy5lbmQoKSA/IGZhbHNlIDogaXQtPnZh
bHVlOworfQorCit2b2lkIERPTVdyYXBwZXJXb3JsZDo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCwgY29uc3QgU3RyaW5nJiBwb2xpY3kpCit7CisgICAg
QVNTRVJUKERPTVdyYXBwZXJXb3JsZDo6aXNJc29sYXRlZFdvcmxkSWQod29ybGRJRCkpOworICAg
IGlmICghcG9saWN5LmlzRW1wdHkoKSkKKyAgICAgICAgaXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljaWVzKCkuc2V0KHdvcmxkSUQsIHRydWUpOworICAgIGVsc2UKKyAgICAgICAgaXNv
bGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljaWVzKCkucmVtb3ZlKHdvcmxkSUQpOworfQor
Cit2b2lkIERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5KGludCB3b3JsZElEKQoreworICAgIEFTU0VSVChET01XcmFwcGVyV29ybGQ6OmlzSXNv
bGF0ZWRXb3JsZElkKHdvcmxkSUQpKTsKKyAgICBpc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5
UG9saWNpZXMoKS5yZW1vdmUod29ybGRJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXggYWY1
NWM5NDA5MGYwNmQxMzEwMmQ3YjAwOTcwY2ViNzIxOGRjM2IyZS4uNjhlZTZlOWNmNTQ0ZTZhMzQ2
NGY4NmYxYzQwMjEwNGI2ODI4MGZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NV3JhcHBlcldvcmxkLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU3LDYgKzU4LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc29s
YXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oaW50IHdvcmxkSUQsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+KTsKICAgICBzdGF0aWMgdm9pZCBjbGVhcklzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdp
bihpbnQgd29ybGRJRCk7CiAgICAgU2VjdXJpdHlPcmlnaW4qIGlzb2xhdGVkV29ybGRTZWN1cml0
eU9yaWdpbigpOworCisgICAgLy8gQXNzb2NpYXRlZCBhbiBpc29sYXRlZCB3b3JsZCB3aXRoIGEg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kuIFJlc291cmNlcworICAgIC8vIGVtYmVkZGVkIGludG8g
dGhlIG1haW4gd29ybGQncyBET00gZnJvbSBzY3JpcHQgZXhlY3V0ZWQgaW4gYW4gaXNvbGF0ZWQK
KyAgICAvLyB3b3JsZCBzaG91bGQgYmUgcmVzdHJpY3RlZCBiYXNlZCBvbiB0aGUgaXNvbGF0ZWQg
d29ybGQncyBET00sIG5vdCB0aGUKKyAgICAvLyBtYWluIHdvcmxkJ3MuCisgICAgLy8KKyAgICAv
LyBGSVhNRTogUmlnaHQgbm93LCByZXNvdXJjZSBpbmplY3Rpb24gc2ltcGx5IGJ5cGFzc2VzIHRo
ZSBtYWluIHdvcmxkJ3MKKyAgICAvLyBET00uIE1vcmUgd29yayBpcyBuZWNlc3NhcnkgdG8gYWxs
b3cgdGhlIGlzb2xhdGVkIHdvcmxkJ3MgcG9saWN5IHRvIGJlCisgICAgLy8gYXBwbGllZCBjb3Jy
ZWN0bHkuCisgICAgc3RhdGljIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeShpbnQgd29ybGRJRCwgY29uc3QgU3RyaW5nJiBwb2xpY3kpOworICAgIHN0YXRpYyB2b2lk
IGNsZWFySXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShpbnQgd29ybGRJRCk7Cisg
ICAgYm9vbCBpc29sYXRlZFdvcmxkSGFzQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CisKICAgICAv
LyBGSVhNRTogdGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGEgcHJvYmxlbSBpbiBXZWJWaWV3SW1w
bC4KICAgICAvLyBEbyBub3QgdXNlIHRoaXMgYW55d2hlcmUgZWxzZSEhCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBjcmVhdGVVbmluaXRpYWxpemVkV29ybGQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
NzgzNmEwZjg2ODg2MmFhZjMyNDlkNmE3MDEzMzZlOTU3Yjg4NDM0Yy4uZmNiMWY1MzQ4ZTMyNmQz
ZmY0OTdiYmJiN2RlNWE0YjEyNDYzNTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM5Niw2ICszOTYsMTMgQEAgdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZChpbnQgd29ybGRJRCwgY29uc3Qg
VmVjdG9yPFNjcmlwdFMKICAgICB9CiB9CiAKK2Jvb2wgU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCkKK3sKKyAgICBpZiAoVjhET01X
aW5kb3dTaGVsbCogaXNvbGF0ZWRXb3JsZFNoZWxsID0gVjhET01XaW5kb3dTaGVsbDo6Z2V0RW50
ZXJlZCgpKQorICAgICAgICByZXR1cm4gaXNvbGF0ZWRXb3JsZFNoZWxsLT53b3JsZCgpLT5pc29s
YXRlZFdvcmxkSGFzQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBUZXh0UG9zaXRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9zaXRpb24o
KSBjb25zdAogewogICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYjY2Y2VkN2ZiNDllZGQx
YzFhNGM0ZWY1OTY4ZmU4NzgwNWIwOTg3YS4uODQwZGM0Y2FmOWE4ZTU4YWE0OTdiM2Q0OTAzMGQy
ZDk0NDQzZmRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaApAQCAtMTA3LDYgKzEwNywxMSBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEdldCBy
aWQgb2YgZXh0ZW5zaW9uR3JvdXAgaGVyZS4KICAgICB2b2lkIGV2YWx1YXRlSW5Jc29sYXRlZFdv
cmxkKGludCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0U291cmNlQ29kZT4mIHNvdXJjZXMs
IGludCBleHRlbnNpb25Hcm91cCwgVmVjdG9yPFNjcmlwdFZhbHVlPiogcmVzdWx0cyk7CiAKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgd29ybGQgaXMgaXNvbGF0ZWQsIGFuZCBo
YXMgaXRzIG93biBDb250ZW50CisgICAgLy8gU2VjdXJpdHkgUG9saWN5LiBJbiB0aGlzIGNhc2Us
IHRoZSBwb2xpY3kgb2YgdGhlIG1haW4gd29ybGQgc2hvdWxkIGJlCisgICAgLy8gaWdub3JlZCB3
aGVuIGV2YWx1YXRpbmcgcmVzb3VyY2VzIGluamVjdGVkIGludG8gdGhlIERPTS4KKyAgICBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpOworCiAgICAgLy8g
RklYTUU6IFJlbW92ZSByZWZlcmVuY2VzIHRvIHRoaXMgY2FsbCBpbiBjaHJvbWl1bSBhbmQgZGVs
ZXRlIGl0LgogICAgIGlubGluZSBzdGF0aWMgdm9pZCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlP
cmlnaW4oaW50IHdvcmxkSUQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAppbmRleCA1MGYyN2NhZWFiZDM1MDJhNzhkOTlkYzMwZTlhNTJhODM1MWY1ODhi
Li44OWM4M2UwZDk5YTc3MjE5Zjc3Njk3ODRiOWFhYjBjZTFlMjRkZjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTMwMSw3ICszMDEsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENh
Y2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogewogICAgIGlmIChkb2N1
bWVudCgpICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkp
IHsKICAgICAgICAgaWYgKCFmb3JQcmVsb2FkKQotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJl
cG9ydExvY2FsTG9hZEZhaWxlZChkb2N1bWVudCgpLT5mcmFtZSgpLCB1cmwuc3RyaW5nKCkpOwor
ICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1
cmwuc3RyaW5nKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5
T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTMxMSw2
ICszMTEsOCBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKIAorICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5ID0gKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2NyaXB0KCktPnNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKKwogICAgIC8vIFNvbWUgdHlwZXMgb2YgcmVz
b3VyY2VzIGNhbiBiZSBsb2FkZWQgb25seSBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gIE90aGVyCiAg
ICAgLy8gdHlwZXMgb2YgcmVzb3VyY2VzLCBsaWtlIEltYWdlcywgU2NyaXB0cywgYW5kIENTUywg
Y2FuIGJlIGxvYWRlZCBmcm9tCiAgICAgLy8gYW55IFVSTC4KQEAgLTM1Miw3ICszNTQsNyBAQCBi
b29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxl
U2hlZXQ6CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6Ci0gICAgICAg
IGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U2NyaXB0RnJv
bVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93U2NyaXB0RnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIGlmIChmcmFtZSgpKSB7CkBAIC0zNjgsMTggKzM3MCwxOCBAQCBib29sIENhY2hlZFJl
c291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
IEtVUkwmIHVybAogICAgICAgICAvLyBTaW5jZSBzaGFkZXJzIGFyZSByZWZlcmVuY2VkIGZyb20g
Q1NTIFN0eWxlcyB1c2UgdGhlIHNhbWUgcnVsZXMgaGVyZS4KICNlbmRpZgogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93U3R5bGVGcm9tU291cmNlKHVybCkpCisgICAgICAg
IGlmICghc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ICYmICFtX2Rv
Y3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTdHlsZUZyb21Tb3VyY2UodXJs
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxF
KFNWRykKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTVkdEb2N1bWVudFJlc291cmNlOgogI2Vu
ZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgaWYg
KCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFnZUZyb21Tb3Vy
Y2UodXJsKSkKKyAgICAgICAgaWYgKCFzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3kgJiYgIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0lt
YWdlRnJvbVNvdXJjZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6IHsKLSAgICAgICAg
aWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dGb250RnJvbVNv
dXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93
Rm9udEZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMzk0LDcgKzM5Niw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJs
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U6CiAgICAgICAgIC8v
IEN1ZXMgYXJlbid0IGNhbGxlZCBvdXQgaW4gdGhlIENQUyBzcGVjIHlldCwgYnV0IHRoZXkgb25s
eSB3b3JrIHdpdGggYSBtZWRpYSBlbGVtZW50CiAgICAgICAgIC8vIHNvIHVzZSB0aGUgbWVkaWEg
cG9saWN5LgotICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgp
LT5hbGxvd01lZGlhRnJvbVNvdXJjZSh1cmwpKQorICAgICAgICBpZiAoIXNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiAhbV9kb2N1bWVudC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWUuaAppbmRleCBkMWVhMzg5Njk0M2U5M2MxZjEzMGM0NjRjYTlhZjljY2Q3
NzkyZjk4Li42MDA3MjUyZGYyMzQ5YWQ3ZGExZjEwNzE1YzQyZDAxNjk2MjdhYzkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTI1Miw2ICsyNTIsMTYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4o
CiAgICAgICAgIGludCB3b3JsZElELCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYpID0gMDsKIAor
ICAgIC8vIEFzc29jaWF0ZXMgYSBjb250ZW50IHNlY3VyaXR5IHBvbGljeSB3aXRoIGFuIGlzb2xh
dGVkIHdvcmxkLiBUaGlzIHBvbGljeQorICAgIC8vIHNob3VsZCBiZSB1c2VkIHdoZW4gZXZhbHVh
dGluZyBzY3JpcHQgaW4gdGhlIGlzb2xhdGVkIHdvcmxkLCBhbmQgc2hvdWxkCisgICAgLy8gYWxz
byByZXBsYWNlIGEgcHJvdGVjdGVkIHJlc291cmNlJ3MgQ1NQIHdoZW4gZXZhbHVhdGluZyByZXNv
dXJjZXMKKyAgICAvLyBpbmplY3RlZCBpbnRvIHRoZSBET00uCisgICAgLy8KKyAgICAvLyBGSVhN
RTogU2V0dGluZyB0aGlzIHNpbXBseSBieXBhc3NlcyB0aGUgcHJvdGVjdGVkIHJlc291cmNlJ3Mg
Q1NQLiBJdAorICAgIC8vICAgICBkb2Vzbid0IHlldCByZXN0cmljdCB0aGUgaXNvbGF0ZWQgd29y
bGQgdG8gdGhlIHByb3ZpZGVkIHBvbGljeS4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNvbGF0ZWRX
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgKKyAgICAgICAgaW50IHdvcmxkSUQsIGNvbnN0IFdl
YlN0cmluZyYpID0gMDsKKwogICAgIC8vIExvZ3MgdG8gdGhlIGNvbnNvbGUgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgZnJhbWUuCiAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoY29u
c3QgV2ViQ29uc29sZU1lc3NhZ2UmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDllNmVhYzQ0ZDRkOWU0NzA1NmUzZGYzNjQwMThjOWI5
MTJhODdhYjUuLmUxMTQ5OWVlZWYxYjJiMzA1NWM5OTY4OTI2YjA4ZWJhNjY1ZGNjOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtODIsNiArODIs
NyBAQAogI2luY2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJET01XaW5kb3dJbnRlbnRzLmgiCisjaW5jbHVkZSAiRE9NV3JhcHBl
cldvcmxkLmgiCiAjaW5jbHVkZSAiRGVsaXZlcmVkSW50ZW50LmgiCiAjaW5jbHVkZSAiRGVsaXZl
cmVkSW50ZW50Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCkBAIC04
MjYsNyArODI3LDEzIEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpleGVjdXRlU2NyaXB0SW5Jc29sYXRl
ZFdvcmxkKGludCB3b3JsZElELCBjb25zdCBXZWJTY3JpcHRTb3VyCiB2b2lkIFdlYkZyYW1lSW1w
bDo6c2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGludCB3b3JsZElELCBjb25zdCBXZWJT
ZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgQVNTRVJUKGZyYW1lKCkpOwot
ICAgIGZyYW1lKCktPnNjcmlwdCgpLT5zZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4od29y
bGRJRCwgc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgIERPTVdyYXBwZXJXb3JsZDo6c2V0SXNv
bGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKHdvcmxkSUQsIHNlY3VyaXR5T3JpZ2luLmdldCgpKTsK
K30KKwordm9pZCBXZWJGcmFtZUltcGw6OnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3koaW50IHdvcmxkSUQsIGNvbnN0IFdlYlN0cmluZyYgcG9saWN5KQoreworICAgIEFTU0VS
VChmcmFtZSgpKTsKKyAgICBET01XcmFwcGVyV29ybGQ6OnNldElzb2xhdGVkV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3kod29ybGRJRCwgcG9saWN5KTsKIH0KIAogdm9pZCBXZWJGcmFtZUltcGw6
OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgV2ViQ29uc29sZU1lc3NhZ2UmIG1lc3NhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IDI2ODZhYWQxZGQz
MWI5YmVhNjhlOTQ1YWJmNjg0MjUxYmIxNGZhOGQuLjcyMmVjZjU1OTc0NTBlY2U1NGI2ZGU0MmFi
ODhhMTAzOGZlYzFkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCkBAIC0xMTQsNiArMTE0LDcgQEAgcHVibGljOgogICAgICAgICBpbnQgd29ybGRJRCwgY29u
c3QgV2ViU2NyaXB0U291cmNlKiBzb3VyY2VzLCB1bnNpZ25lZCBudW1Tb3VyY2VzLAogICAgICAg
ICBpbnQgZXh0ZW5zaW9uR3JvdXApOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc29sYXRlZFdvcmxk
U2VjdXJpdHlPcmlnaW4oaW50IHdvcmxkSUQsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koaW50
IHdvcmxkSUQsIGNvbnN0IFdlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKGNvbnN0IFdlYkNvbnNvbGVNZXNzYWdlJik7CiAgICAgdmlydHVhbCB2b2lkIGNv
bGxlY3RHYXJiYWdlKCk7CiAgICAgdmlydHVhbCBib29sIGNoZWNrSWZSdW5JbnNlY3VyZUNvbnRl
bnQoY29uc3QgV2ViVVJMJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggOWRmZDNhZDZiZjkyM2FkNjk0ZTQxOWVmYTFmZDQyMzEwYTRm
Nzg2OS4uMWZhNDJmYmQ4Yjg3ZWQ3ZTE0MmFiNzNjOTA5ZTIyZTRmMDg5MTNkZSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDEyLTEwLTMwICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
U2NyaXB0IHJ1biBmcm9tIGFuIGlzb2xhdGVkIHdvcmxkIHNob3VsZCBieXBhc3MgYSBwYWdlJ3Mg
Q1NQLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcz
OTgKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChEUlRUZXN0UnVu
bmVyOjpEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKERSVFRlc3RSdW5uZXI6OnNldElzb2xhdGVk
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVFRlc3RSdW5uZXIuaDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXIpOgorICAgICAg
ICAgICAgQWRkaW5nIGEgbWVjaGFuaXNtIHRvIHNldCB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kgZm9yIGFuCisgICAgICAgICAgICBpc29sYXRlZCB3b3JsZCB0byBDaHJvbWl1bSdzIHRlc3RS
dW5uZXIuCisKIDIwMTItMTAtMzAgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdp
bmVuaUBpbnRlbC5jb20+CiAKICAgICAgICAgW1dUUl0gTWVtb3J5IGxlYWtzIGluIFRlc3RXZWJL
aXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMjA1Y2VjMGI1
NWNlY2ZkZjc2ZmQ3NjQ0YWYzYWM2NmJmNDNlZTk1NS4uZGFmYWZhMTgxZWRiNmI2M2IyNGViY2Jl
NGU0ZWEyYTFlZWQ0ZDlhMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJUVGVzdFJ1bm5lci5jcHAKQEAgLTE1Nyw2ICsxNTcsNyBAQCBEUlRUZXN0UnVubmVyOjpEUlRU
ZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgiZXZhbHVhdGVTY3Jp
cHRJbklzb2xhdGVkV29ybGQiLCAmRFJUVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGQpOwogICAgIGJpbmRNZXRob2QoImV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxk
QW5kUmV0dXJuVmFsdWUiLCAmRFJUVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGRBbmRSZXR1cm5WYWx1ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0SXNvbGF0ZWRXb3JsZFNl
Y3VyaXR5T3JpZ2luIiwgJkRSVFRlc3RSdW5uZXI6OnNldElzb2xhdGVkV29ybGRTZWN1cml0eU9y
aWdpbik7CisgICAgYmluZE1ldGhvZCgic2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSIsICZEUlRUZXN0UnVubmVyOjpzZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5KTsKICAgICBiaW5kTWV0aG9kKCJleGVjQ29tbWFuZCIsICZEUlRUZXN0UnVubmVyOjpleGVj
Q29tbWFuZCk7CiAgICAgYmluZE1ldGhvZCgiZm9yY2VSZWRTZWxlY3Rpb25Db2xvcnMiLCAmRFJU
VGVzdFJ1bm5lcjo6Zm9yY2VSZWRTZWxlY3Rpb25Db2xvcnMpOwogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQpAQCAtMTQwMyw2ICsxNDA0LDE2IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0SXNv
bGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lCiAg
ICAgbV9zaGVsbC0+d2ViVmlldygpLT5mb2N1c2VkRnJhbWUoKS0+c2V0SXNvbGF0ZWRXb3JsZFNl
Y3VyaXR5T3JpZ2luKGFyZ3VtZW50c1swXS50b0ludDMyKCksIG9yaWdpbik7CiB9CiAKK3ZvaWQg
RFJUVGVzdFJ1bm5lcjo6c2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IHJlc3VsdC0+c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMiB8fCAh
YXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3NoZWxsLT53ZWJWaWV3KCktPmZvY3VzZWRGcmFtZSgpLT5z
ZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KGFyZ3VtZW50c1swXS50b0ludDMy
KCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMV0pKTsKK30KKwogdm9pZCBEUlRU
ZXN0UnVubmVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAppbmRleCBjY2RmYzQzOTRk
ZjZkZGM5ZTA0YmYxNTNmNTk1NzA3YzFiNzZmMGIxLi5jNGNiN2FjZThiZDQ0MDYxMjcxZjE4YTk4
N2NiYmM5MTRmOTJkMzU2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlRUZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5oCkBAIC0yOTcsNiArMjk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZXZhbHVh
dGVTY3JpcHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZShjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3Js
ZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRJc29s
YXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworICAgIHZvaWQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sg
bWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgbm9uZXhpc3RlbnQgbWV0aG9kIGlzIGNhbGxlZCBvbgog
ICAgIC8vIHRoZSBsYXlvdXQgdGVzdCBjb250cm9sbGVyIG9iamVjdC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTllNzM4
ZmE4MDgyMWZiMTJlODBiZjc0NmM4NmEyN2Q1ODI0N2QzLi4yYjZjMzBkMGI0YTI5MGE2NjgzODE2
MjMxMzNhOTZiMDhjOTljNDgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTAtMzAgIE1p
a2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KKworICAgICAgICBTY3JpcHQgcnVuIGZyb20g
YW4gaXNvbGF0ZWQgd29ybGQgc2hvdWxkIGJ5cGFzcyBhIHBhZ2UncyBDU1AuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM5OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lz
b2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdv
cmxkLWNzcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgU2tpcCB0aGUgbmV3IHRlc3RzIG9uIHBvcnRz
IHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkKKwogMjAxMi0xMC0zMCAg
TmljbyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBB
ZGQgYmFzZWxpbmVzIGZvciBmYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLWNzcy5odG1sIGFu
ZCBleGlmLW9yaWVudGF0aW9uLWltYWdlLWRvY3VtZW50Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3Js
ZC1jc3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29s
YXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTJjOWJmMWU1N2JjZjc1ODhmNmEzZTQzZTE2NzM1MjAzYTcwNjU0MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mt
bWFpbi13b3JsZC1jc3AtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NPTlNPTEUgTUVT
U0FHRTogUmVmdXNlZCB0byBsb2FkIHRoZSBpbWFnZSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy9hYmUucG5nJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dp
bmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiaW1nLXNyYyAnbm9uZSciLgor
CitBTEVSVDogQkxPQ0tFRCBpbiBtYWluIHdvcmxkCitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQg
dG8gbG9hZCB0aGUgaW1hZ2UgJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJj
ZXMvYWJlLnBuZycgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2Vj
dXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogImltZy1zcmMgJ25vbmUnIi4KKworQUxFUlQ6IEJMT0NL
RUQgaW4gaXNvbGF0ZWQgd29ybGQKK0FMRVJUOiBTdGFydGluZyB0byBieXBhc3MgbWFpbiB3b3Js
ZCdzIENTUDoKK0FMRVJUOiBMT0FERUQgaW4gaXNvbGF0ZWQgd29ybGQKK0NPTlNPTEUgTUVTU0FH
RTogUmVmdXNlZCB0byBsb2FkIHRoZSBpbWFnZSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9hYmUucG5nJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiaW1nLXNyYyAnbm9uZSciLgorCitB
TEVSVDogQkxPQ0tFRCBpbiBtYWluIHdvcmxkCitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHNjcmlw
dHMgcnVuIGluIGlzb2xhdGVkIHdvcmxkcyBtYXJrZWQgd2l0aCB0aGVpciBvd24gQ29udGVudCBT
ZWN1cml0eSBQb2xpY3kgYXJlbid0IGFmZmVjdGVkIGJ5IHRoZSBwYWdlJ3MgY29udGVudCBzZWN1
cml0eSBwb2xpY3kuIEV4dGVuc2lvbnMsIGZvciBleGFtcGxlLCBzaG91bGQgYmUgYWJsZSB0byBs
b2FkIGFueSByZXNvdXJjZSB0aGV5IGxpa2UuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFz
cy1tYWluLXdvcmxkLWNzcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhZGQ2MWZiNjBhZDZiNjU0ZjRlMTAz
ZmUyYTNlN2IyN2IzOWFjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLmh0bWwKQEAg
LTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iWC1XZWJLaXQtQ1NQIiBjb250ZW50PSJpbWctc3JjICdub25lJyI+Cis8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisg
ICAgdGVzdHMgPSA0OworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVu
Y3Rpb24obWVzc2FnZSkgeworICAgICAgICB0ZXN0cyAtPSAxOworICAgICAgICB0ZXN0KCk7Cisg
ICAgfSwgZmFsc2UpOworCisgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgZnVuY3Rpb24g
c2V0SW1nU3JjKGlzb2xhdGVkKSB7CisgICAgICAgICAgICB2YXIgaW1nID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaW1nJyk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGltZyk7CisgICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGFsZXJ0KCdMT0FERUQgaW4gJyArIChpc29sYXRlZCA/ICJpc29sYXRlZCB3b3JsZCIg
OiAibWFpbiB3b3JsZCIpKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIm5l
eHQiLCAiKiIpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGltZy5vbmVycm9yID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFsZXJ0KCdCTE9DS0VEIGluICcgKyAoaXNvbGF0
ZWQgPyAiaXNvbGF0ZWQgd29ybGQiIDogIm1haW4gd29ybGQiKSk7CisgICAgICAgICAgICAgICAg
d2luZG93LnBvc3RNZXNzYWdlKCJuZXh0IiwgIioiKTsKKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBpbWcuc3JjID0gIi4uL3Jlc291cmNlcy9hYmUucG5nIjsKKyAgICAgICAgfQorCisgICAg
ICAgIHN3aXRjaCAodGVzdHMpIHsKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAg
ICBzZXRJbWdTcmMoZmFsc2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAzOgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGQoMSwgU3RyaW5nKGV2YWwoInNldEltZ1NyYyIpKSArICJcbnNldEltZ1NyYyh0cnVl
KTsiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAg
ICAgICAgICAgICBhbGVydCgiU3RhcnRpbmcgdG8gYnlwYXNzIG1haW4gd29ybGQncyBDU1A6Iik7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRJc29sYXRlZFdvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5KDEsICdpbWctc3JjIConKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmV2
YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKDEsIFN0cmluZyhldmFsKCJzZXRJbWdTcmMiKSkg
KyAiXG5zZXRJbWdTcmModHJ1ZSk7Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgc2V0SW1nU3JjKGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koMSwgJycpOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
J3Rlc3QoKTsnPgorICAgIDxwPgorICAgICAgICBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHNjcmlw
dHMgcnVuIGluIGlzb2xhdGVkIHdvcmxkcyBtYXJrZWQgd2l0aCB0aGVpcgorICAgICAgICBvd24g
Q29udGVudCBTZWN1cml0eSBQb2xpY3kgYXJlbid0IGFmZmVjdGVkIGJ5IHRoZSBwYWdlJ3MgY29u
dGVudAorICAgICAgICBzZWN1cml0eSBwb2xpY3kuIEV4dGVuc2lvbnMsIGZvciBleGFtcGxlLCBz
aG91bGQgYmUgYWJsZSB0byBsb2FkIGFueQorICAgICAgICByZXNvdXJjZSB0aGV5IGxpa2UuCisg
ICAgPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAwN2QxYmFjZjUyYmQ0Y2EyYjhhMGRlZjM0ODA3NmY2Yzc1MDljYzRj
Li5iMTgxODZkZTcwODgwODA2ZWQwNzMxMTVmYzg1NDNhOTQ5NDIzZmE2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAyMiw2ICsxMDIyLDkgQEAgd2Vi
a2l0Lm9yZy9iLzYxNTQwIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1v
cmlnaW4teGhyLmh0bWwgWyBGYWkKIHdlYmtpdC5vcmcvYi82MTU0MCBpbnNwZWN0b3IvZXh0ZW5z
aW9ucy9leHRlbnNpb25zLWF1ZGl0cy1jb250ZW50LXNjcmlwdC5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvNjE1NDAgaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1ldmFsLWNv
bnRlbnQtc2NyaXB0Lmh0bWwgWyBGYWlsdXJlIF0KIAorIyBKU0MgYWxzbyBkb2Vzbid0IHN1cHBv
cnQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeQord2Via2l0Lm9yZy9iLzEw
MDgxNSBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQt
Y3NwLmh0bWwgWyBGYWlsdXJlIF0KKwogI19fd29ybGRJRCBpcyB1bmRlZmluZWQgaW4gaXNvbGF0
ZWQgd29ybGQKIEJ1ZyhFRkwpIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9kaWRD
bGVhcldpbmRvd09iamVjdC5odG1sCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggZmUwZWIzM2E1NGE0MmYzNjZiMzY4ODE5YzllNDJiMzgxN2I0ODlkNy4u
YjVmM2VmZjM1ZDlhYzQ4YzkxY2ZhMTM1OTFjZmJmMTIyYjJhMTdkMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQyOCw2ICs0MjgsOSBAQCBpbnNwZWN0
b3IvZWxlbWVudHMvdXBkYXRlLXNoYWRvd2RvbS5odG1sCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0
IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0
MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0
bWwKIAorIyBKU0MgYWxzbyBkb2Vzbid0IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSAod2Via2l0Lm9yZy9iLzEwMDgxNSkKK2h0dHAvdGVzdHMvc2VjdXJpdHkv
aXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AuaHRtbAorCiAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzI4MiBsYXllclRyZWVBc1RleHQgZG9lc24n
dCB3b3JrIGZvciBpZnJhbWVzCiBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1hYnNvbHV0ZS1v
dmVyZmxvdy1zY3JvbGxlZC5odG1sCiBjb21wb3NpdGluZy9ydGwvcnRsLWlmcmFtZS1hYnNvbHV0
ZS1vdmVyZmxvdy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA2N2QxZDY3ZTczYzM0M2M4NWZjNzQyYmNlOTc5YzQ3NmJlZDc0YTkyLi4zZTJkZDQ0YmJk
MGY1MmRmZjdkNTVjNjRkNDhiNjBhZWUyOGRiOTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM0MCw2ICszNDAsOSBAQCBmYXN0L2pzL2kxOG4tYmluZGlu
Z3MtbG9jYWxlLmh0bWwKICMgSlNDIGRvZXMgbm90IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3JsZFNl
Y3VyaXR5T3JpZ2luLCAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKIAorIyBKU0MgYWxzbyBk
b2Vzbid0IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAod2Vi
a2l0Lm9yZy9iLzEwMDgxNSkKK2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBh
c3MtbWFpbi13b3JsZC1jc3AuaHRtbAorCiAjIFRoaXMgdGVzdCBpcyBmb3IgY2xpZW50cyB0aGF0
IGNob29zZSB0byBtYWtlIHRoZSBtaXNzaW5nIHBsdWdpbiBpbmRpY2F0b3IgYSBidXR0b24KIHBs
dWdpbnMvY2xpY2tpbmctbWlzc2luZy1wbHVnaW4tZmlyZXMtZGVsZWdhdGUuaHRtbAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDJhZWY5YWU3YWI1NDc5
OTVjMmFlMzc3MTFjNDZjZGQzZWY1MTM0MDcuLjBiZWE1YTViYWQ3YjA4YzdhM2Y1ODE2M2M3ZmE0
NDI5Yjc5Yzk5OWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xNDgyLDYgKzE0ODIsOSBAQCBsb2FkZXIvbmF2aWdhdGlvbi13aGlsZS1kZWZlcnJpbmct
bG9hZHMuaHRtbAogIyBKU0MgZG9lcyBub3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkU2VjdXJp
dHlPcmlnaW4gKGh0dHA6Ly93ZWJraXQub3JnL2IvNjE1NDApCiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2lzb2xhdGVkV29ybGQvY3Jvc3Mtb3JpZ2luLXhoci5odG1sCiAKKyMgSlNDIGFsc28gZG9lc24n
dCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgKHdlYmtpdC5v
cmcvYi8xMDA4MTUpCitodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1h
aW4td29ybGQtY3NwLmh0bWwKKwogIyBFTkFCTEUoV0VCR0wpIGlzIGRpc2FibGVkCiBjb21wb3Np
dGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktd2ViZ2wuaHRtbAog
Y29tcG9zaXRpbmcvdmlzaWJpbGl0eS92aXNpYmlsaXR5LXNpbXBsZS13ZWJnbC1sYXllci5odG1s
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>