<?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>97571</bug_id>
          
          <creation_ts>2012-09-25 09:35:30 -0700</creation_ts>
          <short_desc>AX: Support embedded SVG objects in AX tree</short_desc>
          <delta_ts>2012-10-31 17:09:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>krit</cc>
    
    <cc>pdr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>727724</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-25 09:35:30 -0700</bug_when>
    <thetext>SVG is already accessible with VoiceOver if you view it directly, but you can&apos;t interact with it when it&apos;s embedded inside HTML content. That&apos;s because the elements are not exposed in any form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727725</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-25 09:35:57 -0700</bug_when>
    <thetext>rdar://8984887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728572</commentid>
    <comment_count>2</comment_count>
      <attachid>165805</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-26 08:10:03 -0700</bug_when>
    <thetext>Created attachment 165805
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728599</commentid>
    <comment_count>3</comment_count>
      <attachid>165812</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-26 08:39:21 -0700</bug_when>
    <thetext>Created attachment 165812
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728632</commentid>
    <comment_count>4</comment_count>
      <attachid>165812</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-26 09:04:29 -0700</bug_when>
    <thetext>Comment on attachment 165812
patch

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

Unofficial review.

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:810
&gt; +            rect.setX(rect.x() + parentBoundingBox.x());

Use rect.move() or rect.moveBy().

Break from the loop after finding a RenderSVGRoot, because I don&apos;t think there could be more than one in the parent chain, right?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:838
&gt; +    offsetBoundingBoxForRemoteSVGElement(result);

Can you avoid calling this method if you don&apos;t have an SVG element to begin with? Or is there any way you could short-circuit this method&apos;s inner loop so that it doesn&apos;t need to walk up the entire parent chain for every non-SVG element?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2421
&gt; +            return GroupRole;

How about adding a new role SVGRole and mapping it to the same as GroupRole on all platforms for now? I think it&apos;s possible that some platforms might want to do something with an SVG root, similar to canvas.

That may require that you specifically add SVGRole to a few checks in the code that currently handle GroupRole (maybe accessibilityIsIgnored?) but I&apos;d rather it be explicit.

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2756
&gt; +    SVGSVGElement* rootElement = static_cast&lt;SVGDocument*&gt;(frame-&gt;document())-&gt;rootElement();

Test isSVGDocument on frame-&gt;document() just to be safe.

&gt; Source/WebCore/accessibility/AccessibilityRenderSVGRoot.h:36
&gt; +class AccessibilityRenderSVGRoot : public AccessibilityRenderObject {

Should this just be AccessibilitySVGRoot?

Several other Accessibility classes inherit from AccessibilityRenderObject, but they don&apos;t have Render in their names.

&gt; LayoutTests/ChangeLog:8
&gt; +        Test skipped on chromium until clickPoint() is implementing in DRT.

implementing -&gt; implemented</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728636</commentid>
    <comment_count>5</comment_count>
      <attachid>165812</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-26 09:07:34 -0700</bug_when>
    <thetext>Comment on attachment 165812
patch

Attachment 165812 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14030522</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728655</commentid>
    <comment_count>6</comment_count>
      <attachid>165812</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-26 09:19:58 -0700</bug_when>
    <thetext>Comment on attachment 165812
patch

Attachment 165812 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14019583</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728881</commentid>
    <comment_count>7</comment_count>
      <attachid>165856</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-26 12:46:49 -0700</bug_when>
    <thetext>Created attachment 165856
patch

made all changes dominic suggested</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728884</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-26 12:49:54 -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>728885</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-26 12:50:18 -0700</bug_when>
    <thetext>Attachment 165856 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/acce...&quot; exit_code: 1
Source/WebCore/accessibility/AccessibilityAllInOne.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: Using the chromium port without having the downstream skia_test_expectations.txt file checked out. Expectations related things might be wonky.
Source/WebCore/accessibility/AXObjectCache.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 24 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>728907</commentid>
    <comment_count>10</comment_count>
      <attachid>165856</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-09-26 13:14:34 -0700</bug_when>
    <thetext>Comment on attachment 165856
patch

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

Unofficial review looks good

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2171
&gt; +    IntPoint offsetPoint(point.x() - parentRect.location().x(), point.y() - parentRect.location().y());

You should be able to do something more like:

IntPoint offsetPoint = point - parentRect.location();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729020</commentid>
    <comment_count>11</comment_count>
      <attachid>165885</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-26 15:33:52 -0700</bug_when>
    <thetext>Created attachment 165885
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729021</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-26 15:34:23 -0700</bug_when>
    <thetext>Adding Eric to help comment about SVG usage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729025</commentid>
    <comment_count>13</comment_count>
      <attachid>165885</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-26 15:38:23 -0700</bug_when>
    <thetext>Comment on attachment 165885
patch

Attachment 165885 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14037574</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729027</commentid>
    <comment_count>14</comment_count>
      <attachid>165885</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-26 15:40:23 -0700</bug_when>
    <thetext>Comment on attachment 165885
patch

Attachment 165885 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14043286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729028</commentid>
    <comment_count>15</comment_count>
      <attachid>165885</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-26 15:41:54 -0700</bug_when>
    <thetext>Comment on attachment 165885
patch

Attachment 165885 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14027671</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729029</commentid>
    <comment_count>16</comment_count>
      <attachid>165885</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-26 15:42:06 -0700</bug_when>
    <thetext>Comment on attachment 165885
patch

Attachment 165885 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14033575</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729030</commentid>
    <comment_count>17</comment_count>
      <attachid>165887</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-26 15:46:25 -0700</bug_when>
    <thetext>Created attachment 165887
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729031</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-26 15:47:17 -0700</bug_when>
    <thetext>pdr and schenny (despite not yet being reviewers) are way more up-to-date on SVG issues than I am these days. :)  But I&apos;ll take a look regardless!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729036</commentid>
    <comment_count>19</comment_count>
      <attachid>165888</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-26 16:00:50 -0700</bug_when>
    <thetext>Created attachment 165888
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729041</commentid>
    <comment_count>20</comment_count>
      <attachid>165887</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-26 16:04:06 -0700</bug_when>
    <thetext>Comment on attachment 165887
patch

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

The patch seems OK... I&apos;m not sure about the security (pointer-lifetimes, or x-orgin access) aspects.

This seems very last-mile to me for AX.  Is there some high-profile site driving this? My impression is that embedding SVGs in &lt;img&gt; tags is a relatively uncommon way to embed them.  But my impresion could be wrong.  As I mention below, this feels very akin to OCRing text out of bitmap images and exposing it to AX.  If that&apos;s on the eventual goal list, then this is definitely in-line with such. :)

&gt; Source/WebCore/ChangeLog:10
&gt; +        This patch allows an SVG image from another resource to be hooked into the AX
&gt; +        hierarchy. This is done by creating an AX wrapper for the root SVG that holds onto
&gt; +        its native parent image. The SVGChromeClient is then used to connect to this SVG resource.

is the AX hierarchy ever exposed to web pages?  If so, I would worry about possible x-origin exploits here?  Or does AX follow the same-origin policy (I kinda doubt it would, as it would mean you couldn&apos;t &quot;see&quot; into x-origin images.)

&gt; Source/WebCore/accessibility/AccessibilitySVGRoot.cpp:38
&gt; +    : AccessibilityRenderObject(renderer),
&gt; +    m_parent(0)

I&apos;m surprised the style-bot didn&apos;t catch the , on the &quot;wrong&quot; line.  I believe our style is to lead with the , or : so as to make each line &quot;independent&quot; of the others for easy removal/addition.

&gt; Source/WebCore/accessibility/AccessibilitySVGRoot.cpp:50
&gt; +    AccessibilitySVGRoot* obj = new AccessibilitySVGRoot(renderer);
&gt; +    obj-&gt;init();
&gt; +    return adoptRef(obj);

Could alternatively just put it into the RefPtr immediately and then .release() it.

&gt; Source/WebCore/accessibility/AccessibilitySVGRoot.cpp:58
&gt; +    // If a parent was set because this is a remote SVG resource, use that
&gt; +    // but otherwise, we should rely on the standard render tree for the parent.
&gt; +    if (m_parent)
&gt; +        return m_parent;

I&apos;m not sure what this does yet... but presumably it will be more clear by the end of the patch. :)

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1472
&gt; +        // If we have an empty chrome client (like SVG) then we should use the page
&gt; +        // of the scroll view parent to help us get to the screen rect.
&gt; +        if (parent &amp;&amp; page &amp;&amp; page-&gt;chrome()-&gt;client()-&gt;isEmptyChromeClient())
&gt; +            page = parent-&gt;page();

I see.  So part of this patch is making navigation inside one of these resources behave reasonably?  (Which might otherwise be difficult since it has empty clients?)

Do we need any of this for iframes/seamless-iframes? or pdf-as-images?  I guess the iframe case &quot;just works&quot; because it has real clients/has a Document/Page and the pdf case we don&apos;t care about/is-safari-only?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:254
&gt; +    bool isSVGImage() const;

It feels a bit odd to even bother supporting SVGImages for AX, as they&apos;re &quot;images&quot; and thus not really accessible, or?    I guess we&apos;d happily OCR text in bitmap images for AX if we could?  As this seems similar to what we&apos;re doing here.  If an author wants an interactive SVG they need to embed it directly (via a sandboxed iframe or directly-in-the-document if they don&apos;t care about security).

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2424
&gt; +        if (isSVGImage())
&gt; +            return SVGRootRole;

Is this the same role as when you embed &lt;svg&gt; directly in your html document?  (should it be?)

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2757
&gt; +    FrameView* frameView = svgImage-&gt;frameView();
&gt; +    if (!frameView)
&gt; +        return 0;
&gt; +    Frame* frame = frameView-&gt;frame();
&gt; +    if (!frame)
&gt; +        return 0;

Aren&apos;t there helpers to get to the RenderView directly from the FrameView?  The method you chose definitely works.  I just wonder if there si something more concise we should use.

&gt; Source/WebCore/svg/graphics/SVGImageChromeClient.h:42
&gt; +    : m_image(image)

I think our style says to indent this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729074</commentid>
    <comment_count>21</comment_count>
      <attachid>165887</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-26 16:52:31 -0700</bug_when>
    <thetext>Comment on attachment 165887
patch

Attachment 165887 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14032606</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729080</commentid>
    <comment_count>22</comment_count>
      <attachid>165887</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-26 16:59:06 -0700</bug_when>
    <thetext>Comment on attachment 165887
patch

Attachment 165887 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14037590</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729098</commentid>
    <comment_count>23</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-26 17:30:58 -0700</bug_when>
    <thetext>(In reply to comment #20)

Thanks for the feedback!

&gt; (From update of attachment 165887 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165887&amp;action=review
&gt; 
&gt; The patch seems OK... I&apos;m not sure about the security (pointer-lifetimes, or x-orgin access) aspects.
&gt; 
&gt; This seems very last-mile to me for AX.  Is there some high-profile site driving this? My impression is that embedding SVGs in &lt;img&gt; tags is a relatively uncommon way to embed them.  But my impresion could be wrong. 

This is a priority for us.

&gt; As I mention below, this feels very akin to OCRing text out of bitmap images and exposing it to AX.  If that&apos;s on the eventual goal list, then this is definitely in-line with such. :)

SVG is different in that each individual component can be made accessible. So if you had a map of Africa for example, you could make each country and individual element and provide information about it. With bitmap graphics you&apos;d have to go OCR routes to get text and it would be just be impossible for anything beyond that

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        This patch allows an SVG image from another resource to be hooked into the AX
&gt; &gt; +        hierarchy. This is done by creating an AX wrapper for the root SVG that holds onto
&gt; &gt; +        its native parent image. The SVGChromeClient is then used to connect to this SVG resource.
&gt; 
&gt; is the AX hierarchy ever exposed to web pages?  If so, I would worry about possible x-origin exploits here?  Or does AX follow the same-origin policy (I kinda doubt it would, as it would mean you couldn&apos;t &quot;see&quot; into x-origin images.)

The AX hierarchy is not exposed to web pages, it&apos;s only exposed to AX app clients, so I think we&apos;re ok. we&apos;re taking what&apos;s already stored in memory of the SVG document and turning it into AX nodes.

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilitySVGRoot.cpp:38
&gt; &gt; +    : AccessibilityRenderObject(renderer),
&gt; &gt; +    m_parent(0)
&gt; 
&gt; I&apos;m surprised the style-bot didn&apos;t catch the , on the &quot;wrong&quot; line.  I believe our style is to lead with the , or : so as to make each line &quot;independent&quot; of the others for easy removal/addition.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilitySVGRoot.cpp:50
&gt; &gt; +    AccessibilitySVGRoot* obj = new AccessibilitySVGRoot(renderer);
&gt; &gt; +    obj-&gt;init();
&gt; &gt; +    return adoptRef(obj);
&gt; 
&gt; Could alternatively just put it into the RefPtr immediately and then .release() it.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilitySVGRoot.cpp:58
&gt; &gt; +    // If a parent was set because this is a remote SVG resource, use that
&gt; &gt; +    // but otherwise, we should rely on the standard render tree for the parent.
&gt; &gt; +    if (m_parent)
&gt; &gt; +        return m_parent;
&gt; 
&gt; I&apos;m not sure what this does yet... but presumably it will be more clear by the end of the patch. :)
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1472
&gt; &gt; +        // If we have an empty chrome client (like SVG) then we should use the page
&gt; &gt; +        // of the scroll view parent to help us get to the screen rect.
&gt; &gt; +        if (parent &amp;&amp; page &amp;&amp; page-&gt;chrome()-&gt;client()-&gt;isEmptyChromeClient())
&gt; &gt; +            page = parent-&gt;page();
&gt; 
&gt; I see.  So part of this patch is making navigation inside one of these resources behave reasonably?  (Which might otherwise be difficult since it has empty clients?)

Correct

&gt; 
&gt; Do we need any of this for iframes/seamless-iframes? or pdf-as-images?  I guess the iframe case &quot;just works&quot; because it has real clients/has a Document/Page and the pdf case we don&apos;t care about/is-safari-only?

iframes and pdfs should work already. both of those are handled in slightly different ways which are a tad easier to implement in that they have natural parent child connections already set up

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:254
&gt; &gt; +    bool isSVGImage() const;
&gt; 
&gt; It feels a bit odd to even bother supporting SVGImages for AX, as they&apos;re &quot;images&quot; and thus not really accessible, or?    I guess we&apos;d happily OCR text in bitmap images for AX if we could?  As this seems similar to what we&apos;re doing here.  If an author wants an interactive SVG they need to embed it directly (via a sandboxed iframe or directly-in-the-document if they don&apos;t care about security).
&gt; 

Hopefully my response above addresses your concern here.

&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2424
&gt; &gt; +        if (isSVGImage())
&gt; &gt; +            return SVGRootRole;
&gt; 
&gt; Is this the same role as when you embed &lt;svg&gt; directly in your html document?  (should it be?)
&gt; 

Good question. Right now it&apos;s not, but I can make that change, I think it makes sense

&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2757
&gt; &gt; +    FrameView* frameView = svgImage-&gt;frameView();
&gt; &gt; +    if (!frameView)
&gt; &gt; +        return 0;
&gt; &gt; +    Frame* frame = frameView-&gt;frame();
&gt; &gt; +    if (!frame)
&gt; &gt; +        return 0;
&gt; 
&gt; Aren&apos;t there helpers to get to the RenderView directly from the FrameView?  The method you chose definitely works.  I just wonder if there si something more concise we should use.
&gt; 

will look into it

&gt; &gt; Source/WebCore/svg/graphics/SVGImageChromeClient.h:42
&gt; &gt; +    : m_image(image)
&gt; 
&gt; I think our style says to indent this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729143</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-09-26 19:19:31 -0700</bug_when>
    <thetext>Eric is right. If your concerns are accessibility related, definitely don&apos;t embed SVG with &lt;img&gt; but use inline or &lt;object&gt;. Just as a hint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729194</commentid>
    <comment_count>25</comment_count>
      <attachid>165888</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-26 21:37:39 -0700</bug_when>
    <thetext>Comment on attachment 165888
patch

Attachment 165888 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14050128

New failing tests:
accessibility/svg-remote-element.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730058</commentid>
    <comment_count>26</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-27 17:31:22 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Eric is right. If your concerns are accessibility related, definitely don&apos;t embed SVG with &lt;img&gt; but use inline or &lt;object&gt;. Just as a hint.

Just to point out, I am not advocating anyone to follow this approach, I just need to make sure it&apos;s accessible if someone does it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730075</commentid>
    <comment_count>27</comment_count>
      <attachid>166107</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-09-27 18:07:05 -0700</bug_when>
    <thetext>Created attachment 166107
patch addressing Eric&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730090</commentid>
    <comment_count>28</comment_count>
      <attachid>166107</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 18:21:06 -0700</bug_when>
    <thetext>Comment on attachment 166107
patch addressing Eric&apos;s comments

Attachment 166107 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14036995</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730100</commentid>
    <comment_count>29</comment_count>
      <attachid>166107</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-27 18:36:52 -0700</bug_when>
    <thetext>Comment on attachment 166107
patch addressing Eric&apos;s comments

Attachment 166107 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14059104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730150</commentid>
    <comment_count>30</comment_count>
      <attachid>166107</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-27 19:34:47 -0700</bug_when>
    <thetext>Comment on attachment 166107
patch addressing Eric&apos;s comments

Attachment 166107 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14043767

New failing tests:
accessibility/svg-bounds.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732315</commentid>
    <comment_count>31</comment_count>
      <attachid>166614</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-01 23:22:52 -0700</bug_when>
    <thetext>Created attachment 166614
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753861</commentid>
    <comment_count>32</comment_count>
      <attachid>166614</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-29 16:42:54 -0700</bug_when>
    <thetext>Comment on attachment 166614
patch

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

&gt; Source/WebCore/ChangeLog:67
&gt; +        (WebCore::toSVGImageChromeClient):

This is the best place for per-function documentation, it’s a shame not to use it for a relatively big patch like this!

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:252
&gt;      // This returns true if it&apos;s focusable but it&apos;s not content editable and it&apos;s not a control or ARIA control.

Did this comment at some point get detached from the line it refers to?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:839
&gt; +    Document* doc = document();

Would prefer to spell out document, but there seem to be lots of cases of this abbreviation.

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2744
&gt; +    RenderImage* renderImage = toRenderImage(m_renderer);

Can we fold this into the next line?

&gt; Source/WebCore/accessibility/AccessibilitySVGRoot.h:29
&gt; +#ifndef AccessibilitySVGRoot_h

This file, and the rest of the Accessibility files (yay, consistency, I guess?), is in a weird order. The majority of WebCore classes go public/protected/private and put members below methods. Maybe there’s no real rule about this.

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1229
&gt; +        return String();

Does it really not want a title at all?

&gt; Source/WebCore/svg/graphics/SVGImageChromeClient.h:72
&gt; +

If you had per-function comments in your change log, it would be more clear what changed here :)

&gt; LayoutTests/accessibility/svg-bounds.html:8
&gt; -&lt;svg&gt;
&gt; +&lt;svg tabindex=0&gt;

This change is not mentioned in your change log and I don’t understand it.

&gt; LayoutTests/accessibility/resources/svg-face.svg:1
&gt; +&lt;svg xmlns:cc=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:svg=&quot;http://www.w3.org/2000/svg&quot;

So many unnecessary namespaces?

&gt; LayoutTests/ChangeLog:8
&gt; +        Test skipped on chromium until clickPoint() is implemented in DRT.

Probably add one more line here about what your new test tests! Though that’s pretty clear, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753901</commentid>
    <comment_count>33</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-29 17:51:22 -0700</bug_when>
    <thetext>Thanks for the review. I&apos;ll make all suggested changes except fixing the weird public/protected/private ordering in AX. That would probably be best left for another patch

(In reply to comment #32)
&gt; (From update of attachment 166614 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166614&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:67
&gt; &gt; +        (WebCore::toSVGImageChromeClient):
&gt; 
&gt; This is the best place for per-function documentation, it’s a shame not to use it for a relatively big patch like this!
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:252
&gt; &gt;      // This returns true if it&apos;s focusable but it&apos;s not content editable and it&apos;s not a control or ARIA control.
&gt; 
&gt; Did this comment at some point get detached from the line it refers to?
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:839
&gt; &gt; +    Document* doc = document();
&gt; 
&gt; Would prefer to spell out document, but there seem to be lots of cases of this abbreviation.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2744
&gt; &gt; +    RenderImage* renderImage = toRenderImage(m_renderer);
&gt; 
&gt; Can we fold this into the next line?
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilitySVGRoot.h:29
&gt; &gt; +#ifndef AccessibilitySVGRoot_h
&gt; 
&gt; This file, and the rest of the Accessibility files (yay, consistency, I guess?), is in a weird order. The majority of WebCore classes go public/protected/private and put members below methods. Maybe there’s no real rule about this.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1229
&gt; &gt; +        return String();
&gt; 
&gt; Does it really not want a title at all?
&gt; 
&gt; &gt; Source/WebCore/svg/graphics/SVGImageChromeClient.h:72
&gt; &gt; +
&gt; 
&gt; If you had per-function comments in your change log, it would be more clear what changed here :)
&gt; 
&gt; &gt; LayoutTests/accessibility/svg-bounds.html:8
&gt; &gt; -&lt;svg&gt;
&gt; &gt; +&lt;svg tabindex=0&gt;
&gt; 
&gt; This change is not mentioned in your change log and I don’t understand it.
&gt; 
&gt; &gt; LayoutTests/accessibility/resources/svg-face.svg:1
&gt; &gt; +&lt;svg xmlns:cc=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:svg=&quot;http://www.w3.org/2000/svg&quot;
&gt; 
&gt; So many unnecessary namespaces?
&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Test skipped on chromium until clickPoint() is implemented in DRT.
&gt; 
&gt; Probably add one more line here about what your new test tests! Though that’s pretty clear, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754412</commentid>
    <comment_count>34</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-10-30 09:04:41 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/132915</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165805</attachid>
            <date>2012-09-26 08:10:03 -0700</date>
            <delta_ts>2012-09-26 08:39:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37110</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA5LTI2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgZW1i
ZWRkZWQgU1ZHIG9iamVjdHMgaW4gQVggdHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyBhbiBTVkcgaW1hZ2UgZnJvbSBh
bm90aGVyIHJlc291cmNlIHRvIGJlIGhvb2tlZCBpbnRvIHRoZSBBWAorICAgICAgICBoaWVyYXJj
aHkuIFRoaXMgaXMgZG9uZSBieSBjcmVhdGluZyBhbiBBWCB3cmFwcGVyIGZvciB0aGUgcm9vdCBT
VkcgdGhhdCBob2xkcyBvbnRvCisgICAgICAgIGl0cyBuYXRpdmUgcGFyZW50IGltYWdlLiBUaGUg
U1ZHQ2hyb21lQ2xpZW50IGlzIHRoZW4gdXNlZCB0byBjb25uZWN0IHRvIHRoaXMgU1ZHIHJlc291
cmNlLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNj
ZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvZmZzZXRCb3VuZGlu
Z0JveEZvclJlbW90ZVNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpk
ZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmVtb3RlU1ZHQ2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRk
Q2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJTVkdSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJTVkdS
b290Ojp+QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyU1ZHUm9vdDo6cGFyZW50T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290Lmg6IEFkZGVkLgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlclNWR1Jvb3Q6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyU1ZHUm9vdDo6aXNBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdCk6CisgICAgICAg
IChXZWJDb3JlOjp0b0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcG9zaXRpb25dKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChFbXB0eUNocm9tZUNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6aXNFbXB0eUNocm9tZUNsaWVudCk6CisK
KyAgICAgICAgQWxsb3cgYW4gZW1wdHkgY2hyb21lIGNsaWVudCB0byBiZSBpZGVudGlmaWVkIHNv
IEFYIGNvZGUgY2FuIHJlYWN0LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6aXNFbXB0eUNocm9tZUNsaWVudCk6CisgICAg
ICAgIChDaHJvbWVDbGllbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50Lmg6IEFkZGVkLgor
CisgICAgICAgIEV4cG9zZSBTVkdJbWFnZUNocm9tZUNsaWVudCBzbyBBWCBjYW4gdXNlIGl0Lgor
ICAgICAgICAKKyAgICAgICAgKFNWR0ltYWdlQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjpTVkdJbWFnZUNocm9tZUNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVudDo6aXNTVkdJbWFnZUNocm9tZUNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVudDo6aW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmNocm9tZURlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVudDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5k
Um9vdFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6dG9TVkdJbWFnZUNocm9tZUNsaWVudCk6CisK
IDIwMTItMDktMjYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBkaXNwbGF5IHN0YWNrIG9mIGxhc3QgbGF5b3V0IGludmFsaWRh
dGlvbiBpbnN0ZWFkIG9mIGZpcnN0IG9uZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAxMjg3MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNiArMzYwLDggQEAKIAogICAgICAgICB2aXJ0dWFs
IEZsb2F0U2l6ZSBtaW5pbXVtV2luZG93U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0U2l6ZSgx
MDAsIDEwMCk7IH07CiAKKyAgICAgICAgdmlydHVhbCBib29sIGlzRW1wdHlDaHJvbWVDbGllbnQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0
dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KICAgICB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJTVkdSb290LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290Lmgi
CisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitB
Y2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdDo6QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVu
ZGVyZXIpLAorICAgIG1fcGFyZW50KDApCit7Cit9CisKK0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdS
b290Ojp+QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QoKQoreworfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlSZW5kZXJTVkdSb290PiBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdDo6Y3Jl
YXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgQWNjZXNzaWJpbGl0eVJlbmRlclNW
R1Jvb3QqIG9iaiA9IG5ldyBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdChyZW5kZXJlcik7Cisg
ICAgb2JqLT5pbml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7Cit9CisgICAgCitBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdDo6cGFyZW50T2JqZWN0
KCkgY29uc3QKK3sKKyAgICAvLyBJZiBhIHBhcmVudCB3YXMgc2V0IGJlY2F1c2UgdGhpcyBpcyBh
IHJlbW90ZSBTVkcgcmVzb3VyY2UsIHVzZSB0aGF0CisgICAgLy8gYnV0IG90aGVyd2lzZSwgd2Ug
c2hvdWxkIHJlbHkgb24gdGhlIHN0YW5kYXJkIHJlbmRlciB0cmVlIGZvciB0aGUgcGFyZW50Lgor
ICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50OworICAgIAorICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3QoKTsKK30KKworICAg
IAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHJldmlzaW9uIDEyOTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2ltcG9ydCAiQ2hyb21lLmgiCisjaW1w
b3J0ICJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0ICJDb250
ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkZvbnQuaCIKQEAgLTE0NTIsNyArMTQ1Myw4
IEBACiAgICAgICAgIAogICAgICAgICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBzY3JvbGwgdmll
dyB0byB1c2UgdG8gY29udmVydCB0aGUgY29udGVudHMgdG8gdGhlIHdpbmRvdy4KICAgICAgICAg
U2Nyb2xsVmlldyogc2Nyb2xsVmlldyA9IDA7Ci0gICAgICAgIGZvciAoQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9
IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gMDsKKyAgICAgICAgZm9yIChwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0
KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAgICAg
ICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpKSB7CiAgICAgICAgICAg
ICAgICAgc2Nyb2xsVmlldyA9IHRvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcocGFyZW50KS0+c2Ny
b2xsVmlldygpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ2Miw4ICsxNDY0LDE1IEBA
CiAgICAgICAgIGlmIChzY3JvbGxWaWV3KQogICAgICAgICAgICAgcmVjdCA9IHNjcm9sbFZpZXct
PmNvbnRlbnRzVG9Sb290VmlldyhyZWN0KTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX29iamVj
dC0+cGFnZSgpKQotICAgICAgICAgICAgcG9pbnQgPSBtX29iamVjdC0+cGFnZSgpLT5jaHJvbWUo
KS0+cm9vdFZpZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOworICAgICAgICBQYWdlKiBwYWdl
ID0gbV9vYmplY3QtPnBhZ2UoKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhhdmUgYW4g
ZW1wdHkgY2hyb21lIGNsaWVudCAobGlrZSBTVkcpIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGUgcGFn
ZQorICAgICAgICAvLyBvZiB0aGUgc2Nyb2xsIHZpZXcgcGFyZW50IHRvIGhlbHAgdXMgZ2V0IHRv
IHRoZSBzY3JlZW4gcmVjdC4KKyAgICAgICAgaWYgKHBhcmVudCAmJiBwYWdlICYmIHBhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+aXNFbXB0eUNocm9tZUNsaWVudCgpKQorICAgICAgICAgICAgcGFn
ZSA9IHBhcmVudC0+cGFnZSgpOworCisgICAgICAgIGlmIChwYWdlKQorICAgICAgICAgICAgcG9p
bnQgPSBwYWdlLT5jaHJvbWUoKS0+cm9vdFZpZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb2ludCA9IHJlY3QubG9jYXRpb24oKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTI5Mzc2KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAorY2xhc3Mg
QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q7CiBjbGFzcyBBWE9iamVjdENhY2hlOwogY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEZyYW1lOwpAQCAtMjQyLDE1ICsyNDMsMjQgQEAKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBpbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3Q7CiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQq
LCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vz
c2liaWxpdHlQYXJlbnRGb3JJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopIGNvbnN0OworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3Q7CisKICAgICBib29sIHJlbmRlck9iamVjdElzT2JzZXJ2YWJs
ZShSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclBhcmVudE9i
amVjdCgpIGNvbnN0OwogICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZFbGVtZW50VHlwZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lKSBjb25zdDsKICAgICAvLyBUaGlzIHJldHVybnMgdHJ1ZSBp
ZiBpdCdzIGZvY3VzYWJsZSBidXQgaXQncyBub3QgY29udGVudCBlZGl0YWJsZSBhbmQgaXQncyBu
b3QgYSBjb250cm9sIG9yIEFSSUEgY29udHJvbC4KLQorICAgIAorICAgIGJvb2wgaXNTVkdJbWFn
ZSgpIGNvbnN0OworICAgIHZvaWQgZGV0YWNoUmVtb3RlU1ZHUm9vdCgpOworICAgIEFjY2Vzc2li
aWxpdHlSZW5kZXJTVkdSb290KiByZW1vdGVTVkdSb290RWxlbWVudCgpIGNvbnN0OworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50
JikgY29uc3Q7CisgICAgdm9pZCBvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQo
TGF5b3V0UmVjdCYpIGNvbnN0OworICAgIAogICAgIHZvaWQgYWRkVGV4dEZpZWxkQ2hpbGRyZW4o
KTsKICAgICB2b2lkIGFkZEltYWdlTWFwQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZENhbnZhc0No
aWxkcmVuKCk7CiAgICAgdm9pZCBhZGRBdHRhY2htZW50Q2hpbGRyZW4oKTsKKyAgICB2b2lkIGFk
ZFJlbW90ZVNWR0NoaWxkcmVuKCk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgdXBkYXRl
QXR0YWNobWVudFZpZXdQYXJlbnRzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxMjkz
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw4IEBACiAgICAgdmlydHVhbCBib29sIGlz
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxp
dHlSZW5kZXJTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIGJvb2wgYWNj
ZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Q7CiAgICAgCiAgICAg
dmlydHVhbCBib29sIGlzQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTI5Mzc2KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsOCArMzIsMTEgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0
Qm94LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZS5oIgorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCkBAIC01NCw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgorI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2lu
Y2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKQEAgLTc3LDYgKzgx
LDkgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlNWR0ltYWdlLmgiCisj
aW5jbHVkZSAiU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJTVkdTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtMTIyLDYgKzEyOSw4IEBACiB7CiAg
ICAgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGFjaCgpOwogICAgIAorICAgIGRldGFjaFJl
bW90ZVNWR1Jvb3QoKTsKKyAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1fcmVuZGVyZXIp
CiAgICAgICAgIG1fcmVuZGVyZXItPnNldEhhc0FYT2JqZWN0KGZhbHNlKTsKQEAgLTc5MSw2ICs4
MDAsMTkgQEAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxp
dHlEZXNjcmlwdGlvbigpOwogfQogCisvLyBUaGUgYm91bmRpbmdCb3ggZm9yIGVsZW1lbnRzIHdp
dGhpbiB0aGUgcmVtb3RlIFNWRyBlbGVtZW50IG5lZWRzIHRvIGJlIG9mZnNldCBieSBpdHMgcG9z
aXRpb24KKy8vIHdpdGhpbiB0aGUgcGFyZW50IHBhZ2UsIG90aGVyd2lzZSB0aGV5IGFyZSBpbiBy
ZWxhdGl2ZSBjb29yZGluYXRlcyBvbmx5Lgordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQoTGF5b3V0UmVjdCYgcmVjdCkg
Y29uc3QKK3sKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9i
amVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAg
ICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdCgpKSB7CisgICAgICAg
ICAgICBMYXlvdXRSZWN0IHBhcmVudEJvdW5kaW5nQm94ID0gcGFyZW50LT5wYXJlbnRPYmplY3Qo
KS0+Ym91bmRpbmdCb3hSZWN0KCk7CisgICAgICAgICAgICByZWN0LnNldFgocmVjdC54KCkgKyBw
YXJlbnRCb3VuZGluZ0JveC54KCkpOworICAgICAgICAgICAgcmVjdC5zZXRZKHJlY3QueSgpICsg
cGFyZW50Qm91bmRpbmdCb3gueSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKyAgICAKIExheW91
dFJlY3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KCkgY29uc3QK
IHsKICAgICBSZW5kZXJPYmplY3QqIG9iaiA9IG1fcmVuZGVyZXI7CkBAIC04MTMsNiArODM1LDgg
QEAKICAgICAKICAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IGJvdW5kaW5nQm94Rm9yUXVhZHMob2Jq
LCBxdWFkcyk7CiAKKyAgICBvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQocmVz
dWx0KTsKKyAgICAKICAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgd2ViIGFyZWEgc2hvdWxkIGJlIHRo
ZSBjb250ZW50IHNpemUsIG5vdCB0aGUgY2xpcHBlZCBzaXplLgogICAgIGlmIChpc1dlYkFyZWEo
KSAmJiBvYmotPmZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgcmVzdWx0LnNldFNpemUob2JqLT5m
cmFtZSgpLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKQEAgLTIxMTcsNyArMjE0MSwyNiBAQAog
ICAgIAogICAgIHJldHVybiAwOwogfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0Cit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3RlID0gcmVtb3Rl
U1ZHUm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJlbW90ZSkKKyAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCisgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7CisgICAg
SW50UG9pbnQgb2Zmc2V0UG9pbnQocG9pbnQueCgpIC0gcGFyZW50UmVjdC5sb2NhdGlvbigpLngo
KSwgcG9pbnQueSgpIC0gcGFyZW50UmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgcmV0dXJuIHJl
bW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3Qob2Zmc2V0UG9pbnQpOworfQorCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIGlmIChpc1NWR0lt
YWdlKCkpCisgICAgICAgIHJldHVybiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChwb2ludCk7Cisg
ICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdChwb2ludCk7Cit9CisgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9p
bnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5oYXNMYXll
cigpKQpAQCAtMjM1OSw2ICsyNDAyLDggQEAKICAgICBpZiAoY3NzQm94ICYmIGNzc0JveC0+aXNJ
bWFnZSgpKSB7CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcp
KQogICAgICAgICAgICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8gUG9wVXBCdXR0b25Sb2xlIDog
QnV0dG9uUm9sZTsKKyAgICAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVy
biBHcm91cFJvbGU7CiAgICAgICAgIHJldHVybiBJbWFnZVJvbGU7CiAgICAgfQogICAgIApAQCAt
MjY1OCw3ICsyNzAzLDc5IEBACiAgICAgYXhTcGluQnV0dG9uLT5zZXRQYXJlbnQodGhpcyk7CiAg
ICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhTcGluQnV0dG9uKTsKIH0KKyAgICAKK2Jvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNTVkdJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJl
bW90ZVNWR1Jvb3RFbGVtZW50KCk7Cit9CisgICAgCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QoKQoreworICAgIGlmIChBY2Nlc3NpYmlsaXR5UmVu
ZGVyU1ZHUm9vdCogcm9vdCA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KCkpCisgICAgICAgIHJvb3Qt
PnNldFBhcmVudCgwKTsKK30KIAorQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3QKK3sKKyNpZiBF
TkFCTEUoU1ZHKQorICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJJ
bWFnZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBSZW5kZXJJbWFnZSogcmVuZGVy
SW1hZ2UgPSB0b1JlbmRlckltYWdlKG1fcmVuZGVyZXIpOworICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHJlbmRlckltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVkSW1h
Z2UpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZElt
YWdlLT5pbWFnZSgpOworICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc1NWR0ltYWdlKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIFNWR0ltYWdlKiBzdmdJbWFnZSA9IHN0YXRpY19j
YXN0PFNWR0ltYWdlKj4oaW1hZ2UpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3ZnSW1h
Z2UtPmZyYW1lVmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gMDsK
KyAgICBGcmFtZSogZnJhbWUgPSBmcmFtZVZpZXctPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1l
bnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyUm9vdCA9IHJvb3RFbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlm
ICghcmVuZGVyZXJSb290KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiByb290U1ZHT2JqZWN0ID0gZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KTsKKworICAgIC8vIEluIG9yZGVyIHRvIGNv
bm5lY3QgdGhlIEFYIGhpZXJhcmNoeSBmcm9tIHRoZSBTVkcgcm9vdCBlbGVtZW50IGZyb20gdGhl
IGxvYWRlZCByZXNvdXJjZQorICAgIC8vIHRoZSBwYXJlbnQgbXVzdCBiZSBzZXQsIGJlY2F1c2Ug
dGhlcmUncyBubyBvdGhlciB3YXkgdG8gZ2V0IGJhY2sgdG8gd2hvIGNyZWF0ZWQgdGhlIGltYWdl
LgorICAgIEFTU0VSVChyb290U1ZHT2JqZWN0ICYmIHJvb3RTVkdPYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVJlbmRlclNWR1Jvb3QoKSk7CisgICAgaWYgKCFyb290U1ZHT2JqZWN0LT5pc0FjY2Vzc2li
aWxpdHlSZW5kZXJTVkdSb290KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVy
biB0b0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KHJvb3RTVkdPYmplY3QpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJlbigpCit7CisgICAgQWNjZXNzaWJpbGl0eVJlbmRlclNW
R1Jvb3QqIHJvb3QgPSByZW1vdGVTVkdSb290RWxlbWVudCgpOworICAgIGlmICghcm9vdCkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIHJvb3QtPnNldFBhcmVudCh0aGlzKTsKKyAgICAKKyAg
ICBpZiAocm9vdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CisgICAgICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHJvb3QtPmNoaWxkcmVuKCk7CisgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQo
Y2hpbGRyZW5baV0pOworICAgIH0gZWxzZQorICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb290
KTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDYW52YXNDaGlsZHJl
bigpCiB7CiAgICAgaWYgKCFub2RlKCkgfHwgIW5vZGUoKS0+aGFzVGFnTmFtZShjYW52YXNUYWcp
KQpAQCAtMjczNSw3ICsyODUyLDggQEAKICAgICBhZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAg
YWRkVGV4dEZpZWxkQ2hpbGRyZW4oKTsKICAgICBhZGRDYW52YXNDaGlsZHJlbigpOwotCisgICAg
YWRkUmVtb3RlU1ZHQ2hpbGRyZW4oKTsKKyAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdXBk
YXRlQXR0YWNobWVudFZpZXdQYXJlbnRzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJTVkdSb290LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3RfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5UmVu
ZGVyU1ZHUm9vdF9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Qg
OiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CisgICAgCitwcm90ZWN0ZWQ6Cisg
ICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QoUmVuZGVyT2JqZWN0Kik7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q+
IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5UmVuZGVy
U1ZHUm9vdCgpOworICAgIAorICAgIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKKyAgICAKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlSZW5kZXJTVkdSb290KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKworaW5s
aW5lIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KiB0b0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdS
b290KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8
fCBvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290Kj4ob2JqZWN0KTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5UmVuZGVy
U1ZHUm9vdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAJKHJldmlzaW9uIDEyOTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTbGlkZXIuaCIKQEAgLTI0OSw2
ICsyNTAsMTEgQEAKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNy
ZWF0ZShyZW5kZXJlcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKHJlbmRl
cmVyLT5pc1NWR1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdS
b290OjpjcmVhdGUocmVuZGVyZXIpOworI2VuZGlmCisgICAgCiAgICAgaWYgKHJlbmRlcmVyLT5p
c0JveE1vZGVsT2JqZWN0KCkpIHsKICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNzc0Jv
eCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpOwogICAgICAgICBpZiAoY3NzQm94
LT5pc0xpc3RCb3goKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAkocmV2aXNpb24gMTI5NTIwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDQgKzMxLDE3IEBACiAjaW5jbHVkZSAi
U1ZHSW1hZ2UuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiRW1w
dHlDbGllbnRzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9v
dC5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2VDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudCA6
IHB1YmxpYyBFbXB0eUNocm9tZUNsaWVudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1ZH
SW1hZ2VDaHJvbWVDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBTVkdJbWFnZUNocm9tZUNsaWVudChTVkdJbWFnZSogaW1hZ2UpCi0gICAgICAgIDogbV9pbWFn
ZShpbWFnZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2VDaHJv
bWVDbGllbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgU1ZHSW1hZ2UqIGltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBj
aHJvbWVEZXN0cm95ZWQoKQotICAgIHsKLSAgICAgICAgbV9pbWFnZSA9IDA7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJl
Y3QmIHIsIGJvb2wpCi0gICAgewotICAgICAgICAvLyBJZiBtX2ltYWdlLT5tX3BhZ2UgaXMgbnVs
bCwgd2UncmUgYmVpbmcgZGVzdHJ1Y3RlZCwgZG9uJ3QgZmlyZSBjaGFuZ2VkSW5SZWN0KCkgaW4g
dGhhdCBjYXNlLgotICAgICAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVy
KCkgJiYgbV9pbWFnZS0+bV9wYWdlKQotICAgICAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZl
cigpLT5jaGFuZ2VkSW5SZWN0KG1faW1hZ2UsIHIpOwotICAgIH0KLQotICAgIFNWR0ltYWdlKiBt
X2ltYWdlOwotfTsKLQogU1ZHSW1hZ2U6OlNWR0ltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVy
KQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNWR0ltYWdlQ2hyb21lQ2xpZW50X2gKKyNk
ZWZpbmUgU1ZHSW1hZ2VDaHJvbWVDbGllbnRfaAorCisjaWYgRU5BQkxFKFNWRykKKworI2luY2x1
ZGUgIkVtcHR5Q2xpZW50cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0lt
YWdlQ2hyb21lQ2xpZW50IDogcHVibGljIEVtcHR5Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTVkdJbWFnZUNocm9tZUNsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIFNWR0ltYWdlQ2hyb21lQ2xpZW50KFNWR0ltYWdlKiBpbWFnZSkK
KyAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdJbWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBT
VkdJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgCitwcml2YXRl
OgorICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgbV9p
bWFnZSA9IDA7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVu
dHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiByLCBib29sKQorICAgIHsKKyAgICAgICAgLy8g
SWYgbV9pbWFnZS0+bV9wYWdlIGlzIG51bGwsIHdlJ3JlIGJlaW5nIGRlc3RydWN0ZWQsIGRvbid0
IGZpcmUgY2hhbmdlZEluUmVjdCgpIGluIHRoYXQgY2FzZS4KKyAgICAgICAgaWYgKG1faW1hZ2Ug
JiYgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpICYmIG1faW1hZ2UtPm1fcGFnZSkKKyAgICAgICAg
ICAgIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+Y2hhbmdlZEluUmVjdChtX2ltYWdlLCByKTsK
KyAgICB9CisgICAgCisgICAgU1ZHSW1hZ2UqIG1faW1hZ2U7Cit9OworCitpbmxpbmUgU1ZHSW1h
Z2VDaHJvbWVDbGllbnQqIHRvU1ZHSW1hZ2VDaHJvbWVDbGllbnQoQ2hyb21lQ2xpZW50KiBjbGll
bnQpCit7CisgICAgQVNTRVJUKCFjbGllbnQgfHwgY2xpZW50LT5pc1NWR0ltYWdlQ2hyb21lQ2xp
ZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdJbWFnZUNocm9tZUNsaWVudCo+KGNs
aWVudCk7Cit9CisgICAgCit9IAorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBT
VkdJbWFnZUNocm9tZUNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjg3MjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQ1NDMsNiArNDU0MywxMCBAQAogCQlBQUI2MDU0RjE1ODc0QzU4MDA3QjUwMzEgLyogSW5q
ZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBQUI2MDU0QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmgg
Ki87IH07CiAJCUFBQjYwNTUwMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUI2
MDU0QzE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwICovOyB9Owog
CQlBQUI2MDU1MTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTREMTU4NzRD
NTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICovOyB9OworCQlBQUMwOENDQzE1
Rjg2REI0MDBGMUUxODggLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzA4Q0NBMTVGODZEQjQwMEYxRTE4
OCAvKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oICovOyB9OworCQlBQUMwOENFRjE1RjkzM0Q2
MDBGMUUxODggLyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzA4Q0VEMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJ
bWFnZUNocm9tZUNsaWVudC5oICovOyB9OworCQlBQUMwOENGMjE1Rjk0MUZEMDBGMUUxODggLyog
QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUFDMDhDRjAxNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2li
aWxpdHlSZW5kZXJTVkdSb290LmNwcCAqLzsgfTsKKwkJQUFDMDhDRjMxNUY5NDFGRDAwRjFFMTg4
IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUMwOENGMTE1Rjk0MUZDMDBGMUUxODggLyogQWNjZXNz
aWJpbGl0eVJlbmRlclNWR1Jvb3QuaCAqLzsgfTsKIAkJQUFENzY2RUIxNTdFNTAyRjAwRTg1NDIz
IC8qIEluc3BlY3RvcldlYkdMQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3Rvcldl
YkdMQWdlbnQuY3BwICovOyB9OwogCQlBQUQ3NjZFQzE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yV2ViR0xBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuaCAq
LzsgfTsKIAkJQUFENzY2RUQxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMSW5zdHJ1
bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xJbnN0cnVtZW50YXRp
b24uaCAqLzsgfTsKQEAgLTExNjc4LDYgKzExNjgyLDExIEBACiAJCUFBQjYwNTRCMTU4NzRDNTgw
MDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFBQjYwNTRDMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQjYwNTREMTU4NzRDNTgwMDdC
NTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmplY3RlZFNjcmlwdE1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBQUMwOENDOTE1Rjg2REI0MDBGMUUxODggLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUMwOENDQTE1Rjg2
REI0MDBGMUUxODggLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hy
b21lQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2hy
b21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQzA4Q0YwMTVGOTQx
RkMwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQzA4Q0YxMTVGOTQxRkMwMEYxRTE4OCAv
KiBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBQUQ3NjZFODE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JXZWJH
TEFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RTkxNTdFNTAy
RjAwRTg1NDIzIC8qIEluc3BlY3RvcldlYkdMQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yV2ViR0xBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yV2ViR0xJbnN0cnVt
ZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV2Vi
R0xJbnN0cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODM1
LDYgKzE0ODQ0LDggQEAKIAkJCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3QkQgLyogQWNjZXNzaWJp
bGl0eVByb2dyZXNzSW5kaWNhdG9yLmggKi8sCiAJCQkJMjk4MUNBQTYxMzE4MjJFQzAwRDEyRjJB
IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovLAogCQkJCTI5QTgxMjFCMEZCQjlD
MUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggKi8sCisJCQkJQUFDMDhD
RjAxNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290LmNwcCAqLywK
KwkJCQlBQUMwOENGMTE1Rjk0MUZDMDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jv
b3QuaCAqLywKIAkJCQkyOTgxQ0FBNzEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVNj
cm9sbGJhci5jcHAgKi8sCiAJCQkJOTNDNEY2RTkxMTA4RjlBNTAwOTlEMERCIC8qIEFjY2Vzc2li
aWxpdHlTY3JvbGxiYXIuaCAqLywKIAkJCQkyOTgxQ0FBODEzMTgyMkVDMDBEMTJGMkEgLyogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwICovLApAQCAtMTk3NTMsNiArMTk3NjQsNyBAQAogCQkJ
CUIyNTU5OTBDMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdJbWFnZS5oICovLAogCQkJCTA4Rjg1OUQy
MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCAqLywKIAkJCQkwOEY4NTlEMzE0
NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovLAorCQkJCUFBQzA4Q0VEMTVGOTMz
RDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTU2MSw2ICsyNTU3
Myw4IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJv
UG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUFDMDhDRUYxNUY5MzNENjAwRjFFMTg4IC8qIFNW
R0ltYWdlQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUMwOENGMzE1Rjk0MUZE
MDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEY3QjRBNjYxNUZGNkQ2QTAwNkI1RjIyIC8qIFBsYXRmb3JtTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CkBAIC0yODY2MCw2ICsyODY3
NCw3IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVk
aXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyog
WmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUFDMDhDRjIxNUY5NDFGRDAwRjFFMTg4
IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRG
MUQxMUJGMTVGRjM3MjAwMDI2RTkwOCAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDEyODcyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiw4IEBACiAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVs
RXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpIE9WRVJSSURFIHsgfQogICAgIAogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBp
c0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3Mg
RW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHJl
dmlzaW9uIDEyOTI1NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEzOTQsNiArMTM5NCw3IEBACiBjcmJ1Zy5jb20v
MTAzMjIgYWNjZXNzaWJpbGl0eS92aXNpYmxlLWVsZW1lbnRzLmh0bWwgWyBTa2lwIF0KIAogd2Vi
a2l0Lm9yZy9iLzk3MzU5IGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvOTczNTkgYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzczOTEyIGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC10
ZXh0Lmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzczOTEyIGFjY2Vzc2liaWxpdHkvYXJp
YS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbCBbIEZhaWx1cmUgUGFzcyBdCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1l
bnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisKKworCitU
aGlzIHRlc3QgZW5zdXJlcyB0aGF0IGFjY2Vzc2liaWxpdHkgZWxlbWVudHMgY2FuIGJlIGNyZWF0
ZWQgb3V0IG9mIHdoYXQgYSByZW1vdGUgU1ZHIGltYWdlIGRlZmluZXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK2NvbnRhaW5lciBsb2NhdGlvbjogKDcsIDQzKQorRmFjZSByb2xlOiBBWFJv
bGU6IEFYQnV0dG9uCitGYWNlIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBmYWNlCitGYWNlWDogMAor
RmFjZVk6IDAKKworCitFeWUgcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorRXllIGxhYmVsOiBBWERl
c2NyaXB0aW9uOiBsZWZ0LWV5ZQorRXllWDogMTAzCitFeWVZOiAxNDgKKworCitOb3NlIHJvbGU6
IEFYUm9sZTogQVhCdXR0b24KK05vc2UgbGFiZWw6IEFYRGVzY3JpcHRpb246IG5vc2UKK05vc2VY
OiAxOTMKK05vc2VZOiAyMDYKKworCitNb3V0aCByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitNb3V0
aCBsYWJlbDogQVhEZXNjcmlwdGlvbjogc21pbGUKK01vdXRoWDogMTE1CitNb3V0aFk6IDI3NC41
CisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVu
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90
ZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8YnI+PGJyPgorCis8aW1nIHRh
YmluZGV4PSIwIiBpZD0ic3ZnLWltYWdlIiBzcmM9InJlc291cmNlcy9zdmctZmFjZS5zdmciIGFs
dD0iaW50ZXJhY3RpdmUgU1ZHIiA+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYWNjZXNzaWJpbGl0eSBl
bGVtZW50cyBjYW4gYmUgY3JlYXRlZCBvdXQgb2Ygd2hhdCBhIHJlbW90ZSBTVkcgaW1hZ2UgZGVm
aW5lcy4iKQorCisvLyBSZXR1cm4gdGhlIHBhZ2UncyByZWxhdGl2ZSBjb29yZGluYXRlcy4gSWYg
d2UgcmVseSBvbiB0aGUgeCgpIG9yIHkoKSBvZiB0aGUgYWNjZXNzaWJpbGl0eSBvYmplY3QsIHRo
ZW4KKy8vIGFjY2Vzc2liaWxpdHkgdHJhbnNmb3JtcyBhcmUgYXBwbGllZCB0aGF0IGZhaWwgYmVj
YXVzZSB0aGVyZSBpcyBubyB3aW5kb3cgYXZhaWxhYmxlCitmdW5jdGlvbiBwYWdlWChlbGVtZW50
KSB7CisgICAgcmV0dXJuIGVsZW1lbnQuY2xpY2tQb2ludFggLSBlbGVtZW50LndpZHRoLzI7Cit9
CisKK2Z1bmN0aW9uIHBhZ2VZKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jbGlja1Bv
aW50WSAtIGVsZW1lbnQuaGVpZ2h0LzI7Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2Zy1pbWFnZSIpLmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBydW5BWFRlc3QpOworfQorCitmdW5jdGlvbiBydW5BWFRlc3QoKSB7ICAgIAorICAgIHZh
ciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoInN2Zy1pbWFnZSIpOworCisgICAgdmFyIHggPSBwYWdlWChjb250YWluZXIpIC0gMTsKKyAg
ICB2YXIgeSA9IHBhZ2VZKGNvbnRhaW5lcikgLSAxOworCisgICAgZGVidWcoImNvbnRhaW5lciBs
b2NhdGlvbjogKCIgKyB4ICsgIiwgIiArIHkgKyAiKSIpOworCisgICAgdmFyIGZhY2UgPSBjb250
YWluZXIuY2hpbGRBdEluZGV4KDApOworICAgIGRlYnVnKCdGYWNlIHJvbGU6ICcgKyBmYWNlLnJv
bGUpOworICAgIGRlYnVnKCdGYWNlIGxhYmVsOiAnICsgZmFjZS5kZXNjcmlwdGlvbik7CisgICAg
ZGVidWcoJ0ZhY2VYOiAnICsgKHBhZ2VYKGZhY2UpIC0geCkpOworICAgIGRlYnVnKCdGYWNlWTog
JyArIE1hdGguYWJzKHBhZ2VZKGZhY2UpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAg
ICB2YXIgZXllID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgxKTsKKyAgICBkZWJ1ZygnRXllIHJv
bGU6ICcgKyBleWUucm9sZSk7CisgICAgZGVidWcoJ0V5ZSBsYWJlbDogJyArIGV5ZS5kZXNjcmlw
dGlvbik7CisgICAgZGVidWcoJ0V5ZVg6ICcgKyAocGFnZVgoZXllKSAtIHgpKTsKKyAgICBkZWJ1
ZygnRXllWTogJyArIE1hdGguYWJzKHBhZ2VZKGV5ZSkgLSB5KSk7CisgICAgZGVidWcoJzxicj4n
KTsKKworICAgIHZhciBub3NlID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgzKTsKKyAgICBkZWJ1
ZygnTm9zZSByb2xlOiAnICsgbm9zZS5yb2xlKTsKKyAgICBkZWJ1ZygnTm9zZSBsYWJlbDogJyAr
IG5vc2UuZGVzY3JpcHRpb24pOworICAgIGRlYnVnKCdOb3NlWDogJyArIChwYWdlWChub3NlKSAt
IHgpKTsKKyAgICBkZWJ1ZygnTm9zZVk6ICcgKyBNYXRoLmFicyhwYWdlWShub3NlKSAtIHkpKTsK
KyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIG1vdXRoID0gY29udGFpbmVyLmNoaWxkQXRJ
bmRleCg0KTsKKyAgICBkZWJ1ZygnTW91dGggcm9sZTogJyArIG1vdXRoLnJvbGUpOworICAgIGRl
YnVnKCdNb3V0aCBsYWJlbDogJyArIG1vdXRoLmRlc2NyaXB0aW9uKTsKKyAgICBkZWJ1ZygnTW91
dGhYOiAnICsgKHBhZ2VYKG1vdXRoKSAtIHgpKTsKKyAgICBkZWJ1ZygnTW91dGhZOiAnICsgTWF0
aC5hYnMocGFnZVkobW91dGgpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NjQ1KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMjYgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogU3VwcG9y
dCBlbWJlZGRlZCBTVkcgb2JqZWN0cyBpbiBBWCB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qgc2tpcHBlZCBvbiBjaHJvbWl1bSB1bnRpbCBj
bGlja1BvaW50KCkgaXMgaW1wbGVtZW50aW5nIGluIERSVC4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTIt
MDktMjYgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gRmlyc3QgcGFydCBvZiByZWJhc2VsaW5lcyBmb3IgdGhlIGZhc3QvIGRpcmVjdG9y
eS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165812</attachid>
            <date>2012-09-26 08:39:21 -0700</date>
            <delta_ts>2012-09-26 12:46:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42409</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI5NjUwKQorKysg
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjE2
OCw2ICsyMTY4LDggQEAKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBcCisJU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaCBcCiAJU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIFwKQEAg
LTUzNTAsNiArNTM1Miw3IEBACiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBcCisJ
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5NjUwKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAK
KzIwMTItMDktMjYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAg
ICAgICBBWDogU3VwcG9ydCBlbWJlZGRlZCBTVkcgb2JqZWN0cyBpbiBBWCB0cmVlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dz
IGFuIFNWRyBpbWFnZSBmcm9tIGFub3RoZXIgcmVzb3VyY2UgdG8gYmUgaG9va2VkIGludG8gdGhl
IEFYCisgICAgICAgIGhpZXJhcmNoeS4gVGhpcyBpcyBkb25lIGJ5IGNyZWF0aW5nIGFuIEFYIHdy
YXBwZXIgZm9yIHRoZSByb290IFNWRyB0aGF0IGhvbGRzIG9udG8KKyAgICAgICAgaXRzIG5hdGl2
ZSBwYXJlbnQgaW1hZ2UuIFRoZSBTVkdDaHJvbWVDbGllbnQgaXMgdGhlbiB1c2VkIHRvIGNvbm5l
Y3QgdG8gdGhpcyBTVkcgcmVzb3VyY2UuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9z
dmctcmVtb3RlLWVsZW1lbnQuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcm9tUmVuZGVyZXIpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QpOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNW
R0VsZW1lbnRIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaFJlbW90
ZVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
cmVtb3RlU1ZHUm9vdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWRkUmVtb3RlU1ZHQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyU1ZHUm9vdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlclNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290Ojp+QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdDo6cGFyZW50
T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdS
b290Lmg6IEFkZGVkLgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q6OnNldFBhcmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdDo6aXNBY2Nlc3NpYmls
aXR5UmVuZGVyU1ZHUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjp0b0FjY2Vzc2liaWxpdHlSZW5k
ZXJTVkdSb290KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgcG9zaXRpb25dKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAg
IChFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVu
dDo6aXNFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6aXNFbXB0eUNocm9tZUNsaWVudCk6Cisg
ICAgICAgIChDaHJvbWVDbGllbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50Lmg6IEFkZGVk
LgorICAgICAgICAoU1ZHSW1hZ2VDaHJvbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2VDaHJvbWVDbGllbnQ6OlNWR0ltYWdlQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50Ojppc1NWR0ltYWdlQ2hyb21lQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjppbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUNocm9tZUNsaWVudDo6Y2hyb21lRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjppbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmll
dyk6CisgICAgICAgIChXZWJDb3JlOjp0b1NWR0ltYWdlQ2hyb21lQ2xpZW50KToKKwogMjAxMi0w
OS0yNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogTk1JOiByZXBsYWNlIG1hbnVhbCBKUyBleHRlcm5hbCByZXNvdXJjZXMg
Y291bnRpbmcgd2l0aCBNZW1vcnlJbnN0cnVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjk2NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjYzMTEsNiArMjYzMTEsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZH
Um9vdC5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxl
YXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cYWNjZXNz
aWJpbGl0eVxBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCkBAIC03MzcwNSw2ICs3Mzc2MSwxMCBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHN2Z1xncmFwaGljc1xTVkdJbWFnZUNhY2hlLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcZ3JhcGhpY3NcU1ZHSW1hZ2VDaHJvbWVD
bGllbnQuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCQk8RmlsdGVyCiAJCQkJCU5hbWU9ImZp
bHRlcnMiCiAJCQkJCT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMTI5NjUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYwLDYgKzM2MCw4IEBACiAKICAgICAgICAgdmlydHVhbCBGbG9hdFNpemUg
bWluaW11bVdpbmRvd1NpemUoKSBjb25zdCB7IHJldHVybiBGbG9hdFNpemUoMTAwLCAxMDApOyB9
OwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+Q2hyb21l
Q2xpZW50KCkgeyB9CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
U1ZHUm9vdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5oIgorCisjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQWNjZXNzaWJpbGl0
eVJlbmRlclNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKSwKKyAg
ICBtX3BhcmVudCgwKQoreworfQorCitBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdDo6fkFjY2Vz
c2liaWxpdHlSZW5kZXJTVkdSb290KCkKK3sKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
UmVuZGVyU1ZHUm9vdD4gQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q6OmNyZWF0ZShSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQoreworICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KiBvYmog
PSBuZXcgQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QocmVuZGVyZXIpOworICAgIG9iai0+aW5p
dCgpOworICAgIHJldHVybiBhZG9wdFJlZihvYmopOworfQorICAgIAorQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0Cit7
CisgICAgLy8gSWYgYSBwYXJlbnQgd2FzIHNldCBiZWNhdXNlIHRoaXMgaXMgYSByZW1vdGUgU1ZH
IHJlc291cmNlLCB1c2UgdGhhdAorICAgIC8vIGJ1dCBvdGhlcndpc2UsIHdlIHNob3VsZCByZWx5
IG9uIHRoZSBzdGFuZGFyZCByZW5kZXIgdHJlZSBmb3IgdGhlIHBhcmVudC4KKyAgICBpZiAobV9w
YXJlbnQpCisgICAgICAgIHJldHVybiBtX3BhcmVudDsKKyAgICAKKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6cGFyZW50T2JqZWN0KCk7Cit9CisKKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShy
ZXZpc2lvbiAxMjk2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbXBvcnQgIkNocm9tZS5oIgorI2ltcG9ydCAiQ2hyb21l
Q2xpZW50LmgiCiAjaW1wb3J0ICJDb2xvck1hYy5oIgogI2ltcG9ydCAiQ29udGV4dE1lbnVDb250
cm9sbGVyLmgiCiAjaW1wb3J0ICJGb250LmgiCkBAIC0xNDUyLDcgKzE0NTMsOCBAQAogICAgICAg
ICAKICAgICAgICAgLy8gRmluZCB0aGUgYXBwcm9wcmlhdGUgc2Nyb2xsIHZpZXcgdG8gdXNlIHRv
IGNvbnZlcnQgdGhlIGNvbnRlbnRzIHRvIHRoZSB3aW5kb3cuCiAgICAgICAgIFNjcm9sbFZpZXcq
IHNjcm9sbFZpZXcgPSAwOwotICAgICAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudE9iamVjdCgpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IDA7
CisgICAgICAgIGZvciAocGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQ7
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmIChwYXJl
bnQtPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkgewogICAgICAgICAgICAgICAgIHNjcm9s
bFZpZXcgPSB0b0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KHBhcmVudCktPnNjcm9sbFZpZXcoKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0NjIsOCArMTQ2NCwxNSBAQAogICAgICAgICBp
ZiAoc2Nyb2xsVmlldykKICAgICAgICAgICAgIHJlY3QgPSBzY3JvbGxWaWV3LT5jb250ZW50c1Rv
Um9vdFZpZXcocmVjdCk7CiAgICAgICAgIAotICAgICAgICBpZiAobV9vYmplY3QtPnBhZ2UoKSkK
LSAgICAgICAgICAgIHBvaW50ID0gbV9vYmplY3QtPnBhZ2UoKS0+Y2hyb21lKCktPnJvb3RWaWV3
VG9TY3JlZW4ocmVjdCkubG9jYXRpb24oKTsKKyAgICAgICAgUGFnZSogcGFnZSA9IG1fb2JqZWN0
LT5wYWdlKCk7CisgICAgICAgIAorICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGVtcHR5IGNocm9t
ZSBjbGllbnQgKGxpa2UgU1ZHKSB0aGVuIHdlIHNob3VsZCB1c2UgdGhlIHBhZ2UKKyAgICAgICAg
Ly8gb2YgdGhlIHNjcm9sbCB2aWV3IHBhcmVudCB0byBoZWxwIHVzIGdldCB0byB0aGUgc2NyZWVu
IHJlY3QuCisgICAgICAgIGlmIChwYXJlbnQgJiYgcGFnZSAmJiBwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPmlzRW1wdHlDaHJvbWVDbGllbnQoKSkKKyAgICAgICAgICAgIHBhZ2UgPSBwYXJlbnQt
PnBhZ2UoKTsKKworICAgICAgICBpZiAocGFnZSkKKyAgICAgICAgICAgIHBvaW50ID0gcGFnZS0+
Y2hyb21lKCktPnJvb3RWaWV3VG9TY3JlZW4ocmVjdCkubG9jYXRpb24oKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcG9pbnQgPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEyOTY1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKK2NsYXNzIEFjY2Vzc2liaWxp
dHlSZW5kZXJTVkdSb290OwogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBGcmFtZTsKQEAgLTI0MywxNSArMjQ0LDI0IEBACiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogaW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiwgY29uc3QgSW50
UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5UGFy
ZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0OworCiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2Jq
ZWN0KikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25z
dDsKICAgICBib29sIGlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSkgY29uc3Q7CiAgICAgLy8gVGhpcyByZXR1cm5zIHRydWUgaWYgaXQncyBmb2N1
c2FibGUgYnV0IGl0J3Mgbm90IGNvbnRlbnQgZWRpdGFibGUgYW5kIGl0J3Mgbm90IGEgY29udHJv
bCBvciBBUklBIGNvbnRyb2wuCi0KKyAgICAKKyAgICBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdDsK
KyAgICB2b2lkIGRldGFjaFJlbW90ZVNWR1Jvb3QoKTsKKyAgICBBY2Nlc3NpYmlsaXR5UmVuZGVy
U1ZHUm9vdCogcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
ICAgIHZvaWQgb2Zmc2V0Qm91bmRpbmdCb3hGb3JSZW1vdGVTVkdFbGVtZW50KExheW91dFJlY3Qm
KSBjb25zdDsKKyAgICAKICAgICB2b2lkIGFkZFRleHRGaWVsZENoaWxkcmVuKCk7CiAgICAgdm9p
ZCBhZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAgdm9pZCBhZGRDYW52YXNDaGlsZHJlbigpOwog
ICAgIHZvaWQgYWRkQXR0YWNobWVudENoaWxkcmVuKCk7CisgICAgdm9pZCBhZGRSZW1vdGVTVkdD
aGlsZHJlbigpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRW
aWV3UGFyZW50cygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTI5NjUwKQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNiw3ICszMjYsOCBAQAogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZH
Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBib29sIGFjY2Vzc2liaWxpdHlP
YmplY3RDb250YWluc1RleHQoU3RyaW5nICopIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBpc0FuY2hvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwCShy
ZXZpc2lvbiAxMjk2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAiCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuY3BwIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFy
LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gMTI5NjUwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
OCArMzIsMTEgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94Lmgi
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgor
I2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CkBAIC01NCw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUg
Ik1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKQEAgLTc3LDYgKzgxLDkgQEAK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlNWR0ltYWdlLmgiCisjaW5jbHVk
ZSAiU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAj
aW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtMTIyLDYgKzEyOSw4IEBACiB7CiAgICAgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGFjaCgpOwogICAgIAorICAgIGRldGFjaFJlbW90ZVNW
R1Jvb3QoKTsKKyAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1fcmVuZGVyZXIpCiAgICAg
ICAgIG1fcmVuZGVyZXItPnNldEhhc0FYT2JqZWN0KGZhbHNlKTsKQEAgLTc5MSw2ICs4MDAsMTkg
QEAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNj
cmlwdGlvbigpOwogfQogCisvLyBUaGUgYm91bmRpbmdCb3ggZm9yIGVsZW1lbnRzIHdpdGhpbiB0
aGUgcmVtb3RlIFNWRyBlbGVtZW50IG5lZWRzIHRvIGJlIG9mZnNldCBieSBpdHMgcG9zaXRpb24K
Ky8vIHdpdGhpbiB0aGUgcGFyZW50IHBhZ2UsIG90aGVyd2lzZSB0aGV5IGFyZSBpbiByZWxhdGl2
ZSBjb29yZGluYXRlcyBvbmx5Lgordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvZmZz
ZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQoTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QK
K3sKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgp
OyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgaWYg
KHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdCgpKSB7CisgICAgICAgICAgICBM
YXlvdXRSZWN0IHBhcmVudEJvdW5kaW5nQm94ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKS0+Ym91
bmRpbmdCb3hSZWN0KCk7CisgICAgICAgICAgICByZWN0LnNldFgocmVjdC54KCkgKyBwYXJlbnRC
b3VuZGluZ0JveC54KCkpOworICAgICAgICAgICAgcmVjdC5zZXRZKHJlY3QueSgpICsgcGFyZW50
Qm91bmRpbmdCb3gueSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKyAgICAKIExheW91dFJlY3Qg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KCkgY29uc3QKIHsKICAg
ICBSZW5kZXJPYmplY3QqIG9iaiA9IG1fcmVuZGVyZXI7CkBAIC04MTMsNiArODM1LDggQEAKICAg
ICAKICAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IGJvdW5kaW5nQm94Rm9yUXVhZHMob2JqLCBxdWFk
cyk7CiAKKyAgICBvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQocmVzdWx0KTsK
KyAgICAKICAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgd2ViIGFyZWEgc2hvdWxkIGJlIHRoZSBjb250
ZW50IHNpemUsIG5vdCB0aGUgY2xpcHBlZCBzaXplLgogICAgIGlmIChpc1dlYkFyZWEoKSAmJiBv
YmotPmZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgcmVzdWx0LnNldFNpemUob2JqLT5mcmFtZSgp
LT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKQEAgLTIxMzIsNyArMjE1NiwyNiBAQAogICAgIAog
ICAgIHJldHVybiAwOwogfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQp
IGNvbnN0Cit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3RlID0gcmVtb3RlU1ZHUm9v
dEVsZW1lbnQoKTsKKyAgICBpZiAoIXJlbW90ZSkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgCisg
ICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UG9p
bnQgb2Zmc2V0UG9pbnQocG9pbnQueCgpIC0gcGFyZW50UmVjdC5sb2NhdGlvbigpLngoKSwgcG9p
bnQueSgpIC0gcGFyZW50UmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgcmV0dXJuIHJlbW90ZS0+
YWNjZXNzaWJpbGl0eUhpdFRlc3Qob2Zmc2V0UG9pbnQpOworfQorCitBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRl
c3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIGlmIChpc1NWR0ltYWdlKCkp
CisgICAgICAgIHJldHVybiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChwb2ludCk7CisgICAgCisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dChwb2ludCk7Cit9CisgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5oYXNMYXllcigpKQpA
QCAtMjM3NCw2ICsyNDE3LDggQEAKICAgICBpZiAoY3NzQm94ICYmIGNzc0JveC0+aXNJbWFnZSgp
KSB7CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQogICAg
ICAgICAgICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8gUG9wVXBCdXR0b25Sb2xlIDogQnV0dG9u
Um9sZTsKKyAgICAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBHcm91
cFJvbGU7CiAgICAgICAgIHJldHVybiBJbWFnZVJvbGU7CiAgICAgfQogICAgIApAQCAtMjY3Myw3
ICsyNzE4LDc5IEBACiAgICAgYXhTcGluQnV0dG9uLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgbV9j
aGlsZHJlbi5hcHBlbmQoYXhTcGluQnV0dG9uKTsKIH0KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNTVkdJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlbW90ZVNW
R1Jvb3RFbGVtZW50KCk7Cit9CisgICAgCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmRldGFjaFJlbW90ZVNWR1Jvb3QoKQoreworICAgIGlmIChBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZH
Um9vdCogcm9vdCA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KCkpCisgICAgICAgIHJvb3QtPnNldFBh
cmVudCgwKTsKK30KIAorQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3QKK3sKKyNpZiBFTkFCTEUo
U1ZHKQorICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBSZW5kZXJJbWFnZSogcmVuZGVySW1hZ2Ug
PSB0b1JlbmRlckltYWdlKG1fcmVuZGVyZXIpOworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IHJlbmRlckltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVkSW1hZ2UpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5p
bWFnZSgpOworICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc1NWR0ltYWdlKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIFNWR0ltYWdlKiBzdmdJbWFnZSA9IHN0YXRpY19jYXN0PFNW
R0ltYWdlKj4oaW1hZ2UpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3ZnSW1hZ2UtPmZy
YW1lVmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gMDsKKyAgICBG
cmFtZSogZnJhbWUgPSBmcmFtZVZpZXctPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgCisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxTVkdEb2N1bWVudCo+KGZyYW1lLT5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKTsK
KyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyUm9vdCA9IHJvb3RFbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghcmVu
ZGVyZXJSb290KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiByb290U1ZHT2JqZWN0ID0gZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KTsKKworICAgIC8vIEluIG9yZGVyIHRvIGNvbm5lY3Qg
dGhlIEFYIGhpZXJhcmNoeSBmcm9tIHRoZSBTVkcgcm9vdCBlbGVtZW50IGZyb20gdGhlIGxvYWRl
ZCByZXNvdXJjZQorICAgIC8vIHRoZSBwYXJlbnQgbXVzdCBiZSBzZXQsIGJlY2F1c2UgdGhlcmUn
cyBubyBvdGhlciB3YXkgdG8gZ2V0IGJhY2sgdG8gd2hvIGNyZWF0ZWQgdGhlIGltYWdlLgorICAg
IEFTU0VSVChyb290U1ZHT2JqZWN0ICYmIHJvb3RTVkdPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJl
bmRlclNWR1Jvb3QoKSk7CisgICAgaWYgKCFyb290U1ZHT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlS
ZW5kZXJTVkdSb290KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiB0b0Fj
Y2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KHJvb3RTVkdPYmplY3QpOworI2Vsc2UKKyAgICByZXR1
cm4gMDsKKyNlbmRpZgorfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRSZW1vdGVTVkdDaGlsZHJlbigpCit7CisgICAgQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Qq
IHJvb3QgPSByZW1vdGVTVkdSb290RWxlbWVudCgpOworICAgIGlmICghcm9vdCkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIHJvb3QtPnNldFBhcmVudCh0aGlzKTsKKyAgICAKKyAgICBpZiAo
cm9vdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHJvb3QtPmNoaWxkcmVuKCk7CisgICAgICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRy
ZW5baV0pOworICAgIH0gZWxzZQorICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb290KTsKK30K
Kwogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDYW52YXNDaGlsZHJlbigpCiB7
CiAgICAgaWYgKCFub2RlKCkgfHwgIW5vZGUoKS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKQpAQCAt
Mjc1MCw3ICsyODY3LDggQEAKICAgICBhZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAgYWRkVGV4
dEZpZWxkQ2hpbGRyZW4oKTsKICAgICBhZGRDYW52YXNDaGlsZHJlbigpOwotCisgICAgYWRkUmVt
b3RlU1ZHQ2hpbGRyZW4oKTsKKyAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdXBkYXRlQXR0
YWNobWVudFZpZXdQYXJlbnRzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJTVkdSb290LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNj
ZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3RfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZH
Um9vdF9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QgOiBwdWJs
aWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgZXhw
bGljaXQgQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QoUmVuZGVyT2JqZWN0Kik7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3Q+IGNyZWF0
ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9v
dCgpOworICAgIAorICAgIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVu
dCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBtX3BhcmVudDsKKyAgICAKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxp
dHlSZW5kZXJTVkdSb290KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKworaW5saW5lIEFj
Y2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KiB0b0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290KEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmpl
Y3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290Kj4ob2JqZWN0KTsKK30KKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9v
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAJKHJldmlzaW9uIDEyOTY1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTbGlkZXIuaCIKQEAgLTI0OSw2ICsyNTAs
MTEgQEAKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNyZWF0ZShy
ZW5kZXJlcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKHJlbmRlcmVyLT5p
c1NWR1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290Ojpj
cmVhdGUocmVuZGVyZXIpOworI2VuZGlmCisgICAgCiAgICAgaWYgKHJlbmRlcmVyLT5pc0JveE1v
ZGVsT2JqZWN0KCkpIHsKICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNzc0JveCA9IHRv
UmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpOwogICAgICAgICBpZiAoY3NzQm94LT5pc0xp
c3RCb3goKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyOTY1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTg2MCw2ICsxODYwLDgg
QEAKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGlj
YXRvci5oJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaCcsCisgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyU1ZHUm9vdC5jcHAnLAorICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlclNWR1Jvb3QuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyLmNwcCcsCkBAIC02Mjk4LDYgKzYzMDAsNyBAQAogICAgICAgICAgICAgJ3N2
Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNhY2hlLmgnLAorICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVu
dC5oJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwJywKICAgICAgICAg
ICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxMjk2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0NCArMzEsMTcgQEAK
ICNpbmNsdWRlICJTVkdJbWFnZS5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKLSNp
bmNsdWRlICJFbXB0eUNsaWVudHMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTVkdJ
bWFnZUNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ltYWdlQ2hy
b21lQ2xpZW50IDogcHVibGljIEVtcHR5Q2hyb21lQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTVkdJbWFnZUNocm9tZUNsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
cHVibGljOgotICAgIFNWR0ltYWdlQ2hyb21lQ2xpZW50KFNWR0ltYWdlKiBpbWFnZSkKLSAgICAg
ICAgOiBtX2ltYWdlKGltYWdlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNT
VkdJbWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBTVkdJbWFn
ZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9Ci0KLXByaXZhdGU6Ci0gICAgdmly
dHVhbCB2b2lkIGNocm9tZURlc3Ryb3llZCgpCi0gICAgewotICAgICAgICBtX2ltYWdlID0gMDsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXco
Y29uc3QgSW50UmVjdCYgciwgYm9vbCkKLSAgICB7Ci0gICAgICAgIC8vIElmIG1faW1hZ2UtPm1f
cGFnZSBpcyBudWxsLCB3ZSdyZSBiZWluZyBkZXN0cnVjdGVkLCBkb24ndCBmaXJlIGNoYW5nZWRJ
blJlY3QoKSBpbiB0aGF0IGNhc2UuCi0gICAgICAgIGlmIChtX2ltYWdlICYmIG1faW1hZ2UtPmlt
YWdlT2JzZXJ2ZXIoKSAmJiBtX2ltYWdlLT5tX3BhZ2UpCi0gICAgICAgICAgICBtX2ltYWdlLT5p
bWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QobV9pbWFnZSwgcik7Ci0gICAgfQotCi0gICAg
U1ZHSW1hZ2UqIG1faW1hZ2U7Ci19OwotCiBTVkdJbWFnZTo6U1ZHSW1hZ2UoSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU1ZHSW1hZ2VDaHJvbWVD
bGllbnRfaAorI2RlZmluZSBTVkdJbWFnZUNocm9tZUNsaWVudF9oCisKKyNpZiBFTkFCTEUoU1ZH
KQorCisjaW5jbHVkZSAiRW1wdHlDbGllbnRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQgOiBwdWJsaWMgRW1wdHlDaHJvbWVDbGllbnQgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR0ltYWdlQ2hyb21lQ2xpZW50KTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU1ZHSW1hZ2VDaHJvbWVDbGllbnQoU1ZHSW1h
Z2UqIGltYWdlKQorICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorICAgIAorICAg
IHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIFNWR0ltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3llZCgpCisgICAgewor
ICAgICAgICBtX2ltYWdlID0gMDsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmIHIsIGJvb2wpCisgICAgewor
ICAgICAgICAvLyBJZiBtX2ltYWdlLT5tX3BhZ2UgaXMgbnVsbCwgd2UncmUgYmVpbmcgZGVzdHJ1
Y3RlZCwgZG9uJ3QgZmlyZSBjaGFuZ2VkSW5SZWN0KCkgaW4gdGhhdCBjYXNlLgorICAgICAgICBp
ZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkgJiYgbV9pbWFnZS0+bV9wYWdl
KQorICAgICAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpLT5jaGFuZ2VkSW5SZWN0KG1f
aW1hZ2UsIHIpOworICAgIH0KKyAgICAKKyAgICBTVkdJbWFnZSogbV9pbWFnZTsKK307CisKK2lu
bGluZSBTVkdJbWFnZUNocm9tZUNsaWVudCogdG9TVkdJbWFnZUNocm9tZUNsaWVudChDaHJvbWVD
bGllbnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIWNsaWVudCB8fCBjbGllbnQtPmlzU1ZHSW1h
Z2VDaHJvbWVDbGllbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0ltYWdlQ2hyb21l
Q2xpZW50Kj4oY2xpZW50KTsKK30KKyAgICAKK30gCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQor
I2VuZGlmIC8vIFNWR0ltYWdlQ2hyb21lQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxMjk2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtOTgxLDYgKzk4MSw3IEBACiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKKyAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290LmNwcAog
ICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAKICAgICBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjk2NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1NDQsNiArNDU0NCwxMCBAQAogCQlBQUI2MDU0RjE1ODc0QzU4MDA3QjUwMzEgLyog
SW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQUI2MDU0QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNl
LmggKi87IH07CiAJCUFBQjYwNTUwMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1v
ZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
QUI2MDU0QzE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwICovOyB9
OwogCQlBQUI2MDU1MTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTREMTU4
NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICovOyB9OworCQlBQUMwOEND
QzE1Rjg2REI0MDBGMUUxODggLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzA4Q0NBMTVGODZEQjQwMEYx
RTE4OCAvKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oICovOyB9OworCQlBQUMwOENFRjE1Rjkz
M0Q2MDBGMUUxODggLyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzA4Q0VEMTVGOTMzRDYwMEYxRTE4OCAvKiBT
VkdJbWFnZUNocm9tZUNsaWVudC5oICovOyB9OworCQlBQUMwOENGMjE1Rjk0MUZEMDBGMUUxODgg
LyogQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFDMDhDRjAxNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vz
c2liaWxpdHlSZW5kZXJTVkdSb290LmNwcCAqLzsgfTsKKwkJQUFDMDhDRjMxNUY5NDFGRDAwRjFF
MTg4IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUMwOENGMTE1Rjk0MUZDMDBGMUUxODggLyogQWNj
ZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaCAqLzsgfTsKIAkJQUFENzY2RUIxNTdFNTAyRjAwRTg1
NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAgKi87IH07CiAJCUFBRDc2NkVDMTU3RTUwMkYwMEU4NTQyMyAvKiBJ
bnNwZWN0b3JDYW52YXNBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0Fn
ZW50LmggKi87IH07CiAJCUFBRDc2NkVEMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52
YXNJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNJbnN0
cnVtZW50YXRpb24uaCAqLzsgfTsKQEAgLTExNjgyLDYgKzExNjg2LDExIEBACiAJCUFBQjYwNTRC
MTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUFBQjYwNTRDMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1v
ZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNj
cmlwdE1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQjYwNTREMTU4
NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBQUMwOENDOTE1Rjg2REI0MDBGMUUxODggLyogQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUMw
OENDQTE1Rjg2REI0MDBGMUUxODggLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNW
R0ltYWdlQ2hyb21lQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0ltYWdlQ2hyb21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQzA4
Q0YwMTVGOTQxRkMwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZH
Um9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQzA4Q0YxMTVGOTQxRkMw
MEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UmVuZGVyU1ZHUm9vdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQUQ3NjZFODE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUQ3
NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3Rv
ckNhbnZhc0luc3RydW1lbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0ODQxLDYgKzE0ODUwLDggQEAKIAkJCQlBNDA5Qzk4MzExNkQwREREMDA3MTk3
QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmggKi8sCiAJCQkJMjk4MUNBQTYx
MzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovLAogCQkJ
CTI5QTgxMjFCMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmgg
Ki8sCisJCQkJQUFDMDhDRjAxNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJT
VkdSb290LmNwcCAqLywKKwkJCQlBQUMwOENGMTE1Rjk0MUZDMDBGMUUxODggLyogQWNjZXNzaWJp
bGl0eVJlbmRlclNWR1Jvb3QuaCAqLywKIAkJCQkyOTgxQ0FBNzEzMTgyMkVDMDBEMTJGMkEgLyog
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAgKi8sCiAJCQkJOTNDNEY2RTkxMTA4RjlBNTAwOTlE
MERCIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCAqLywKIAkJCQkyOTgxQ0FBODEzMTgyMkVD
MDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwICovLApAQCAtMTk3NjAsNiAr
MTk3NzEsNyBAQAogCQkJCUIyNTU5OTBDMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdJbWFnZS5oICov
LAogCQkJCTA4Rjg1OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCAqLywK
IAkJCQkwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovLAorCQkJ
CUFBQzA4Q0VEMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0yNTU3MSw2ICsyNTU4Myw4IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhT
TFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgw
MDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUFDMDhDRUYxNUY5MzNE
NjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlB
QUMwOENGMzE1Rjk0MUZEMDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVJlbmRlclNWR1Jvb3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9w
ZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY3QjRBNjYxNUZGNkQ2QTAwNkI1RjIyIC8q
IFBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFE
NzJGNjE1RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yODY3MSw2ICsyODY4NSw3IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8q
IFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEz
N0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUFDMDhD
RjIxNUY5NDFGRDAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJTVkdSb290LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUU0N0UyNzY4MTYwMzZFREMwMEVFMkFGQiAvKiBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMUQxMUJGMTVGRjM3MjAw
MDI2RTkwOCAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lv
biAxMjk2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNiw2ICsyMDYsOCBAQAogICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2
ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSBPVkVSUklERSB7IH0KICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFdlYkNvcmU6OlNjcm9sbERpcmVj
dGlvbikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNF
bXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIGNsYXNzIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZp
c2lvbiAxMjkyNTQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMzk0LDYgKzEzOTQsNyBAQAogY3JidWcuY29tLzEw
MzIyIGFjY2Vzc2liaWxpdHkvdmlzaWJsZS1lbGVtZW50cy5odG1sIFsgU2tpcCBdCiAKIHdlYmtp
dC5vcmcvYi85NzM1OSBhY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzk3MzU5IGFjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi83MzkxMiBhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtdGV4
dC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi83MzkxMiBhY2Nlc3NpYmlsaXR5L2FyaWEt
Y2hlY2tib3gtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVt
ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorCisKKworVGhp
cyB0ZXN0IGVuc3VyZXMgdGhhdCBhY2Nlc3NpYmlsaXR5IGVsZW1lbnRzIGNhbiBiZSBjcmVhdGVk
IG91dCBvZiB3aGF0IGEgcmVtb3RlIFNWRyBpbWFnZSBkZWZpbmVzLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitjb250YWluZXIgbG9jYXRpb246ICg3LCA0MykKK0ZhY2Ugcm9sZTogQVhSb2xl
OiBBWEJ1dHRvbgorRmFjZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogZmFjZQorRmFjZVg6IDAKK0Zh
Y2VZOiAwCisKKworRXllIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK0V5ZSBsYWJlbDogQVhEZXNj
cmlwdGlvbjogbGVmdC1leWUKK0V5ZVg6IDEwMworRXllWTogMTQ4CisKKworTm9zZSByb2xlOiBB
WFJvbGU6IEFYQnV0dG9uCitOb3NlIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBub3NlCitOb3NlWDog
MTkzCitOb3NlWTogMjA2CisKKworTW91dGggcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorTW91dGgg
bGFiZWw6IEFYRGVzY3JpcHRpb246IHNtaWxlCitNb3V0aFg6IDExNQorTW91dGhZOiAyNzQuNQor
CisKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUt
ZWxlbWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9z
dmctcmVtb3RlLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPGJyPjxicj4KKworPGltZyB0YWJp
bmRleD0iMCIgaWQ9InN2Zy1pbWFnZSIgc3JjPSJyZXNvdXJjZXMvc3ZnLWZhY2Uuc3ZnIiBhbHQ9
ImludGVyYWN0aXZlIFNWRyIgPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGFjY2Vzc2liaWxpdHkgZWxl
bWVudHMgY2FuIGJlIGNyZWF0ZWQgb3V0IG9mIHdoYXQgYSByZW1vdGUgU1ZHIGltYWdlIGRlZmlu
ZXMuIikKKworLy8gUmV0dXJuIHRoZSBwYWdlJ3MgcmVsYXRpdmUgY29vcmRpbmF0ZXMuIElmIHdl
IHJlbHkgb24gdGhlIHgoKSBvciB5KCkgb2YgdGhlIGFjY2Vzc2liaWxpdHkgb2JqZWN0LCB0aGVu
CisvLyBhY2Nlc3NpYmlsaXR5IHRyYW5zZm9ybXMgYXJlIGFwcGxpZWQgdGhhdCBmYWlsIGJlY2F1
c2UgdGhlcmUgaXMgbm8gd2luZG93IGF2YWlsYWJsZQorZnVuY3Rpb24gcGFnZVgoZWxlbWVudCkg
eworICAgIHJldHVybiBlbGVtZW50LmNsaWNrUG9pbnRYIC0gZWxlbWVudC53aWR0aC8yOworfQor
CitmdW5jdGlvbiBwYWdlWShlbGVtZW50KSB7CisgICAgcmV0dXJuIGVsZW1lbnQuY2xpY2tQb2lu
dFkgLSBlbGVtZW50LmhlaWdodC8yOworfQorCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdmctaW1hZ2UiKS5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgcnVuQVhUZXN0KTsKK30KKworZnVuY3Rpb24gcnVuQVhUZXN0KCkgeyAgICAKKyAgICB2YXIg
Y29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJzdmctaW1hZ2UiKTsKKworICAgIHZhciB4ID0gcGFnZVgoY29udGFpbmVyKSAtIDE7CisgICAg
dmFyIHkgPSBwYWdlWShjb250YWluZXIpIC0gMTsKKworICAgIGRlYnVnKCJjb250YWluZXIgbG9j
YXRpb246ICgiICsgeCArICIsICIgKyB5ICsgIikiKTsKKworICAgIHZhciBmYWNlID0gY29udGFp
bmVyLmNoaWxkQXRJbmRleCgwKTsKKyAgICBkZWJ1ZygnRmFjZSByb2xlOiAnICsgZmFjZS5yb2xl
KTsKKyAgICBkZWJ1ZygnRmFjZSBsYWJlbDogJyArIGZhY2UuZGVzY3JpcHRpb24pOworICAgIGRl
YnVnKCdGYWNlWDogJyArIChwYWdlWChmYWNlKSAtIHgpKTsKKyAgICBkZWJ1ZygnRmFjZVk6ICcg
KyBNYXRoLmFicyhwYWdlWShmYWNlKSAtIHkpKTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAg
dmFyIGV5ZSA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSk7CisgICAgZGVidWcoJ0V5ZSByb2xl
OiAnICsgZXllLnJvbGUpOworICAgIGRlYnVnKCdFeWUgbGFiZWw6ICcgKyBleWUuZGVzY3JpcHRp
b24pOworICAgIGRlYnVnKCdFeWVYOiAnICsgKHBhZ2VYKGV5ZSkgLSB4KSk7CisgICAgZGVidWco
J0V5ZVk6ICcgKyBNYXRoLmFicyhwYWdlWShleWUpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7
CisKKyAgICB2YXIgbm9zZSA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMyk7CisgICAgZGVidWco
J05vc2Ugcm9sZTogJyArIG5vc2Uucm9sZSk7CisgICAgZGVidWcoJ05vc2UgbGFiZWw6ICcgKyBu
b3NlLmRlc2NyaXB0aW9uKTsKKyAgICBkZWJ1ZygnTm9zZVg6ICcgKyAocGFnZVgobm9zZSkgLSB4
KSk7CisgICAgZGVidWcoJ05vc2VZOiAnICsgTWF0aC5hYnMocGFnZVkobm9zZSkgLSB5KSk7Cisg
ICAgZGVidWcoJzxicj4nKTsKKworICAgIHZhciBtb3V0aCA9IGNvbnRhaW5lci5jaGlsZEF0SW5k
ZXgoNCk7CisgICAgZGVidWcoJ01vdXRoIHJvbGU6ICcgKyBtb3V0aC5yb2xlKTsKKyAgICBkZWJ1
ZygnTW91dGggbGFiZWw6ICcgKyBtb3V0aC5kZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ01vdXRo
WDogJyArIChwYWdlWChtb3V0aCkgLSB4KSk7CisgICAgZGVidWcoJ01vdXRoWTogJyArIE1hdGgu
YWJzKHBhZ2VZKG1vdXRoKSAtIHkpKTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgd2luZG93
LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTY0NSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA5LTI2ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQg
ZW1iZWRkZWQgU1ZHIG9iamVjdHMgaW4gQVggdHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHNraXBwZWQgb24gY2hyb21pdW0gdW50aWwgY2xp
Y2tQb2ludCgpIGlzIGltcGxlbWVudGluZyBpbiBEUlQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTA5
LTI2ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEZpcnN0IHBhcnQgb2YgcmViYXNlbGluZXMgZm9yIHRoZSBmYXN0LyBkaXJlY3Rvcnku
Cg==
</data>
<flag name="commit-queue"
          id="177975"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165856</attachid>
            <date>2012-09-26 12:46:49 -0700</date>
            <delta_ts>2012-09-26 15:33:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42672</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cwkocmV2aXNpb24gMTI5Njg3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTM5Miw2ICsxMzkyLDcgQEAKIGNyYnVn
LmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtZWxlbWVudHMuaHRtbCBbIFNraXAgXQog
CiB3ZWJraXQub3JnL2IvOTczNTkgYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi85NzM1OSBhY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNzM5MTIgYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNr
Ym94LXRleHQuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvNzM5MTIgYWNjZXNzaWJpbGl0
eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUt
ZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1v
dGUtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKwor
CisKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYWNjZXNzaWJpbGl0eSBlbGVtZW50cyBjYW4gYmUg
Y3JlYXRlZCBvdXQgb2Ygd2hhdCBhIHJlbW90ZSBTVkcgaW1hZ2UgZGVmaW5lcy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorY29udGFpbmVyIGxvY2F0aW9uOiAoNywgNDMpCitGYWNlIHJvbGU6
IEFYUm9sZTogQVhCdXR0b24KK0ZhY2UgbGFiZWw6IEFYRGVzY3JpcHRpb246IGZhY2UKK0ZhY2VY
OiAwCitGYWNlWTogMAorCisKK0V5ZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitFeWUgbGFiZWw6
IEFYRGVzY3JpcHRpb246IGxlZnQtZXllCitFeWVYOiAxMDMKK0V5ZVk6IDE0OAorCisKK05vc2Ug
cm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorTm9zZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogbm9zZQor
Tm9zZVg6IDE5MworTm9zZVk6IDIwNgorCisKK01vdXRoIHJvbGU6IEFYUm9sZTogQVhCdXR0b24K
K01vdXRoIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBzbWlsZQorTW91dGhYOiAxMTUKK01vdXRoWTog
Mjc0LjUKKworCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1l
bGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmct
cmVtb3RlLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxicj48YnI+CisKKzxp
bWcgdGFiaW5kZXg9IjAiIGlkPSJzdmctaW1hZ2UiIHNyYz0icmVzb3VyY2VzL3N2Zy1mYWNlLnN2
ZyIgYWx0PSJpbnRlcmFjdGl2ZSBTVkciID4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhY2Nlc3NpYmls
aXR5IGVsZW1lbnRzIGNhbiBiZSBjcmVhdGVkIG91dCBvZiB3aGF0IGEgcmVtb3RlIFNWRyBpbWFn
ZSBkZWZpbmVzLiIpCisKKy8vIFJldHVybiB0aGUgcGFnZSdzIHJlbGF0aXZlIGNvb3JkaW5hdGVz
LiBJZiB3ZSByZWx5IG9uIHRoZSB4KCkgb3IgeSgpIG9mIHRoZSBhY2Nlc3NpYmlsaXR5IG9iamVj
dCwgdGhlbgorLy8gYWNjZXNzaWJpbGl0eSB0cmFuc2Zvcm1zIGFyZSBhcHBsaWVkIHRoYXQgZmFp
bCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdpbmRvdyBhdmFpbGFibGUKK2Z1bmN0aW9uIHBhZ2VYKGVs
ZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jbGlja1BvaW50WCAtIGVsZW1lbnQud2lkdGgv
MjsKK30KKworZnVuY3Rpb24gcGFnZVkoZWxlbWVudCkgeworICAgIHJldHVybiBlbGVtZW50LmNs
aWNrUG9pbnRZIC0gZWxlbWVudC5oZWlnaHQvMjsKK30KKworaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnLWltYWdlIikuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIHJ1bkFYVGVzdCk7Cit9CisKK2Z1bmN0aW9uIHJ1bkFYVGVzdCgpIHsgICAgCisg
ICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgic3ZnLWltYWdlIik7CisKKyAgICB2YXIgeCA9IHBhZ2VYKGNvbnRhaW5lcikgLSAx
OworICAgIHZhciB5ID0gcGFnZVkoY29udGFpbmVyKSAtIDE7CisKKyAgICBkZWJ1ZygiY29udGFp
bmVyIGxvY2F0aW9uOiAoIiArIHggKyAiLCAiICsgeSArICIpIik7CisKKyAgICB2YXIgZmFjZSA9
IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7CisgICAgZGVidWcoJ0ZhY2Ugcm9sZTogJyArIGZh
Y2Uucm9sZSk7CisgICAgZGVidWcoJ0ZhY2UgbGFiZWw6ICcgKyBmYWNlLmRlc2NyaXB0aW9uKTsK
KyAgICBkZWJ1ZygnRmFjZVg6ICcgKyAocGFnZVgoZmFjZSkgLSB4KSk7CisgICAgZGVidWcoJ0Zh
Y2VZOiAnICsgTWF0aC5hYnMocGFnZVkoZmFjZSkgLSB5KSk7CisgICAgZGVidWcoJzxicj4nKTsK
KworICAgIHZhciBleWUgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDEpOworICAgIGRlYnVnKCdF
eWUgcm9sZTogJyArIGV5ZS5yb2xlKTsKKyAgICBkZWJ1ZygnRXllIGxhYmVsOiAnICsgZXllLmRl
c2NyaXB0aW9uKTsKKyAgICBkZWJ1ZygnRXllWDogJyArIChwYWdlWChleWUpIC0geCkpOworICAg
IGRlYnVnKCdFeWVZOiAnICsgTWF0aC5hYnMocGFnZVkoZXllKSAtIHkpKTsKKyAgICBkZWJ1Zygn
PGJyPicpOworCisgICAgdmFyIG5vc2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDMpOworICAg
IGRlYnVnKCdOb3NlIHJvbGU6ICcgKyBub3NlLnJvbGUpOworICAgIGRlYnVnKCdOb3NlIGxhYmVs
OiAnICsgbm9zZS5kZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ05vc2VYOiAnICsgKHBhZ2VYKG5v
c2UpIC0geCkpOworICAgIGRlYnVnKCdOb3NlWTogJyArIE1hdGguYWJzKHBhZ2VZKG5vc2UpIC0g
eSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIgbW91dGggPSBjb250YWluZXIuY2hp
bGRBdEluZGV4KDQpOworICAgIGRlYnVnKCdNb3V0aCByb2xlOiAnICsgbW91dGgucm9sZSk7Cisg
ICAgZGVidWcoJ01vdXRoIGxhYmVsOiAnICsgbW91dGguZGVzY3JpcHRpb24pOworICAgIGRlYnVn
KCdNb3V0aFg6ICcgKyAocGFnZVgobW91dGgpIC0geCkpOworICAgIGRlYnVnKCdNb3V0aFk6ICcg
KyBNYXRoLmFicyhwYWdlWShtb3V0aCkgLSB5KSk7CisgICAgZGVidWcoJzxicj4nKTsKKworICAg
IHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk2ODgpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0y
NiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBT
dXBwb3J0IGVtYmVkZGVkIFNWRyBvYmplY3RzIGluIEFYIHRyZWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBza2lwcGVkIG9uIGNocm9taXVtIHVu
dGlsIGNsaWNrUG9pbnQoKSBpcyBpbXBsZW1lbnRlZCBpbiBEUlQuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAy
MDEyLTA5LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CiAKICAgICAgICAgW0VGTF0gVm9sdW1lIGJ1dHRvbiBzaG91bGQgbm90IGJlIHNob3duIGZvciB2
aWRlb3Mgd2l0aG91dCBhdWRpbwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjMsNiArMjYzLDcgQEAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
QWNjZXNzaWJpbGl0eVJvbGVUb2dnbGVCdXR0b24sIFRvZ2dsZUJ1dHRvblJvbGUpOwogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUNhbnZhcywgQ2FudmFz
Um9sZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xl
TGVnZW5kLCBMZWdlbmRSb2xlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNj
ZXNzaWJpbGl0eVJvbGVTVkdSb290LCBTVkdSb290Um9sZSk7CiAKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVuY2FjaGVkLCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6VU5DQUNIRUQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6SWRsZSwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OklETEUpOwpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3Np
YmlsaXR5Um9sZS5oCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiAr
MTI1LDcgQEAKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVNwbGl0dGVyLAogICAgIFdlYkFjY2Vz
c2liaWxpdHlSb2xlU3RhdGljVGV4dCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVN5c3RlbVdp
ZGUsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTVkdSb290LAogICAgIFdlYkFjY2Vzc2liaWxp
dHlSb2xlVGFiR3JvdXAsCiAgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVUYWJMaXN0LAogICAgIFdl
YkFjY2Vzc2liaWxpdHlSb2xlVGFiUGFuZWwsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNzYsNiArMjE3Niw4IEBACiAJU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmggXAorCVNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgXApA
QCAtNTM1MCw2ICs1MzUyLDcgQEAKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJH
cmFkaWVudEF0dHJpYnV0ZXMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk2ODgpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MSBA
QAorMjAxMi0wOS0yNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisg
ICAgICAgIEFYOiBTdXBwb3J0IGVtYmVkZGVkIFNWRyBvYmplY3RzIGluIEFYIHRyZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbGxv
d3MgYW4gU1ZHIGltYWdlIGZyb20gYW5vdGhlciByZXNvdXJjZSB0byBiZSBob29rZWQgaW50byB0
aGUgQVgKKyAgICAgICAgaGllcmFyY2h5LiBUaGlzIGlzIGRvbmUgYnkgY3JlYXRpbmcgYW4gQVgg
d3JhcHBlciBmb3IgdGhlIHJvb3QgU1ZHIHRoYXQgaG9sZHMgb250bworICAgICAgICBpdHMgbmF0
aXZlIHBhcmVudCBpbWFnZS4gVGhlIFNWR0Nocm9tZUNsaWVudCBpcyB0aGVuIHVzZWQgdG8gY29u
bmVjdCB0byB0aGlzIFNWRyByZXNvdXJjZS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5
L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyb21SZW5kZXJlcik6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6Om9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxl
bWVudEhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzU1ZHSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0YWNoUmVtb3RlU1ZH
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1v
dGVTVkdSb290RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6QWNj
ZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jv
b3Q6On5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U1ZHUm9vdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdS
b290OjpwYXJlbnRPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNWR1Jvb3QuaDogQWRkZWQuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6c2V0UGFyZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdSb290Ojppc0FjY2Vzc2liaWxpdHlTVkdSb290KToK
KyAgICAgICAgKFdlYkNvcmU6OnRvQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwb3NpdGlvbl0pOgorICAgICAgICAo
Y3JlYXRlQWNjZXNzaWJpbGl0eVJvbGVNYXApOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKEVtcHR5Q2hyb21lQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVt
cHR5Q2hyb21lQ2xpZW50Ojppc0VtcHR5Q2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojppc0VtcHR5Q2hy
b21lQ2xpZW50KToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVD
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0ltYWdlQ2hy
b21lQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjpTVkdJ
bWFnZUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVu
dDo6aXNTVkdJbWFnZUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNo
cm9tZUNsaWVudDo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGll
bnQ6OmNocm9tZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNs
aWVudDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
dG9TVkdJbWFnZUNocm9tZUNsaWVudCk6CisKIDIwMTItMDktMjYgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBWb2x1bWUgYnV0
dG9uIHNob3VsZCBub3QgYmUgc2hvd24gZm9yIHZpZGVvcyB3aXRob3V0IGF1ZGlvCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24g
MTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MzExLDYgKzI2MzExLDYyIEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJp
bGl0eVNWR1Jvb3QuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlTVkdSb290Lmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGFjY2Vz
c2liaWxpdHlcQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgpAQCAtNzM3MDUsNiArNzM3NjEsMTAgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxzdmdcZ3JhcGhpY3NcU1ZHSW1hZ2VDYWNoZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXFNWR0ltYWdlQ2hyb21l
Q2xpZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CiAJCQkJPEZpbHRlcgogCQkJCQlOYW1lPSJm
aWx0ZXJzIgogCQkJCQk+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2MCw2ICszNjAsOCBAQAogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRTaXpl
IG1pbmltdW1XaW5kb3dTaXplKCkgY29uc3QgeyByZXR1cm4gRmxvYXRTaXplKDEwMCwgMTAwKTsg
fTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfkNocm9t
ZUNsaWVudCgpIHsgfQogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0FjY2Vzc2liaWxpdHlTVkdSb290OjpBY2Nlc3NpYmlsaXR5
U1ZHUm9vdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdChyZW5kZXJlciksCisgICAgbV9wYXJlbnQoMCkKK3sKK30KKworQWNjZXNzaWJpbGl0
eVNWR1Jvb3Q6On5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpCit7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVNWR1Jvb3Q+IEFjY2Vzc2liaWxpdHlTVkdSb290OjpjcmVhdGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKK3sKKyAgICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogb2JqID0gbmV3IEFj
Y2Vzc2liaWxpdHlTVkdSb290KHJlbmRlcmVyKTsKKyAgICBvYmotPmluaXQoKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYob2JqKTsKK30KKyAgICAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlTVkdSb290OjpwYXJlbnRPYmplY3QoKSBjb25zdAoreworICAgIC8vIElmIGEgcGFyZW50
IHdhcyBzZXQgYmVjYXVzZSB0aGlzIGlzIGEgcmVtb3RlIFNWRyByZXNvdXJjZSwgdXNlIHRoYXQK
KyAgICAvLyBidXQgb3RoZXJ3aXNlLCB3ZSBzaG91bGQgcmVseSBvbiB0aGUgc3RhbmRhcmQgcmVu
ZGVyIHRyZWUgZm9yIHRoZSBwYXJlbnQuCisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICByZXR1
cm4gbV9wYXJlbnQ7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnBhcmVudE9iamVjdCgpOworfQorCisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNpb24gMTI5Njg3KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbi5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmgi
CiAjaW1wb3J0ICJDaHJvbWUuaCIKKyNpbXBvcnQgIkNocm9tZUNsaWVudC5oIgogI2ltcG9ydCAi
Q29sb3JNYWMuaCIKICNpbXBvcnQgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2ltcG9ydCAi
Rm9udC5oIgpAQCAtMTQ1Miw3ICsxNDUzLDggQEAKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQg
dGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50
cyB0byB0aGUgd2luZG93LgogICAgICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gMDsKLSAg
ICAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50
T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSAwOworICAgICAgICBmb3IgKHBhcmVu
dCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudE9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KCkpIHsKICAgICAgICAgICAgICAgICBzY3JvbGxWaWV3ID0gdG9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldyhwYXJlbnQpLT5zY3JvbGxWaWV3KCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xNDYyLDggKzE0NjQsMTUgQEAKICAgICAgICAgaWYgKHNjcm9sbFZpZXcpCiAgICAg
ICAgICAgICByZWN0ID0gc2Nyb2xsVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlY3QpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5wYWdlKCkpCi0gICAgICAgICAgICBwb2ludCA9
IG1fb2JqZWN0LT5wYWdlKCktPmNocm9tZSgpLT5yb290Vmlld1RvU2NyZWVuKHJlY3QpLmxvY2F0
aW9uKCk7CisgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX29iamVjdC0+cGFnZSgpOworICAgICAgICAK
KyAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBlbXB0eSBjaHJvbWUgY2xpZW50IChsaWtlIFNWRykg
dGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBwYWdlCisgICAgICAgIC8vIG9mIHRoZSBzY3JvbGwgdmll
dyBwYXJlbnQgdG8gaGVscCB1cyBnZXQgdG8gdGhlIHNjcmVlbiByZWN0LgorICAgICAgICBpZiAo
cGFyZW50ICYmIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5pc0VtcHR5Q2hyb21l
Q2xpZW50KCkpCisgICAgICAgICAgICBwYWdlID0gcGFyZW50LT5wYWdlKCk7CisKKyAgICAgICAg
aWYgKHBhZ2UpCisgICAgICAgICAgICBwb2ludCA9IHBhZ2UtPmNocm9tZSgpLT5yb290Vmlld1Rv
U2NyZWVuKHJlY3QpLmxvY2F0aW9uKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvaW50
ID0gcmVjdC5sb2NhdGlvbigpOwogICAgIH0KQEAgLTE1ODAsNiArMTU4OSw3IEBACiAgICAgICAg
IHsgRm9vdGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgVG9n
Z2xlQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uUm9sZSB9LAogICAgICAgICB7IENh
bnZhc1JvbGUsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAorICAgICAgICB7IFNWR1Jvb3RS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBMZWdlbmRSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfQogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVN
YXAmIHJvbGVNYXAgPSAqbmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmgJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlTVkdS
b290OwogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsK
QEAgLTI0MywxNSArMjQ0LDI0IEBACiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaW50ZXJuYWxM
aW5rRWxlbWVudCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxp
dHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VN
YXAoSFRNTE1hcEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
CiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2JqZWN0KikgY29uc3Q7
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25zdDsKICAgICBib29s
IGlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkg
Y29uc3Q7CiAgICAgLy8gVGhpcyByZXR1cm5zIHRydWUgaWYgaXQncyBmb2N1c2FibGUgYnV0IGl0
J3Mgbm90IGNvbnRlbnQgZWRpdGFibGUgYW5kIGl0J3Mgbm90IGEgY29udHJvbCBvciBBUklBIGNv
bnRyb2wuCi0KKyAgICAKKyAgICBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdDsKKyAgICB2b2lkIGRl
dGFjaFJlbW90ZVNWR1Jvb3QoKTsKKyAgICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZH
Um9vdEVsZW1lbnQoKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByZW1vdGVTVkdF
bGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIHZvaWQgb2Zmc2V0Qm91
bmRpbmdCb3hGb3JSZW1vdGVTVkdFbGVtZW50KExheW91dFJlY3QmKSBjb25zdDsKKyAgICAKICAg
ICB2b2lkIGFkZFRleHRGaWVsZENoaWxkcmVuKCk7CiAgICAgdm9pZCBhZGRJbWFnZU1hcENoaWxk
cmVuKCk7CiAgICAgdm9pZCBhZGRDYW52YXNDaGlsZHJlbigpOwogICAgIHZvaWQgYWRkQXR0YWNo
bWVudENoaWxkcmVuKCk7CisgICAgdm9pZCBhZGRSZW1vdGVTVkdDaGlsZHJlbigpOwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRWaWV3UGFyZW50cygpOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsx
ODAsNyBAQAogICAgIFNwbGl0dGVyUm9sZSwKICAgICBTdGF0aWNUZXh0Um9sZSwKICAgICBTeXN0
ZW1XaWRlUm9sZSwKKyAgICBTVkdSb290Um9sZSwKICAgICBUYWJHcm91cFJvbGUsCiAgICAgVGFi
TGlzdFJvbGUsCiAgICAgVGFiUGFuZWxSb2xlLCAgICAgICAgICAgIApAQCAtMzI2LDcgKzMyNyw4
IEBACiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9s
bGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAorICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKwogICAgIGJvb2wgYWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcgKikg
Y29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQW5jaG9yKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5j
cHAiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCIKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
Y3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMSBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIgog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eVRhYmxlLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKQEAgLTU0LDYgKzU3LDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgpAQCAt
NzcsNiArODEsMTAgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVy
V2lkZ2V0LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlNWR0Rv
Y3VtZW50LmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdJbWFnZUNocm9t
ZUNsaWVudC5oIgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yLmgiCkBAIC0xMjIsNiArMTMwLDggQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6ZGV0YWNoKCk7CiAgICAgCisgICAgZGV0YWNoUmVtb3RlU1ZHUm9vdCgpOworICAgIAog
I2lmbmRlZiBOREVCVUcKICAgICBpZiAobV9yZW5kZXJlcikKICAgICAgICAgbV9yZW5kZXJlci0+
c2V0SGFzQVhPYmplY3QoZmFsc2UpOwpAQCAtNzkxLDYgKzgwMSwxOCBAQAogICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7CiB9CiAK
Ky8vIFRoZSBib3VuZGluZ0JveCBmb3IgZWxlbWVudHMgd2l0aGluIHRoZSByZW1vdGUgU1ZHIGVs
ZW1lbnQgbmVlZHMgdG8gYmUgb2Zmc2V0IGJ5IGl0cyBwb3NpdGlvbgorLy8gd2l0aGluIHRoZSBw
YXJlbnQgcGFnZSwgb3RoZXJ3aXNlIHRoZXkgYXJlIGluIHJlbGF0aXZlIGNvb3JkaW5hdGVzIG9u
bHkuCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om9mZnNldEJvdW5kaW5nQm94Rm9y
UmVtb3RlU1ZHRWxlbWVudChMYXlvdXRSZWN0JiByZWN0KSBjb25zdAoreworICAgIGZvciAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50
ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0FjY2Vz
c2liaWxpdHlTVkdSb290KCkpIHsKKyAgICAgICAgICAgIHJlY3QubW92ZUJ5KHBhcmVudC0+cGFy
ZW50T2JqZWN0KCktPmJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisgICAgCiBMYXlvdXRSZWN0IEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBvYmogPSBtX3JlbmRlcmVyOwpAQCAtODEzLDYgKzgzNSwxMiBAQAogICAgIAogICAgIExh
eW91dFJlY3QgcmVzdWx0ID0gYm91bmRpbmdCb3hGb3JRdWFkcyhvYmosIHF1YWRzKTsKIAorI2lm
IEVOQUJMRShTVkcpCisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRv
YyAmJiBkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICAgICAgb2Zmc2V0Qm91bmRpbmdCb3hGb3JS
ZW1vdGVTVkdFbGVtZW50KHJlc3VsdCk7CisjZW5kaWYKKyAgICAKICAgICAvLyBUaGUgc2l6ZSBv
ZiB0aGUgd2ViIGFyZWEgc2hvdWxkIGJlIHRoZSBjb250ZW50IHNpemUsIG5vdCB0aGUgY2xpcHBl
ZCBzaXplLgogICAgIGlmIChpc1dlYkFyZWEoKSAmJiBvYmotPmZyYW1lKCktPnZpZXcoKSkKICAg
ICAgICAgcmVzdWx0LnNldFNpemUob2JqLT5mcmFtZSgpLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgp
KTsKQEAgLTIxMzIsNyArMjE2MCwyNiBAQAogICAgIAogICAgIHJldHVybiAwOwogfQorCitBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVt
ZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogcmVtb3RlID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJl
bW90ZSkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgCisgICAgTGF5b3V0UmVjdCBwYXJlbnRSZWN0
ID0gYm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UG9pbnQgb2Zmc2V0UG9pbnQocG9pbnQueCgp
IC0gcGFyZW50UmVjdC5sb2NhdGlvbigpLngoKSwgcG9pbnQueSgpIC0gcGFyZW50UmVjdC5sb2Nh
dGlvbigpLnkoKSk7CisgICAgcmV0dXJuIHJlbW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3Qob2Zm
c2V0UG9pbnQpOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50
KSBjb25zdAoreworICAgIGlmIChpc1NWR0ltYWdlKCkpCisgICAgICAgIHJldHVybiByZW1vdGVT
VkdFbGVtZW50SGl0VGVzdChwb2ludCk7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChwb2ludCk7Cit9CisgICAgCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5
SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRl
cmVyIHx8ICFtX3JlbmRlcmVyLT5oYXNMYXllcigpKQpAQCAtMjM3NCw2ICsyNDIxLDggQEAKICAg
ICBpZiAoY3NzQm94ICYmIGNzc0JveC0+aXNJbWFnZSgpKSB7CiAgICAgICAgIGlmIChub2RlICYm
IG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQogICAgICAgICAgICAgcmV0dXJuIGFyaWFIYXNQ
b3B1cCgpID8gUG9wVXBCdXR0b25Sb2xlIDogQnV0dG9uUm9sZTsKKyAgICAgICAgaWYgKGlzU1ZH
SW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBTVkdSb290Um9sZTsKICAgICAgICAgcmV0dXJu
IEltYWdlUm9sZTsKICAgICB9CiAgICAgCkBAIC0yNjczLDcgKzI3MjIsODMgQEAKICAgICBheFNw
aW5CdXR0b24tPnNldFBhcmVudCh0aGlzKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChheFNwaW5C
dXR0b24pOwogfQorICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0lt
YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKTsKK30KKyAg
ICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0YWNoUmVtb3RlU1ZHUm9vdCgp
Cit7CisgICAgaWYgKEFjY2Vzc2liaWxpdHlTVkdSb290KiByb290ID0gcmVtb3RlU1ZHUm9vdEVs
ZW1lbnQoKSkKKyAgICAgICAgcm9vdC0+c2V0UGFyZW50KDApOworfQogCitBY2Nlc3NpYmlsaXR5
U1ZHUm9vdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQo
KSBjb25zdAoreworI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3Jl
bmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJl
bmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5kZXJlcik7CisgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVySW1hZ2UtPmNhY2hlZEltYWdlKCk7Cisg
ICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgSW1hZ2Uq
IGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2Ut
PmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgU1ZHSW1hZ2UqIHN2
Z0ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2UqPihpbWFnZSk7CisgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBzdmdJbWFnZS0+ZnJhbWVWaWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisg
ICAgICAgIHJldHVybiAwOworICAgIEZyYW1lKiBmcmFtZSA9IGZyYW1lVmlldy0+ZnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBEb2N1bWVudCog
ZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2MgfHwgIWRvYy0+aXNTVkdEb2N1
bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBTVkdTVkdFbGVtZW50KiByb290
RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jKS0+cm9vdEVsZW1lbnQoKTsK
KyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyUm9vdCA9IHJvb3RFbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghcmVu
ZGVyZXJSb290KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiByb290U1ZHT2JqZWN0ID0gZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KTsKKworICAgIC8vIEluIG9yZGVyIHRvIGNvbm5lY3Qg
dGhlIEFYIGhpZXJhcmNoeSBmcm9tIHRoZSBTVkcgcm9vdCBlbGVtZW50IGZyb20gdGhlIGxvYWRl
ZCByZXNvdXJjZQorICAgIC8vIHRoZSBwYXJlbnQgbXVzdCBiZSBzZXQsIGJlY2F1c2UgdGhlcmUn
cyBubyBvdGhlciB3YXkgdG8gZ2V0IGJhY2sgdG8gd2hvIGNyZWF0ZWQgdGhlIGltYWdlLgorICAg
IEFTU0VSVChyb290U1ZHT2JqZWN0ICYmIHJvb3RTVkdPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNW
R1Jvb3QoKSk7CisgICAgaWYgKCFyb290U1ZHT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlTVkdSb290
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiB0b0FjY2Vzc2liaWxpdHlT
VkdSb290KHJvb3RTVkdPYmplY3QpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQor
ICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJl
bigpCit7CisgICAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHJvb3QgPSByZW1vdGVTVkdSb290RWxl
bWVudCgpOworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHJvb3Qt
PnNldFBhcmVudCh0aGlzKTsKKyAgICAKKyAgICBpZiAocm9vdC0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IHJvb3QtPmNoaWxkcmVuKCk7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNoaWxkcmVuLnNp
emUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRyZW5baV0pOworICAgIH0gZWxzZQorICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb290KTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphZGRDYW52YXNDaGlsZHJlbigpCiB7CiAgICAgaWYgKCFub2RlKCkgfHwgIW5v
ZGUoKS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKQpAQCAtMjc1MCw3ICsyODc1LDggQEAKICAgICBh
ZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAgYWRkVGV4dEZpZWxkQ2hpbGRyZW4oKTsKICAgICBh
ZGRDYW52YXNDaGlsZHJlbigpOwotCisgICAgYWRkUmVtb3RlU1ZHQ2hpbGRyZW4oKTsKKyAgICAK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgdXBkYXRlQXR0YWNobWVudFZpZXdQYXJlbnRzKCk7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNW
R1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdSb290LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVNWR1Jvb3RfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5
U1ZHUm9vdF9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVNWR1Jvb3QgOiBwdWJsaWMg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgQWNjZXNzaWJpbGl0eVNWR1Jvb3QoUmVuZGVyT2JqZWN0Kik7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IGNyZWF0ZShSZW5kZXJPYmplY3Qq
KTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpOworICAgIAorICAgIHZvaWQg
c2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVu
dDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtX3BhcmVudDsK
KyAgICAKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorfTsKKworaW5saW5lIEFjY2Vzc2liaWxpdHlTVkdSb290KiB0b0FjY2Vz
c2liaWxpdHlTVkdSb290KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NF
UlQoIW9iamVjdCB8fCBvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlTVkdSb290Kj4ob2JqZWN0KTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5U1ZHUm9v
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNs
aWRlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgiCisjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uLmgiCkBAIC0yNDksNiArMjUwLDExIEBACiAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpjcmVhdGUocmVuZGVyZXIpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGlmIChyZW5kZXJlci0+aXNTVkdSb290KCkpCisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6Y3JlYXRlKHJlbmRlcmVyKTsKKyNlbmRpZgorICAg
IAogICAgIGlmIChyZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CiAgICAgICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBjc3NCb3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVy
KTsKICAgICAgICAgaWYgKGNzc0JveC0+aXNMaXN0Qm94KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCw4IEBACiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uLmgnLAorICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QuY3BwJywKKyAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdSb290LmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGUuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcCcsCkBAIC02Mjk4LDYgKzYzMDAsNyBAQAogICAgICAgICAgICAgJ3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgn
LAorICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oJywKICAg
ICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0NCArMzEsMTcgQEAKICNpbmNsdWRl
ICJTVkdJbWFnZS5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKLSNpbmNsdWRlICJF
bXB0eUNsaWVudHMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdS
b290LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTVkdJbWFnZUNocm9t
ZUNsaWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ltYWdlQ2hyb21lQ2xpZW50
IDogcHVibGljIEVtcHR5Q2hyb21lQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
VkdJbWFnZUNocm9tZUNsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIFNWR0ltYWdlQ2hyb21lQ2xpZW50KFNWR0ltYWdlKiBpbWFnZSkKLSAgICAgICAgOiBtX2lt
YWdlKGltYWdlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZUNo
cm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBTVkdJbWFnZSogaW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IGNocm9tZURlc3Ryb3llZCgpCi0gICAgewotICAgICAgICBtX2ltYWdlID0gMDsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50
UmVjdCYgciwgYm9vbCkKLSAgICB7Ci0gICAgICAgIC8vIElmIG1faW1hZ2UtPm1fcGFnZSBpcyBu
dWxsLCB3ZSdyZSBiZWluZyBkZXN0cnVjdGVkLCBkb24ndCBmaXJlIGNoYW5nZWRJblJlY3QoKSBp
biB0aGF0IGNhc2UuCi0gICAgICAgIGlmIChtX2ltYWdlICYmIG1faW1hZ2UtPmltYWdlT2JzZXJ2
ZXIoKSAmJiBtX2ltYWdlLT5tX3BhZ2UpCi0gICAgICAgICAgICBtX2ltYWdlLT5pbWFnZU9ic2Vy
dmVyKCktPmNoYW5nZWRJblJlY3QobV9pbWFnZSwgcik7Ci0gICAgfQotCi0gICAgU1ZHSW1hZ2Uq
IG1faW1hZ2U7Ci19OwotCiBTVkdJbWFnZTo6U1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2
ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU1ZHSW1hZ2VDaHJvbWVDbGllbnRfaAor
I2RlZmluZSBTVkdJbWFnZUNocm9tZUNsaWVudF9oCisKKyNpZiBFTkFCTEUoU1ZHKQorCisjaW5j
bHVkZSAiRW1wdHlDbGllbnRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZH
SW1hZ2VDaHJvbWVDbGllbnQgOiBwdWJsaWMgRW1wdHlDaHJvbWVDbGllbnQgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNWR0ltYWdlQ2hyb21lQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgU1ZHSW1hZ2VDaHJvbWVDbGllbnQoU1ZHSW1hZ2UqIGltYWdl
KQorICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBpc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IFNWR0ltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICAKK3ByaXZh
dGU6CisgICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3llZCgpCisgICAgeworICAgICAgICBt
X2ltYWdlID0gMDsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250
ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmIHIsIGJvb2wpCisgICAgeworICAgICAgICAv
LyBJZiBtX2ltYWdlLT5tX3BhZ2UgaXMgbnVsbCwgd2UncmUgYmVpbmcgZGVzdHJ1Y3RlZCwgZG9u
J3QgZmlyZSBjaGFuZ2VkSW5SZWN0KCkgaW4gdGhhdCBjYXNlLgorICAgICAgICBpZiAobV9pbWFn
ZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkgJiYgbV9pbWFnZS0+bV9wYWdlKQorICAgICAg
ICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpLT5jaGFuZ2VkSW5SZWN0KG1faW1hZ2UsIHIp
OworICAgIH0KKyAgICAKKyAgICBTVkdJbWFnZSogbV9pbWFnZTsKK307CisKK2lubGluZSBTVkdJ
bWFnZUNocm9tZUNsaWVudCogdG9TVkdJbWFnZUNocm9tZUNsaWVudChDaHJvbWVDbGllbnQqIGNs
aWVudCkKK3sKKyAgICBBU1NFUlQoIWNsaWVudCB8fCBjbGllbnQtPmlzU1ZHSW1hZ2VDaHJvbWVD
bGllbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0ltYWdlQ2hyb21lQ2xpZW50Kj4o
Y2xpZW50KTsKK30KKyAgICAKK30gCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8v
IFNWR0ltYWdlQ2hyb21lQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtOTg1LDYgKzk4NSw3IEBACiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNw
cAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKKyAgICBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDU0NCw2ICs0NTQ0LDggQEAKIAkJ
QUFCNjA1NEYxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFCNjA1NEIxNTg3NEM1ODAw
N0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5oICovOyB9OwogCQlBQUI2MDU1MDE1ODc0QzU4
MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFCNjA1NEMxNTg3NEM1ODAwN0I1MDMxIC8qIElu
amVjdGVkU2NyaXB0TW9kdWxlLmNwcCAqLzsgfTsKIAkJQUFCNjA1NTExNTg3NEM1ODAwN0I1MDMx
IC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQUI2MDU0RDE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuaCAqLzsgfTsKKwkJQUFDMDhDRUYxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdl
Q2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBQUMwOENFRDE1RjkzM0Q2MDBGMUUxODggLyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCAq
LzsgfTsKKwkJQUFDMDhDRjMxNUY5NDFGRDAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUMwOENG
MTE1Rjk0MUZDMDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCAqLzsgfTsKIAkJQUFE
NzY2RUIxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkU4MTU3RTUwMkYw
MEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgKi87IH07CiAJCUFBRDc2NkVDMTU3
RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIzIC8q
IEluc3BlY3RvckNhbnZhc0FnZW50LmggKi87IH07CiAJCUFBRDc2NkVEMTU3RTUwMkYwMEU4NTQy
MyAvKiBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJ
bnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCAqLzsgfTsKQEAgLTExNjgyLDYgKzExNjg0
LDkgQEAKIAkJQUFCNjA1NEIxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0QmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdEJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFCNjA1NEMxNTg3NEM1ODAwN0I1MDMxIC8q
IEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUFCNjA1NEQxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0TW9kdWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQzA4Q0VEMTVGOTMzRDYwMEYxRTE4OCAv
KiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdJbWFnZUNocm9tZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
QUMwOENGMDE1Rjk0MUZDMDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUMwOENGMTE1Rjk0MUZDMDBGMUUxODgg
LyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNhbnZhc0FnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RTkxNTdFNTAyRjAwRTg1NDIz
IC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluc3BlY3RvckNhbnZhc0FnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFBRDc2NkVBMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ2FudmFzSW5z
dHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDg0OSw2ICsx
NDg1NCw4IEBACiAJCQkJMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlT
bGlkZXIuaCAqLywKIAkJCQkyOUQ3QkNGNTE0NDRBRjU4MDA3MDYxOUMgLyogQWNjZXNzaWJpbGl0
eVNwaW5CdXR0b24uY3BwICovLAogCQkJCTI5RDdCQ0Y5MTQ0NEFGN0QwMDcwNjE5QyAvKiBBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbi5oICovLAorCQkJCUFBQzA4Q0YwMTVGOTQxRkMwMEYxRTE4OCAv
KiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAgKi8sCisJCQkJQUFDMDhDRjExNUY5NDFGQzAwRjFF
MTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmggKi8sCiAJCQkJMjk4MUNBQUExMzE4MjJFQzAw
RDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5jcHAgKi8sCiAJCQkJMjlBODEyMEQwRkJCOUMx
RDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZS5oICovLAogCQkJCTI5ODFDQUFCMTMxODIy
RUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCAqLywKQEAgLTE5NzYwLDYg
KzE5NzY3LDcgQEAKIAkJCQlCMjU1OTkwQzBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHSW1hZ2UuaCAq
LywKIAkJCQkwOEY4NTlEMjE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgKi8s
CiAJCQkJMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLywKKwkJ
CQlBQUMwOENFRDE1RjkzM0Q2MDBGMUUxODggLyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMjU1NzEsNiArMjU1NzksOCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBY
U0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMx
MzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4
MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFBQzA4Q0VGMTVGOTMz
RDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QUFDMDhDRjMxNUY5NDFGRDAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTRGN0I0QTY2MTVGRjZENkEwMDZCNUYyMiAvKiBQbGF0
Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMxRDcyRjYx
NUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1pbGVzdG9uZXMuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTI5Njg3KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDYsNiArMjA2LDggQEAKICAgICB2aXJ0dWFsIHZvaWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hh
bmdlZCh1bnNpZ25lZCkgT1ZFUlJJREUgeyB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgdmlydHVhbCBib29sIGlzRW1wdHlDaHJvbWVDbGll
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9OwogCiBjbGFzcyBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165885</attachid>
            <date>2012-09-26 15:33:52 -0700</date>
            <delta_ts>2012-09-26 15:46:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42605</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cwkocmV2aXNpb24gMTI5Njg3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTM5Miw2ICsxMzkyLDcgQEAKIGNyYnVn
LmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L3Zpc2libGUtZWxlbWVudHMuaHRtbCBbIFNraXAgXQog
CiB3ZWJraXQub3JnL2IvOTczNTkgYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi85NzM1OSBhY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNzM5MTIgYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNr
Ym94LXRleHQuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvNzM5MTIgYWNjZXNzaWJpbGl0
eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgRmFpbHVyZSBQYXNzIF0K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUt
ZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1v
dGUtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKwor
CisKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYWNjZXNzaWJpbGl0eSBlbGVtZW50cyBjYW4gYmUg
Y3JlYXRlZCBvdXQgb2Ygd2hhdCBhIHJlbW90ZSBTVkcgaW1hZ2UgZGVmaW5lcy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorY29udGFpbmVyIGxvY2F0aW9uOiAoNywgNDMpCitGYWNlIHJvbGU6
IEFYUm9sZTogQVhCdXR0b24KK0ZhY2UgbGFiZWw6IEFYRGVzY3JpcHRpb246IGZhY2UKK0ZhY2VY
OiAwCitGYWNlWTogMAorCisKK0V5ZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitFeWUgbGFiZWw6
IEFYRGVzY3JpcHRpb246IGxlZnQtZXllCitFeWVYOiAxMDMKK0V5ZVk6IDE0OAorCisKK05vc2Ug
cm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorTm9zZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogbm9zZQor
Tm9zZVg6IDE5MworTm9zZVk6IDIwNgorCisKK01vdXRoIHJvbGU6IEFYUm9sZTogQVhCdXR0b24K
K01vdXRoIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBzbWlsZQorTW91dGhYOiAxMTUKK01vdXRoWTog
Mjc0LjUKKworCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1l
bGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmct
cmVtb3RlLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzQg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxicj48YnI+CisKKzxp
bWcgdGFiaW5kZXg9IjAiIGlkPSJzdmctaW1hZ2UiIHNyYz0icmVzb3VyY2VzL3N2Zy1mYWNlLnN2
ZyIgYWx0PSJpbnRlcmFjdGl2ZSBTVkciID4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhY2Nlc3NpYmls
aXR5IGVsZW1lbnRzIGNhbiBiZSBjcmVhdGVkIG91dCBvZiB3aGF0IGEgcmVtb3RlIFNWRyBpbWFn
ZSBkZWZpbmVzLiIpCisKKy8vIFJldHVybiB0aGUgcGFnZSdzIHJlbGF0aXZlIGNvb3JkaW5hdGVz
LiBJZiB3ZSByZWx5IG9uIHRoZSB4KCkgb3IgeSgpIG9mIHRoZSBhY2Nlc3NpYmlsaXR5IG9iamVj
dCwgdGhlbgorLy8gYWNjZXNzaWJpbGl0eSB0cmFuc2Zvcm1zIGFyZSBhcHBsaWVkIHRoYXQgZmFp
bCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdpbmRvdyBhdmFpbGFibGUKK2Z1bmN0aW9uIHBhZ2VYKGVs
ZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jbGlja1BvaW50WCAtIGVsZW1lbnQud2lkdGgv
MjsKK30KKworZnVuY3Rpb24gcGFnZVkoZWxlbWVudCkgeworICAgIHJldHVybiBlbGVtZW50LmNs
aWNrUG9pbnRZIC0gZWxlbWVudC5oZWlnaHQvMjsKK30KKworaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ZnLWltYWdlIikuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIHJ1bkFYVGVzdCk7Cit9CisKK2Z1bmN0aW9uIHJ1bkFYVGVzdCgpIHsgICAgCisg
ICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgic3ZnLWltYWdlIik7CisKKyAgICB2YXIgeCA9IHBhZ2VYKGNvbnRhaW5lcikgLSAx
OworICAgIHZhciB5ID0gcGFnZVkoY29udGFpbmVyKSAtIDE7CisKKyAgICBkZWJ1ZygiY29udGFp
bmVyIGxvY2F0aW9uOiAoIiArIHggKyAiLCAiICsgeSArICIpIik7CisKKyAgICB2YXIgZmFjZSA9
IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCk7CisgICAgZGVidWcoJ0ZhY2Ugcm9sZTogJyArIGZh
Y2Uucm9sZSk7CisgICAgZGVidWcoJ0ZhY2UgbGFiZWw6ICcgKyBmYWNlLmRlc2NyaXB0aW9uKTsK
KyAgICBkZWJ1ZygnRmFjZVg6ICcgKyAocGFnZVgoZmFjZSkgLSB4KSk7CisgICAgZGVidWcoJ0Zh
Y2VZOiAnICsgTWF0aC5hYnMocGFnZVkoZmFjZSkgLSB5KSk7CisgICAgZGVidWcoJzxicj4nKTsK
KworICAgIHZhciBleWUgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDEpOworICAgIGRlYnVnKCdF
eWUgcm9sZTogJyArIGV5ZS5yb2xlKTsKKyAgICBkZWJ1ZygnRXllIGxhYmVsOiAnICsgZXllLmRl
c2NyaXB0aW9uKTsKKyAgICBkZWJ1ZygnRXllWDogJyArIChwYWdlWChleWUpIC0geCkpOworICAg
IGRlYnVnKCdFeWVZOiAnICsgTWF0aC5hYnMocGFnZVkoZXllKSAtIHkpKTsKKyAgICBkZWJ1Zygn
PGJyPicpOworCisgICAgdmFyIG5vc2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDMpOworICAg
IGRlYnVnKCdOb3NlIHJvbGU6ICcgKyBub3NlLnJvbGUpOworICAgIGRlYnVnKCdOb3NlIGxhYmVs
OiAnICsgbm9zZS5kZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ05vc2VYOiAnICsgKHBhZ2VYKG5v
c2UpIC0geCkpOworICAgIGRlYnVnKCdOb3NlWTogJyArIE1hdGguYWJzKHBhZ2VZKG5vc2UpIC0g
eSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIgbW91dGggPSBjb250YWluZXIuY2hp
bGRBdEluZGV4KDQpOworICAgIGRlYnVnKCdNb3V0aCByb2xlOiAnICsgbW91dGgucm9sZSk7Cisg
ICAgZGVidWcoJ01vdXRoIGxhYmVsOiAnICsgbW91dGguZGVzY3JpcHRpb24pOworICAgIGRlYnVn
KCdNb3V0aFg6ICcgKyAocGFnZVgobW91dGgpIC0geCkpOworICAgIGRlYnVnKCdNb3V0aFk6ICcg
KyBNYXRoLmFicyhwYWdlWShtb3V0aCkgLSB5KSk7CisgICAgZGVidWcoJzxicj4nKTsKKworICAg
IHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk2ODgpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0y
NiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBT
dXBwb3J0IGVtYmVkZGVkIFNWRyBvYmplY3RzIGluIEFYIHRyZWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBza2lwcGVkIG9uIGNocm9taXVtIHVu
dGlsIGNsaWNrUG9pbnQoKSBpcyBpbXBsZW1lbnRlZCBpbiBEUlQuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAy
MDEyLTA5LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CiAKICAgICAgICAgW0VGTF0gVm9sdW1lIGJ1dHRvbiBzaG91bGQgbm90IGJlIHNob3duIGZvciB2
aWRlb3Mgd2l0aG91dCBhdWRpbwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjMsNiArMjYzLDcgQEAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
QWNjZXNzaWJpbGl0eVJvbGVUb2dnbGVCdXR0b24sIFRvZ2dsZUJ1dHRvblJvbGUpOwogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUNhbnZhcywgQ2FudmFz
Um9sZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xl
TGVnZW5kLCBMZWdlbmRSb2xlKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQWNj
ZXNzaWJpbGl0eVJvbGVTVkdSb290LCBTVkdSb290Um9sZSk7CiAKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVuY2FjaGVkLCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6VU5DQUNIRUQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6SWRsZSwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OklETEUpOwpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3Np
YmlsaXR5Um9sZS5oCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiAr
MTI1LDcgQEAKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVNwbGl0dGVyLAogICAgIFdlYkFjY2Vz
c2liaWxpdHlSb2xlU3RhdGljVGV4dCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVN5c3RlbVdp
ZGUsCisgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTVkdSb290LAogICAgIFdlYkFjY2Vzc2liaWxp
dHlSb2xlVGFiR3JvdXAsCiAgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVUYWJMaXN0LAogICAgIFdl
YkFjY2Vzc2liaWxpdHlSb2xlVGFiUGFuZWwsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNzYsNiArMjE3Niw4IEBACiAJU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmggXAorCVNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgXApA
QCAtNTM1MCw2ICs1MzUyLDcgQEAKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJH
cmFkaWVudEF0dHJpYnV0ZXMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjk2ODgpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MSBA
QAorMjAxMi0wOS0yNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisg
ICAgICAgIEFYOiBTdXBwb3J0IGVtYmVkZGVkIFNWRyBvYmplY3RzIGluIEFYIHRyZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbGxv
d3MgYW4gU1ZHIGltYWdlIGZyb20gYW5vdGhlciByZXNvdXJjZSB0byBiZSBob29rZWQgaW50byB0
aGUgQVgKKyAgICAgICAgaGllcmFyY2h5LiBUaGlzIGlzIGRvbmUgYnkgY3JlYXRpbmcgYW4gQVgg
d3JhcHBlciBmb3IgdGhlIHJvb3QgU1ZHIHRoYXQgaG9sZHMgb250bworICAgICAgICBpdHMgbmF0
aXZlIHBhcmVudCBpbWFnZS4gVGhlIFNWR0Nocm9tZUNsaWVudCBpcyB0aGVuIHVzZWQgdG8gY29u
bmVjdCB0byB0aGlzIFNWRyByZXNvdXJjZS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5
L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyb21SZW5kZXJlcik6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6Om9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxl
bWVudEhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzU1ZHSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0YWNoUmVtb3RlU1ZH
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1v
dGVTVkdSb290RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6QWNj
ZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jv
b3Q6On5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U1ZHUm9vdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdS
b290OjpwYXJlbnRPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNWR1Jvb3QuaDogQWRkZWQuCisgICAgICAgIChBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6c2V0UGFyZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdSb290Ojppc0FjY2Vzc2liaWxpdHlTVkdSb290KToK
KyAgICAgICAgKFdlYkNvcmU6OnRvQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAg
ICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwb3NpdGlvbl0pOgorICAgICAgICAo
Y3JlYXRlQWNjZXNzaWJpbGl0eVJvbGVNYXApOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKEVtcHR5Q2hyb21lQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVt
cHR5Q2hyb21lQ2xpZW50Ojppc0VtcHR5Q2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojppc0VtcHR5Q2hy
b21lQ2xpZW50KToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVD
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0ltYWdlQ2hy
b21lQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjpTVkdJ
bWFnZUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVu
dDo6aXNTVkdJbWFnZUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNo
cm9tZUNsaWVudDo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGll
bnQ6OmNocm9tZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNs
aWVudDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
dG9TVkdJbWFnZUNocm9tZUNsaWVudCk6CisKIDIwMTItMDktMjYgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBWb2x1bWUgYnV0
dG9uIHNob3VsZCBub3QgYmUgc2hvd24gZm9yIHZpZGVvcyB3aXRob3V0IGF1ZGlvCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24g
MTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MzExLDYgKzI2MzExLDYyIEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJp
bGl0eVNWR1Jvb3QuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlTVkdSb290Lmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGFjY2Vz
c2liaWxpdHlcQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgpAQCAtNzM3MDUsNiArNzM3NjEsMTAgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxzdmdcZ3JhcGhpY3NcU1ZHSW1hZ2VDYWNoZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXFNWR0ltYWdlQ2hyb21l
Q2xpZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CiAJCQkJPEZpbHRlcgogCQkJCQlOYW1lPSJm
aWx0ZXJzIgogCQkJCQk+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2MCw2ICszNjAsOCBAQAogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRTaXpl
IG1pbmltdW1XaW5kb3dTaXplKCkgY29uc3QgeyByZXR1cm4gRmxvYXRTaXplKDEwMCwgMTAwKTsg
fTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfkNocm9t
ZUNsaWVudCgpIHsgfQogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0FjY2Vzc2liaWxpdHlTVkdSb290OjpBY2Nlc3NpYmlsaXR5
U1ZHUm9vdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdChyZW5kZXJlciksCisgICAgbV9wYXJlbnQoMCkKK3sKK30KKworQWNjZXNzaWJpbGl0
eVNWR1Jvb3Q6On5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpCit7Cit9CisKK1Bhc3NSZWZQdHI8QWNj
ZXNzaWJpbGl0eVNWR1Jvb3Q+IEFjY2Vzc2liaWxpdHlTVkdSb290OjpjcmVhdGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKK3sKKyAgICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogb2JqID0gbmV3IEFj
Y2Vzc2liaWxpdHlTVkdSb290KHJlbmRlcmVyKTsKKyAgICBvYmotPmluaXQoKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYob2JqKTsKK30KKyAgICAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlTVkdSb290OjpwYXJlbnRPYmplY3QoKSBjb25zdAoreworICAgIC8vIElmIGEgcGFyZW50
IHdhcyBzZXQgYmVjYXVzZSB0aGlzIGlzIGEgcmVtb3RlIFNWRyByZXNvdXJjZSwgdXNlIHRoYXQK
KyAgICAvLyBidXQgb3RoZXJ3aXNlLCB3ZSBzaG91bGQgcmVseSBvbiB0aGUgc3RhbmRhcmQgcmVu
ZGVyIHRyZWUgZm9yIHRoZSBwYXJlbnQuCisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICByZXR1
cm4gbV9wYXJlbnQ7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnBhcmVudE9iamVjdCgpOworfQorCisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNpb24gMTI5Njg3KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbi5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmgi
CiAjaW1wb3J0ICJDaHJvbWUuaCIKKyNpbXBvcnQgIkNocm9tZUNsaWVudC5oIgogI2ltcG9ydCAi
Q29sb3JNYWMuaCIKICNpbXBvcnQgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2ltcG9ydCAi
Rm9udC5oIgpAQCAtMTQ1Miw3ICsxNDUzLDggQEAKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQg
dGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50
cyB0byB0aGUgd2luZG93LgogICAgICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gMDsKLSAg
ICAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50
T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSAwOworICAgICAgICBmb3IgKHBhcmVu
dCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudE9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KCkpIHsKICAgICAgICAgICAgICAgICBzY3JvbGxWaWV3ID0gdG9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldyhwYXJlbnQpLT5zY3JvbGxWaWV3KCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xNDYyLDggKzE0NjQsMTUgQEAKICAgICAgICAgaWYgKHNjcm9sbFZpZXcpCiAgICAg
ICAgICAgICByZWN0ID0gc2Nyb2xsVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlY3QpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5wYWdlKCkpCi0gICAgICAgICAgICBwb2ludCA9
IG1fb2JqZWN0LT5wYWdlKCktPmNocm9tZSgpLT5yb290Vmlld1RvU2NyZWVuKHJlY3QpLmxvY2F0
aW9uKCk7CisgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX29iamVjdC0+cGFnZSgpOworICAgICAgICAK
KyAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBlbXB0eSBjaHJvbWUgY2xpZW50IChsaWtlIFNWRykg
dGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBwYWdlCisgICAgICAgIC8vIG9mIHRoZSBzY3JvbGwgdmll
dyBwYXJlbnQgdG8gaGVscCB1cyBnZXQgdG8gdGhlIHNjcmVlbiByZWN0LgorICAgICAgICBpZiAo
cGFyZW50ICYmIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5pc0VtcHR5Q2hyb21l
Q2xpZW50KCkpCisgICAgICAgICAgICBwYWdlID0gcGFyZW50LT5wYWdlKCk7CisKKyAgICAgICAg
aWYgKHBhZ2UpCisgICAgICAgICAgICBwb2ludCA9IHBhZ2UtPmNocm9tZSgpLT5yb290Vmlld1Rv
U2NyZWVuKHJlY3QpLmxvY2F0aW9uKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvaW50
ID0gcmVjdC5sb2NhdGlvbigpOwogICAgIH0KQEAgLTE1ODAsNiArMTU4OSw3IEBACiAgICAgICAg
IHsgRm9vdGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgVG9n
Z2xlQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uUm9sZSB9LAogICAgICAgICB7IENh
bnZhc1JvbGUsIE5TQWNjZXNzaWJpbGl0eUltYWdlUm9sZSB9LAorICAgICAgICB7IFNWR1Jvb3RS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBMZWdlbmRSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfQogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVN
YXAmIHJvbGVNYXAgPSAqbmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmgJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlTVkdS
b290OwogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsK
QEAgLTI0MywxNSArMjQ0LDI0IEBACiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaW50ZXJuYWxM
aW5rRWxlbWVudCgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxp
dHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VN
YXAoSFRNTE1hcEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0Owor
CiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09ic2VydmFibGUoUmVuZGVyT2JqZWN0KikgY29uc3Q7
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25zdDsKICAgICBib29s
IGlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkg
Y29uc3Q7CiAgICAgLy8gVGhpcyByZXR1cm5zIHRydWUgaWYgaXQncyBmb2N1c2FibGUgYnV0IGl0
J3Mgbm90IGNvbnRlbnQgZWRpdGFibGUgYW5kIGl0J3Mgbm90IGEgY29udHJvbCBvciBBUklBIGNv
bnRyb2wuCi0KKyAgICAKKyAgICBib29sIGlzU1ZHSW1hZ2UoKSBjb25zdDsKKyAgICB2b2lkIGRl
dGFjaFJlbW90ZVNWR1Jvb3QoKTsKKyAgICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZH
Um9vdEVsZW1lbnQoKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByZW1vdGVTVkdF
bGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAgIHZvaWQgb2Zmc2V0Qm91
bmRpbmdCb3hGb3JSZW1vdGVTVkdFbGVtZW50KExheW91dFJlY3QmKSBjb25zdDsKKyAgICAKICAg
ICB2b2lkIGFkZFRleHRGaWVsZENoaWxkcmVuKCk7CiAgICAgdm9pZCBhZGRJbWFnZU1hcENoaWxk
cmVuKCk7CiAgICAgdm9pZCBhZGRDYW52YXNDaGlsZHJlbigpOwogICAgIHZvaWQgYWRkQXR0YWNo
bWVudENoaWxkcmVuKCk7CisgICAgdm9pZCBhZGRSZW1vdGVTVkdDaGlsZHJlbigpOwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRWaWV3UGFyZW50cygpOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsx
ODAsNyBAQAogICAgIFNwbGl0dGVyUm9sZSwKICAgICBTdGF0aWNUZXh0Um9sZSwKICAgICBTeXN0
ZW1XaWRlUm9sZSwKKyAgICBTVkdSb290Um9sZSwKICAgICBUYWJHcm91cFJvbGUsCiAgICAgVGFi
TGlzdFJvbGUsCiAgICAgVGFiUGFuZWxSb2xlLCAgICAgICAgICAgIApAQCAtMzI2LDcgKzMyNyw4
IEBACiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9s
bGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAorICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKwogICAgIGJvb2wgYWNjZXNzaWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcgKikg
Y29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQW5jaG9yKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCIKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9v
dC5jcHAiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTbGlk
ZXIuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMjk2ODcpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMSBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2Fj
aGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgiCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVRhYmxlLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKQEAgLTU0LDYgKzU3LDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFy
ZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgpA
QCAtNzcsNiArODEsMTAgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlNW
R0RvY3VtZW50LmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdJbWFnZUNo
cm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCkBAIC0xMjIsNiArMTMwLDggQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6ZGV0YWNoKCk7CiAgICAgCisgICAgZGV0YWNoUmVtb3RlU1ZHUm9vdCgpOworICAg
IAogI2lmbmRlZiBOREVCVUcKICAgICBpZiAobV9yZW5kZXJlcikKICAgICAgICAgbV9yZW5kZXJl
ci0+c2V0SGFzQVhPYmplY3QoZmFsc2UpOwpAQCAtNzkxLDYgKzgwMSwxOCBAQAogICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7CiB9
CiAKKy8vIFRoZSBib3VuZGluZ0JveCBmb3IgZWxlbWVudHMgd2l0aGluIHRoZSByZW1vdGUgU1ZH
IGVsZW1lbnQgbmVlZHMgdG8gYmUgb2Zmc2V0IGJ5IGl0cyBwb3NpdGlvbgorLy8gd2l0aGluIHRo
ZSBwYXJlbnQgcGFnZSwgb3RoZXJ3aXNlIHRoZXkgYXJlIGluIHJlbGF0aXZlIGNvb3JkaW5hdGVz
IG9ubHkuCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om9mZnNldEJvdW5kaW5nQm94
Rm9yUmVtb3RlU1ZHRWxlbWVudChMYXlvdXRSZWN0JiByZWN0KSBjb25zdAoreworICAgIGZvciAo
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFy
ZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0Fj
Y2Vzc2liaWxpdHlTVkdSb290KCkpIHsKKyAgICAgICAgICAgIHJlY3QubW92ZUJ5KHBhcmVudC0+
cGFyZW50T2JqZWN0KCktPmJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisgICAgCiBMYXlvdXRSZWN0IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCgpIGNvbnN0CiB7CiAgICAgUmVuZGVy
T2JqZWN0KiBvYmogPSBtX3JlbmRlcmVyOwpAQCAtODEzLDYgKzgzNSwxMiBAQAogICAgIAogICAg
IExheW91dFJlY3QgcmVzdWx0ID0gYm91bmRpbmdCb3hGb3JRdWFkcyhvYmosIHF1YWRzKTsKIAor
I2lmIEVOQUJMRShTVkcpCisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYg
KGRvYyAmJiBkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICAgICAgb2Zmc2V0Qm91bmRpbmdCb3hG
b3JSZW1vdGVTVkdFbGVtZW50KHJlc3VsdCk7CisjZW5kaWYKKyAgICAKICAgICAvLyBUaGUgc2l6
ZSBvZiB0aGUgd2ViIGFyZWEgc2hvdWxkIGJlIHRoZSBjb250ZW50IHNpemUsIG5vdCB0aGUgY2xp
cHBlZCBzaXplLgogICAgIGlmIChpc1dlYkFyZWEoKSAmJiBvYmotPmZyYW1lKCktPnZpZXcoKSkK
ICAgICAgICAgcmVzdWx0LnNldFNpemUob2JqLT5mcmFtZSgpLT52aWV3KCktPmNvbnRlbnRzU2l6
ZSgpKTsKQEAgLTIxMzIsNyArMjE2MCwyNSBAQAogICAgIAogICAgIHJldHVybiAwOwogfQorCitB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdF
bGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogcmVtb3RlID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKTsKKyAgICBpZiAo
IXJlbW90ZSkKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgCisgICAgSW50UG9pbnQgb2Zmc2V0UG9p
bnQgPSBwb2ludCAtIGJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCk7CisgICAgcmV0dXJuIHJl
bW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3Qob2Zmc2V0UG9pbnQpOworfQorCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIGlmIChpc1NWR0lt
YWdlKCkpCisgICAgICAgIHJldHVybiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChwb2ludCk7Cisg
ICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdChwb2ludCk7Cit9CisgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9p
bnQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5oYXNMYXll
cigpKQpAQCAtMjM3NCw2ICsyNDIwLDggQEAKICAgICBpZiAoY3NzQm94ICYmIGNzc0JveC0+aXNJ
bWFnZSgpKSB7CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcp
KQogICAgICAgICAgICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8gUG9wVXBCdXR0b25Sb2xlIDog
QnV0dG9uUm9sZTsKKyAgICAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVy
biBTVkdSb290Um9sZTsKICAgICAgICAgcmV0dXJuIEltYWdlUm9sZTsKICAgICB9CiAgICAgCkBA
IC0yNjczLDcgKzI3MjEsODMgQEAKICAgICBheFNwaW5CdXR0b24tPnNldFBhcmVudCh0aGlzKTsK
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChheFNwaW5CdXR0b24pOwogfQorICAgIAorYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
cmVtb3RlU1ZHUm9vdEVsZW1lbnQoKTsKK30KKyAgICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6ZGV0YWNoUmVtb3RlU1ZHUm9vdCgpCit7CisgICAgaWYgKEFjY2Vzc2liaWxpdHlT
VkdSb290KiByb290ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSkKKyAgICAgICAgcm9vdC0+c2V0
UGFyZW50KDApOworfQogCitBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSBjb25zdAoreworI2lmIEVOQUJMRShTVkcp
CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRv
UmVuZGVySW1hZ2UobV9yZW5kZXJlcik7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0g
cmVuZGVySW1hZ2UtPmNhY2hlZEltYWdlKCk7CisgICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgCisgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdl
KCk7CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgCisgICAgU1ZHSW1hZ2UqIHN2Z0ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHSW1h
Z2UqPihpbWFnZSk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdmdJbWFnZS0+ZnJhbWVW
aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiAwOworICAgIEZyYW1l
KiBmcmFtZSA9IGZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2MgfHwgIWRvYy0+aXNTVkdEb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICAKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0Rv
Y3VtZW50Kj4oZG9jKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAg
ICAgICByZXR1cm4gMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyUm9vdCA9IHJvb3RFbGVt
ZW50LT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXJSb290KQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290U1ZHT2JqZWN0ID0gZnJhbWUt
PmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KTsK
KworICAgIC8vIEluIG9yZGVyIHRvIGNvbm5lY3QgdGhlIEFYIGhpZXJhcmNoeSBmcm9tIHRoZSBT
Vkcgcm9vdCBlbGVtZW50IGZyb20gdGhlIGxvYWRlZCByZXNvdXJjZQorICAgIC8vIHRoZSBwYXJl
bnQgbXVzdCBiZSBzZXQsIGJlY2F1c2UgdGhlcmUncyBubyBvdGhlciB3YXkgdG8gZ2V0IGJhY2sg
dG8gd2hvIGNyZWF0ZWQgdGhlIGltYWdlLgorICAgIEFTU0VSVChyb290U1ZHT2JqZWN0ICYmIHJv
b3RTVkdPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSk7CisgICAgaWYgKCFyb290U1ZH
T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlTVkdSb290KCkpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIHJldHVybiB0b0FjY2Vzc2liaWxpdHlTVkdSb290KHJvb3RTVkdPYmplY3QpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJlbigpCit7CisgICAgQWNjZXNzaWJpbGl0eVNW
R1Jvb3QqIHJvb3QgPSByZW1vdGVTVkdSb290RWxlbWVudCgpOworICAgIGlmICghcm9vdCkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIHJvb3QtPnNldFBhcmVudCh0aGlzKTsKKyAgICAKKyAg
ICBpZiAocm9vdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CisgICAgICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHJvb3QtPmNoaWxkcmVuKCk7CisgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQo
Y2hpbGRyZW5baV0pOworICAgIH0gZWxzZQorICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb290
KTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDYW52YXNDaGlsZHJl
bigpCiB7CiAgICAgaWYgKCFub2RlKCkgfHwgIW5vZGUoKS0+aGFzVGFnTmFtZShjYW52YXNUYWcp
KQpAQCAtMjc1MCw3ICsyODc0LDggQEAKICAgICBhZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAg
YWRkVGV4dEZpZWxkQ2hpbGRyZW4oKTsKICAgICBhZGRDYW52YXNDaGlsZHJlbigpOwotCisgICAg
YWRkUmVtb3RlU1ZHQ2hpbGRyZW4oKTsKKyAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdXBk
YXRlQXR0YWNobWVudFZpZXdQYXJlbnRzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVNW
R1Jvb3RfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5U1ZHUm9vdF9oCisKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QWNjZXNzaWJpbGl0eVNWR1Jvb3QgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7
CisgICAgCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVNWR1Jvb3QoUmVu
ZGVyT2JqZWN0Kik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVNWR1Jvb3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmls
aXR5U1ZHUm9vdCgpOworICAgIAorICAgIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKKyAgICAKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKworaW5saW5l
IEFjY2Vzc2liaWxpdHlTVkdSb290KiB0b0FjY2Vzc2liaWxpdHlTVkdSb290KEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxp
dHlTVkdSb290Kj4ob2JqZWN0KTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCisK
KyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDEyOTY4NykKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TWVudUxpc3RQ
b3B1cC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5U1ZHUm9vdC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlT
bGlkZXIuaCIKQEAgLTI0OSw2ICsyNTAsMTEgQEAKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlNZWRpYUNvbnRyb2w6OmNyZWF0ZShyZW5kZXJlcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShT
VkcpCisgICAgaWYgKHJlbmRlcmVyLT5pc1NWR1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlTVkdSb290OjpjcmVhdGUocmVuZGVyZXIpOworI2VuZGlmCisgICAgCiAgICAgaWYg
KHJlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKICAgICAgICAgUmVuZGVyQm94TW9kZWxP
YmplY3QqIGNzc0JveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpOwogICAgICAg
ICBpZiAoY3NzQm94LT5pc0xpc3RCb3goKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtMTg2OCw2ICsxODY4LDggQEAKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTbGlkZXIuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbi5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNwaW5CdXR0b24uaCcsCisgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U1ZHUm9vdC5jcHAnLAorICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNW
R1Jvb3QuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oJywK
ICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwJywK
QEAgLTYyOTgsNiArNjMwMCw3IEBACiAgICAgICAgICAgICAnc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNw
cCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCcsCisgICAgICAg
ICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgnLAogICAgICAgICAgICAg
J3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJl
dmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQ0ICszMSwxNyBAQAogI2luY2x1ZGUgIlNWR0ltYWdl
LmgiCiAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIkVtcHR5Q2xpZW50
cy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNp
bmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlNWR0ltYWdlQ2hyb21lQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQgOiBwdWJsaWMg
RW1wdHlDaHJvbWVDbGllbnQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR0ltYWdlQ2hy
b21lQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU1ZHSW1h
Z2VDaHJvbWVDbGllbnQoU1ZHSW1hZ2UqIGltYWdlKQotICAgICAgICA6IG1faW1hZ2UoaW1hZ2Up
Ci0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlQ2hyb21lQ2xpZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFNWR0ltYWdlKiBpbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2U7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVz
dHJveWVkKCkKLSAgICB7Ci0gICAgICAgIG1faW1hZ2UgPSAwOwotICAgIH0KLQotICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiByLCBi
b29sKQotICAgIHsKLSAgICAgICAgLy8gSWYgbV9pbWFnZS0+bV9wYWdlIGlzIG51bGwsIHdlJ3Jl
IGJlaW5nIGRlc3RydWN0ZWQsIGRvbid0IGZpcmUgY2hhbmdlZEluUmVjdCgpIGluIHRoYXQgY2Fz
ZS4KLSAgICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpICYmIG1f
aW1hZ2UtPm1fcGFnZSkKLSAgICAgICAgICAgIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+Y2hh
bmdlZEluUmVjdChtX2ltYWdlLCByKTsKLSAgICB9Ci0KLSAgICBTVkdJbWFnZSogbV9pbWFnZTsK
LX07Ci0KIFNWR0ltYWdlOjpTVkdJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6
IEltYWdlKG9ic2VydmVyKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTVkdJbWFnZUNocm9tZUNsaWVudF9oCisjZGVmaW5lIFNW
R0ltYWdlQ2hyb21lQ2xpZW50X2gKKworI2lmIEVOQUJMRShTVkcpCisKKyNpbmNsdWRlICJFbXB0
eUNsaWVudHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdJbWFnZUNocm9t
ZUNsaWVudCA6IHB1YmxpYyBFbXB0eUNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU1ZHSW1hZ2VDaHJvbWVDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBTVkdJbWFnZUNocm9tZUNsaWVudChTVkdJbWFnZSogaW1hZ2UpCisgICAgOiBt
X2ltYWdlKGltYWdlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBib29sIGlzU1ZH
SW1hZ2VDaHJvbWVDbGllbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgU1ZHSW1hZ2Uq
IGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkKKyAgICB7CisgICAgICAgIG1faW1hZ2UgPSAw
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9v
dFZpZXcoY29uc3QgSW50UmVjdCYgciwgYm9vbCkKKyAgICB7CisgICAgICAgIC8vIElmIG1faW1h
Z2UtPm1fcGFnZSBpcyBudWxsLCB3ZSdyZSBiZWluZyBkZXN0cnVjdGVkLCBkb24ndCBmaXJlIGNo
YW5nZWRJblJlY3QoKSBpbiB0aGF0IGNhc2UuCisgICAgICAgIGlmIChtX2ltYWdlICYmIG1faW1h
Z2UtPmltYWdlT2JzZXJ2ZXIoKSAmJiBtX2ltYWdlLT5tX3BhZ2UpCisgICAgICAgICAgICBtX2lt
YWdlLT5pbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QobV9pbWFnZSwgcik7CisgICAgfQor
ICAgIAorICAgIFNWR0ltYWdlKiBtX2ltYWdlOworfTsKKworaW5saW5lIFNWR0ltYWdlQ2hyb21l
Q2xpZW50KiB0b1NWR0ltYWdlQ2hyb21lQ2xpZW50KENocm9tZUNsaWVudCogY2xpZW50KQorewor
ICAgIEFTU0VSVCghY2xpZW50IHx8IGNsaWVudC0+aXNTVkdJbWFnZUNocm9tZUNsaWVudCgpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VDaHJvbWVDbGllbnQqPihjbGllbnQpOwor
fQorICAgIAorfSAKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYgLy8gU1ZHSW1hZ2VD
aHJvbWVDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyOTY4NykK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05ODUs
NiArOTg1LDcgQEAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNw
cAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCiAgICAgYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAorICAgIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAogICAg
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NTQ0LDYgKzQ1NDQsOCBAQAogCQlBQUI2MDU0RjE1
ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUI2MDU0QjE1ODc0QzU4MDA3QjUwMzEgLyog
SW5qZWN0ZWRTY3JpcHRCYXNlLmggKi87IH07CiAJCUFBQjYwNTUwMTU4NzRDNTgwMDdCNTAzMSAv
KiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQUI2MDU0QzE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwICovOyB9OwogCQlBQUI2MDU1MTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFBQjYwNTREMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5o
ICovOyB9OworCQlBQUMwOENFRjE1RjkzM0Q2MDBGMUUxODggLyogU1ZHSW1hZ2VDaHJvbWVDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzA4
Q0VEMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovOyB9OworCQlB
QUMwOENGMzE1Rjk0MUZEMDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzA4Q0YxMTVGOTQxRkMw
MEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oICovOyB9OwogCQlBQUQ3NjZFQjE1N0U1
MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8q
IEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCAqLzsgfTsKIAkJQUFENzY2RUMxNTdFNTAyRjAwRTg1
NDIzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaCAqLzsgfTsKIAkJQUFENzY2RUQxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3Bl
Y3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNh
bnZhc0luc3RydW1lbnRhdGlvbi5oICovOyB9OwpAQCAtMTE2ODIsNiArMTE2ODQsOSBAQAogCQlB
QUI2MDU0QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0QmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQUI2MDU0QzE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5q
ZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUI2
MDU0RDE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdl
Q2hyb21lQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdl
Q2hyb21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQzA4Q0YwMTVG
OTQxRkMwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQzA4Q0YxMTVGOTQxRkMwMEYxRTE4OCAvKiBBY2Nlc3Np
YmlsaXR5U1ZHUm9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3Np
YmlsaXR5U1ZHUm9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUQ3NjZFODE1
N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBQUQ3NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yQ2FudmFzQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9yQ2FudmFzQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RUEx
NTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODQ5LDYgKzE0ODU0LDggQEAK
IAkJCQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICov
LAogCQkJCTI5RDdCQ0Y1MTQ0NEFGNTgwMDcwNjE5QyAvKiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5jcHAgKi8sCiAJCQkJMjlEN0JDRjkxNDQ0QUY3RDAwNzA2MTlDIC8qIEFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uLmggKi8sCisJCQkJQUFDMDhDRjAxNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2li
aWxpdHlTVkdSb290LmNwcCAqLywKKwkJCQlBQUMwOENGMTE1Rjk0MUZDMDBGMUUxODggLyogQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QuaCAqLywKIAkJCQkyOTgxQ0FBQTEzMTgyMkVDMDBEMTJGMkEgLyog
QWNjZXNzaWJpbGl0eVRhYmxlLmNwcCAqLywKIAkJCQkyOUE4MTIwRDBGQkI5QzFEMDA1MTAyOTMg
LyogQWNjZXNzaWJpbGl0eVRhYmxlLmggKi8sCiAJCQkJMjk4MUNBQUIxMzE4MjJFQzAwRDEyRjJB
IC8qIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwICovLApAQCAtMTk3NjAsNiArMTk3NjcsNyBA
QAogCQkJCUIyNTU5OTBDMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdJbWFnZS5oICovLAogCQkJCTA4
Rjg1OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCAqLywKIAkJCQkwOEY4
NTlEMzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovLAorCQkJCUFBQzA4Q0VE
MTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTU3MSw2
ICsyNTU3OSw4IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAv
KiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUFDMDhDRUYxNUY5MzNENjAwRjFFMTg4
IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUMwOENGMzE1
Rjk0MUZEMDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEY3QjRBNjYxNUZGNkQ2QTAwNkI1RjIyIC8qIFBsYXRmb3JtTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBD
NEMwN0UgLyogTGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYs
OCBAQAogICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2ln
bmVkKSBPVkVSUklERSB7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFu
ZEluRGlyZWN0aW9uKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIGNsYXNzIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgOiBw
dWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewo=
</data>
<flag name="commit-queue"
          id="178051"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165887</attachid>
            <date>2012-09-26 15:46:25 -0700</date>
            <delta_ts>2012-09-27 18:07:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42622</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDYgKzI2Myw3
IEBACiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlVG9n
Z2xlQnV0dG9uLCBUb2dnbGVCdXR0b25Sb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVDYW52YXMsIENhbnZhc1JvbGUpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUxlZ2VuZCwgTGVnZW5kUm9sZSk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlU1ZHUm9v
dCwgU1ZHUm9vdFJvbGUpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpVbmNhY2hlZCwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVOQ0FDSEVE
KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6
OklkbGUsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpJRExFKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUuaAkocmV2aXNp
b24gMTI5Njg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJp
bGl0eVJvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBACiAgICAgV2ViQWNj
ZXNzaWJpbGl0eVJvbGVTcGxpdHRlciwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVN0YXRpY1Rl
eHQsCiAgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTeXN0ZW1XaWRlLAorICAgIFdlYkFjY2Vzc2li
aWxpdHlSb2xlU1ZHUm9vdCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRhYkdyb3VwLAogICAg
IFdlYkFjY2Vzc2liaWxpdHlSb2xlVGFiTGlzdCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRh
YlBhbmVsLApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjk2
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTc2LDYgKzIxNzYsOCBAQAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwIFwKQEAgLTUzNTAsNiArNTM1Miw3IEBA
CiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBcCisJU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5Njg4KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTItMDktMjYgIENocmlz
IEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogU3VwcG9ydCBl
bWJlZGRlZCBTVkcgb2JqZWN0cyBpbiBBWCB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIGFuIFNWRyBpbWFnZSBmcm9t
IGFub3RoZXIgcmVzb3VyY2UgdG8gYmUgaG9va2VkIGludG8gdGhlIEFYCisgICAgICAgIGhpZXJh
cmNoeS4gVGhpcyBpcyBkb25lIGJ5IGNyZWF0aW5nIGFuIEFYIHdyYXBwZXIgZm9yIHRoZSByb290
IFNWRyB0aGF0IGhvbGRzIG9udG8KKyAgICAgICAgaXRzIG5hdGl2ZSBwYXJlbnQgaW1hZ2UuIFRo
ZSBTVkdDaHJvbWVDbGllbnQgaXMgdGhlbiB1c2VkIHRvIGNvbm5lY3QgdG8gdGhpcyBTVkcgcmVz
b3VyY2UuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQu
aHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvZmZzZXRCb3Vu
ZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmVtb3RlU1ZH
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlTVkdSb290KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdSb290Ojp+QWNjZXNzaWJpbGl0eVNW
R1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6cGFyZW50T2JqZWN0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290Lmg6IEFkZGVkLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNWR1Jvb3Q6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U1ZHUm9vdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0FjY2Vzc2liaWxpdHlTVkdSb290KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgcG9zaXRpb25dKToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlS
b2xlTWFwKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChFbXB0
eUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6aXNF
bXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6aXNFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAg
IChDaHJvbWVDbGllbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZUNocm9tZUNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVudDo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmlzU1ZHSW1hZ2VDaHJvbWVD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjpjaHJvbWVEZXN0cm95ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmludmFsaWRhdGVDb250
ZW50c0FuZFJvb3RWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU1ZHSW1hZ2VDaHJvbWVDbGll
bnQpOgorCiAyMDEyLTA5LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gVm9sdW1lIGJ1dHRvbiBzaG91bGQgbm90IGJlIHNo
b3duIGZvciB2aWRlb3Mgd2l0aG91dCBhdWRpbwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjMxMSw2ICsyNjMxMSw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlTVkdSb290LmNwcCIKKwkJ
CQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZM
aXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rp
b258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
YWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxp
dHlTY3JvbGxiYXIuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTczNzA1
LDYgKzczNzYxLDEwIEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXFNWR0lt
YWdlQ2FjaGUuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xTVkdJbWFnZUNocm9tZUNsaWVudC5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgogCQkJCTxGaWx0ZXIKIAkJCQkJTmFtZT0iZmlsdGVycyIKIAkJCQkJPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNiAr
MzYwLDggQEAKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBtaW5pbXVtV2luZG93U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIEZsb2F0U2l6ZSgxMDAsIDEwMCk7IH07CiAKKyAgICAgICAgdmlydHVh
bCBib29sIGlzRW1wdHlDaHJvbWVDbGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KICAgICB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9v
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U1ZHUm9vdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTVkdSb290
LmgiCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6QWNjZXNzaWJpbGl0eVNWR1Jvb3QoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVuZGVyZXIpLAor
ICAgIG1fcGFyZW50KDApCit7Cit9CisKK0FjY2Vzc2liaWxpdHlTVkdSb290Ojp+QWNjZXNzaWJp
bGl0eVNWR1Jvb3QoKQoreworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlTVkdSb290PiBB
Y2Nlc3NpYmlsaXR5U1ZHUm9vdDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7Cisg
ICAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIG9iaiA9IG5ldyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdChy
ZW5kZXJlcik7CisgICAgb2JqLT5pbml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7Cit9
CisgICAgCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6cGFyZW50
T2JqZWN0KCkgY29uc3QKK3sKKyAgICAvLyBJZiBhIHBhcmVudCB3YXMgc2V0IGJlY2F1c2UgdGhp
cyBpcyBhIHJlbW90ZSBTVkcgcmVzb3VyY2UsIHVzZSB0aGF0CisgICAgLy8gYnV0IG90aGVyd2lz
ZSwgd2Ugc2hvdWxkIHJlbHkgb24gdGhlIHN0YW5kYXJkIHJlbmRlciB0cmVlIGZvciB0aGUgcGFy
ZW50LgorICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50OworICAgIAor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3QoKTsKK30K
KworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
aCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2ltcG9ydCAiQ2hyb21lLmgi
CisjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0
ICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkZvbnQuaCIKQEAgLTE0NTIsNyAr
MTQ1Myw4IEBACiAgICAgICAgIAogICAgICAgICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBzY3Jv
bGwgdmlldyB0byB1c2UgdG8gY29udmVydCB0aGUgY29udGVudHMgdG8gdGhlIHdpbmRvdy4KICAg
ICAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldyA9IDA7Ci0gICAgICAgIGZvciAoQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBh
cmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gMDsKKyAgICAgICAgZm9yIChwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50
T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewogICAg
ICAgICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpKSB7CiAgICAg
ICAgICAgICAgICAgc2Nyb2xsVmlldyA9IHRvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcocGFyZW50
KS0+c2Nyb2xsVmlldygpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ2Miw4ICsxNDY0
LDE1IEBACiAgICAgICAgIGlmIChzY3JvbGxWaWV3KQogICAgICAgICAgICAgcmVjdCA9IHNjcm9s
bFZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZWN0KTsKICAgICAgICAgCi0gICAgICAgIGlmICht
X29iamVjdC0+cGFnZSgpKQotICAgICAgICAgICAgcG9pbnQgPSBtX29iamVjdC0+cGFnZSgpLT5j
aHJvbWUoKS0+cm9vdFZpZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOworICAgICAgICBQYWdl
KiBwYWdlID0gbV9vYmplY3QtPnBhZ2UoKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhh
dmUgYW4gZW1wdHkgY2hyb21lIGNsaWVudCAobGlrZSBTVkcpIHRoZW4gd2Ugc2hvdWxkIHVzZSB0
aGUgcGFnZQorICAgICAgICAvLyBvZiB0aGUgc2Nyb2xsIHZpZXcgcGFyZW50IHRvIGhlbHAgdXMg
Z2V0IHRvIHRoZSBzY3JlZW4gcmVjdC4KKyAgICAgICAgaWYgKHBhcmVudCAmJiBwYWdlICYmIHBh
Z2UtPmNocm9tZSgpLT5jbGllbnQoKS0+aXNFbXB0eUNocm9tZUNsaWVudCgpKQorICAgICAgICAg
ICAgcGFnZSA9IHBhcmVudC0+cGFnZSgpOworCisgICAgICAgIGlmIChwYWdlKQorICAgICAgICAg
ICAgcG9pbnQgPSBwYWdlLT5jaHJvbWUoKS0+cm9vdFZpZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlv
bigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb2ludCA9IHJlY3QubG9jYXRpb24oKTsK
ICAgICB9CkBAIC0xNTgwLDYgKzE1ODksNyBAQAogICAgICAgICB7IEZvb3RlclJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IFRvZ2dsZUJ1dHRvblJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKICAgICAgICAgeyBDYW52YXNSb2xlLCBOU0FjY2Vzc2li
aWxpdHlJbWFnZVJvbGUgfSwKKyAgICAgICAgeyBTVkdSb290Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgTGVnZW5kUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0KICAgICB9OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlTWFwJiByb2xlTWFwID0gKm5ldyBB
Y2Nlc3NpYmlsaXR5Um9sZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMjk2
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDsKIGNsYXNzIEFYT2JqZWN0
Q2FjaGU7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC0yNDMsMTUgKzI0NCwyNCBA
QAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhU
TUxBcmVhRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKEhUTUxNYXBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKwogICAgIGJvb2wgcmVuZGVyT2Jq
ZWN0SXNPYnNlcnZhYmxlKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyUGFyZW50T2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkVsZW1l
bnRUeXBlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0OwogICAgIC8vIFRoaXMg
cmV0dXJucyB0cnVlIGlmIGl0J3MgZm9jdXNhYmxlIGJ1dCBpdCdzIG5vdCBjb250ZW50IGVkaXRh
YmxlIGFuZCBpdCdzIG5vdCBhIGNvbnRyb2wgb3IgQVJJQSBjb250cm9sLgotCisgICAgCisgICAg
Ym9vbCBpc1NWR0ltYWdlKCkgY29uc3Q7CisgICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdSb290KCk7
CisgICAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHJlbW90ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3Q7
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZH
RWxlbWVudChMYXlvdXRSZWN0JikgY29uc3Q7CisgICAgCiAgICAgdm9pZCBhZGRUZXh0RmllbGRD
aGlsZHJlbigpOwogICAgIHZvaWQgYWRkSW1hZ2VNYXBDaGlsZHJlbigpOwogICAgIHZvaWQgYWRk
Q2FudmFzQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZEF0dGFjaG1lbnRDaGlsZHJlbigpOworICAg
IHZvaWQgYWRkUmVtb3RlU1ZHQ2hpbGRyZW4oKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9p
ZCB1cGRhdGVBdHRhY2htZW50Vmlld1BhcmVudHMoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlz
aW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAKICAgICBTcGxpdHRl
clJvbGUsCiAgICAgU3RhdGljVGV4dFJvbGUsCiAgICAgU3lzdGVtV2lkZVJvbGUsCisgICAgU1ZH
Um9vdFJvbGUsCiAgICAgVGFiR3JvdXBSb2xlLAogICAgIFRhYkxpc3RSb2xlLAogICAgIFRhYlBh
bmVsUm9sZSwgICAgICAgICAgICAKQEAgLTMyNiw3ICszMjcsOCBAQAogICAgIHZpcnR1YWwgYm9v
bCBpc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5U1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBib29sIGFjY2Vz
c2liaWxpdHlPYmplY3RDb250YWluc1RleHQoU3RyaW5nICopIGNvbnN0OwogICAgIAogICAgIHZp
cnR1YWwgYm9vbCBpc0FuY2hvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QWxsSW5P
bmUuY3BwCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyLmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsOCArMzIsMTEgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94
LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBA
IC01NCw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1h
dGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKQEAgLTc3LDYgKzgxLDEwIEBACiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1
ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1
ZGUgIlNWR0ltYWdlLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtMTIy
LDYgKzEzMCw4IEBACiB7CiAgICAgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGFjaCgpOwog
ICAgIAorICAgIGRldGFjaFJlbW90ZVNWR1Jvb3QoKTsKKyAgICAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgaWYgKG1fcmVuZGVyZXIpCiAgICAgICAgIG1fcmVuZGVyZXItPnNldEhhc0FYT2JqZWN0KGZh
bHNlKTsKQEAgLTc5MSw2ICs4MDEsMTggQEAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwogfQogCisvLyBUaGUgYm91bmRpbmdC
b3ggZm9yIGVsZW1lbnRzIHdpdGhpbiB0aGUgcmVtb3RlIFNWRyBlbGVtZW50IG5lZWRzIHRvIGJl
IG9mZnNldCBieSBpdHMgcG9zaXRpb24KKy8vIHdpdGhpbiB0aGUgcGFyZW50IHBhZ2UsIG90aGVy
d2lzZSB0aGV5IGFyZSBpbiByZWxhdGl2ZSBjb29yZGluYXRlcyBvbmx5Lgordm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQo
TGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50
T2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgp
KSB7CisgICAgICAgICAgICByZWN0Lm1vdmVCeShwYXJlbnQtPnBhcmVudE9iamVjdCgpLT5ib3Vu
ZGluZ0JveFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorfQorICAgIAogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpi
b3VuZGluZ0JveFJlY3QoKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogb2JqID0gbV9yZW5k
ZXJlcjsKQEAgLTgxMyw2ICs4MzUsMTIgQEAKICAgICAKICAgICBMYXlvdXRSZWN0IHJlc3VsdCA9
IGJvdW5kaW5nQm94Rm9yUXVhZHMob2JqLCBxdWFkcyk7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAg
IERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmIChkb2MgJiYgZG9jLT5pc1NWR0Rv
Y3VtZW50KCkpCisgICAgICAgIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChy
ZXN1bHQpOworI2VuZGlmCisgICAgCiAgICAgLy8gVGhlIHNpemUgb2YgdGhlIHdlYiBhcmVhIHNo
b3VsZCBiZSB0aGUgY29udGVudCBzaXplLCBub3QgdGhlIGNsaXBwZWQgc2l6ZS4KICAgICBpZiAo
aXNXZWJBcmVhKCkgJiYgb2JqLT5mcmFtZSgpLT52aWV3KCkpCiAgICAgICAgIHJlc3VsdC5zZXRT
aXplKG9iai0+ZnJhbWUoKS0+dmlldygpLT5jb250ZW50c1NpemUoKSk7CkBAIC0yMTMyLDcgKzIx
NjAsMjUgQEAKICAgICAKICAgICByZXR1cm4gMDsKIH0KKworQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlbW90
ZSA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyZW1vdGUpCisgICAgICAgIHJl
dHVybiAwOwogICAgIAorICAgIEludFBvaW50IG9mZnNldFBvaW50ID0gcG9pbnQgLSByb3VuZGVk
SW50UG9pbnQoYm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKSk7CisgICAgcmV0dXJuIHJlbW90
ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3Qob2Zmc2V0UG9pbnQpOworfQorCitBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIGlmIChpc1NWR0ltYWdl
KCkpCisgICAgICAgIHJldHVybiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChwb2ludCk7CisgICAg
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdChwb2ludCk7Cit9CisgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5oYXNMYXllcigp
KQpAQCAtMjM3NCw2ICsyNDIwLDggQEAKICAgICBpZiAoY3NzQm94ICYmIGNzc0JveC0+aXNJbWFn
ZSgpKSB7CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQog
ICAgICAgICAgICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8gUG9wVXBCdXR0b25Sb2xlIDogQnV0
dG9uUm9sZTsKKyAgICAgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBT
VkdSb290Um9sZTsKICAgICAgICAgcmV0dXJuIEltYWdlUm9sZTsKICAgICB9CiAgICAgCkBAIC0y
NjczLDcgKzI3MjEsODMgQEAKICAgICBheFNwaW5CdXR0b24tPnNldFBhcmVudCh0aGlzKTsKICAg
ICBtX2NoaWxkcmVuLmFwcGVuZChheFNwaW5CdXR0b24pOwogfQorICAgIAorYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVt
b3RlU1ZHUm9vdEVsZW1lbnQoKTsKK30KKyAgICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6ZGV0YWNoUmVtb3RlU1ZHUm9vdCgpCit7CisgICAgaWYgKEFjY2Vzc2liaWxpdHlTVkdS
b290KiByb290ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSkKKyAgICAgICAgcm9vdC0+c2V0UGFy
ZW50KDApOworfQogCitBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSBjb25zdAoreworI2lmIEVOQUJMRShTVkcpCisg
ICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVu
ZGVySW1hZ2UobV9yZW5kZXJlcik7CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVu
ZGVySW1hZ2UtPmNhY2hlZEltYWdlKCk7CisgICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7
CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgCisgICAgU1ZHSW1hZ2UqIHN2Z0ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2Uq
PihpbWFnZSk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdmdJbWFnZS0+ZnJhbWVWaWV3
KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiAwOworICAgIEZyYW1lKiBm
cmFtZSA9IGZyYW1lVmlldy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAg
aWYgKCFkb2MgfHwgIWRvYy0+aXNTVkdEb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICBTVkdTVkdFbGVtZW50KiByb290RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3Vt
ZW50Kj4oZG9jKS0+cm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyUm9vdCA9IHJvb3RFbGVtZW50
LT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXJSb290KQorICAgICAgICByZXR1cm4gMDsK
KyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290U1ZHT2JqZWN0ID0gZnJhbWUtPmRv
Y3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KTsKKwor
ICAgIC8vIEluIG9yZGVyIHRvIGNvbm5lY3QgdGhlIEFYIGhpZXJhcmNoeSBmcm9tIHRoZSBTVkcg
cm9vdCBlbGVtZW50IGZyb20gdGhlIGxvYWRlZCByZXNvdXJjZQorICAgIC8vIHRoZSBwYXJlbnQg
bXVzdCBiZSBzZXQsIGJlY2F1c2UgdGhlcmUncyBubyBvdGhlciB3YXkgdG8gZ2V0IGJhY2sgdG8g
d2hvIGNyZWF0ZWQgdGhlIGltYWdlLgorICAgIEFTU0VSVChyb290U1ZHT2JqZWN0ICYmIHJvb3RT
VkdPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSk7CisgICAgaWYgKCFyb290U1ZHT2Jq
ZWN0LT5pc0FjY2Vzc2liaWxpdHlTVkdSb290KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIHJldHVybiB0b0FjY2Vzc2liaWxpdHlTVkdSb290KHJvb3RTVkdPYmplY3QpOworI2Vsc2UK
KyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJlbigpCit7CisgICAgQWNjZXNzaWJpbGl0eVNWR1Jv
b3QqIHJvb3QgPSByZW1vdGVTVkdSb290RWxlbWVudCgpOworICAgIGlmICghcm9vdCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIHJvb3QtPnNldFBhcmVudCh0aGlzKTsKKyAgICAKKyAgICBp
ZiAocm9vdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CisgICAgICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHJvb3QtPmNoaWxkcmVuKCk7CisgICAgICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hp
bGRyZW5baV0pOworICAgIH0gZWxzZQorICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb290KTsK
K30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDYW52YXNDaGlsZHJlbigp
CiB7CiAgICAgaWYgKCFub2RlKCkgfHwgIW5vZGUoKS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKQpA
QCAtMjc1MCw3ICsyODc0LDggQEAKICAgICBhZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAgYWRk
VGV4dEZpZWxkQ2hpbGRyZW4oKTsKICAgICBhZGRDYW52YXNDaGlsZHJlbigpOwotCisgICAgYWRk
UmVtb3RlU1ZHQ2hpbGRyZW4oKTsKKyAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdXBkYXRl
QXR0YWNobWVudFZpZXdQYXJlbnRzKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVNWR1Jv
b3RfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5U1ZHUm9vdF9oCisKKyNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7Cisg
ICAgCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVNWR1Jvb3QoUmVuZGVy
T2JqZWN0Kik7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNW
R1Jvb3Q+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5
U1ZHUm9vdCgpOworICAgIAorICAgIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKKyAgICAKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKworaW5saW5lIEFj
Y2Vzc2liaWxpdHlTVkdSb290KiB0b0FjY2Vzc2liaWxpdHlTVkdSb290KEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzQWNjZXNz
aWJpbGl0eVNWR1Jvb3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlT
VkdSb290Kj4ob2JqZWN0KTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCisKKyNl
bmRpZiAvLyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDEyOTY4NykKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1
cC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
U1ZHUm9vdC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTbGlk
ZXIuaCIKQEAgLTI0OSw2ICsyNTAsMTEgQEAKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2w6OmNyZWF0ZShyZW5kZXJlcik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTVkcp
CisgICAgaWYgKHJlbmRlcmVyLT5pc1NWR1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlTVkdSb290OjpjcmVhdGUocmVuZGVyZXIpOworI2VuZGlmCisgICAgCiAgICAgaWYgKHJl
bmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIGNzc0JveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpOwogICAgICAgICBp
ZiAoY3NzQm94LT5pc0xpc3RCb3goKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEy
OTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
MTg2OCw2ICsxODY4LDggQEAKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTbGlkZXIuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3Bp
bkJ1dHRvbi5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaCcsCisgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZH
Um9vdC5jcHAnLAorICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jv
b3QuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
JywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oJywKICAg
ICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwJywKQEAg
LTYyOTgsNiArNjMwMCw3IEBACiAgICAgICAgICAgICAnc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCcs
CiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCcsCisgICAgICAgICAg
ICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlz
aW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDQ0ICszMSwxNyBAQAogI2luY2x1ZGUgIlNWR0ltYWdlLmgi
CiAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNpbmNs
dWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlNWR0ltYWdlQ2hyb21lQ2xpZW50LmgiCiAj
aW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQgOiBwdWJsaWMgRW1w
dHlDaHJvbWVDbGllbnQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR0ltYWdlQ2hyb21l
Q2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU1ZHSW1hZ2VD
aHJvbWVDbGllbnQoU1ZHSW1hZ2UqIGltYWdlKQotICAgICAgICA6IG1faW1hZ2UoaW1hZ2UpCi0g
ICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFNWR0ltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2U7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJv
eWVkKCkKLSAgICB7Ci0gICAgICAgIG1faW1hZ2UgPSAwOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiByLCBib29s
KQotICAgIHsKLSAgICAgICAgLy8gSWYgbV9pbWFnZS0+bV9wYWdlIGlzIG51bGwsIHdlJ3JlIGJl
aW5nIGRlc3RydWN0ZWQsIGRvbid0IGZpcmUgY2hhbmdlZEluUmVjdCgpIGluIHRoYXQgY2FzZS4K
LSAgICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpICYmIG1faW1h
Z2UtPm1fcGFnZSkKLSAgICAgICAgICAgIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+Y2hhbmdl
ZEluUmVjdChtX2ltYWdlLCByKTsKLSAgICB9Ci0KLSAgICBTVkdJbWFnZSogbV9pbWFnZTsKLX07
Ci0KIFNWR0ltYWdlOjpTVkdJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IElt
YWdlKG9ic2VydmVyKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTVkdJbWFnZUNocm9tZUNsaWVudF9oCisjZGVmaW5lIFNWR0lt
YWdlQ2hyb21lQ2xpZW50X2gKKworI2lmIEVOQUJMRShTVkcpCisKKyNpbmNsdWRlICJFbXB0eUNs
aWVudHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdJbWFnZUNocm9tZUNs
aWVudCA6IHB1YmxpYyBFbXB0eUNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU1ZHSW1hZ2VDaHJvbWVDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBTVkdJbWFnZUNocm9tZUNsaWVudChTVkdJbWFnZSogaW1hZ2UpCisgICAgOiBtX2lt
YWdlKGltYWdlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBib29sIGlzU1ZHSW1h
Z2VDaHJvbWVDbGllbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgU1ZHSW1hZ2UqIGlt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkKKyAgICB7CisgICAgICAgIG1faW1hZ2UgPSAwOwor
ICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZp
ZXcoY29uc3QgSW50UmVjdCYgciwgYm9vbCkKKyAgICB7CisgICAgICAgIC8vIElmIG1faW1hZ2Ut
Pm1fcGFnZSBpcyBudWxsLCB3ZSdyZSBiZWluZyBkZXN0cnVjdGVkLCBkb24ndCBmaXJlIGNoYW5n
ZWRJblJlY3QoKSBpbiB0aGF0IGNhc2UuCisgICAgICAgIGlmIChtX2ltYWdlICYmIG1faW1hZ2Ut
PmltYWdlT2JzZXJ2ZXIoKSAmJiBtX2ltYWdlLT5tX3BhZ2UpCisgICAgICAgICAgICBtX2ltYWdl
LT5pbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QobV9pbWFnZSwgcik7CisgICAgfQorICAg
IAorICAgIFNWR0ltYWdlKiBtX2ltYWdlOworfTsKKworaW5saW5lIFNWR0ltYWdlQ2hyb21lQ2xp
ZW50KiB0b1NWR0ltYWdlQ2hyb21lQ2xpZW50KENocm9tZUNsaWVudCogY2xpZW50KQoreworICAg
IEFTU0VSVCghY2xpZW50IHx8IGNsaWVudC0+aXNTVkdJbWFnZUNocm9tZUNsaWVudCgpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VDaHJvbWVDbGllbnQqPihjbGllbnQpOworfQor
ICAgIAorfSAKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYgLy8gU1ZHSW1hZ2VDaHJv
bWVDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyOTY4NykKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05ODUsNiAr
OTg1LDcgQEAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAog
ICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwCiAgICAgYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAorICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNWR1Jvb3QuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUu
Y3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAogICAgIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NTQ0LDYgKzQ1NDQsOCBAQAogCQlBQUI2MDU0RjE1ODc0
QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUI2MDU0QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5q
ZWN0ZWRTY3JpcHRCYXNlLmggKi87IH07CiAJCUFBQjYwNTUwMTU4NzRDNTgwMDdCNTAzMSAvKiBJ
bmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBQUI2MDU0QzE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRN
b2R1bGUuY3BwICovOyB9OwogCQlBQUI2MDU1MTE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRT
Y3JpcHRNb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFBQjYwNTREMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICov
OyB9OworCQlBQUMwOENFRjE1RjkzM0Q2MDBGMUUxODggLyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzA4Q0VE
MTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovOyB9OworCQlBQUMw
OENGMzE1Rjk0MUZEMDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQzA4Q0YxMTVGOTQxRkMwMEYx
RTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oICovOyB9OwogCQlBQUQ3NjZFQjE1N0U1MDJG
MDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFENzY2RTgxNTdFNTAyRjAwRTg1NDIzIC8qIElu
c3BlY3RvckNhbnZhc0FnZW50LmNwcCAqLzsgfTsKIAkJQUFENzY2RUMxNTdFNTAyRjAwRTg1NDIz
IC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuaCAqLzsgfTsKIAkJQUFENzY2RUQxNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3Rv
ckNhbnZhc0luc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUFENzY2RUExNTdFNTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZh
c0luc3RydW1lbnRhdGlvbi5oICovOyB9OwpAQCAtMTE2ODIsNiArMTE2ODQsOSBAQAogCQlBQUI2
MDU0QjE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkU2NyaXB0QmFzZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBQUI2MDU0QzE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3Jp
cHRNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0
ZWRTY3JpcHRNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUI2MDU0
RDE1ODc0QzU4MDA3QjUwMzEgLyogSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRNb2R1bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hy
b21lQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2hy
b21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBQzA4Q0YwMTVGOTQx
RkMwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUFBQzA4Q0YxMTVGOTQxRkMwMEYxRTE4OCAvKiBBY2Nlc3NpYmls
aXR5U1ZHUm9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmls
aXR5U1ZHUm9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUQ3NjZFODE1N0U1
MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQUQ3NjZFOTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUFENzY2RUExNTdF
NTAyRjAwRTg1NDIzIC8qIEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODQ5LDYgKzE0ODU0LDggQEAKIAkJ
CQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovLAog
CQkJCTI5RDdCQ0Y1MTQ0NEFGNTgwMDcwNjE5QyAvKiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5j
cHAgKi8sCiAJCQkJMjlEN0JDRjkxNDQ0QUY3RDAwNzA2MTlDIC8qIEFjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmggKi8sCisJCQkJQUFDMDhDRjAxNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2liaWxp
dHlTVkdSb290LmNwcCAqLywKKwkJCQlBQUMwOENGMTE1Rjk0MUZDMDBGMUUxODggLyogQWNjZXNz
aWJpbGl0eVNWR1Jvb3QuaCAqLywKIAkJCQkyOTgxQ0FBQTEzMTgyMkVDMDBEMTJGMkEgLyogQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcCAqLywKIAkJCQkyOUE4MTIwRDBGQkI5QzFEMDA1MTAyOTMgLyog
QWNjZXNzaWJpbGl0eVRhYmxlLmggKi8sCiAJCQkJMjk4MUNBQUIxMzE4MjJFQzAwRDEyRjJBIC8q
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwICovLApAQCAtMTk3NjAsNiArMTk3NjcsNyBAQAog
CQkJCUIyNTU5OTBDMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdJbWFnZS5oICovLAogCQkJCTA4Rjg1
OUQyMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCAqLywKIAkJCQkwOEY4NTlE
MzE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5oICovLAorCQkJCUFBQzA4Q0VEMTVG
OTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVudC5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTU3MSw2ICsy
NTU3OSw4IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1
ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBa
ZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUFDMDhDRUYxNUY5MzNENjAwRjFFMTg4IC8q
IFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUMwOENGMzE1Rjk0
MUZEMDBGMUUxODggLyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNEY3QjRBNjYxNUZGNkQ2QTAwNkI1RjIyIC8qIFBsYXRmb3JtTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBDNEMw
N0UgLyogTGF5b3V0TWlsZXN0b25lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYsOCBA
QAogICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVk
KSBPVkVSUklERSB7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZElu
RGlyZWN0aW9uKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKIGNsYXNzIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJs
aWMgRnJhbWVMb2FkZXJDbGllbnQgewpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxMjk2ODcpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzkyLDYgKzEzOTIsNyBAQAogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvdmlzaWJsZS1l
bGVtZW50cy5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi85NzM1OSBhY2Nlc3NpYmlsaXR5
L3N2Zy1ib3VuZHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzk3MzU5IGFjY2Vzc2liaWxp
dHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi83MzkxMiBh
Y2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtdGV4dC5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5v
cmcvYi83MzkxMiBhY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtc2VuZHMtbm90aWZpY2F0aW9u
Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1l
bnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNyBAQAorCisKKworVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhY2Nlc3Np
YmlsaXR5IGVsZW1lbnRzIGNhbiBiZSBjcmVhdGVkIG91dCBvZiB3aGF0IGEgcmVtb3RlIFNWRyBp
bWFnZSBkZWZpbmVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitjb250YWluZXIgbG9jYXRp
b246ICg3LCA0MykKK0ZhY2Ugcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorRmFjZSBsYWJlbDogQVhE
ZXNjcmlwdGlvbjogZmFjZQorRmFjZVg6IDAKK0ZhY2VZOiAwCisKKworRXllIHJvbGU6IEFYUm9s
ZTogQVhCdXR0b24KK0V5ZSBsYWJlbDogQVhEZXNjcmlwdGlvbjogbGVmdC1leWUKK0V5ZVg6IDEw
MworRXllWTogMTQ4CisKKworTm9zZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitOb3NlIGxhYmVs
OiBBWERlc2NyaXB0aW9uOiBub3NlCitOb3NlWDogMTkzCitOb3NlWTogMjA2CisKKworTW91dGgg
cm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorTW91dGggbGFiZWw6IEFYRGVzY3JpcHRpb246IHNtaWxl
CitNb3V0aFg6IDExNQorTW91dGhZOiAyNzQuNQorCisKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKworPGJyPjxicj4KKworPGltZyB0YWJpbmRleD0iMCIgaWQ9InN2Zy1pbWFnZSIgc3Jj
PSJyZXNvdXJjZXMvc3ZnLWZhY2Uuc3ZnIiBhbHQ9ImludGVyYWN0aXZlIFNWRyIgPgorCis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IGFjY2Vzc2liaWxpdHkgZWxlbWVudHMgY2FuIGJlIGNyZWF0ZWQgb3V0IG9m
IHdoYXQgYSByZW1vdGUgU1ZHIGltYWdlIGRlZmluZXMuIikKKworLy8gUmV0dXJuIHRoZSBwYWdl
J3MgcmVsYXRpdmUgY29vcmRpbmF0ZXMuIElmIHdlIHJlbHkgb24gdGhlIHgoKSBvciB5KCkgb2Yg
dGhlIGFjY2Vzc2liaWxpdHkgb2JqZWN0LCB0aGVuCisvLyBhY2Nlc3NpYmlsaXR5IHRyYW5zZm9y
bXMgYXJlIGFwcGxpZWQgdGhhdCBmYWlsIGJlY2F1c2UgdGhlcmUgaXMgbm8gd2luZG93IGF2YWls
YWJsZQorZnVuY3Rpb24gcGFnZVgoZWxlbWVudCkgeworICAgIHJldHVybiBlbGVtZW50LmNsaWNr
UG9pbnRYIC0gZWxlbWVudC53aWR0aC8yOworfQorCitmdW5jdGlvbiBwYWdlWShlbGVtZW50KSB7
CisgICAgcmV0dXJuIGVsZW1lbnQuY2xpY2tQb2ludFkgLSBlbGVtZW50LmhlaWdodC8yOworfQor
CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LnRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdmct
aW1hZ2UiKS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgcnVuQVhUZXN0KTsKK30KKworZnVuY3Rp
b24gcnVuQVhUZXN0KCkgeyAgICAKKyAgICB2YXIgY29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJzdmctaW1hZ2UiKTsKKworICAgIHZhciB4
ID0gcGFnZVgoY29udGFpbmVyKSAtIDE7CisgICAgdmFyIHkgPSBwYWdlWShjb250YWluZXIpIC0g
MTsKKworICAgIGRlYnVnKCJjb250YWluZXIgbG9jYXRpb246ICgiICsgeCArICIsICIgKyB5ICsg
IikiKTsKKworICAgIHZhciBmYWNlID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgwKTsKKyAgICBk
ZWJ1ZygnRmFjZSByb2xlOiAnICsgZmFjZS5yb2xlKTsKKyAgICBkZWJ1ZygnRmFjZSBsYWJlbDog
JyArIGZhY2UuZGVzY3JpcHRpb24pOworICAgIGRlYnVnKCdGYWNlWDogJyArIChwYWdlWChmYWNl
KSAtIHgpKTsKKyAgICBkZWJ1ZygnRmFjZVk6ICcgKyBNYXRoLmFicyhwYWdlWShmYWNlKSAtIHkp
KTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIGV5ZSA9IGNvbnRhaW5lci5jaGlsZEF0
SW5kZXgoMSk7CisgICAgZGVidWcoJ0V5ZSByb2xlOiAnICsgZXllLnJvbGUpOworICAgIGRlYnVn
KCdFeWUgbGFiZWw6ICcgKyBleWUuZGVzY3JpcHRpb24pOworICAgIGRlYnVnKCdFeWVYOiAnICsg
KHBhZ2VYKGV5ZSkgLSB4KSk7CisgICAgZGVidWcoJ0V5ZVk6ICcgKyBNYXRoLmFicyhwYWdlWShl
eWUpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIgbm9zZSA9IGNvbnRhaW5l
ci5jaGlsZEF0SW5kZXgoMyk7CisgICAgZGVidWcoJ05vc2Ugcm9sZTogJyArIG5vc2Uucm9sZSk7
CisgICAgZGVidWcoJ05vc2UgbGFiZWw6ICcgKyBub3NlLmRlc2NyaXB0aW9uKTsKKyAgICBkZWJ1
ZygnTm9zZVg6ICcgKyAocGFnZVgobm9zZSkgLSB4KSk7CisgICAgZGVidWcoJ05vc2VZOiAnICsg
TWF0aC5hYnMocGFnZVkobm9zZSkgLSB5KSk7CisgICAgZGVidWcoJzxicj4nKTsKKworICAgIHZh
ciBtb3V0aCA9IGNvbnRhaW5lci5jaGlsZEF0SW5kZXgoNCk7CisgICAgZGVidWcoJ01vdXRoIHJv
bGU6ICcgKyBtb3V0aC5yb2xlKTsKKyAgICBkZWJ1ZygnTW91dGggbGFiZWw6ICcgKyBtb3V0aC5k
ZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ01vdXRoWDogJyArIChwYWdlWChtb3V0aCkgLSB4KSk7
CisgICAgZGVidWcoJ01vdXRoWTogJyArIE1hdGguYWJzKHBhZ2VZKG1vdXRoKSAtIHkpKTsKKyAg
ICBkZWJ1ZygnPGJyPicpOworCisgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
fQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEyOTY4OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDEyLTA5LTI2ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgZW1iZWRkZWQgU1ZHIG9iamVjdHMgaW4gQVgg
dHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1
NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
IHNraXBwZWQgb24gY2hyb21pdW0gdW50aWwgY2xpY2tQb2ludCgpIGlzIGltcGxlbWVudGVkIGlu
IERSVC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDktMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJp
c3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBWb2x1bWUgYnV0dG9uIHNo
b3VsZCBub3QgYmUgc2hvd24gZm9yIHZpZGVvcyB3aXRob3V0IGF1ZGlvCg==
</data>
<flag name="commit-queue"
          id="178062"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165888</attachid>
            <date>2012-09-26 16:00:50 -0700</date>
            <delta_ts>2012-09-27 18:07:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42630</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDYgKzI2Myw3
IEBACiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlVG9n
Z2xlQnV0dG9uLCBUb2dnbGVCdXR0b25Sb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVDYW52YXMsIENhbnZhc1JvbGUpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUxlZ2VuZCwgTGVnZW5kUm9sZSk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlU1ZHUm9v
dCwgU1ZHUm9vdFJvbGUpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpVbmNhY2hlZCwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVOQ0FDSEVE
KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6
OklkbGUsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpJRExFKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUuaAkocmV2aXNp
b24gMTI5Njg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJp
bGl0eVJvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBACiAgICAgV2ViQWNj
ZXNzaWJpbGl0eVJvbGVTcGxpdHRlciwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVN0YXRpY1Rl
eHQsCiAgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTeXN0ZW1XaWRlLAorICAgIFdlYkFjY2Vzc2li
aWxpdHlSb2xlU1ZHUm9vdCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRhYkdyb3VwLAogICAg
IFdlYkFjY2Vzc2liaWxpdHlSb2xlVGFiTGlzdCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRh
YlBhbmVsLApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjk2
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTc2LDYgKzIxNzYsOCBAQAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwIFwKQEAgLTUzNTAsNiArNTM1Miw3IEBA
CiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBcCisJU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5Njg4KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTItMDktMjYgIENocmlz
IEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogU3VwcG9ydCBl
bWJlZGRlZCBTVkcgb2JqZWN0cyBpbiBBWCB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIGFuIFNWRyBpbWFnZSBmcm9t
IGFub3RoZXIgcmVzb3VyY2UgdG8gYmUgaG9va2VkIGludG8gdGhlIEFYCisgICAgICAgIGhpZXJh
cmNoeS4gVGhpcyBpcyBkb25lIGJ5IGNyZWF0aW5nIGFuIEFYIHdyYXBwZXIgZm9yIHRoZSByb290
IFNWRyB0aGF0IGhvbGRzIG9udG8KKyAgICAgICAgaXRzIG5hdGl2ZSBwYXJlbnQgaW1hZ2UuIFRo
ZSBTVkdDaHJvbWVDbGllbnQgaXMgdGhlbiB1c2VkIHRvIGNvbm5lY3QgdG8gdGhpcyBTVkcgcmVz
b3VyY2UuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQu
aHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvZmZzZXRCb3Vu
ZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmVtb3RlU1ZH
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlTVkdSb290KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdSb290Ojp+QWNjZXNzaWJpbGl0eVNW
R1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6cGFyZW50T2JqZWN0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290Lmg6IEFkZGVkLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNWR1Jvb3Q6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U1ZHUm9vdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0FjY2Vzc2liaWxpdHlTVkdSb290KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgcG9zaXRpb25dKToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlS
b2xlTWFwKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChFbXB0
eUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6aXNF
bXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6aXNFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAg
IChDaHJvbWVDbGllbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZUNocm9tZUNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVudDo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmlzU1ZHSW1hZ2VDaHJvbWVD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjpjaHJvbWVEZXN0cm95ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmludmFsaWRhdGVDb250
ZW50c0FuZFJvb3RWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU1ZHSW1hZ2VDaHJvbWVDbGll
bnQpOgorCiAyMDEyLTA5LTI2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gVm9sdW1lIGJ1dHRvbiBzaG91bGQgbm90IGJlIHNo
b3duIGZvciB2aWRlb3Mgd2l0aG91dCBhdWRpbwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjMxMSw2ICsyNjMxMSw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlTVkdSb290LmNwcCIKKwkJ
CQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZM
aXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rp
b258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
YWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxp
dHlTY3JvbGxiYXIuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTczNzA1
LDYgKzczNzYxLDEwIEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXFNWR0lt
YWdlQ2FjaGUuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xTVkdJbWFnZUNocm9tZUNsaWVudC5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgogCQkJCTxGaWx0ZXIKIAkJCQkJTmFtZT0iZmlsdGVycyIKIAkJCQkJPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNiAr
MzYwLDggQEAKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBtaW5pbXVtV2luZG93U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIEZsb2F0U2l6ZSgxMDAsIDEwMCk7IH07CiAKKyAgICAgICAgdmlydHVh
bCBib29sIGlzRW1wdHlDaHJvbWVDbGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KICAgICB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9v
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U1ZHUm9vdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTVkdSb290
LmgiCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6QWNjZXNzaWJpbGl0eVNWR1Jvb3QoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVuZGVyZXIpLAor
ICAgIG1fcGFyZW50KDApCit7Cit9CisKK0FjY2Vzc2liaWxpdHlTVkdSb290Ojp+QWNjZXNzaWJp
bGl0eVNWR1Jvb3QoKQoreworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlTVkdSb290PiBB
Y2Nlc3NpYmlsaXR5U1ZHUm9vdDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7Cisg
ICAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIG9iaiA9IG5ldyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdChy
ZW5kZXJlcik7CisgICAgb2JqLT5pbml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7Cit9
CisgICAgCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6cGFyZW50
T2JqZWN0KCkgY29uc3QKK3sKKyAgICAvLyBJZiBhIHBhcmVudCB3YXMgc2V0IGJlY2F1c2UgdGhp
cyBpcyBhIHJlbW90ZSBTVkcgcmVzb3VyY2UsIHVzZSB0aGF0CisgICAgLy8gYnV0IG90aGVyd2lz
ZSwgd2Ugc2hvdWxkIHJlbHkgb24gdGhlIHN0YW5kYXJkIHJlbmRlciB0cmVlIGZvciB0aGUgcGFy
ZW50LgorICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50OworICAgIAor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3QoKTsKK30K
KworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
aCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2ltcG9ydCAiQ2hyb21lLmgi
CisjaW1wb3J0ICJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0
ICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkZvbnQuaCIKQEAgLTE0NTIsNyAr
MTQ1Myw4IEBACiAgICAgICAgIAogICAgICAgICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBzY3Jv
bGwgdmlldyB0byB1c2UgdG8gY29udmVydCB0aGUgY29udGVudHMgdG8gdGhlIHdpbmRvdy4KICAg
ICAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldyA9IDA7Ci0gICAgICAgIGZvciAoQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBh
cmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gMDsKKyAgICAgICAgZm9yIChwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50
T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewogICAg
ICAgICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpKSB7CiAgICAg
ICAgICAgICAgICAgc2Nyb2xsVmlldyA9IHRvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcocGFyZW50
KS0+c2Nyb2xsVmlldygpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ2Miw4ICsxNDY0
LDE1IEBACiAgICAgICAgIGlmIChzY3JvbGxWaWV3KQogICAgICAgICAgICAgcmVjdCA9IHNjcm9s
bFZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhyZWN0KTsKICAgICAgICAgCi0gICAgICAgIGlmICht
X29iamVjdC0+cGFnZSgpKQotICAgICAgICAgICAgcG9pbnQgPSBtX29iamVjdC0+cGFnZSgpLT5j
aHJvbWUoKS0+cm9vdFZpZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOworICAgICAgICBQYWdl
KiBwYWdlID0gbV9vYmplY3QtPnBhZ2UoKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhh
dmUgYW4gZW1wdHkgY2hyb21lIGNsaWVudCAobGlrZSBTVkcpIHRoZW4gd2Ugc2hvdWxkIHVzZSB0
aGUgcGFnZQorICAgICAgICAvLyBvZiB0aGUgc2Nyb2xsIHZpZXcgcGFyZW50IHRvIGhlbHAgdXMg
Z2V0IHRvIHRoZSBzY3JlZW4gcmVjdC4KKyAgICAgICAgaWYgKHBhcmVudCAmJiBwYWdlICYmIHBh
Z2UtPmNocm9tZSgpLT5jbGllbnQoKS0+aXNFbXB0eUNocm9tZUNsaWVudCgpKQorICAgICAgICAg
ICAgcGFnZSA9IHBhcmVudC0+cGFnZSgpOworCisgICAgICAgIGlmIChwYWdlKQorICAgICAgICAg
ICAgcG9pbnQgPSBwYWdlLT5jaHJvbWUoKS0+cm9vdFZpZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlv
bigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb2ludCA9IHJlY3QubG9jYXRpb24oKTsK
ICAgICB9CkBAIC0xNTgwLDYgKzE1ODksNyBAQAogICAgICAgICB7IEZvb3RlclJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAgICAgICB7IFRvZ2dsZUJ1dHRvblJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKICAgICAgICAgeyBDYW52YXNSb2xlLCBOU0FjY2Vzc2li
aWxpdHlJbWFnZVJvbGUgfSwKKyAgICAgICAgeyBTVkdSb290Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgTGVnZW5kUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0KICAgICB9OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlTWFwJiByb2xlTWFwID0gKm5ldyBB
Y2Nlc3NpYmlsaXR5Um9sZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMjk2
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDsKIGNsYXNzIEFYT2JqZWN0
Q2FjaGU7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC0yNDMsMTUgKzI0NCwyNCBA
QAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhU
TUxBcmVhRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKEhUTUxNYXBFbGVtZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKwogICAgIGJvb2wgcmVuZGVyT2Jq
ZWN0SXNPYnNlcnZhYmxlKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIFJlbmRlck9iamVjdCog
cmVuZGVyUGFyZW50T2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkVsZW1l
bnRUeXBlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0OwogICAgIC8vIFRoaXMg
cmV0dXJucyB0cnVlIGlmIGl0J3MgZm9jdXNhYmxlIGJ1dCBpdCdzIG5vdCBjb250ZW50IGVkaXRh
YmxlIGFuZCBpdCdzIG5vdCBhIGNvbnRyb2wgb3IgQVJJQSBjb250cm9sLgotCisgICAgCisgICAg
Ym9vbCBpc1NWR0ltYWdlKCkgY29uc3Q7CisgICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdSb290KCk7
CisgICAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHJlbW90ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3Q7
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZH
RWxlbWVudChMYXlvdXRSZWN0JikgY29uc3Q7CisgICAgCiAgICAgdm9pZCBhZGRUZXh0RmllbGRD
aGlsZHJlbigpOwogICAgIHZvaWQgYWRkSW1hZ2VNYXBDaGlsZHJlbigpOwogICAgIHZvaWQgYWRk
Q2FudmFzQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZEF0dGFjaG1lbnRDaGlsZHJlbigpOworICAg
IHZvaWQgYWRkUmVtb3RlU1ZHQ2hpbGRyZW4oKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9p
ZCB1cGRhdGVBdHRhY2htZW50Vmlld1BhcmVudHMoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlz
aW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAKICAgICBTcGxpdHRl
clJvbGUsCiAgICAgU3RhdGljVGV4dFJvbGUsCiAgICAgU3lzdGVtV2lkZVJvbGUsCisgICAgU1ZH
Um9vdFJvbGUsCiAgICAgVGFiR3JvdXBSb2xlLAogICAgIFRhYkxpc3RSb2xlLAogICAgIFRhYlBh
bmVsUm9sZSwgICAgICAgICAgICAKQEAgLTMyNiw3ICszMjcsOCBAQAogICAgIHZpcnR1YWwgYm9v
bCBpc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5U1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBib29sIGFjY2Vz
c2liaWxpdHlPYmplY3RDb250YWluc1RleHQoU3RyaW5nICopIGNvbnN0OwogICAgIAogICAgIHZp
cnR1YWwgYm9vbCBpc0FuY2hvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QWxsSW5P
bmUuY3BwCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyLmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsOCArMzIsMTEgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94
LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgorI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBA
IC01NCw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1h
dGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKQEAgLTc3LDYgKzgxLDEwIEBACiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1
ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1
ZGUgIlNWR0ltYWdlLmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtMTIy
LDYgKzEzMCw4IEBACiB7CiAgICAgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGFjaCgpOwog
ICAgIAorICAgIGRldGFjaFJlbW90ZVNWR1Jvb3QoKTsKKyAgICAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgaWYgKG1fcmVuZGVyZXIpCiAgICAgICAgIG1fcmVuZGVyZXItPnNldEhhc0FYT2JqZWN0KGZh
bHNlKTsKQEAgLTc5MSw2ICs4MDEsMTggQEAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwogfQogCisvLyBUaGUgYm91bmRpbmdC
b3ggZm9yIGVsZW1lbnRzIHdpdGhpbiB0aGUgcmVtb3RlIFNWRyBlbGVtZW50IG5lZWRzIHRvIGJl
IG9mZnNldCBieSBpdHMgcG9zaXRpb24KKy8vIHdpdGhpbiB0aGUgcGFyZW50IHBhZ2UsIG90aGVy
d2lzZSB0aGV5IGFyZSBpbiByZWxhdGl2ZSBjb29yZGluYXRlcyBvbmx5Lgordm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQo
TGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50
T2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgp
KSB7CisgICAgICAgICAgICByZWN0Lm1vdmVCeShwYXJlbnQtPnBhcmVudE9iamVjdCgpLT5ib3Vu
ZGluZ0JveFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorfQorICAgIAogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpi
b3VuZGluZ0JveFJlY3QoKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogb2JqID0gbV9yZW5k
ZXJlcjsKQEAgLTgxMyw2ICs4MzUsMTIgQEAKICAgICAKICAgICBMYXlvdXRSZWN0IHJlc3VsdCA9
IGJvdW5kaW5nQm94Rm9yUXVhZHMob2JqLCBxdWFkcyk7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAg
IERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOworICAgIGlmIChkb2MgJiYgZG9jLT5pc1NWR0Rv
Y3VtZW50KCkpCisgICAgICAgIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChy
ZXN1bHQpOworI2VuZGlmCisgICAgCiAgICAgLy8gVGhlIHNpemUgb2YgdGhlIHdlYiBhcmVhIHNo
b3VsZCBiZSB0aGUgY29udGVudCBzaXplLCBub3QgdGhlIGNsaXBwZWQgc2l6ZS4KICAgICBpZiAo
aXNXZWJBcmVhKCkgJiYgb2JqLT5mcmFtZSgpLT52aWV3KCkpCiAgICAgICAgIHJlc3VsdC5zZXRT
aXplKG9iai0+ZnJhbWUoKS0+dmlldygpLT5jb250ZW50c1NpemUoKSk7CkBAIC0yMTMyLDcgKzIx
NjAsMjUgQEAKICAgICAKICAgICByZXR1cm4gMDsKIH0KKworQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlbW90
ZSA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyZW1vdGUpCisgICAgICAgIHJl
dHVybiAwOwogICAgIAorICAgIEludFNpemUgb2Zmc2V0UG9pbnQgPSBwb2ludCAtIHJvdW5kZWRJ
bnRQb2ludChib3VuZGluZ0JveFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICByZXR1cm4gcmVtb3Rl
LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdCh0b1BvaW50KG9mZnNldFBvaW50KSk7Cit9CisKK0FjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3Np
YmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKGlz
U1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KHBvaW50
KTsKKyAgICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2li
aWxpdHlIaXRUZXN0KHBvaW50KTsKK30KKyAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmhh
c0xheWVyKCkpCkBAIC0yMzc0LDYgKzI0MjAsOCBAQAogICAgIGlmIChjc3NCb3ggJiYgY3NzQm94
LT5pc0ltYWdlKCkpIHsKICAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShpbnB1
dFRhZykpCiAgICAgICAgICAgICByZXR1cm4gYXJpYUhhc1BvcHVwKCkgPyBQb3BVcEJ1dHRvblJv
bGUgOiBCdXR0b25Sb2xlOworICAgICAgICBpZiAoaXNTVkdJbWFnZSgpKQorICAgICAgICAgICAg
cmV0dXJuIFNWR1Jvb3RSb2xlOwogICAgICAgICByZXR1cm4gSW1hZ2VSb2xlOwogICAgIH0KICAg
ICAKQEAgLTI2NzMsNyArMjcyMSw4MyBAQAogICAgIGF4U3BpbkJ1dHRvbi0+c2V0UGFyZW50KHRo
aXMpOwogICAgIG1fY2hpbGRyZW4uYXBwZW5kKGF4U3BpbkJ1dHRvbik7CiB9CisgICAgCitib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzU1ZHSW1hZ2UoKSBjb25zdAoreworICAgIHJl
dHVybiByZW1vdGVTVkdSb290RWxlbWVudCgpOworfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpkZXRhY2hSZW1vdGVTVkdSb290KCkKK3sKKyAgICBpZiAoQWNjZXNzaWJp
bGl0eVNWR1Jvb3QqIHJvb3QgPSByZW1vdGVTVkdSb290RWxlbWVudCgpKQorICAgICAgICByb290
LT5zZXRQYXJlbnQoMCk7Cit9CiAKK0FjY2Vzc2liaWxpdHlTVkdSb290KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudCgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFNWRykKKyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzUmVuZGVySW1hZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdl
ID0gdG9SZW5kZXJJbWFnZShtX3JlbmRlcmVyKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSByZW5kZXJJbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoIWNhY2hlZEltYWdlKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+
aW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNTVkdJbWFnZSgpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAKKyAgICBTVkdJbWFnZSogc3ZnSW1hZ2UgPSBzdGF0aWNfY2FzdDxT
VkdJbWFnZSo+KGltYWdlKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHN2Z0ltYWdlLT5m
cmFtZVZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
RnJhbWUqIGZyYW1lID0gZnJhbWVWaWV3LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKKyAgICBpZiAoIWRvYyB8fCAhZG9jLT5pc1NWR0RvY3VtZW50KCkpCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHRG9jdW1lbnQqPihkb2MpLT5yb290RWxlbWVudCgpOworICAgIGlmICghcm9vdEVsZW1lbnQp
CisgICAgICAgIHJldHVybiAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXJSb290ID0gcm9v
dEVsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlclJvb3QpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RTVkdPYmplY3QgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlclJv
b3QpOworCisgICAgLy8gSW4gb3JkZXIgdG8gY29ubmVjdCB0aGUgQVggaGllcmFyY2h5IGZyb20g
dGhlIFNWRyByb290IGVsZW1lbnQgZnJvbSB0aGUgbG9hZGVkIHJlc291cmNlCisgICAgLy8gdGhl
IHBhcmVudCBtdXN0IGJlIHNldCwgYmVjYXVzZSB0aGVyZSdzIG5vIG90aGVyIHdheSB0byBnZXQg
YmFjayB0byB3aG8gY3JlYXRlZCB0aGUgaW1hZ2UuCisgICAgQVNTRVJUKHJvb3RTVkdPYmplY3Qg
JiYgcm9vdFNWR09iamVjdC0+aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpKTsKKyAgICBpZiAoIXJv
b3RTVkdPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgCisgICAgcmV0dXJuIHRvQWNjZXNzaWJpbGl0eVNWR1Jvb3Qocm9vdFNWR09iamVjdCk7
CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisgICAgCit2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFkZFJlbW90ZVNWR0NoaWxkcmVuKCkKK3sKKyAgICBBY2Nlc3NpYmls
aXR5U1ZHUm9vdCogcm9vdCA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcm9vdC0+c2V0UGFyZW50KHRoaXMpOworICAg
IAorICAgIGlmIChyb290LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gcm9vdC0+Y2hpbGRyZW4oKTsKKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gY2hpbGRyZW4uc2l6ZSgpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBtX2NoaWxkcmVuLmFw
cGVuZChjaGlsZHJlbltpXSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5k
KHJvb3QpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENhbnZhc0No
aWxkcmVuKCkKIHsKICAgICBpZiAoIW5vZGUoKSB8fCAhbm9kZSgpLT5oYXNUYWdOYW1lKGNhbnZh
c1RhZykpCkBAIC0yNzUwLDcgKzI4NzQsOCBAQAogICAgIGFkZEltYWdlTWFwQ2hpbGRyZW4oKTsK
ICAgICBhZGRUZXh0RmllbGRDaGlsZHJlbigpOwogICAgIGFkZENhbnZhc0NoaWxkcmVuKCk7Ci0K
KyAgICBhZGRSZW1vdGVTVkdDaGlsZHJlbigpOworICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICB1cGRhdGVBdHRhY2htZW50Vmlld1BhcmVudHMoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNW
R1Jvb3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmls
aXR5U1ZHUm9vdF9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlTVkdSb290X2gKKworI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0IHsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5U1ZHUm9v
dChSZW5kZXJPYmplY3QqKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5U1ZHUm9vdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgfkFjY2Vz
c2liaWxpdHlTVkdSb290KCk7CisgICAgCisgICAgdm9pZCBzZXRQYXJlbnQoQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CisgICAgCitwcml2YXRlOgor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1fcGFyZW50OworICAgIAorICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cit9OworCitp
bmxpbmUgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHRvQWNjZXNzaWJpbGl0eVNWR1Jvb3QoQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JqZWN0KQoreworICAgIEFTU0VSVCghb2JqZWN0IHx8IG9iamVjdC0+
aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNz
aWJpbGl0eVNWR1Jvb3QqPihvYmplY3QpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZSAKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlTVkdSb290X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMTI5Njg3
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNZW51
TGlzdFBvcHVwLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlTVkdSb290LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCIK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eVNsaWRlci5oIgpAQCAtMjQ5LDYgKzI1MCwxMSBAQAogICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eU1lZGlhQ29udHJvbDo6Y3JlYXRlKHJlbmRlcmVyKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKFNWRykKKyAgICBpZiAocmVuZGVyZXItPmlzU1ZHUm9vdCgpKQorICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OmNyZWF0ZShyZW5kZXJlcik7CisjZW5kaWYKKyAgICAKICAg
ICBpZiAocmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSkgewogICAgICAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdCogY3NzQm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcik7CiAg
ICAgICAgIGlmIChjc3NCb3gtPmlzTGlzdEJveCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0xODY4LDYgKzE4NjgsOCBAQAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5oJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTcGluQnV0dG9uLmNwcCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5oJywKKyAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTVkdSb290LmNwcCcsCisgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U1ZHUm9vdC5oJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5j
cHAnLApAQCAtNjI5OCw2ICs2MzAwLDcgQEAKICAgICAgICAgICAgICdzdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2Fj
aGUuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oJywKKyAg
ICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCcsCiAgICAgICAg
ICAgICAnc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAkocmV2aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNDQgKzMxLDE3IEBACiAjaW5jbHVkZSAiU1ZH
SW1hZ2UuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiRW1wdHlD
bGllbnRzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5o
IgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCisjaW5jbHVkZSAiU1ZHSW1hZ2VDaHJvbWVDbGll
bnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdJbWFnZUNocm9tZUNsaWVudCA6IHB1
YmxpYyBFbXB0eUNocm9tZUNsaWVudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1ZHSW1h
Z2VDaHJvbWVDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBT
VkdJbWFnZUNocm9tZUNsaWVudChTVkdJbWFnZSogaW1hZ2UpCi0gICAgICAgIDogbV9pbWFnZShp
bWFnZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2VDaHJvbWVD
bGllbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgU1ZHSW1hZ2UqIGltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZTsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjaHJv
bWVEZXN0cm95ZWQoKQotICAgIHsKLSAgICAgICAgbV9pbWFnZSA9IDA7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3Qm
IHIsIGJvb2wpCi0gICAgewotICAgICAgICAvLyBJZiBtX2ltYWdlLT5tX3BhZ2UgaXMgbnVsbCwg
d2UncmUgYmVpbmcgZGVzdHJ1Y3RlZCwgZG9uJ3QgZmlyZSBjaGFuZ2VkSW5SZWN0KCkgaW4gdGhh
dCBjYXNlLgotICAgICAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkg
JiYgbV9pbWFnZS0+bV9wYWdlKQotICAgICAgICAgICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigp
LT5jaGFuZ2VkSW5SZWN0KG1faW1hZ2UsIHIpOwotICAgIH0KLQotICAgIFNWR0ltYWdlKiBtX2lt
YWdlOwotfTsKLQogU1ZHSW1hZ2U6OlNWR0ltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQog
ICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNWR0ltYWdlQ2hyb21lQ2xpZW50X2gKKyNkZWZp
bmUgU1ZHSW1hZ2VDaHJvbWVDbGllbnRfaAorCisjaWYgRU5BQkxFKFNWRykKKworI2luY2x1ZGUg
IkVtcHR5Q2xpZW50cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0ltYWdl
Q2hyb21lQ2xpZW50IDogcHVibGljIEVtcHR5Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTVkdJbWFnZUNocm9tZUNsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIFNWR0ltYWdlQ2hyb21lQ2xpZW50KFNWR0ltYWdlKiBpbWFnZSkKKyAg
ICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdJbWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBTVkdJ
bWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgCitwcml2YXRlOgor
ICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgbV9pbWFn
ZSA9IDA7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNB
bmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiByLCBib29sKQorICAgIHsKKyAgICAgICAgLy8gSWYg
bV9pbWFnZS0+bV9wYWdlIGlzIG51bGwsIHdlJ3JlIGJlaW5nIGRlc3RydWN0ZWQsIGRvbid0IGZp
cmUgY2hhbmdlZEluUmVjdCgpIGluIHRoYXQgY2FzZS4KKyAgICAgICAgaWYgKG1faW1hZ2UgJiYg
bV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpICYmIG1faW1hZ2UtPm1fcGFnZSkKKyAgICAgICAgICAg
IG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+Y2hhbmdlZEluUmVjdChtX2ltYWdlLCByKTsKKyAg
ICB9CisgICAgCisgICAgU1ZHSW1hZ2UqIG1faW1hZ2U7Cit9OworCitpbmxpbmUgU1ZHSW1hZ2VD
aHJvbWVDbGllbnQqIHRvU1ZHSW1hZ2VDaHJvbWVDbGllbnQoQ2hyb21lQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgQVNTRVJUKCFjbGllbnQgfHwgY2xpZW50LT5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdJbWFnZUNocm9tZUNsaWVudCo+KGNsaWVu
dCk7Cit9CisgICAgCit9IAorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBTVkdJ
bWFnZUNocm9tZUNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTI5
Njg3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTk4NSw2ICs5ODUsNyBAQAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKICAg
ICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCisgICAgYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3Bw
CiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1NDQsNiArNDU0NCw4IEBACiAJCUFBQjYw
NTRGMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRCMTU4NzRDNTgwMDdCNTAz
MSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLzsgfTsKIAkJQUFCNjA1NTAxNTg3NEM1ODAwN0I1
MDMxIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRDMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3Rl
ZFNjcmlwdE1vZHVsZS5jcHAgKi87IH07CiAJCUFBQjYwNTUxMTU4NzRDNTgwMDdCNTAzMSAvKiBJ
bmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUFCNjA1NEQxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0TW9k
dWxlLmggKi87IH07CisJCUFBQzA4Q0VGMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9t
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUFDMDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggKi87IH07
CisJCUFBQzA4Q0YzMTVGOTQxRkQwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFDMDhDRjExNUY5
NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmggKi87IH07CiAJCUFBRDc2NkVC
MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFODE1N0U1MDJGMDBFODU0
MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwICovOyB9OwogCQlBQUQ3NjZFQzE1N0U1MDJG
MDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNw
ZWN0b3JDYW52YXNBZ2VudC5oICovOyB9OwogCQlBQUQ3NjZFRDE1N0U1MDJGMDBFODU0MjMgLyog
SW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggKi87IH07CkBAIC0xMTY4Miw2ICsxMTY4NCw5IEBA
CiAJCUFBQjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQjYwNTRDMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFBQjYwNTREMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1vZHVsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUMwOENFRDE1RjkzM0Q2MDBGMUUxODggLyogU1ZH
SW1hZ2VDaHJvbWVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
SW1hZ2VDaHJvbWVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhD
RjAxNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdSb290LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhDRjExNUY5NDFGQzAwRjFFMTg4IC8qIEFj
Y2Vzc2liaWxpdHlTVkdSb290LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlTVkdSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2
NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJ
bnNwZWN0b3JDYW52YXNBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JDYW52YXNBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUQ3
NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNhbnZhc0luc3RydW1l
bnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4NDksNiArMTQ4NTQs
OCBAQAogCQkJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVy
LmggKi8sCiAJCQkJMjlEN0JDRjUxNDQ0QUY1ODAwNzA2MTlDIC8qIEFjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmNwcCAqLywKIAkJCQkyOUQ3QkNGOTE0NDRBRjdEMDA3MDYxOUMgLyogQWNjZXNzaWJp
bGl0eVNwaW5CdXR0b24uaCAqLywKKwkJCQlBQUMwOENGMDE1Rjk0MUZDMDBGMUUxODggLyogQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QuY3BwICovLAorCQkJCUFBQzA4Q0YxMTVGOTQxRkMwMEYxRTE4OCAv
KiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oICovLAogCQkJCTI5ODFDQUFBMTMxODIyRUMwMEQxMkYy
QSAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuY3BwICovLAogCQkJCTI5QTgxMjBEMEZCQjlDMUQwMDUx
MDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuaCAqLywKIAkJCQkyOTgxQ0FBQjEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgKi8sCkBAIC0xOTc2MCw2ICsxOTc2
Nyw3IEBACiAJCQkJQjI1NTk5MEMwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ltYWdlLmggKi8sCiAJ
CQkJMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwICovLAogCQkJ
CTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi8sCisJCQkJQUFD
MDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI1
NTcxLDYgKzI1NTc5LDggQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVu
aWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkg
LyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4
RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUMwOENFRjE1RjkzM0Q2MDBG
MUUxODggLyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFBQzA4
Q0YzMTVGOTQxRkQwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkI5MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0RjdCNEE2NjE1RkY2RDZBMDA2QjVGMjIgLyogUGxhdGZvcm1N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUQ3MkY2MTVGRTY5
NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYg
KzIwNiw4IEBACiAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQo
dW5zaWduZWQpIE9WRVJSSURFIHsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdWJi
ZXJCYW5kSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5Q2hyb21lQ2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDEyOTY4NykKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOTIsNiArMTM5Miw3IEBACiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS92
aXNpYmxlLWVsZW1lbnRzLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzk3MzU5IGFjY2Vz
c2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvOTczNTkgYWNj
ZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzczOTEyIGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC10ZXh0Lmh0bWwgWyBTa2lwIF0KIAog
d2Via2l0Lm9yZy9iLzczOTEyIGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1ub3Rp
ZmljYXRpb24uaHRtbCBbIEZhaWx1cmUgUGFzcyBdCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1v
dGUtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisKKworCitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0
IGFjY2Vzc2liaWxpdHkgZWxlbWVudHMgY2FuIGJlIGNyZWF0ZWQgb3V0IG9mIHdoYXQgYSByZW1v
dGUgU1ZHIGltYWdlIGRlZmluZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2NvbnRhaW5l
ciBsb2NhdGlvbjogKDcsIDQzKQorRmFjZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitGYWNlIGxh
YmVsOiBBWERlc2NyaXB0aW9uOiBmYWNlCitGYWNlWDogMAorRmFjZVk6IDAKKworCitFeWUgcm9s
ZTogQVhSb2xlOiBBWEJ1dHRvbgorRXllIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBsZWZ0LWV5ZQor
RXllWDogMTAzCitFeWVZOiAxNDgKKworCitOb3NlIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK05v
c2UgbGFiZWw6IEFYRGVzY3JpcHRpb246IG5vc2UKK05vc2VYOiAxOTMKK05vc2VZOiAyMDYKKwor
CitNb3V0aCByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitNb3V0aCBsYWJlbDogQVhEZXNjcmlwdGlv
bjogc21pbGUKK01vdXRoWDogMTE1CitNb3V0aFk6IDI3NC41CisKKworCkluZGV4OiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorCis8YnI+PGJyPgorCis8aW1nIHRhYmluZGV4PSIwIiBpZD0ic3ZnLWlt
YWdlIiBzcmM9InJlc291cmNlcy9zdmctZmFjZS5zdmciIGFsdD0iaW50ZXJhY3RpdmUgU1ZHIiA+
CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBlbnN1cmVzIHRoYXQgYWNjZXNzaWJpbGl0eSBlbGVtZW50cyBjYW4gYmUgY3JlYXRl
ZCBvdXQgb2Ygd2hhdCBhIHJlbW90ZSBTVkcgaW1hZ2UgZGVmaW5lcy4iKQorCisvLyBSZXR1cm4g
dGhlIHBhZ2UncyByZWxhdGl2ZSBjb29yZGluYXRlcy4gSWYgd2UgcmVseSBvbiB0aGUgeCgpIG9y
IHkoKSBvZiB0aGUgYWNjZXNzaWJpbGl0eSBvYmplY3QsIHRoZW4KKy8vIGFjY2Vzc2liaWxpdHkg
dHJhbnNmb3JtcyBhcmUgYXBwbGllZCB0aGF0IGZhaWwgYmVjYXVzZSB0aGVyZSBpcyBubyB3aW5k
b3cgYXZhaWxhYmxlCitmdW5jdGlvbiBwYWdlWChlbGVtZW50KSB7CisgICAgcmV0dXJuIGVsZW1l
bnQuY2xpY2tQb2ludFggLSBlbGVtZW50LndpZHRoLzI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VZKGVs
ZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5jbGlja1BvaW50WSAtIGVsZW1lbnQuaGVpZ2h0
LzI7Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN2Zy1pbWFnZSIpLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBydW5BWFRlc3QpOworfQor
CitmdW5jdGlvbiBydW5BWFRlc3QoKSB7ICAgIAorICAgIHZhciBjb250YWluZXIgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInN2Zy1pbWFnZSIpOworCisg
ICAgdmFyIHggPSBwYWdlWChjb250YWluZXIpIC0gMTsKKyAgICB2YXIgeSA9IHBhZ2VZKGNvbnRh
aW5lcikgLSAxOworCisgICAgZGVidWcoImNvbnRhaW5lciBsb2NhdGlvbjogKCIgKyB4ICsgIiwg
IiArIHkgKyAiKSIpOworCisgICAgdmFyIGZhY2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDAp
OworICAgIGRlYnVnKCdGYWNlIHJvbGU6ICcgKyBmYWNlLnJvbGUpOworICAgIGRlYnVnKCdGYWNl
IGxhYmVsOiAnICsgZmFjZS5kZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ0ZhY2VYOiAnICsgKHBh
Z2VYKGZhY2UpIC0geCkpOworICAgIGRlYnVnKCdGYWNlWTogJyArIE1hdGguYWJzKHBhZ2VZKGZh
Y2UpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIgZXllID0gY29udGFpbmVy
LmNoaWxkQXRJbmRleCgxKTsKKyAgICBkZWJ1ZygnRXllIHJvbGU6ICcgKyBleWUucm9sZSk7Cisg
ICAgZGVidWcoJ0V5ZSBsYWJlbDogJyArIGV5ZS5kZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ0V5
ZVg6ICcgKyAocGFnZVgoZXllKSAtIHgpKTsKKyAgICBkZWJ1ZygnRXllWTogJyArIE1hdGguYWJz
KHBhZ2VZKGV5ZSkgLSB5KSk7CisgICAgZGVidWcoJzxicj4nKTsKKworICAgIHZhciBub3NlID0g
Y29udGFpbmVyLmNoaWxkQXRJbmRleCgzKTsKKyAgICBkZWJ1ZygnTm9zZSByb2xlOiAnICsgbm9z
ZS5yb2xlKTsKKyAgICBkZWJ1ZygnTm9zZSBsYWJlbDogJyArIG5vc2UuZGVzY3JpcHRpb24pOwor
ICAgIGRlYnVnKCdOb3NlWDogJyArIChwYWdlWChub3NlKSAtIHgpKTsKKyAgICBkZWJ1ZygnTm9z
ZVk6ICcgKyBNYXRoLmFicyhwYWdlWShub3NlKSAtIHkpKTsKKyAgICBkZWJ1ZygnPGJyPicpOwor
CisgICAgdmFyIG1vdXRoID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCg0KTsKKyAgICBkZWJ1Zygn
TW91dGggcm9sZTogJyArIG1vdXRoLnJvbGUpOworICAgIGRlYnVnKCdNb3V0aCBsYWJlbDogJyAr
IG1vdXRoLmRlc2NyaXB0aW9uKTsKKyAgICBkZWJ1ZygnTW91dGhYOiAnICsgKHBhZ2VYKG1vdXRo
KSAtIHgpKTsKKyAgICBkZWJ1ZygnTW91dGhZOiAnICsgTWF0aC5hYnMocGFnZVkobW91dGgpIC0g
eSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTI5Njg4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMjYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogU3VwcG9ydCBlbWJlZGRlZCBTVkcgb2JqZWN0
cyBpbiBBWCB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Qgc2tpcHBlZCBvbiBjaHJvbWl1bSB1bnRpbCBjbGlja1BvaW50KCkgaXMgaW1wbGVt
ZW50ZWQgaW4gRFJULgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1l
bnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wOS0yNiAgQ2hyaXN0b3BoZSBEdW1l
eiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFZvbHVtZSBi
dXR0b24gc2hvdWxkIG5vdCBiZSBzaG93biBmb3IgdmlkZW9zIHdpdGhvdXQgYXVkaW8K
</data>
<flag name="commit-queue"
          id="178096"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166107</attachid>
            <date>2012-09-27 18:07:05 -0700</date>
            <delta_ts>2012-10-01 23:22:52 -0700</delta_ts>
            <desc>patch addressing Eric&apos;s comments</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42699</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI5Njg3KQorKysg
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjE3
Niw2ICsyMTc2LDggQEAKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTbGlkZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNwaW5CdXR0b24uaCBcCisJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U1ZHUm9vdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNWR1Jvb3QuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmggXAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcCBcCkBAIC01MzUwLDYgKzUzNTIsNyBAQAogCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmggXAorCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNocm9tZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyOTgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA5LTI3ICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgZW1iZWRkZWQg
U1ZHIG9iamVjdHMgaW4gQVggdHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTc1NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyBhbiBTVkcgaW1hZ2UgZnJvbSBhbm90aGVy
IHJlc291cmNlIHRvIGJlIGhvb2tlZCBpbnRvIHRoZSBBWAorICAgICAgICBoaWVyYXJjaHkuIFRo
aXMgaXMgZG9uZSBieSBjcmVhdGluZyBhbiBBWCB3cmFwcGVyIGZvciB0aGUgcm9vdCBTVkcgdGhh
dCBob2xkcyBvbnRvCisgICAgICAgIGl0cyBuYXRpdmUgcGFyZW50IGltYWdlLiBUaGUgU1ZHQ2hy
b21lQ2xpZW50IGlzIHRoZW4gdXNlZCB0byBjb25uZWN0IHRvIHRoaXMgU1ZHIHJlc291cmNlLgor
CisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWwKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBbGxJbk9uZS5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fj
Y2Vzc2liaWxpdHlTVkdSb290KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRhY2gpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6b2Zmc2V0Qm91bmRpbmdCb3hG
b3JSZW1vdGVTVkdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJt
aW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNTVkdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpkZXRhY2hSZW1vdGVTVkdSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jvb3RFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJlbW90ZVNWR0NoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
cmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlTVkdSb290OjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6fkFjY2Vzc2liaWxpdHlTVkdSb290KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdSb290OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OnBhcmVudE9iamVjdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oOiBBZGRlZC4KKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlTVkdSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
VkdSb290OjpzZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jv
b3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6dG9BY2Nlc3Np
YmlsaXR5U1ZHUm9vdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIHBvc2l0aW9uXSk6CisgICAgICAgIChjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCk6
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoRW1wdHlDaHJvbWVD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmlzRW1wdHlDaHJv
bWVDbGllbnQpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnQ6OmlzRW1wdHlDaHJvbWVDbGllbnQpOgorICAgICAgICAoQ2hyb21l
Q2xpZW50KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoU1ZHSW1hZ2VDaHJvbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OlNWR0ltYWdlQ2hyb21lQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50Ojppc1NWR0ltYWdlQ2hyb21lQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjppbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVudDo6Y2hyb21lRGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjppbnZhbGlkYXRlQ29udGVudHNBbmRS
b290Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjp0b1NWR0ltYWdlQ2hyb21lQ2xpZW50KToKKwog
MjAxMi0wOS0yNyAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBSZW1vdmUgc2NyZWVuLXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gUGxhdGZv
cm1TdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkocmV2aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2MzExLDYgKzI2MzExLDYyIEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGFjY2Vz
c2liaWxpdHlcQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vz
c2liaWxpdHlTVkdSb290LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAiCiAJ
CQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNzM3MDUsNiArNzM3NjEsMTAgQEAKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcZ3JhcGhpY3NcU1ZHSW1hZ2VDYWNoZS5oIgogCQkJCQk+
CiAJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBo
aWNzXFNWR0ltYWdlQ2hyb21lQ2xpZW50LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CiAJCQkJPEZp
bHRlcgogCQkJCQlOYW1lPSJmaWx0ZXJzIgogCQkJCQk+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgJKHJldmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2MCw2ICszNjAsOCBAQAogCiAgICAgICAg
IHZpcnR1YWwgRmxvYXRTaXplIG1pbmltdW1XaW5kb3dTaXplKCkgY29uc3QgeyByZXR1cm4gRmxv
YXRTaXplKDEwMCwgMTAwKTsgfTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9t
ZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudCgpIHsgfQogICAgIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNWR1Jvb3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKKworI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FjY2Vzc2liaWxpdHlTVkdS
b290OjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorICAgIDog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikKKyAgICAsIG1fcGFyZW50KDApCit7
Cit9CisKK0FjY2Vzc2liaWxpdHlTVkdSb290Ojp+QWNjZXNzaWJpbGl0eVNWR1Jvb3QoKQorewor
fQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlTVkdSb290PiBBY2Nlc3NpYmlsaXR5U1ZHUm9v
dDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgQWNjZXNzaWJpbGl0eVNW
R1Jvb3QqIG9iaiA9IG5ldyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdChyZW5kZXJlcik7CisgICAgb2Jq
LT5pbml0KCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7Cit9CisgICAgCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6cGFyZW50T2JqZWN0KCkgY29uc3QKK3sK
KyAgICAvLyBJZiBhIHBhcmVudCB3YXMgc2V0IGJlY2F1c2UgdGhpcyBpcyBhIHJlbW90ZSBTVkcg
cmVzb3VyY2UsIHVzZSB0aGF0CisgICAgLy8gYnV0IG90aGVyd2lzZSwgd2Ugc2hvdWxkIHJlbHkg
b24gdGhlIHN0YW5kYXJkIHJlbmRlciB0cmVlIGZvciB0aGUgcGFyZW50LgorICAgIGlmIChtX3Bh
cmVudCkKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50OworICAgIAorICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3QoKTsKK30KKworICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJl
dmlzaW9uIDEyOTY4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3
IEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oIgogI2ltcG9ydCAiQ2hyb21lLmgiCisjaW1wb3J0ICJDaHJvbWVD
bGllbnQuaCIKICNpbXBvcnQgIkNvbG9yTWFjLmgiCiAjaW1wb3J0ICJDb250ZXh0TWVudUNvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIkZvbnQuaCIKQEAgLTE0NTIsNyArMTQ1Myw4IEBACiAgICAgICAg
IAogICAgICAgICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBzY3JvbGwgdmlldyB0byB1c2UgdG8g
Y29udmVydCB0aGUgY29udGVudHMgdG8gdGhlIHdpbmRvdy4KICAgICAgICAgU2Nyb2xsVmlldyog
c2Nyb2xsVmlldyA9IDA7Ci0gICAgICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFy
ZW50T2JqZWN0KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gMDsK
KyAgICAgICAgZm9yIChwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0KCk7IHBhcmVudDsg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKHBhcmVu
dC0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpKSB7CiAgICAgICAgICAgICAgICAgc2Nyb2xs
VmlldyA9IHRvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcocGFyZW50KS0+c2Nyb2xsVmlldygpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ2Miw4ICsxNDY0LDE1IEBACiAgICAgICAgIGlm
IChzY3JvbGxWaWV3KQogICAgICAgICAgICAgcmVjdCA9IHNjcm9sbFZpZXctPmNvbnRlbnRzVG9S
b290VmlldyhyZWN0KTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX29iamVjdC0+cGFnZSgpKQot
ICAgICAgICAgICAgcG9pbnQgPSBtX29iamVjdC0+cGFnZSgpLT5jaHJvbWUoKS0+cm9vdFZpZXdU
b1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOworICAgICAgICBQYWdlKiBwYWdlID0gbV9vYmplY3Qt
PnBhZ2UoKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgY2hyb21l
IGNsaWVudCAobGlrZSBTVkcpIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGUgcGFnZQorICAgICAgICAv
LyBvZiB0aGUgc2Nyb2xsIHZpZXcgcGFyZW50IHRvIGhlbHAgdXMgZ2V0IHRvIHRoZSBzY3JlZW4g
cmVjdC4KKyAgICAgICAgaWYgKHBhcmVudCAmJiBwYWdlICYmIHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+aXNFbXB0eUNocm9tZUNsaWVudCgpKQorICAgICAgICAgICAgcGFnZSA9IHBhcmVudC0+
cGFnZSgpOworCisgICAgICAgIGlmIChwYWdlKQorICAgICAgICAgICAgcG9pbnQgPSBwYWdlLT5j
aHJvbWUoKS0+cm9vdFZpZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBwb2ludCA9IHJlY3QubG9jYXRpb24oKTsKICAgICB9CkBAIC0xNTgwLDYg
KzE1ODksNyBAQAogICAgICAgICB7IEZvb3RlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAogICAgICAgICB7IFRvZ2dsZUJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblJv
bGUgfSwKICAgICAgICAgeyBDYW52YXNSb2xlLCBOU0FjY2Vzc2liaWxpdHlJbWFnZVJvbGUgfSwK
KyAgICAgICAgeyBTVkdSb290Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAg
ICAgIHsgTGVnZW5kUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0KICAgICB9OwogICAg
IEFjY2Vzc2liaWxpdHlSb2xlTWFwJiByb2xlTWFwID0gKm5ldyBBY2Nlc3NpYmlsaXR5Um9sZU1h
cDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCitjbGFz
cyBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgRnJhbWU7CkBAIC0yNDMsMTUgKzI0NCwyNCBAQAogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWxlbWVudCosIGNv
bnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eVBhcmVudEZvckltYWdlTWFwKEhUTUxNYXBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKwogICAgIGJvb2wgcmVuZGVyT2JqZWN0SXNPYnNlcnZhYmxlKFJl
bmRlck9iamVjdCopIGNvbnN0OwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyUGFyZW50T2JqZWN0
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0Rlc2NlbmRhbnRPZkVsZW1lbnRUeXBlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0OwogICAgIC8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIGl0
J3MgZm9jdXNhYmxlIGJ1dCBpdCdzIG5vdCBjb250ZW50IGVkaXRhYmxlIGFuZCBpdCdzIG5vdCBh
IGNvbnRyb2wgb3IgQVJJQSBjb250cm9sLgotCisgICAgCisgICAgYm9vbCBpc1NWR0ltYWdlKCkg
Y29uc3Q7CisgICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdSb290KCk7CisgICAgQWNjZXNzaWJpbGl0
eVNWR1Jvb3QqIHJlbW90ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
KyAgICB2b2lkIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChMYXlvdXRSZWN0
JikgY29uc3Q7CisgICAgCiAgICAgdm9pZCBhZGRUZXh0RmllbGRDaGlsZHJlbigpOwogICAgIHZv
aWQgYWRkSW1hZ2VNYXBDaGlsZHJlbigpOwogICAgIHZvaWQgYWRkQ2FudmFzQ2hpbGRyZW4oKTsK
ICAgICB2b2lkIGFkZEF0dGFjaG1lbnRDaGlsZHJlbigpOworICAgIHZvaWQgYWRkUmVtb3RlU1ZH
Q2hpbGRyZW4oKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50
Vmlld1BhcmVudHMoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDEyOTY4NykKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAKICAgICBTcGxpdHRlclJvbGUsCiAgICAgU3RhdGlj
VGV4dFJvbGUsCiAgICAgU3lzdGVtV2lkZVJvbGUsCisgICAgU1ZHUm9vdFJvbGUsCiAgICAgVGFi
R3JvdXBSb2xlLAogICAgIFRhYkxpc3RSb2xlLAogICAgIFRhYlBhbmVsUm9sZSwgICAgICAgICAg
ICAKQEAgLTMyNiw3ICszMjcsOCBAQAogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RDb250
YWluc1RleHQoU3RyaW5nICopIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0FuY2hv
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwCShyZXZpc2lvbiAx
Mjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBbGxJ
bk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAiCisjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2
aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsMTEgQEAKICNp
bmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluay5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgorI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC01NCw2ICs1Nyw3IEBACiAj
aW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiTm9kZUxpc3QuaCIKQEAgLTc3LDYgKzgxLDEwIEBACiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRp
b24uaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgorI2luY2x1ZGUgIlNWR0ltYWdlLmgiCisj
aW5jbHVkZSAiU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJTVkdTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtMTIyLDYgKzEzMCw4IEBACiB7CiAg
ICAgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGFjaCgpOwogICAgIAorICAgIGRldGFjaFJl
bW90ZVNWR1Jvb3QoKTsKKyAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1fcmVuZGVyZXIp
CiAgICAgICAgIG1fcmVuZGVyZXItPnNldEhhc0FYT2JqZWN0KGZhbHNlKTsKQEAgLTc5MSw2ICs4
MDEsMTggQEAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxp
dHlEZXNjcmlwdGlvbigpOwogfQogCisvLyBUaGUgYm91bmRpbmdCb3ggZm9yIGVsZW1lbnRzIHdp
dGhpbiB0aGUgcmVtb3RlIFNWRyBlbGVtZW50IG5lZWRzIHRvIGJlIG9mZnNldCBieSBpdHMgcG9z
aXRpb24KKy8vIHdpdGhpbiB0aGUgcGFyZW50IHBhZ2UsIG90aGVyd2lzZSB0aGV5IGFyZSBpbiBy
ZWxhdGl2ZSBjb29yZGluYXRlcyBvbmx5Lgordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQoTGF5b3V0UmVjdCYgcmVjdCkg
Y29uc3QKK3sKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9i
amVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAg
ICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpKSB7CisgICAgICAgICAgICBy
ZWN0Lm1vdmVCeShwYXJlbnQtPnBhcmVudE9iamVjdCgpLT5ib3VuZGluZ0JveFJlY3QoKS5sb2Nh
dGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorICAgIAog
TGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZGluZ0JveFJlY3QoKSBj
b25zdAogewogICAgIFJlbmRlck9iamVjdCogb2JqID0gbV9yZW5kZXJlcjsKQEAgLTgxMyw2ICs4
MzUsMTIgQEAKICAgICAKICAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IGJvdW5kaW5nQm94Rm9yUXVh
ZHMob2JqLCBxdWFkcyk7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIERvY3VtZW50KiBkb2MgPSBk
b2N1bWVudCgpOworICAgIGlmIChkb2MgJiYgZG9jLT5pc1NWR0RvY3VtZW50KCkpCisgICAgICAg
IG9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChyZXN1bHQpOworI2VuZGlmCisg
ICAgCiAgICAgLy8gVGhlIHNpemUgb2YgdGhlIHdlYiBhcmVhIHNob3VsZCBiZSB0aGUgY29udGVu
dCBzaXplLCBub3QgdGhlIGNsaXBwZWQgc2l6ZS4KICAgICBpZiAoaXNXZWJBcmVhKCkgJiYgb2Jq
LT5mcmFtZSgpLT52aWV3KCkpCiAgICAgICAgIHJlc3VsdC5zZXRTaXplKG9iai0+ZnJhbWUoKS0+
dmlldygpLT5jb250ZW50c1NpemUoKSk7CkBAIC0yMTMyLDcgKzIxNjAsMjUgQEAKICAgICAKICAg
ICByZXR1cm4gMDsKIH0KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlbW90ZSA9IHJlbW90ZVNWR1Jvb3RF
bGVtZW50KCk7CisgICAgaWYgKCFyZW1vdGUpCisgICAgICAgIHJldHVybiAwOwogICAgIAorICAg
IEludFNpemUgb2Zmc2V0UG9pbnQgPSBwb2ludCAtIHJvdW5kZWRJbnRQb2ludChib3VuZGluZ0Jv
eFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICByZXR1cm4gcmVtb3RlLT5hY2Nlc3NpYmlsaXR5SGl0
VGVzdCh0b1BvaW50KG9mZnNldFBvaW50KSk7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKGlzU1ZHSW1hZ2UoKSkKKyAgICAg
ICAgcmV0dXJuIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KHBvaW50KTsKKyAgICAKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KHBvaW50
KTsKK30KKyAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmhhc0xheWVyKCkpCkBAIC0yMzc0
LDYgKzI0MjAsOCBAQAogICAgIGlmIChjc3NCb3ggJiYgY3NzQm94LT5pc0ltYWdlKCkpIHsKICAg
ICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCiAgICAgICAgICAg
ICByZXR1cm4gYXJpYUhhc1BvcHVwKCkgPyBQb3BVcEJ1dHRvblJvbGUgOiBCdXR0b25Sb2xlOwor
ICAgICAgICBpZiAoaXNTVkdJbWFnZSgpKQorICAgICAgICAgICAgcmV0dXJuIFNWR1Jvb3RSb2xl
OwogICAgICAgICByZXR1cm4gSW1hZ2VSb2xlOwogICAgIH0KICAgICAKQEAgLTI0MTEsNiArMjQ1
OSw4IEBACiAjaWYgRU5BQkxFKFNWRykKICAgICBpZiAobV9yZW5kZXJlci0+aXNTVkdJbWFnZSgp
KQogICAgICAgICByZXR1cm4gSW1hZ2VSb2xlOworICAgIGlmIChtX3JlbmRlcmVyLT5pc1NWR1Jv
b3QoKSkKKyAgICAgICAgcmV0dXJuIFNWR1Jvb3RSb2xlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUFUSE1MKQpAQCAtMjY3Myw3ICsyNzIzLDgzIEBACiAgICAgYXhTcGluQnV0dG9uLT5zZXRQYXJl
bnQodGhpcyk7CiAgICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhTcGluQnV0dG9uKTsKIH0KKyAgICAK
K2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNTVkdJbWFnZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlbW90ZVNWR1Jvb3RFbGVtZW50KCk7Cit9CisgICAgCit2b2lkIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QoKQoreworICAgIGlmIChBY2Nl
c3NpYmlsaXR5U1ZHUm9vdCogcm9vdCA9IHJlbW90ZVNWR1Jvb3RFbGVtZW50KCkpCisgICAgICAg
IHJvb3QtPnNldFBhcmVudCgwKTsKK30KIAorQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jvb3RFbGVtZW50KCkgY29uc3QKK3sKKyNpZiBF
TkFCTEUoU1ZHKQorICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNSZW5kZXJJ
bWFnZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBSZW5kZXJJbWFnZSogcmVuZGVy
SW1hZ2UgPSB0b1JlbmRlckltYWdlKG1fcmVuZGVyZXIpOworICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHJlbmRlckltYWdlLT5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVkSW1h
Z2UpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZElt
YWdlLT5pbWFnZSgpOworICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc1NWR0ltYWdlKCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIFNWR0ltYWdlKiBzdmdJbWFnZSA9IHN0YXRpY19j
YXN0PFNWR0ltYWdlKj4oaW1hZ2UpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3ZnSW1h
Z2UtPmZyYW1lVmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gMDsK
KyAgICBGcmFtZSogZnJhbWUgPSBmcmFtZVZpZXctPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1
bWVudCgpOworICAgIGlmICghZG9jIHx8ICFkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxTVkdEb2N1bWVudCo+KGRvYyktPnJvb3RFbGVtZW50KCk7CisgICAgaWYgKCFyb290RWxl
bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlclJvb3Qg
PSByb290RWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyUm9vdCkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm9vdFNWR09iamVj
dCA9IGZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRl
cmVyUm9vdCk7CisKKyAgICAvLyBJbiBvcmRlciB0byBjb25uZWN0IHRoZSBBWCBoaWVyYXJjaHkg
ZnJvbSB0aGUgU1ZHIHJvb3QgZWxlbWVudCBmcm9tIHRoZSBsb2FkZWQgcmVzb3VyY2UKKyAgICAv
LyB0aGUgcGFyZW50IG11c3QgYmUgc2V0LCBiZWNhdXNlIHRoZXJlJ3Mgbm8gb3RoZXIgd2F5IHRv
IGdldCBiYWNrIHRvIHdobyBjcmVhdGVkIHRoZSBpbWFnZS4KKyAgICBBU1NFUlQocm9vdFNWR09i
amVjdCAmJiByb290U1ZHT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlTVkdSb290KCkpOworICAgIGlm
ICghcm9vdFNWR09iamVjdC0+aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICAKKyAgICByZXR1cm4gdG9BY2Nlc3NpYmlsaXR5U1ZHUm9vdChyb290U1ZHT2Jq
ZWN0KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKyAgICAKK3ZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmVtb3RlU1ZHQ2hpbGRyZW4oKQoreworICAgIEFjY2Vz
c2liaWxpdHlTVkdSb290KiByb290ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKTsKKyAgICBpZiAo
IXJvb3QpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICByb290LT5zZXRQYXJlbnQodGhpcyk7
CisgICAgCisgICAgaWYgKHJvb3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgeworICAgICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSByb290LT5jaGlsZHJlbigp
OworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBjaGlsZHJlbi5zaXplKCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKGNoaWxkcmVuW2ldKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jaGlsZHJlbi5h
cHBlbmQocm9vdCk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2Fu
dmFzQ2hpbGRyZW4oKQogewogICAgIGlmICghbm9kZSgpIHx8ICFub2RlKCktPmhhc1RhZ05hbWUo
Y2FudmFzVGFnKSkKQEAgLTI3NTAsNyArMjg3Niw4IEBACiAgICAgYWRkSW1hZ2VNYXBDaGlsZHJl
bigpOwogICAgIGFkZFRleHRGaWVsZENoaWxkcmVuKCk7CiAgICAgYWRkQ2FudmFzQ2hpbGRyZW4o
KTsKLQorICAgIGFkZFJlbW90ZVNWR0NoaWxkcmVuKCk7CisgICAgCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHVwZGF0ZUF0dGFjaG1lbnRWaWV3UGFyZW50cygpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U1ZHUm9vdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vz
c2liaWxpdHlTVkdSb290X2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eVNWR1Jvb3RfaAorCisjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlTVkdSb290IDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QgeworICAgIAorcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlT
VkdSb290KFJlbmRlck9iamVjdCopOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlTVkdSb290PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eVNWR1Jvb3QoKTsKKyAgICAKKyAgICB2b2lkIHNldFBhcmVudChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KKyAgICAKK3ByaXZh
dGU6CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbV9wYXJlbnQ7CisgICAgCisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KK307
CisKK2lubGluZSBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogdG9BY2Nlc3NpYmlsaXR5U1ZHUm9vdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmplY3QgfHwgb2Jq
ZWN0LT5pc0FjY2Vzc2liaWxpdHlTVkdSb290KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5U1ZHUm9vdCo+KG9iamVjdCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlIAorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVNWR1Jvb3RfaApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAx
Mjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0
b3IuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5U2xpZGVyLmgiCkBAIC0yNDksNiArMjUwLDExIEBACiAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sOjpjcmVhdGUocmVuZGVyZXIpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGlmIChyZW5kZXJlci0+aXNTVkdSb290KCkpCisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6Y3JlYXRlKHJlbmRlcmVyKTsKKyNlbmRpZgorICAg
IAogICAgIGlmIChyZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CiAgICAgICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBjc3NCb3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVy
KTsKICAgICAgICAgaWYgKGNzc0JveC0+aXNMaXN0Qm94KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTE4NjgsNiArMTg2OCw4IEBACiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uLmgnLAorICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QuY3BwJywKKyAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdSb290LmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlLmNwcCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGUuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsLmNwcCcsCkBAIC02Mjk4LDYgKzYzMDAsNyBAQAogICAgICAgICAgICAgJ3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgn
LAorICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oJywKICAg
ICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0NCArMzEsMTcgQEAKICNpbmNsdWRl
ICJTVkdJbWFnZS5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKLSNpbmNsdWRlICJF
bXB0eUNsaWVudHMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdS
b290LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTVkdJbWFnZUNocm9t
ZUNsaWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ltYWdlQ2hyb21lQ2xpZW50
IDogcHVibGljIEVtcHR5Q2hyb21lQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
VkdJbWFnZUNocm9tZUNsaWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIFNWR0ltYWdlQ2hyb21lQ2xpZW50KFNWR0ltYWdlKiBpbWFnZSkKLSAgICAgICAgOiBtX2lt
YWdlKGltYWdlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZUNo
cm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBTVkdJbWFnZSogaW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IGNocm9tZURlc3Ryb3llZCgpCi0gICAgewotICAgICAgICBtX2ltYWdlID0gMDsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50
UmVjdCYgciwgYm9vbCkKLSAgICB7Ci0gICAgICAgIC8vIElmIG1faW1hZ2UtPm1fcGFnZSBpcyBu
dWxsLCB3ZSdyZSBiZWluZyBkZXN0cnVjdGVkLCBkb24ndCBmaXJlIGNoYW5nZWRJblJlY3QoKSBp
biB0aGF0IGNhc2UuCi0gICAgICAgIGlmIChtX2ltYWdlICYmIG1faW1hZ2UtPmltYWdlT2JzZXJ2
ZXIoKSAmJiBtX2ltYWdlLT5tX3BhZ2UpCi0gICAgICAgICAgICBtX2ltYWdlLT5pbWFnZU9ic2Vy
dmVyKCktPmNoYW5nZWRJblJlY3QobV9pbWFnZSwgcik7Ci0gICAgfQotCi0gICAgU1ZHSW1hZ2Uq
IG1faW1hZ2U7Ci19OwotCiBTVkdJbWFnZTo6U1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2
ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU1ZHSW1hZ2VDaHJvbWVDbGllbnRfaAor
I2RlZmluZSBTVkdJbWFnZUNocm9tZUNsaWVudF9oCisKKyNpZiBFTkFCTEUoU1ZHKQorCisjaW5j
bHVkZSAiRW1wdHlDbGllbnRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZH
SW1hZ2VDaHJvbWVDbGllbnQgOiBwdWJsaWMgRW1wdHlDaHJvbWVDbGllbnQgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNWR0ltYWdlQ2hyb21lQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgU1ZHSW1hZ2VDaHJvbWVDbGllbnQoU1ZHSW1hZ2UqIGltYWdl
KQorICAgICAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdJbWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICBTVkdJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgCitw
cml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKQorICAgIHsKKyAgICAg
ICAgbV9pbWFnZSA9IDA7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiByLCBib29sKQorICAgIHsKKyAgICAg
ICAgLy8gSWYgbV9pbWFnZS0+bV9wYWdlIGlzIG51bGwsIHdlJ3JlIGJlaW5nIGRlc3RydWN0ZWQs
IGRvbid0IGZpcmUgY2hhbmdlZEluUmVjdCgpIGluIHRoYXQgY2FzZS4KKyAgICAgICAgaWYgKG1f
aW1hZ2UgJiYgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpICYmIG1faW1hZ2UtPm1fcGFnZSkKKyAg
ICAgICAgICAgIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKS0+Y2hhbmdlZEluUmVjdChtX2ltYWdl
LCByKTsKKyAgICB9CisgICAgCisgICAgU1ZHSW1hZ2UqIG1faW1hZ2U7Cit9OworCitpbmxpbmUg
U1ZHSW1hZ2VDaHJvbWVDbGllbnQqIHRvU1ZHSW1hZ2VDaHJvbWVDbGllbnQoQ2hyb21lQ2xpZW50
KiBjbGllbnQpCit7CisgICAgQVNTRVJUKCFjbGllbnQgfHwgY2xpZW50LT5pc1NWR0ltYWdlQ2hy
b21lQ2xpZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdJbWFnZUNocm9tZUNsaWVu
dCo+KGNsaWVudCk7Cit9CisgICAgCit9IAorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRp
ZiAvLyBTVkdJbWFnZUNocm9tZUNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTI5Njg3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTk4NSw2ICs5ODUsNyBAQAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCisgICAgYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZS5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMjk2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1NDQsNiArNDU0NCw4IEBA
CiAJCUFBQjYwNTRGMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRCMTU4NzRD
NTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLzsgfTsKIAkJQUFCNjA1NTAxNTg3
NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRDMTU4NzRDNTgwMDdCNTAzMSAv
KiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgKi87IH07CiAJCUFBQjYwNTUxMTU4NzRDNTgwMDdC
NTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUFCNjA1NEQxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVk
U2NyaXB0TW9kdWxlLmggKi87IH07CisJCUFBQzA4Q0VGMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJ
bWFnZUNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUFDMDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50
LmggKi87IH07CisJCUFBQzA4Q0YzMTVGOTQxRkQwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZH
Um9vdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFD
MDhDRjExNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmggKi87IH07CiAJ
CUFBRDc2NkVCMTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFODE1N0U1
MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwICovOyB9OwogCQlBQUQ3NjZF
QzE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkU5MTU3RTUwMkYwMEU4NTQy
MyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5oICovOyB9OwogCQlBQUQ3NjZFRDE1N0U1MDJGMDBF
ODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMg
LyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggKi87IH07CkBAIC0xMTY4Miw2ICsx
MTY4NCw5IEBACiAJCUFBQjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQjYwNTRDMTU4NzRDNTgwMDdCNTAz
MSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUFBQjYwNTREMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1vZHVs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQUMwOENFRDE1RjkzM0Q2MDBGMUUx
ODggLyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUFDMDhDRjAxNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdSb290
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhDRjExNUY5NDFGQzAwRjFF
MTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUFBRDc2NkU4MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2NkU5MTU3RTUwMkYwMEU4
NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JDYW52YXNBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVu
dGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNhbnZh
c0luc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4NDks
NiArMTQ4NTQsOCBAQAogCQkJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmls
aXR5U2xpZGVyLmggKi8sCiAJCQkJMjlEN0JDRjUxNDQ0QUY1ODAwNzA2MTlDIC8qIEFjY2Vzc2li
aWxpdHlTcGluQnV0dG9uLmNwcCAqLywKIAkJCQkyOUQ3QkNGOTE0NDRBRjdEMDA3MDYxOUMgLyog
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCAqLywKKwkJCQlBQUMwOENGMDE1Rjk0MUZDMDBGMUUx
ODggLyogQWNjZXNzaWJpbGl0eVNWR1Jvb3QuY3BwICovLAorCQkJCUFBQzA4Q0YxMTVGOTQxRkMw
MEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oICovLAogCQkJCTI5ODFDQUFBMTMxODIy
RUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuY3BwICovLAogCQkJCTI5QTgxMjBEMEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuaCAqLywKIAkJCQkyOTgxQ0FBQjEz
MTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgKi8sCkBAIC0xOTc2
MCw2ICsxOTc2Nyw3IEBACiAJCQkJQjI1NTk5MEMwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ltYWdl
LmggKi8sCiAJCQkJMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3Bw
ICovLAogCQkJCTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi8s
CisJCQkJQUFDMDhDRUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50Lmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTI1NTcxLDYgKzI1NTc5LDggQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkg
LyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdC
NjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUMwOENFRjE1
RjkzM0Q2MDBGMUUxODggLyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUFBQzA4Q0YzMTVGOTQxRkQwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkI5MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3Bl
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjdCNEE2NjE1RkY2RDZBMDA2QjVGMjIgLyog
UGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUQ3
MkY2MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVzLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEyOTY4NykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDYgKzIwNiw4IEBACiAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVy
c0NoYW5nZWQodW5zaWduZWQpIE9WRVJSSURFIHsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5Q2hyb21l
Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgRW1wdHlGcmFtZUxv
YWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDEyOTY4
NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdv
cmtpbmcgY29weSkKQEAgLTEzOTIsNiArMTM5Miw3IEBACiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNz
aWJpbGl0eS92aXNpYmxlLWVsZW1lbnRzLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzk3
MzU5IGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2Iv
OTczNTkgYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQogd2Vi
a2l0Lm9yZy9iLzczOTEyIGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC10ZXh0Lmh0bWwgWyBT
a2lwIF0KIAogd2Via2l0Lm9yZy9iLzczOTEyIGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1z
ZW5kcy1ub3RpZmljYXRpb24uaHRtbCBbIEZhaWx1cmUgUGFzcyBdCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3N2Zy1yZW1vdGUtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisKKworCitUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IGFjY2Vzc2liaWxpdHkgZWxlbWVudHMgY2FuIGJlIGNyZWF0ZWQgb3V0IG9mIHdo
YXQgYSByZW1vdGUgU1ZHIGltYWdlIGRlZmluZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
K2NvbnRhaW5lciBsb2NhdGlvbjogKDcsIDQzKQorRmFjZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9u
CitGYWNlIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBmYWNlCitGYWNlWDogMAorRmFjZVk6IDAKKwor
CitFeWUgcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgorRXllIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBs
ZWZ0LWV5ZQorRXllWDogMTAzCitFeWVZOiAxNDgKKworCitOb3NlIHJvbGU6IEFYUm9sZTogQVhC
dXR0b24KK05vc2UgbGFiZWw6IEFYRGVzY3JpcHRpb246IG5vc2UKK05vc2VYOiAxOTMKK05vc2VZ
OiAyMDYKKworCitNb3V0aCByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitNb3V0aCBsYWJlbDogQVhE
ZXNjcmlwdGlvbjogc21pbGUKK01vdXRoWDogMTE1CitNb3V0aFk6IDI3NC41CisKKworCkluZGV4
OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9zdmctZmFjZS5zdmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvc3ZnLWZhY2Uuc3Zn
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvc3Zn
LWZhY2Uuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACis8c3ZnIHhtbG5zOmNjPSJo
dHRwOi8vd2ViLnJlc291cmNlLm9yZy9jYy8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMv
ZWxlbWVudHMvMS4xLyIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk
Zi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnN2
Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCit3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIg
dmlld2JveD0iMCAwIDQwMCA0MDAiPgorCisgIDxjaXJjbGUgcm9sZT0iYnV0dG9uIiBhcmlhLWxh
YmVsPSJmYWNlIiBpZD0iZmFjZSIgcj0iMjAwIiBjeD0iMjAwIiBjeT0iMjAwIiBzdHJva2U9InJl
ZCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJ5ZWxsb3ciIC8+CisgIDxlbGxpcHNlIHJvbGU9ImJ1
dHRvbiIgYXJpYS1sYWJlbD0ibGVmdC1leWUiIGlkPSJsZWZ0LWV5ZSIgY3g9IjEyMCIgY3k9IjE4
MCIgcng9IjE4IiByeT0iMzMiIGZpbGw9ImJsYWNrIi8+CisgIDxlbGxpcHNlIHJvbGU9ImJ1dHRv
biIgYXJpYS1sYWJlbD0icmlnaHQtZXllIiBpZD0icmlnaHQtZXllIiBjeD0iMjgwIiBjeT0iMTIw
IiByeD0iMTgiIHJ5PSIzMyIgZmlsbD0iYmxhY2siLz4KKyAgPGVsbGlwc2Ugcm9sZT0iYnV0dG9u
IiBhcmlhLWxhYmVsPSJub3NlIiBpZD0ibm9zZSIgY3g9IjIwMCIgY3k9IjIyMCIgcng9IjgiIHJ5
PSIxNSIgZmlsbD0iYmxhY2siLz4KKyAgPHBhdGggcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJz
bWlsZSIgaWQ9InNtaWxlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2U9ImJsYWNrIiBmaWxsPSJu
b25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0xMjAsMjgwIFEyMDAsMzMwIDI5MCwyODAi
Lz4KKworPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUt
ZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvc3Zn
LXJlbW90ZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0
IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8YnI+PGJyPgorCis8
aW1nIHRhYmluZGV4PSIwIiBpZD0ic3ZnLWltYWdlIiBzcmM9InJlc291cmNlcy9zdmctZmFjZS5z
dmciIGFsdD0iaW50ZXJhY3RpdmUgU1ZHIiA+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYWNjZXNzaWJp
bGl0eSBlbGVtZW50cyBjYW4gYmUgY3JlYXRlZCBvdXQgb2Ygd2hhdCBhIHJlbW90ZSBTVkcgaW1h
Z2UgZGVmaW5lcy4iKQorCisvLyBSZXR1cm4gdGhlIHBhZ2UncyByZWxhdGl2ZSBjb29yZGluYXRl
cy4gSWYgd2UgcmVseSBvbiB0aGUgeCgpIG9yIHkoKSBvZiB0aGUgYWNjZXNzaWJpbGl0eSBvYmpl
Y3QsIHRoZW4KKy8vIGFjY2Vzc2liaWxpdHkgdHJhbnNmb3JtcyBhcmUgYXBwbGllZCB0aGF0IGZh
aWwgYmVjYXVzZSB0aGVyZSBpcyBubyB3aW5kb3cgYXZhaWxhYmxlCitmdW5jdGlvbiBwYWdlWChl
bGVtZW50KSB7CisgICAgcmV0dXJuIGVsZW1lbnQuY2xpY2tQb2ludFggLSBlbGVtZW50LndpZHRo
LzI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VZKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5j
bGlja1BvaW50WSAtIGVsZW1lbnQuaGVpZ2h0LzI7Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2Zy1pbWFnZSIpLmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBydW5BWFRlc3QpOworfQorCitmdW5jdGlvbiBydW5BWFRlc3QoKSB7ICAgIAor
ICAgIHZhciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInN2Zy1pbWFnZSIpOworCisgICAgdmFyIHggPSBwYWdlWChjb250YWluZXIpIC0g
MTsKKyAgICB2YXIgeSA9IHBhZ2VZKGNvbnRhaW5lcikgLSAxOworCisgICAgZGVidWcoImNvbnRh
aW5lciBsb2NhdGlvbjogKCIgKyB4ICsgIiwgIiArIHkgKyAiKSIpOworCisgICAgdmFyIGZhY2Ug
PSBjb250YWluZXIuY2hpbGRBdEluZGV4KDApOworICAgIGRlYnVnKCdGYWNlIHJvbGU6ICcgKyBm
YWNlLnJvbGUpOworICAgIGRlYnVnKCdGYWNlIGxhYmVsOiAnICsgZmFjZS5kZXNjcmlwdGlvbik7
CisgICAgZGVidWcoJ0ZhY2VYOiAnICsgKHBhZ2VYKGZhY2UpIC0geCkpOworICAgIGRlYnVnKCdG
YWNlWTogJyArIE1hdGguYWJzKHBhZ2VZKGZhY2UpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7
CisKKyAgICB2YXIgZXllID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgxKTsKKyAgICBkZWJ1Zygn
RXllIHJvbGU6ICcgKyBleWUucm9sZSk7CisgICAgZGVidWcoJ0V5ZSBsYWJlbDogJyArIGV5ZS5k
ZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ0V5ZVg6ICcgKyAocGFnZVgoZXllKSAtIHgpKTsKKyAg
ICBkZWJ1ZygnRXllWTogJyArIE1hdGguYWJzKHBhZ2VZKGV5ZSkgLSB5KSk7CisgICAgZGVidWco
Jzxicj4nKTsKKworICAgIHZhciBub3NlID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgzKTsKKyAg
ICBkZWJ1ZygnTm9zZSByb2xlOiAnICsgbm9zZS5yb2xlKTsKKyAgICBkZWJ1ZygnTm9zZSBsYWJl
bDogJyArIG5vc2UuZGVzY3JpcHRpb24pOworICAgIGRlYnVnKCdOb3NlWDogJyArIChwYWdlWChu
b3NlKSAtIHgpKTsKKyAgICBkZWJ1ZygnTm9zZVk6ICcgKyBNYXRoLmFicyhwYWdlWShub3NlKSAt
IHkpKTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIG1vdXRoID0gY29udGFpbmVyLmNo
aWxkQXRJbmRleCg0KTsKKyAgICBkZWJ1ZygnTW91dGggcm9sZTogJyArIG1vdXRoLnJvbGUpOwor
ICAgIGRlYnVnKCdNb3V0aCBsYWJlbDogJyArIG1vdXRoLmRlc2NyaXB0aW9uKTsKKyAgICBkZWJ1
ZygnTW91dGhYOiAnICsgKHBhZ2VYKG1vdXRoKSAtIHgpKTsKKyAgICBkZWJ1ZygnTW91dGhZOiAn
ICsgTWF0aC5hYnMocGFnZVkobW91dGgpIC0geSkpOworICAgIGRlYnVnKCc8YnI+Jyk7CisKKyAg
ICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5ODI4KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDkt
MjcgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDog
U3VwcG9ydCBlbWJlZGRlZCBTVkcgb2JqZWN0cyBpbiBBWCB0cmVlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qgc2tpcHBlZCBvbiBjaHJvbWl1bSB1
bnRpbCBjbGlja1BvaW50KCkgaXMgaW1wbGVtZW50ZWQgaW4gRFJULgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9yZXNvdXJjZXMvc3ZnLWZhY2Uuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAy
MDEyLTA5LTI3ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gRHVtcFJlbmRlclRyZWUgc3VwcG9ydCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcK
</data>
<flag name="commit-queue"
          id="178333"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166614</attachid>
            <date>2012-10-01 23:22:52 -0700</date>
            <delta_ts>2012-10-29 16:42:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>45290</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwCShyZXZpc2lvbiAxMzAxMjApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCw3
IEBACiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlVG9n
Z2xlQnV0dG9uLCBUb2dnbGVCdXR0b25Sb2xlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViQWNjZXNzaWJpbGl0eVJvbGVDYW52YXMsIENhbnZhc1JvbGUpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJBY2Nlc3NpYmlsaXR5Um9sZUxlZ2VuZCwgTGVnZW5kUm9sZSk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFjY2Vzc2liaWxpdHlSb2xlU1ZHUm9v
dCwgU1ZHUm9vdFJvbGUpOwogCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpVbmNhY2hlZCwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVOQ0FDSEVE
KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6
OklkbGUsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpJRExFKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlSb2xlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eVJvbGUuaAkocmV2aXNp
b24gMTMwMTIwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJp
bGl0eVJvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBACiAgICAgV2ViQWNj
ZXNzaWJpbGl0eVJvbGVTcGxpdHRlciwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVN0YXRpY1Rl
eHQsCiAgICAgV2ViQWNjZXNzaWJpbGl0eVJvbGVTeXN0ZW1XaWRlLAorICAgIFdlYkFjY2Vzc2li
aWxpdHlSb2xlU1ZHUm9vdCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRhYkdyb3VwLAogICAg
IFdlYkFjY2Vzc2liaWxpdHlSb2xlVGFiTGlzdCwKICAgICBXZWJBY2Nlc3NpYmlsaXR5Um9sZVRh
YlBhbmVsLApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzAx
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTk3LDYgKzIxOTcsOCBAQAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTVkdSb290LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwIFwKQEAgLTUzNzcsNiArNTM3OSw3IEBA
CiAJU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUuaCBcCisJU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwMTIwKQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTItMTAtMDEgIENocmlz
IEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogU3VwcG9ydCBl
bWJlZGRlZCBTVkcgb2JqZWN0cyBpbiBBWCB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIGFuIFNWRyBpbWFnZSBmcm9t
IGFub3RoZXIgcmVzb3VyY2UgdG8gYmUgaG9va2VkIGludG8gdGhlIEFYCisgICAgICAgIGhpZXJh
cmNoeS4gVGhpcyBpcyBkb25lIGJ5IGNyZWF0aW5nIGFuIEFYIHdyYXBwZXIgZm9yIHRoZSByb290
IFNWRyB0aGF0IGhvbGRzIG9udG8KKyAgICAgICAgaXRzIG5hdGl2ZSBwYXJlbnQgaW1hZ2UuIFRo
ZSBTVkdDaHJvbWVDbGllbnQgaXMgdGhlbiB1c2VkIHRvIGNvbm5lY3QgdG8gdGhpcyBTVkcgcmVz
b3VyY2UuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQu
aHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eU9iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvZmZzZXRCb3Vu
ZGluZ0JveEZvclJlbW90ZVNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Ym91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmVtb3RlU1ZH
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlTVkdSb290KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTVkdSb290Ojp+QWNjZXNzaWJpbGl0eVNW
R1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6cGFyZW50T2JqZWN0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290Lmg6IEFkZGVkLgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNWR1Jvb3Q6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U1ZHUm9vdDo6aXNBY2Nlc3NpYmlsaXR5U1ZHUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjp0
b0FjY2Vzc2liaWxpdHlTVkdSb290KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgcG9zaXRpb25dKToKKyAgICAgICAgKGNyZWF0ZUFjY2Vzc2liaWxpdHlS
b2xlTWFwKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChFbXB0
eUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6aXNF
bXB0eUNocm9tZUNsaWVudCk6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6aXNFbXB0eUNocm9tZUNsaWVudCk6CisgICAgICAg
IChDaHJvbWVDbGllbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdJbWFnZUNocm9tZUNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZUNocm9tZUNsaWVudDo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmlzU1ZHSW1hZ2VDaHJvbWVD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjpjaHJvbWVEZXN0cm95ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VDaHJvbWVDbGllbnQ6OmludmFsaWRhdGVDb250
ZW50c0FuZFJvb3RWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU1ZHSW1hZ2VDaHJvbWVDbGll
bnQpOgorCiAyMDEyLTEwLTAxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgY29tcGxldGlvbnMgY2FsY3VsYXRpb24g
aW50byBSdW50aW1lTW9kZWwgKHBhcnQgMSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMzAxMjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYz
MTEsNiArMjYzMTEsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAiCisJCQkJ
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxs
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9u
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGFj
Y2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC03Mzc5Myw2
ICs3Mzg0OSwxMCBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xTVkdJbWFn
ZUNhY2hlLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxzdmdcZ3JhcGhpY3NcU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsdGVyCiAJCQkJCU5hbWU9ImZpbHRlcnMiCiAJCQkJCT4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTMwMTIwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDYgKzM2
NCw4IEBACiAKICAgICAgICAgdmlydHVhbCBGbG9hdFNpemUgbWluaW11bVdpbmRvd1NpemUoKSBj
b25zdCB7IHJldHVybiBGbG9hdFNpemUoMTAwLCAxMDApOyB9OwogCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgeyB9CiAgICAgfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNWR1Jvb3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5o
IgorCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
QWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlTVkdSb290KFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQorICAg
ICwgbV9wYXJlbnQoMCkKK3sKK30KKworQWNjZXNzaWJpbGl0eVNWR1Jvb3Q6On5BY2Nlc3NpYmls
aXR5U1ZHUm9vdCgpCit7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IEFj
Y2Vzc2liaWxpdHlTVkdSb290OjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAg
ICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogb2JqID0gbmV3IEFjY2Vzc2liaWxpdHlTVkdSb290KHJl
bmRlcmVyKTsKKyAgICBvYmotPmluaXQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYob2JqKTsKK30K
KyAgICAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTVkdSb290OjpwYXJlbnRP
YmplY3QoKSBjb25zdAoreworICAgIC8vIElmIGEgcGFyZW50IHdhcyBzZXQgYmVjYXVzZSB0aGlz
IGlzIGEgcmVtb3RlIFNWRyByZXNvdXJjZSwgdXNlIHRoYXQKKyAgICAvLyBidXQgb3RoZXJ3aXNl
LCB3ZSBzaG91bGQgcmVseSBvbiB0aGUgc3RhbmRhcmQgcmVuZGVyIHRyZWUgZm9yIHRoZSBwYXJl
bnQuCisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICByZXR1cm4gbV9wYXJlbnQ7CisgICAgCisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnBhcmVudE9iamVjdCgpOworfQor
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5tbQkocmV2aXNpb24gMTMwMTIwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5o
IgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAjaW1wb3J0ICJDaHJvbWUuaCIK
KyNpbXBvcnQgIkNocm9tZUNsaWVudC5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKICNpbXBvcnQg
IkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2ltcG9ydCAiRm9udC5oIgpAQCAtMTQ1Miw3ICsx
NDUzLDggQEAKICAgICAgICAgCiAgICAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIHNjcm9s
bCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50cyB0byB0aGUgd2luZG93LgogICAg
ICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gMDsKLSAgICAgICAgZm9yIChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFy
ZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnQgPSAwOworICAgICAgICBmb3IgKHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRP
YmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CiAgICAg
ICAgICAgICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpIHsKICAgICAg
ICAgICAgICAgICBzY3JvbGxWaWV3ID0gdG9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhwYXJlbnQp
LT5zY3JvbGxWaWV3KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDYyLDggKzE0NjQs
MTUgQEAKICAgICAgICAgaWYgKHNjcm9sbFZpZXcpCiAgICAgICAgICAgICByZWN0ID0gc2Nyb2xs
Vmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJlY3QpOwogICAgICAgICAKLSAgICAgICAgaWYgKG1f
b2JqZWN0LT5wYWdlKCkpCi0gICAgICAgICAgICBwb2ludCA9IG1fb2JqZWN0LT5wYWdlKCktPmNo
cm9tZSgpLT5yb290Vmlld1RvU2NyZWVuKHJlY3QpLmxvY2F0aW9uKCk7CisgICAgICAgIFBhZ2Uq
IHBhZ2UgPSBtX29iamVjdC0+cGFnZSgpOworICAgICAgICAKKyAgICAgICAgLy8gSWYgd2UgaGF2
ZSBhbiBlbXB0eSBjaHJvbWUgY2xpZW50IChsaWtlIFNWRykgdGhlbiB3ZSBzaG91bGQgdXNlIHRo
ZSBwYWdlCisgICAgICAgIC8vIG9mIHRoZSBzY3JvbGwgdmlldyBwYXJlbnQgdG8gaGVscCB1cyBn
ZXQgdG8gdGhlIHNjcmVlbiByZWN0LgorICAgICAgICBpZiAocGFyZW50ICYmIHBhZ2UgJiYgcGFn
ZS0+Y2hyb21lKCktPmNsaWVudCgpLT5pc0VtcHR5Q2hyb21lQ2xpZW50KCkpCisgICAgICAgICAg
ICBwYWdlID0gcGFyZW50LT5wYWdlKCk7CisKKyAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAg
ICBwb2ludCA9IHBhZ2UtPmNocm9tZSgpLT5yb290Vmlld1RvU2NyZWVuKHJlY3QpLmxvY2F0aW9u
KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvaW50ID0gcmVjdC5sb2NhdGlvbigpOwog
ICAgIH0KQEAgLTE1ODAsNiArMTU4OSw3IEBACiAgICAgICAgIHsgRm9vdGVyUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCiAgICAgICAgIHsgVG9nZ2xlQnV0dG9uUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5QnV0dG9uUm9sZSB9LAogICAgICAgICB7IENhbnZhc1JvbGUsIE5TQWNjZXNzaWJp
bGl0eUltYWdlUm9sZSB9LAorICAgICAgICB7IFNWR1Jvb3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKICAgICAgICAgeyBMZWdlbmRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfQogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAgPSAqbmV3IEFj
Y2Vzc2liaWxpdHlSb2xlTWFwOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEzMDEy
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlTVkdSb290OwogY2xhc3MgQVhPYmplY3RD
YWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTI0MywxNSArMjQ0LDI0IEBA
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaW50ZXJuYWxMaW5rRWxlbWVudCgpIGNvbnN0Owog
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRN
TEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworCiAgICAgYm9vbCByZW5kZXJPYmpl
Y3RJc09ic2VydmFibGUoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJQYXJlbnRPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzRGVzY2VuZGFudE9mRWxlbWVu
dFR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgY29uc3Q7CiAgICAgLy8gVGhpcyBy
ZXR1cm5zIHRydWUgaWYgaXQncyBmb2N1c2FibGUgYnV0IGl0J3Mgbm90IGNvbnRlbnQgZWRpdGFi
bGUgYW5kIGl0J3Mgbm90IGEgY29udHJvbCBvciBBUklBIGNvbnRyb2wuCi0KKyAgICAKKyAgICBi
b29sIGlzU1ZHSW1hZ2UoKSBjb25zdDsKKyAgICB2b2lkIGRldGFjaFJlbW90ZVNWR1Jvb3QoKTsK
KyAgICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKSBjb25zdDsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OworICAgIHZvaWQgb2Zmc2V0Qm91bmRpbmdCb3hGb3JSZW1vdGVTVkdF
bGVtZW50KExheW91dFJlY3QmKSBjb25zdDsKKyAgICAKICAgICB2b2lkIGFkZFRleHRGaWVsZENo
aWxkcmVuKCk7CiAgICAgdm9pZCBhZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAgdm9pZCBhZGRD
YW52YXNDaGlsZHJlbigpOwogICAgIHZvaWQgYWRkQXR0YWNobWVudENoaWxkcmVuKCk7CisgICAg
dm9pZCBhZGRSZW1vdGVTVkdDaGlsZHJlbigpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IHVwZGF0ZUF0dGFjaG1lbnRWaWV3UGFyZW50cygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNp
b24gMTMwMTIwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw2ICsxODAsNyBAQAogICAgIFNwbGl0dGVy
Um9sZSwKICAgICBTdGF0aWNUZXh0Um9sZSwKICAgICBTeXN0ZW1XaWRlUm9sZSwKKyAgICBTVkdS
b290Um9sZSwKICAgICBUYWJHcm91cFJvbGUsCiAgICAgVGFiTGlzdFJvbGUsCiAgICAgVGFiUGFu
ZWxSb2xlLCAgICAgICAgICAgIApAQCAtMzI2LDcgKzMyNyw4IEBACiAgICAgdmlydHVhbCBib29s
IGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2li
aWxpdHlTVkdSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIGJvb2wgYWNjZXNz
aWJpbGl0eU9iamVjdENvbnRhaW5zVGV4dChTdHJpbmcgKikgY29uc3Q7CiAgICAgCiAgICAgdmly
dHVhbCBib29sIGlzQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBbGxJbk9u
ZS5jcHAJKHJldmlzaW9uIDEzMDEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCIKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxi
YXIuY3BwIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIgpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMzAxMjApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw4ICszMiwxMSBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3gu
aCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIgogI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlTcGluQnV0dG9uLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCisjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAg
LTU0LDYgKzU3LDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTWF0
aE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgpAQCAtNzcsNiArODEsMTAgQEAKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCisjaW5jbHVk
ZSAiU1ZHSW1hZ2UuaCIKKyNpbmNsdWRlICJTVkdJbWFnZUNocm9tZUNsaWVudC5oIgorI2luY2x1
ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0xMjIs
NiArMTMwLDggQEAKIHsKICAgICBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6ZGV0YWNoKCk7CiAg
ICAgCisgICAgZGV0YWNoUmVtb3RlU1ZHUm9vdCgpOworICAgIAogI2lmbmRlZiBOREVCVUcKICAg
ICBpZiAobV9yZW5kZXJlcikKICAgICAgICAgbV9yZW5kZXJlci0+c2V0SGFzQVhPYmplY3QoZmFs
c2UpOwpAQCAtNzkxLDYgKzgwMSwxOCBAQAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7CiB9CiAKKy8vIFRoZSBib3VuZGluZ0Jv
eCBmb3IgZWxlbWVudHMgd2l0aGluIHRoZSByZW1vdGUgU1ZHIGVsZW1lbnQgbmVlZHMgdG8gYmUg
b2Zmc2V0IGJ5IGl0cyBwb3NpdGlvbgorLy8gd2l0aGluIHRoZSBwYXJlbnQgcGFnZSwgb3RoZXJ3
aXNlIHRoZXkgYXJlIGluIHJlbGF0aXZlIGNvb3JkaW5hdGVzIG9ubHkuCit2b2lkIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6Om9mZnNldEJvdW5kaW5nQm94Rm9yUmVtb3RlU1ZHRWxlbWVudChM
YXlvdXRSZWN0JiByZWN0KSBjb25zdAoreworICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRP
YmplY3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlTVkdSb290KCkp
IHsKKyAgICAgICAgICAgIHJlY3QubW92ZUJ5KHBhcmVudC0+cGFyZW50T2JqZWN0KCktPmJvdW5k
aW5nQm94UmVjdCgpLmxvY2F0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9Cit9CisgICAgCiBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJv
dW5kaW5nQm94UmVjdCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiBvYmogPSBtX3JlbmRl
cmVyOwpAQCAtODEzLDYgKzgzNSwxMiBAQAogICAgIAogICAgIExheW91dFJlY3QgcmVzdWx0ID0g
Ym91bmRpbmdCb3hGb3JRdWFkcyhvYmosIHF1YWRzKTsKIAorI2lmIEVOQUJMRShTVkcpCisgICAg
RG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CisgICAgaWYgKGRvYyAmJiBkb2MtPmlzU1ZHRG9j
dW1lbnQoKSkKKyAgICAgICAgb2Zmc2V0Qm91bmRpbmdCb3hGb3JSZW1vdGVTVkdFbGVtZW50KHJl
c3VsdCk7CisjZW5kaWYKKyAgICAKICAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgd2ViIGFyZWEgc2hv
dWxkIGJlIHRoZSBjb250ZW50IHNpemUsIG5vdCB0aGUgY2xpcHBlZCBzaXplLgogICAgIGlmIChp
c1dlYkFyZWEoKSAmJiBvYmotPmZyYW1lKCktPnZpZXcoKSkKICAgICAgICAgcmVzdWx0LnNldFNp
emUob2JqLT5mcmFtZSgpLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKQEAgLTIxMzIsNyArMjE2
MCwyNSBAQAogICAgIAogICAgIHJldHVybiAwOwogfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3Rl
ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKTsKKyAgICBpZiAoIXJlbW90ZSkKKyAgICAgICAgcmV0
dXJuIDA7CiAgICAgCisgICAgSW50U2l6ZSBvZmZzZXRQb2ludCA9IHBvaW50IC0gcm91bmRlZElu
dFBvaW50KGJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIHJldHVybiByZW1vdGUt
PmFjY2Vzc2liaWxpdHlIaXRUZXN0KHRvUG9pbnQob2Zmc2V0UG9pbnQpKTsKK30KKworQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2li
aWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICBpZiAoaXNT
VkdJbWFnZSgpKQorICAgICAgICByZXR1cm4gcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QocG9pbnQp
OworICAgIAorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QocG9pbnQpOworfQorICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aGFz
TGF5ZXIoKSkKQEAgLTIzNzQsNiArMjQyMCw4IEBACiAgICAgaWYgKGNzc0JveCAmJiBjc3NCb3gt
PmlzSW1hZ2UoKSkgewogICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGlucHV0
VGFnKSkKICAgICAgICAgICAgIHJldHVybiBhcmlhSGFzUG9wdXAoKSA/IFBvcFVwQnV0dG9uUm9s
ZSA6IEJ1dHRvblJvbGU7CisgICAgICAgIGlmIChpc1NWR0ltYWdlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gU1ZHUm9vdFJvbGU7CiAgICAgICAgIHJldHVybiBJbWFnZVJvbGU7CiAgICAgfQogICAg
IApAQCAtMjQxMSw2ICsyNDU5LDggQEAKICNpZiBFTkFCTEUoU1ZHKQogICAgIGlmIChtX3JlbmRl
cmVyLT5pc1NWR0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBJbWFnZVJvbGU7CisgICAgaWYgKG1f
cmVuZGVyZXItPmlzU1ZHUm9vdCgpKQorICAgICAgICByZXR1cm4gU1ZHUm9vdFJvbGU7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNQVRITUwpCkBAIC0yNjczLDcgKzI3MjMsODMgQEAKICAgICBheFNw
aW5CdXR0b24tPnNldFBhcmVudCh0aGlzKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChheFNwaW5C
dXR0b24pOwogfQorICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NWR0lt
YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoKTsKK30KKyAg
ICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0YWNoUmVtb3RlU1ZHUm9vdCgp
Cit7CisgICAgaWYgKEFjY2Vzc2liaWxpdHlTVkdSb290KiByb290ID0gcmVtb3RlU1ZHUm9vdEVs
ZW1lbnQoKSkKKyAgICAgICAgcm9vdC0+c2V0UGFyZW50KDApOworfQogCitBY2Nlc3NpYmlsaXR5
U1ZHUm9vdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQo
KSBjb25zdAoreworI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3Jl
bmRlcmVyLT5pc1JlbmRlckltYWdlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJl
bmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UobV9yZW5kZXJlcik7CisgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gcmVuZGVySW1hZ2UtPmNhY2hlZEltYWdlKCk7Cisg
ICAgaWYgKCFjYWNoZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgSW1hZ2Uq
IGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2Ut
PmlzU1ZHSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgU1ZHSW1hZ2UqIHN2
Z0ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2UqPihpbWFnZSk7CisgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBzdmdJbWFnZS0+ZnJhbWVWaWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisg
ICAgICAgIHJldHVybiAwOworICAgIEZyYW1lKiBmcmFtZSA9IGZyYW1lVmlldy0+ZnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBEb2N1bWVudCog
ZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2MgfHwgIWRvYy0+aXNTVkdEb2N1
bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBTVkdTVkdFbGVtZW50KiByb290
RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4oZG9jKS0+cm9vdEVsZW1lbnQoKTsK
KyAgICBpZiAoIXJvb3RFbGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyUm9vdCA9IHJvb3RFbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghcmVu
ZGVyZXJSb290KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiByb290U1ZHT2JqZWN0ID0gZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KTsKKworICAgIC8vIEluIG9yZGVyIHRvIGNvbm5lY3Qg
dGhlIEFYIGhpZXJhcmNoeSBmcm9tIHRoZSBTVkcgcm9vdCBlbGVtZW50IGZyb20gdGhlIGxvYWRl
ZCByZXNvdXJjZQorICAgIC8vIHRoZSBwYXJlbnQgbXVzdCBiZSBzZXQsIGJlY2F1c2UgdGhlcmUn
cyBubyBvdGhlciB3YXkgdG8gZ2V0IGJhY2sgdG8gd2hvIGNyZWF0ZWQgdGhlIGltYWdlLgorICAg
IEFTU0VSVChyb290U1ZHT2JqZWN0ICYmIHJvb3RTVkdPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNW
R1Jvb3QoKSk7CisgICAgaWYgKCFyb290U1ZHT2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlTVkdSb290
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiB0b0FjY2Vzc2liaWxpdHlT
VkdSb290KHJvb3RTVkdPYmplY3QpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQor
ICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRSZW1vdGVTVkdDaGlsZHJl
bigpCit7CisgICAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHJvb3QgPSByZW1vdGVTVkdSb290RWxl
bWVudCgpOworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHJvb3Qt
PnNldFBhcmVudCh0aGlzKTsKKyAgICAKKyAgICBpZiAocm9vdC0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IHJvb3QtPmNoaWxkcmVuKCk7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNoaWxkcmVuLnNp
emUoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRyZW5baV0pOworICAgIH0gZWxzZQorICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChyb290KTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphZGRDYW52YXNDaGlsZHJlbigpCiB7CiAgICAgaWYgKCFub2RlKCkgfHwgIW5v
ZGUoKS0+aGFzVGFnTmFtZShjYW52YXNUYWcpKQpAQCAtMjc1MCw3ICsyODc2LDggQEAKICAgICBh
ZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAgYWRkVGV4dEZpZWxkQ2hpbGRyZW4oKTsKICAgICBh
ZGRDYW52YXNDaGlsZHJlbigpOwotCisgICAgYWRkUmVtb3RlU1ZHQ2hpbGRyZW4oKTsKKyAgICAK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgdXBkYXRlQXR0YWNobWVudFZpZXdQYXJlbnRzKCk7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNW
R1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdSb290LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVNWR1Jvb3RfaAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5
U1ZHUm9vdF9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eVNWR1Jvb3QgOiBwdWJsaWMg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgZXhwbGlj
aXQgQWNjZXNzaWJpbGl0eVNWR1Jvb3QoUmVuZGVyT2JqZWN0Kik7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IGNyZWF0ZShSZW5kZXJPYmplY3Qq
KTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpOworICAgIAorICAgIHZvaWQg
c2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVu
dDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtX3BhcmVudDsK
KyAgICAKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlTVkdSb290KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorfTsKKworaW5saW5lIEFjY2Vzc2liaWxpdHlTVkdSb290KiB0b0FjY2Vz
c2liaWxpdHlTVkdSb290KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NF
UlQoIW9iamVjdCB8fCBvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNWR1Jvb3QoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlTVkdSb290Kj4ob2JqZWN0KTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5U1ZHUm9v
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAJKHJldmlzaW9uIDEzMDEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTbGlkZXIuaCIKQEAgLTI0OSw2ICsyNTAsMTEgQEAK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNyZWF0ZShyZW5kZXJl
cik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKHJlbmRlcmVyLT5pc1NWR1Jv
b3QoKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlTVkdSb290OjpjcmVhdGUocmVuZGVy
ZXIpOworI2VuZGlmCisgICAgCiAgICAgaWYgKHJlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkp
IHsKICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNzc0JveCA9IHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QocmVuZGVyZXIpOwogICAgICAgICBpZiAoY3NzQm94LT5pc0xpc3RCb3goKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAxMzAxMjApCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIyNCw2ICsxMjI0LDkgQEAKICAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKICAgICBjYXNl
IFRhYlJvbGU6CiAgICAgICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7CisgICAgLy8gU1ZH
Um9vdHMgc2hvdWxkIG5vdCB1c2UgdGhlIHRleHQgdW5kZXIgaXRzZWxmIGFzIGEgdGl0bGUuIFRo
YXQgY291bGQgaW5jbHVkZSB0aGUgdGV4dCBvZiBvYmplY3RzIGxpa2UgPHRleHQ+LgorICAgIGNh
c2UgU1ZHUm9vdFJvbGU6CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzAx
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE4
NzksNiArMTg3OSw4IEBACiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2xpZGVyLmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5C
dXR0b24uY3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uLmgnLAorICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jv
b3QuY3BwJywKKyAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290
LmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCcs
CiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaCcsCiAgICAg
ICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCcsCkBAIC02
MjgyLDYgKzYyODQsNyBAQAogICAgICAgICAgICAgJ3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5jcHAnLAog
ICAgICAgICAgICAgJ3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgnLAorICAgICAgICAgICAg
J3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNocm9tZUNsaWVudC5oJywKICAgICAgICAgICAgICdzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaCcsCiAgICAgICAgICAgICAnc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAn
LApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lv
biAxMzAxMjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw0NCArMzEsMTcgQEAKICNpbmNsdWRlICJTVkdJbWFnZS5oIgog
CiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKLSNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVk
ZSAiU1ZHRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTVkdJbWFnZUNocm9tZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ltYWdlQ2hyb21lQ2xpZW50IDogcHVibGljIEVtcHR5
Q2hyb21lQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdJbWFnZUNocm9tZUNs
aWVudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFNWR0ltYWdlQ2hy
b21lQ2xpZW50KFNWR0ltYWdlKiBpbWFnZSkKLSAgICAgICAgOiBtX2ltYWdlKGltYWdlKQotICAg
IHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZUNocm9tZUNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBTVkdJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlOyB9Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3ll
ZCgpCi0gICAgewotICAgICAgICBtX2ltYWdlID0gMDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgciwgYm9vbCkK
LSAgICB7Ci0gICAgICAgIC8vIElmIG1faW1hZ2UtPm1fcGFnZSBpcyBudWxsLCB3ZSdyZSBiZWlu
ZyBkZXN0cnVjdGVkLCBkb24ndCBmaXJlIGNoYW5nZWRJblJlY3QoKSBpbiB0aGF0IGNhc2UuCi0g
ICAgICAgIGlmIChtX2ltYWdlICYmIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSAmJiBtX2ltYWdl
LT5tX3BhZ2UpCi0gICAgICAgICAgICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJ
blJlY3QobV9pbWFnZSwgcik7Ci0gICAgfQotCi0gICAgU1ZHSW1hZ2UqIG1faW1hZ2U7Ci19Owot
CiBTVkdJbWFnZTo6U1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFn
ZShvYnNlcnZlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgU1ZHSW1hZ2VDaHJvbWVDbGllbnRfaAorI2RlZmluZSBTVkdJbWFn
ZUNocm9tZUNsaWVudF9oCisKKyNpZiBFTkFCTEUoU1ZHKQorCisjaW5jbHVkZSAiRW1wdHlDbGll
bnRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGll
bnQgOiBwdWJsaWMgRW1wdHlDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNWR0ltYWdlQ2hyb21lQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgU1ZHSW1hZ2VDaHJvbWVDbGllbnQoU1ZHSW1hZ2UqIGltYWdlKQorICAgICAgICA6IG1f
aW1hZ2UoaW1hZ2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJ
bWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBTVkdJbWFnZSog
aW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgbV9pbWFnZSA9IDA7
CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290
Vmlldyhjb25zdCBJbnRSZWN0JiByLCBib29sKQorICAgIHsKKyAgICAgICAgLy8gSWYgbV9pbWFn
ZS0+bV9wYWdlIGlzIG51bGwsIHdlJ3JlIGJlaW5nIGRlc3RydWN0ZWQsIGRvbid0IGZpcmUgY2hh
bmdlZEluUmVjdCgpIGluIHRoYXQgY2FzZS4KKyAgICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFn
ZS0+aW1hZ2VPYnNlcnZlcigpICYmIG1faW1hZ2UtPm1fcGFnZSkKKyAgICAgICAgICAgIG1faW1h
Z2UtPmltYWdlT2JzZXJ2ZXIoKS0+Y2hhbmdlZEluUmVjdChtX2ltYWdlLCByKTsKKyAgICB9Cisg
ICAgCisgICAgU1ZHSW1hZ2UqIG1faW1hZ2U7Cit9OworCitpbmxpbmUgU1ZHSW1hZ2VDaHJvbWVD
bGllbnQqIHRvU1ZHSW1hZ2VDaHJvbWVDbGllbnQoQ2hyb21lQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKCFjbGllbnQgfHwgY2xpZW50LT5pc1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdJbWFnZUNocm9tZUNsaWVudCo+KGNsaWVudCk7Cit9
CisgICAgCit9IAorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBTVkdJbWFnZUNo
cm9tZUNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTMwMTIwKQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk5Myw2
ICs5OTMsNyBAQAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3Bw
CiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAKICAgICBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCisgICAgYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U1ZHUm9vdC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCiAgICAg
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMzAxMjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1NDAsNiArNDU0MCw4IEBACiAJCUFBQjYwNTRGMTU4
NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAvKiBJ
bmplY3RlZFNjcmlwdEJhc2UuaCAqLzsgfTsKIAkJQUFCNjA1NTAxNTg3NEM1ODAwN0I1MDMxIC8q
IEluamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFBQjYwNTRDMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlw
dE1vZHVsZS5jcHAgKi87IH07CiAJCUFBQjYwNTUxMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3Rl
ZFNjcmlwdE1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUFCNjA1NEQxNTg3NEM1ODAwN0I1MDMxIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmgg
Ki87IH07CisJCUFBQzA4Q0VGMTVGOTMzRDYwMEYxRTE4OCAvKiBTVkdJbWFnZUNocm9tZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFDMDhD
RUQxNUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggKi87IH07CisJCUFB
QzA4Q0YzMTVGOTQxRkQwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUFDMDhDRjExNUY5NDFGQzAw
RjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmggKi87IH07CiAJCUFBRDc2NkVCMTU3RTUw
MkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFODE1N0U1MDJGMDBFODU0MjMgLyog
SW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwICovOyB9OwogCQlBQUQ3NjZFQzE1N0U1MDJGMDBFODU0
MjMgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JD
YW52YXNBZ2VudC5oICovOyB9OwogCQlBQUQ3NjZFRDE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVj
dG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQUQ3NjZFQTE1N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2Fu
dmFzSW5zdHJ1bWVudGF0aW9uLmggKi87IH07CkBAIC0xMTY3MCw2ICsxMTY3Miw5IEBACiAJCUFB
QjYwNTRCMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdEJhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHRCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUFBQjYwNTRDMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNj
cmlwdE1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmpl
Y3RlZFNjcmlwdE1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBQjYw
NTREMTU4NzRDNTgwMDdCNTAzMSAvKiBJbmplY3RlZFNjcmlwdE1vZHVsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdE1vZHVsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBQUMwOENFRDE1RjkzM0Q2MDBGMUUxODggLyogU1ZHSW1hZ2VD
aHJvbWVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VD
aHJvbWVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhDRjAxNUY5
NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2liaWxpdHlTVkdSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTVkdSb290LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFDMDhDRjExNUY5NDFGQzAwRjFFMTg4IC8qIEFjY2Vzc2li
aWxpdHlTVkdSb290LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlTVkdSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2NkU4MTU3
RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFBRDc2NkU5MTU3RTUwMkYwMEU4NTQyMyAvKiBJbnNwZWN0
b3JDYW52YXNBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JDYW52YXNBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQUQ3NjZFQTE1
N0U1MDJGMDBFODU0MjMgLyogSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNhbnZhc0luc3RydW1lbnRhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4MTksNiArMTQ4MjQsOCBAQAog
CQkJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8s
CiAJCQkJMjlEN0JDRjUxNDQ0QUY1ODAwNzA2MTlDIC8qIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9u
LmNwcCAqLywKIAkJCQkyOUQ3QkNGOTE0NDRBRjdEMDA3MDYxOUMgLyogQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaCAqLywKKwkJCQlBQUMwOENGMDE1Rjk0MUZDMDBGMUUxODggLyogQWNjZXNzaWJp
bGl0eVNWR1Jvb3QuY3BwICovLAorCQkJCUFBQzA4Q0YxMTVGOTQxRkMwMEYxRTE4OCAvKiBBY2Nl
c3NpYmlsaXR5U1ZHUm9vdC5oICovLAogCQkJCTI5ODFDQUFBMTMxODIyRUMwMEQxMkYyQSAvKiBB
Y2Nlc3NpYmlsaXR5VGFibGUuY3BwICovLAogCQkJCTI5QTgxMjBEMEZCQjlDMUQwMDUxMDI5MyAv
KiBBY2Nlc3NpYmlsaXR5VGFibGUuaCAqLywKIAkJCQkyOTgxQ0FBQjEzMTgyMkVDMDBEMTJGMkEg
LyogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgKi8sCkBAIC0xOTcyMCw2ICsxOTcyNyw3IEBA
CiAJCQkJQjI1NTk5MEMwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ltYWdlLmggKi8sCiAJCQkJMDhG
ODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwICovLAogCQkJCTA4Rjg1
OUQzMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi8sCisJCQkJQUFDMDhDRUQx
NUY5MzNENjAwRjFFMTg4IC8qIFNWR0ltYWdlQ2hyb21lQ2xpZW50LmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI1NTIyLDYg
KzI1NTMwLDggQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVT
b3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNT
QXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8q
IFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBQUMwOENFRjE1RjkzM0Q2MDBGMUUxODgg
LyogU1ZHSW1hZ2VDaHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUFBQzA4Q0YzMTVG
OTQxRkQwMEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkI5MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0RjdCNEE2NjE1RkY2RDZBMDA2QjVGMjIgLyogUGxhdGZvcm1NZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUQ3MkY2MTVGRTY5NTMwMEM0
QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEzMDEyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiw4
IEBACiAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWdu
ZWQpIE9WRVJSSURFIHsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5k
SW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1
YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDEzMDEyMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAg
LTEzOTEsNiArMTM5MSw3IEBACiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS92aXNpYmxl
LWVsZW1lbnRzLmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzk3MzU5IGFjY2Vzc2liaWxp
dHkvc3ZnLWJvdW5kcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvOTczNTkgYWNjZXNzaWJp
bGl0eS9zdmctcmVtb3RlLWVsZW1lbnQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzczOTEy
IGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC10ZXh0Lmh0bWwgWyBTa2lwIF0KIAogd2Via2l0
Lm9yZy9iLzczOTEyIGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRp
b24uaHRtbCBbIEZhaWx1cmUgUGFzcyBdCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxl
bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9zdmctcmVtb3RlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM3IEBACisKKworCitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGFjY2Vz
c2liaWxpdHkgZWxlbWVudHMgY2FuIGJlIGNyZWF0ZWQgb3V0IG9mIHdoYXQgYSByZW1vdGUgU1ZH
IGltYWdlIGRlZmluZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2NvbnRhaW5lciBsb2Nh
dGlvbjogKDcsIDQzKQorRmFjZSByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitGYWNlIGxhYmVsOiBB
WERlc2NyaXB0aW9uOiBmYWNlCitGYWNlWDogMAorRmFjZVk6IDAKKworCitFeWUgcm9sZTogQVhS
b2xlOiBBWEJ1dHRvbgorRXllIGxhYmVsOiBBWERlc2NyaXB0aW9uOiBsZWZ0LWV5ZQorRXllWDog
MTAzCitFeWVZOiAxNDgKKworCitOb3NlIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK05vc2UgbGFi
ZWw6IEFYRGVzY3JpcHRpb246IG5vc2UKK05vc2VYOiAxOTMKK05vc2VZOiAyMDYKKworCitNb3V0
aCByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitNb3V0aCBsYWJlbDogQVhEZXNjcmlwdGlvbjogc21p
bGUKK01vdXRoWDogMTE1CitNb3V0aFk6IDI3NC41CisKKworCkluZGV4OiBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbAkocmV2aXNpb24gMTMwMTIwKQorKysgTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9zdmctYm91bmRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUs
NyArNSw3IEBACiAKIDxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgdG9wOiAxMDAwcHg7IGxlZnQ6IDEwMDBweDsgd2lkdGg6NDAwcHg7IGhlaWdodDogNDAwcHg7
IiByb2xlPSJncm91cCIgdGFiaW5kZXg9IjAiPgogCi08c3ZnPgorPHN2ZyB0YWJpbmRleD0wPgog
CiAgIDxjaXJjbGUgcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJmYWNlIiBpZD0iZmFjZSIgcj0i
MjAwIiBjeD0iMjAwIiBjeT0iMjAwIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxs
PSJ5ZWxsb3ciIC8+CiAgIDxlbGxpcHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0ibGVmdC1l
eWUiIGlkPSJsZWZ0LWV5ZSIgY3g9IjEyMCIgY3k9IjE4MCIgcng9IjE4IiByeT0iMzMiIGZpbGw9
ImJsYWNrIi8+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9zdmct
ZmFjZS5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJj
ZXMvc3ZnLWZhY2Uuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9yZXNvdXJjZXMvc3ZnLWZhY2Uuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACis8
c3ZnIHhtbG5zOmNjPSJodHRwOi8vd2ViLnJlc291cmNlLm9yZy9jYy8iIHhtbG5zOmRjPSJodHRw
Oi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCit3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCIgdmlld2JveD0iMCAwIDQwMCA0MDAiPgorCisgIDxjaXJjbGUgcm9sZT0i
YnV0dG9uIiBhcmlhLWxhYmVsPSJmYWNlIiBpZD0iZmFjZSIgcj0iMjAwIiBjeD0iMjAwIiBjeT0i
MjAwIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJ5ZWxsb3ciIC8+CisgIDxl
bGxpcHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0ibGVmdC1leWUiIGlkPSJsZWZ0LWV5ZSIg
Y3g9IjEyMCIgY3k9IjE4MCIgcng9IjE4IiByeT0iMzMiIGZpbGw9ImJsYWNrIi8+CisgIDxlbGxp
cHNlIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0icmlnaHQtZXllIiBpZD0icmlnaHQtZXllIiBj
eD0iMjgwIiBjeT0iMTIwIiByeD0iMTgiIHJ5PSIzMyIgZmlsbD0iYmxhY2siLz4KKyAgPGVsbGlw
c2Ugcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJub3NlIiBpZD0ibm9zZSIgY3g9IjIwMCIgY3k9
IjIyMCIgcng9IjgiIHJ5PSIxNSIgZmlsbD0iYmxhY2siLz4KKyAgPHBhdGggcm9sZT0iYnV0dG9u
IiBhcmlhLWxhYmVsPSJzbWlsZSIgaWQ9InNtaWxlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2U9
ImJsYWNrIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0xMjAsMjgwIFEy
MDAsMzMwIDI5MCwyODAiLz4KKworPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
Cis8YnI+PGJyPgorCis8aW1nIHRhYmluZGV4PSIwIiBpZD0ic3ZnLWltYWdlIiBzcmM9InJlc291
cmNlcy9zdmctZmFjZS5zdmciIGFsdD0iaW50ZXJhY3RpdmUgU1ZHIiA+CisKKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgYWNjZXNzaWJpbGl0eSBlbGVtZW50cyBjYW4gYmUgY3JlYXRlZCBvdXQgb2Ygd2hhdCBh
IHJlbW90ZSBTVkcgaW1hZ2UgZGVmaW5lcy4iKQorCisvLyBSZXR1cm4gdGhlIHBhZ2UncyByZWxh
dGl2ZSBjb29yZGluYXRlcy4gSWYgd2UgcmVseSBvbiB0aGUgeCgpIG9yIHkoKSBvZiB0aGUgYWNj
ZXNzaWJpbGl0eSBvYmplY3QsIHRoZW4KKy8vIGFjY2Vzc2liaWxpdHkgdHJhbnNmb3JtcyBhcmUg
YXBwbGllZCB0aGF0IGZhaWwgYmVjYXVzZSB0aGVyZSBpcyBubyB3aW5kb3cgYXZhaWxhYmxlCitm
dW5jdGlvbiBwYWdlWChlbGVtZW50KSB7CisgICAgcmV0dXJuIGVsZW1lbnQuY2xpY2tQb2ludFgg
LSBlbGVtZW50LndpZHRoLzI7Cit9CisKK2Z1bmN0aW9uIHBhZ2VZKGVsZW1lbnQpIHsKKyAgICBy
ZXR1cm4gZWxlbWVudC5jbGlja1BvaW50WSAtIGVsZW1lbnQuaGVpZ2h0LzI7Cit9CisKK2lmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN2Zy1pbWFnZSIp
LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBydW5BWFRlc3QpOworfQorCitmdW5jdGlvbiBydW5B
WFRlc3QoKSB7ICAgIAorICAgIHZhciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInN2Zy1pbWFnZSIpOworCisgICAgdmFyIHggPSBwYWdl
WChjb250YWluZXIpIC0gMTsKKyAgICB2YXIgeSA9IHBhZ2VZKGNvbnRhaW5lcikgLSAxOworCisg
ICAgZGVidWcoImNvbnRhaW5lciBsb2NhdGlvbjogKCIgKyB4ICsgIiwgIiArIHkgKyAiKSIpOwor
CisgICAgdmFyIGZhY2UgPSBjb250YWluZXIuY2hpbGRBdEluZGV4KDApOworICAgIGRlYnVnKCdG
YWNlIHJvbGU6ICcgKyBmYWNlLnJvbGUpOworICAgIGRlYnVnKCdGYWNlIGxhYmVsOiAnICsgZmFj
ZS5kZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ0ZhY2VYOiAnICsgKHBhZ2VYKGZhY2UpIC0geCkp
OworICAgIGRlYnVnKCdGYWNlWTogJyArIE1hdGguYWJzKHBhZ2VZKGZhY2UpIC0geSkpOworICAg
IGRlYnVnKCc8YnI+Jyk7CisKKyAgICB2YXIgZXllID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCgx
KTsKKyAgICBkZWJ1ZygnRXllIHJvbGU6ICcgKyBleWUucm9sZSk7CisgICAgZGVidWcoJ0V5ZSBs
YWJlbDogJyArIGV5ZS5kZXNjcmlwdGlvbik7CisgICAgZGVidWcoJ0V5ZVg6ICcgKyAocGFnZVgo
ZXllKSAtIHgpKTsKKyAgICBkZWJ1ZygnRXllWTogJyArIE1hdGguYWJzKHBhZ2VZKGV5ZSkgLSB5
KSk7CisgICAgZGVidWcoJzxicj4nKTsKKworICAgIHZhciBub3NlID0gY29udGFpbmVyLmNoaWxk
QXRJbmRleCgzKTsKKyAgICBkZWJ1ZygnTm9zZSByb2xlOiAnICsgbm9zZS5yb2xlKTsKKyAgICBk
ZWJ1ZygnTm9zZSBsYWJlbDogJyArIG5vc2UuZGVzY3JpcHRpb24pOworICAgIGRlYnVnKCdOb3Nl
WDogJyArIChwYWdlWChub3NlKSAtIHgpKTsKKyAgICBkZWJ1ZygnTm9zZVk6ICcgKyBNYXRoLmFi
cyhwYWdlWShub3NlKSAtIHkpKTsKKyAgICBkZWJ1ZygnPGJyPicpOworCisgICAgdmFyIG1vdXRo
ID0gY29udGFpbmVyLmNoaWxkQXRJbmRleCg0KTsKKyAgICBkZWJ1ZygnTW91dGggcm9sZTogJyAr
IG1vdXRoLnJvbGUpOworICAgIGRlYnVnKCdNb3V0aCBsYWJlbDogJyArIG1vdXRoLmRlc2NyaXB0
aW9uKTsKKyAgICBkZWJ1ZygnTW91dGhYOiAnICsgKHBhZ2VYKG1vdXRoKSAtIHgpKTsKKyAgICBk
ZWJ1ZygnTW91dGhZOiAnICsgTWF0aC5hYnMocGFnZVkobW91dGgpIC0geSkpOworICAgIGRlYnVn
KCc8YnI+Jyk7CisKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTMw
MTIwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTItMTAtMDEgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgor
CisgICAgICAgIEFYOiBTdXBwb3J0IGVtYmVkZGVkIFNWRyBvYmplY3RzIGluIEFYIHRyZWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTcxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBza2lwcGVk
IG9uIGNocm9taXVtIHVudGlsIGNsaWNrUG9pbnQoKSBpcyBpbXBsZW1lbnRlZCBpbiBEUlQuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3N2Zy1yZW1vdGUtZWxlbWVudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9zdmctZmFjZS5zdmc6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3ZnLXJlbW90ZS1lbGVtZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKIDIwMTItMTAtMDEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBjb21wbGV0aW9ucyBjYWxjdWxh
dGlvbiBpbnRvIFJ1bnRpbWVNb2RlbCAocGFydCAxKQo=
</data>
<flag name="review"
          id="178998"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>