<?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>26700</bug_id>
          
          <creation_ts>2009-06-24 17:49:19 -0700</creation_ts>
          <short_desc>HTML5 Drag and drop, effectAllowed and dragEffect broken</short_desc>
          <delta_ts>2009-11-06 13:45:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>30291</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Jens Alfke">jens</assigned_to>
          <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>jens</cc>
    
    <cc>oliver</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>128046</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2009-06-24 17:49:19 -0700</bug_when>
    <thetext>Setting effectAllowed has no effect on the allowed drop effect and the effect allowed is hard coded to copyLink.

This happens on Safari 4 on Windows but works fine on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128048</commentid>
    <comment_count>1</comment_count>
      <attachid>31819</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2009-06-24 17:52:00 -0700</bug_when>
    <thetext>Created attachment 31819
Test case

Change the effectAllowed to link and dropEffect to move (for example). Now you should not be able to drop the image but dropping works as if the effectAllowed was copyLink (deducted by trying different cases).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142370</commentid>
    <comment_count>2</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-08-24 12:39:57 -0700</bug_when>
    <thetext>The settings of effectAllowed and dropEffect are, in general, not in accordance with the HTML5 spec, and in some cases just broken. The issue Erik reported is one instance of this — there&apos;s no code in WebCore itself that restricts the destination-set dropEffect to what the source-set effectAllowed allows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142373</commentid>
    <comment_count>3</comment_count>
      <attachid>38494</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-08-24 12:47:05 -0700</bug_when>
    <thetext>Created attachment 38494
patch

This patch brings the settings of effectAllowed and dropEffect into compliance with the HTML5 spec.
Includes a test case that checks the values of both properties on entry to every standard drag-and-drop event, including the negotiation of a final dropEffect from the source&apos;s and destination&apos;s requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142633</commentid>
    <comment_count>4</comment_count>
      <attachid>38494</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 10:45:54 -0700</bug_when>
    <thetext>Comment on attachment 38494
patch

I&apos;ve looked once, and will look again.  There are several behavior changes all at once here, which will require more careful study.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143153</commentid>
    <comment_count>5</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-08-27 11:10:37 -0700</bug_when>
    <thetext>Thanks for reviewing, Eric. Any progress? I have a Chromium DnD patch too, that&apos;s waiting on this one.
I&apos;ll be glad to come over and walk you through the code in person, if that would make the review easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144229</commentid>
    <comment_count>6</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-02 09:16:30 -0700</bug_when>
    <thetext>Bug 24731 appears to be a dup (subset) of this one. Someone&apos;s just submitted a patch for it, which is probably wasted effort, unfortunately. Can someone please review my patch soon to avoid more duplication?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145574</commentid>
    <comment_count>7</comment_count>
      <attachid>38494</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 15:38:49 -0700</bug_when>
    <thetext>Comment on attachment 38494
patch

There is a lot changing in this patch, which makes it difficult/scary to review. :(

This is sad:
 45         m_effectAllowed = &quot;uninitialized&quot;;
Not your fault, just sad that that&apos;s how HTML5 is currently spec&apos;d.

Sadder still:
 105     if (m_effectAllowed.isNull() || m_effectAllowed == &quot;uninitialized&quot;)

Does the spec explain why?
 1510                 // Temporarily set dropEffect to &apos;none&apos; while calling dropleave handler (as per HTML5 spec)

Your test could have been an js-test and would have saved you having to duplicate all the shouldBe/assert logic:
http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree
Even if you didn&apos;t convert it to a full js test, you could import the js test standard js files (like js-test-pre.js) to get all the fun stuff.

Setting these to 0 is not really needed:
 var dragStartCalled=0, dragCalled=0, dragEndCalled=0;
 41 var dragEnterCalled=0, dragOverCalled=0, dragLeaveCalled=0, dropCalled=0;
Also I think officially we put spaces around =

You do this a few times:
  119     var dragTarget = document.getElementById(dstId);
 120     x = dragTarget.offsetLeft + dragTarget.offsetWidth / 2;
 121     y = dragTarget.offsetTop + dragTarget.offsetHeight / 2;
 122     eventSender.mouseMoveTo(x, y);

I&apos;ve written functions in other drag tests which move the mouse to the center of an element.  Seems you want to do the same here.

Why is this needed?
 132     layoutTestController.waitUntilDone();

Not needed if you import the js-test-pre.js stuff or make this a real js-test:
 133     layoutTestController.dumpAsText();

Not needed:
 171     layoutTestController.notifyDone();

r-, mostly for testing nits.  This would be easier to review if fewer functional changes were being made at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145588</commentid>
    <comment_count>8</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-08 16:50:47 -0700</bug_when>
    <thetext>&gt;Does the spec explain why?
&gt; 1510                 // Temporarily set dropEffect to &apos;none&apos;

No; I assume it&apos;s just because That&apos;s How MSIE Does It.

&gt;Setting these to 0 is not really needed:

I do that so the test will (mostly) work in a regular browser if you manually drag the image into the box. Very useful during development.

&gt;I&apos;ve written functions in other drag tests which move the mouse to the center
&gt;of an element.  Seems you want to do the same here.

Twice was below my threshold of DRY, but sure, I&apos;ll factor it out.

&gt;Why is this needed?
&gt; 132     layoutTestController.waitUntilDone();

The fake dragging stuff apparently can&apos;t be done at the time the document is being parsed (I tried it: it crashes.) All the drag-related tests I saw run the test from an onload handler, so I copied what they did.

New patch coming up RSN...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145591</commentid>
    <comment_count>9</comment_count>
      <attachid>39230</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-08 16:57:38 -0700</bug_when>
    <thetext>Created attachment 39230
Patch with updated test case

I&apos;ve made changes to the test case, such as using js-test-pre.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145596</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 17:21:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The fake dragging stuff apparently can&apos;t be done at the time the document is
&gt; being parsed (I tried it: it crashes.) All the drag-related tests I saw run the
&gt; test from an onload handler, so I copied what they did.

Really?  That sounds like a bug.  Either in DRT or WebCore.  Not one you need to fix, but it would certainly help if you could report it. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145861</commentid>
    <comment_count>11</comment_count>
      <attachid>39230</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 11:26:25 -0700</bug_when>
    <thetext>Comment on attachment 39230
Patch with updated test case

Sigh.  The game of submitting patches when not a contributer and unknown to the project is one of making them easy to r+.   This patch is large and changes a bunch of poorly tested code, which makes reviewing harder... but I think I&apos;ve stared at enough times to be ready to pull the trigger.  :(


However staring at your test again I&apos;m finding it somewhat hard to read.  And this nit (which would be a non-issue if you were a committer), concerns me:
179 Property changes on: LayoutTests/fast/events/drag-dropeffect.html
2180 ___________________________________________________________________
3181 Name: svn:eol-style
4182   + LF

Your spacing choices in the test don&apos;t match my recollection for &quot;webkit style&quot;.  Generally I&apos;ve seen folks put spaces around operators :&quot; as : &quot; for instance.   and &quot;+test as &quot;  + test.

Functions technically are supposed to have { on a new line according to wk style too.  Sadly we don&apos;t have a jslint yet (nor is our js styling nearly as strict as our c++ styling or Google&apos;s JS styling).

Please file a bug about the DRT issues mentioned above.  Ideally mentioning it in your LayoutTest ChangeLog.

Staring at it, I think I would have probably abstracted the various event handlers, since they could share a bunch of assert code and call counts and preventDefault.  Given the above, I think your and my abstraction thresholds are a bit different. :)

Anyway, I&apos;m gonna r+ this and pray it doesn&apos;t break anything.  I think this will have to be landed by hand unless you post another patch w/o the line ending setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145862</commentid>
    <comment_count>12</comment_count>
      <attachid>39230</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 11:27:42 -0700</bug_when>
    <thetext>Comment on attachment 39230
Patch with updated test case

Also we generally don&apos;t commit commented out code:
 152       //assert(dragCalled &gt; 0, &quot;drag was called at least once&quot;);

I guess this is really an r-, or an r+ w/ mods.  I&apos;m marking it r+ in case you have a committer next to you down in mtv who would like to work with you to land this directly.  Alternatively you can post another patch which can be r+/cq+&apos;d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145888</commentid>
    <comment_count>13</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-09 12:02:03 -0700</bug_when>
    <thetext>FYI, I filed the DRT crash as bug 29101. It&apos;s an assertion failure in DragController.cpp; it seems to be caused by the image element being dragged not having loaded any image resource yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145890</commentid>
    <comment_count>14</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-09 12:10:17 -0700</bug_when>
    <thetext>Well, I wouldn&apos;t say I&apos;m _completely_ unknown to the project. I fixed a handful of nasty P1 bugs in WebKit while on loan to the Safari team in late 2004, and the Apple folks might remember me from such hits as PubSub.framework and SyndicationUI.framework. :)

Sorry about the size of the patch. It started out small, believe me, but it turned out that fixing the behaviors in question required a bunch of little changes in several places that weren&apos;t easily separable.

I&apos;ll get those nits fixed and put out a new patch. The svn-eol-style thing I can probably blame on Versions.app, which is a nice SVN GUI client but seems to set funny properties when it adds files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145893</commentid>
    <comment_count>15</comment_count>
      <attachid>39293</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-09 12:43:57 -0700</bug_when>
    <thetext>Created attachment 39293
Patch with fixes to test-case nits

OK, I&apos;ve addressed all the latest comments about the test case (including the svn:eol-style property.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145947</commentid>
    <comment_count>16</comment_count>
      <attachid>39293</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 14:49:46 -0700</bug_when>
    <thetext>Comment on attachment 39293
Patch with fixes to test-case nits

Ok, lets all cross our fingers. :)  (Only because drag and drop is notoriously flakey/poorly tested.)

Thanks for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145964</commentid>
    <comment_count>17</comment_count>
      <attachid>39293</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-09 15:01:38 -0700</bug_when>
    <thetext>Comment on attachment 39293
Patch with fixes to test-case nits

Rejecting patch 39293 from commit-queue.

This patch will require manual commit. [&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145970</commentid>
    <comment_count>18</comment_count>
      <attachid>39293</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 15:10:11 -0700</bug_when>
    <thetext>Comment on attachment 39293
Patch with fixes to test-case nits

Sigh.  You&apos;re yet another victim of bug 28624.
media/video-source-error.html -&gt; timed out
Let&apos;s try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145977</commentid>
    <comment_count>19</comment_count>
      <attachid>39293</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-09 15:19:29 -0700</bug_when>
    <thetext>Comment on attachment 39293
Patch with fixes to test-case nits

Clearing flags on attachment: 39293

Committed r48229: &lt;http://trac.webkit.org/changeset/48229&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145978</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-09 15:19:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146266</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-10 11:29:39 -0700</bug_when>
    <thetext>This broke Windows regression tests, presumably due to the lack of changes in WebKit/win to match those in WebKit/mac.  See bug 29129.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146790</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-11 16:35:34 -0700</bug_when>
    <thetext>Committed r48321: &lt;http://trac.webkit.org/changeset/48321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146794</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-11 16:39:48 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Committed r48321: &lt;http://trac.webkit.org/changeset/48321&gt;

This was the rollout as discussed in bug 29129.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147152</commentid>
    <comment_count>24</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-09-14 13:11:08 -0700</bug_when>
    <thetext>Got r48229 checked out and built on an XP box. Ran Safari with this WebKit and initially just tried dragging between two textfields ... which immediately crashes in WebDragClient::willPerformDragSourceAction ... just as it has since at least July, when bug 27332 was filed (not by me.)

It seems a little disingenuous to be immediately backing out a patch because it caused Windows test regressions, when in TWO MONTHS no one seems to have investigated the problem that you can&apos;t drag anything at all in Safari. You&apos;re treating the test shell more seriously than the real application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147157</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-14 13:19:23 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Got r48229 checked out and built on an XP box. Ran Safari with this WebKit and
&gt; initially just tried dragging between two textfields ... which immediately
&gt; crashes in WebDragClient::willPerformDragSourceAction ... just as it has since
&gt; at least July, when bug 27332 was filed (not by me.)
&gt; 
&gt; It seems a little disingenuous to be immediately backing out a patch because it
&gt; caused Windows test regressions, when in TWO MONTHS no one seems to have
&gt; investigated the problem that you can&apos;t drag anything at all in Safari. You&apos;re
&gt; treating the test shell more seriously than the real application.

I rolled out the change due to new failures being introduced as a result of the patch.  I didn&apos;t investigate the particular failures more than reading bug 29129.

Rolling out regressions is even more normal @ Google than it is @ WebKit. :)  The patch was in the tree for 49 hours before rollout.  It didn&apos;t appear anyone was working on fixing the regressions. 

Yup, it&apos;s definitely bad that Safari for Windows drag/drop is crashing.

I would be very happy to r+ (as I&apos;m sure many others would) which did not regress existing Windows layout tests.

I would agree that we pay more attention to the test harness than the application.  The test harness is run after every commit, the application is not.  Ideally the test harness catches more than normal application usage would.  Obviously in the case of bug 27332 we need to fix both the framework and the test harness. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148302</commentid>
    <comment_count>26</comment_count>
      <attachid>39230</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-18 12:19:02 -0700</bug_when>
    <thetext>Comment on attachment 39230
Patch with updated test case

Clearing r+ on this obsolete patch (so that the to-be-committed list doesn&apos;t show this patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161241</commentid>
    <comment_count>27</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-06 13:45:59 -0800</bug_when>
    <thetext>After this got beyond my depth (I have no Windows programming experience) I handed my patch off to Dan Bates, who was working on similar bugs and is a Windows programmer.

Dan reports that the issues in this bug report have all been addressed by now, except for the remaining bug 30291. So I&apos;ll close this as a dup of that.

*** This bug has been marked as a duplicate of bug 30291 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31819</attachid>
            <date>2009-06-24 17:52:00 -0700</date>
            <delta_ts>2009-06-24 17:52:00 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>dnd.html</filename>
            <type>text/html</type>
            <size>2068</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPkRyYWcgYW5kIERyb3A8L3RpdGxl
Pgo8c3R5bGU+CgppbWcgeyBoZWlnaHQ6IDRlbTsgfQpkaXYgeyBtYXJnaW46IDFlbSAyZW07IGJv
cmRlcjogYmxhY2sgc29saWQ7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgaGVpZ2h0OiA5ZW07
IHdpZHRoOiAxMmVtOyBmbG9hdDogbGVmdDsgfQpwIHsgY2xlYXI6IGxlZnQ7IH0KCjwvc3R5bGU+
CjwvaGVhZD4KPGJvZHk+CjxoMT5EcmFnIGFuZCBEcm9wPC9oMT4KCjxwPgplZmZlY3RBbGxvd2Vk
CjxzZWxlY3Qgb25jaGFuZ2U9ImVmZmVjdEFsbG93ZWQgPSB0aGlzLm9wdGlvbnNbdGhpcy5zZWxl
Y3RlZEluZGV4XS50ZXh0Ij4KICA8b3B0aW9uPm5vbmUKICA8b3B0aW9uPmNvcHkKICA8b3B0aW9u
PmNvcHlMaW5rCiAgPG9wdGlvbj5jb3B5TW92ZQogIDxvcHRpb24+bGluawogIDxvcHRpb24gc2Vs
ZWN0ZWQ+bGlua01vdmUKICA8b3B0aW9uPm1vdmUKICA8b3B0aW9uPmFsbAogIDxvcHRpb24+dW5p
bml0aWFsaXplZAo8L3NlbGVjdD4KCmRyb3BFZmZlY3QKPHNlbGVjdCBvbmNoYW5nZT0iZHJvcEVm
ZmVjdCA9IHRoaXMub3B0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnRleHQiPgogIDxvcHRpb24+
bm9uZQogIDxvcHRpb24+Y29weQogIDxvcHRpb24+bGluawogIDxvcHRpb24gc2VsZWN0ZWQ+bW92
ZQo8L3NlbGVjdD4KCjxkaXYgb25kcm9wPSJkcm9wKHRoaXMsIGV2ZW50KSIgb25kcmFnZW50ZXI9
ImRyYWdFbnRlcih0aGlzLCBldmVudCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b25kcmFnb3Zlcj0iZHJhZ092ZXIodGhpcywgZXZlbnQpIj4KICA8cD5Hb29kPC9wPgo8L2Rpdj4K
CjxkaXYgb25kcm9wPSJkcm9wKHRoaXMsIGV2ZW50KSIgb25kcmFnZW50ZXI9ImRyYWdFbnRlcih0
aGlzLCBldmVudCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25kcmFnb3Zlcj0i
ZHJhZ092ZXIodGhpcywgZXZlbnQpIj4KICA8cD5CYWQ8L3A+CjwvZGl2PgoKPHA+CiAgPGltZyBz
cmM9Imh0dHA6Ly93d3cud2hhdHdnLm9yZy9kZW1vcy8yMDA4LXNlcHQvZG5kL3NwYW0uZ2lmIiBp
ZD1zcGFtIGFsdD0iU3BhbSIgb25kcmFnc3RhcnQ9ImRyYWdTdGFydCh0aGlzLCBldmVudCkiPgog
IDxpbWcgc3JjPSJodHRwOi8vd3d3LndoYXR3Zy5vcmcvZGVtb3MvMjAwOC1zZXB0L2RuZC9lZ2cu
Z2lmIiBpZD1lZ2cgYWx0PSJFZ2ciIG9uZHJhZ3N0YXJ0PSJkcmFnU3RhcnQodGhpcywgZXZlbnQp
Ij4KICA8aW1nIHNyYz0iaHR0cDovL3d3dy53aGF0d2cub3JnL2RlbW9zLzIwMDgtc2VwdC9kbmQv
Y2F0LnBuZyIgaWQ9Y2F0IGFsdD0iQ2F0IiBvbmRyYWdzdGFydD0iZHJhZ1N0YXJ0KHRoaXMsIGV2
ZW50KSI+CjwvcD4KCjxzY3JpcHQ+CgppZiAoIUV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVs
dCkgewogIEV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKCkgewogICAg
dGhpcy5yZXR1cm5WYWx1ZSA9IGZhbHNlOwogIH07Cn0KCnZhciBlZmZlY3RBbGxvd2VkID0gJ2xp
bmtNb3ZlJzsKdmFyIGRyb3BFZmZlY3QgPSAnbW92ZSc7CgpmdW5jdGlvbiBkcmFnU3RhcnQodGFy
Z2V0LCBlKSB7CiAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgnVGV4dCcsIHRhcmdldC5pZCk7CiAg
ZS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWQ7Cn0KCmZ1bmN0aW9u
IGRyb3AodGFyZ2V0LCBlKSB7CiAgdmFyIGlkID0gZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgnVGV4
dCcpOwogIHRhcmdldC5hcHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpOwog
IGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBkcm9wRWZmZWN0OwogIGUucHJldmVudERlZmF1
bHQoKTsKfQoKZnVuY3Rpb24gZHJhZ0VudGVyKHRhcmdldCwgZSkgewogZS5wcmV2ZW50RGVmYXVs
dCgpOwp9CgpmdW5jdGlvbiBkcmFnT3Zlcih0YXJnZXQsIGUpIHsKIGUuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QgPSBkcm9wRWZmZWN0OwogZS5wcmV2ZW50RGVmYXVsdCgpOwp9Cgo8L3NjcmlwdD4K
PC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38494</attachid>
            <date>2009-08-24 12:47:05 -0700</date>
            <delta_ts>2009-09-08 16:57:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>dragEffect2.patch</filename>
            <type>text/plain</type>
            <size>23578</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzcxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDktMDgtMjQgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0
aWFsaXplIERhdGFUcmFuc2ZlcidzIGVmZmVjdEFsbG93ZWQgYW5kIGRyb3BFZmZlY3QgcHJvcGVy
dGllcyBjb3JyZWN0bHkKKyAgICAgICAgYWNjb3JkaW5nIHRvIEhUTUw1IHNwZWMgKHNlYy4gNy45
LjItNy45LjMpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjY3MDAKKyAgICAgICAgLSBBdCB0aGUgc3RhcnQgb2YgYSBkcmFnIG9wZXJhdGlvbiwgdGhl
IHZhbHVlIG9mIGVmZmVjdEFsbG93ZWQgc2hvdWxkIGJlCisgICAgICAgICAgdGhlIHN0cmluZyAi
dW5pbml0aWFsaXplZCIuCisgICAgICAgIC0gQXQgZW5kIG9mIGRyYWdzdGFydCBoYW5kbGVyLCBp
ZiBlZmZlY3RBbGxvd2VkIGhhc24ndCBiZWVuIHNldCB5ZXQsIGl0CisgICAgICAgICAgc2hvdWxk
IGJlIHNldCB0byAiY29weSIuCisgICAgICAgIC0gb24gZHJhZ2VudGVyIGFuZCBkcmFnb3ZlciBl
dmVudCwgZHJvcEVmZmVjdCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gYQorICAgICAgICAgIGRl
ZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGVmZmVjdEFsbG93ZWQuCisgICAgICAg
IC0gYXQgZW5kIG9mIGRyYWdlbnRlciBhbmQgZHJhZ292ZXIgdGhlIGRyb3BFZmZlY3Qgc2hvdWxk
IGJlIHNldCB0byAibm9uZSIKKyAgICAgICAgICBpZiB0aGUgdmFsdWUgc2V0IGJ5IHRoZSBoYW5k
bGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIGVmZmVjdEFsbG93ZWQuCisgICAgICAgIC0gb24gZHJhZ2xl
YXZlIGV2ZW50LCBkcm9wRWZmZWN0IHNob3VsZCBiZSAibm9uZSIuCisgICAgICAgIC0gb24gZHJv
cCBldmVudCwgZHJvcEVmZmVjdCBzaG91bGQgYmUgdGhlIHByZXZpb3VzbHkgbmVnb3RpYXRlZCB2
YWx1ZS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9kcmFnLWRyb3BlZmZlY3QuaHRtbAor
CisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgICAgIEFkZGVkIGEgcGFyYW1l
dGVyIHRvIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZU1vdmVkVG8uCisgICAgICAgICogZG9tL0Ns
aXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OkNsaXBib2FyZCk6Cisg
ICAgICAgICAgICBJbml0aWFsaXplIG1fZWZmZWN0QWxsb3dlZCB0byAidW5pbml0aWFsaXplZCIu
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNvdXJjZU9wZXJhdGlvbik6CisgICAgICAg
ICAgICBUcmVhdCAidW5pbml0aWFsaXplZCIgYXMgbWVhbmluZyBubyB2YWx1ZSBoYXMgYmVlbiBz
ZXQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIpOgorICAgICAgICAgICAgSW5pdGlhbGl6
ZSBuZXcgbWVtYmVyIG1fZGVzdGluYXRpb25EcmFnT3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQpOgorICAgICAgICAgICAgU2V0IG1fZGVzdGlu
YXRpb25EcmFnT3BlcmF0aW9uIHRvIG5vbmUgb24gZHJhZ0V4aXQuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWcpOgorICAgICAgICAgICAgU2V0IG1fZGVzdGlu
YXRpb25EcmFnT3BlcmF0aW9uIHRvIGN1cnJlbnQgZHJvcEVmZmVjdC4KKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisgICAgICAgICAgICBN
YWtlIHN1cmUgdG8gY2xlYXIgdGhlIG9wZXJhdGlvbiBpZiBkcmFnIHNvdXJjZSBkb2Vzbid0IGFs
bG93IGl0LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyk6
CisgICAgICAgICAgICBTZXQgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZHN0IGRyYWcgb3AgYmVm
b3JlIHNlbmRpbmcgZHJhZ0VudGVyL092ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgICAgIENsZWFyIG1fZGVzdGluYXRpb25EcmFnT3Bl
cmF0aW9uIGF0IHN0YXJ0IG9mIGRyYWcuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRlc3RpbmF0aW9uRHJhZ09wZXJh
dGlvbik6CisgICAgICAgICAgICBBZGRlZCBuZXcgbWVtYmVyIG1fZGVzdGluYXRpb25EcmFnT3Bl
cmF0aW9uLCBhbmQgaXRzIHB1YmxpYyBnZXR0ZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJv
cCk6CisgICAgICAgICAgICBkcm9wRWZmZWN0IHNob3VsZCBiZSAnbm9uZScgZHVyaW5nIGRyb3Bs
ZWF2ZSBoYW5kbGVyLCBwZXIgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
ZHJhZ1NvdXJjZU1vdmVkVG8pOgorICAgICAgICAgICAgQWRkZWQgRHJhZ09wZXJhdGlvbiBwYXJh
bWV0ZXIsIHNvIHRoZSBoYW5kbGVyIHNlZXMgdGhlIGN1cnJlbnQgZHJvcEVmZmVjdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICAgICBBc3N1
bWUgRHJhZ09wZXJhdGlvbkV2ZXJ5IGZvciBub24tREhUTUwgZHJhZ3MuCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgICAgIEFkZGVkIERyYWdPcGVyYXRpb24gcGFyYW1l
dGVyIHRvIGRyYWdTb3VyY2VNb3ZlZFRvKCkuCisKIDIwMDktMDgtMjQgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChi
dWlsZCBmaXgpCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiA0NzcxOSkKKysrIFdlYkNvcmUvV2Vi
Q29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw3IEBAIF9fWk43V2Vi
Q29yZTEyRXZlbnRIYW5kbGVyMTRjdXJyZW50TlNFdmUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5k
bGVyMTRzY3JvbGxPdmVyZmxvd0VOU18xNVNjcm9sbERpcmVjdGlvbkVOU18xN1Njcm9sbEdyYW51
bGFyaXR5RQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxNXNlbmRTY3JvbGxFdmVudEV2CiBf
X1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE3ZHJhZ1NvdXJjZUVuZGVkQXRFUktOU18xOFBsYXRm
b3JtTW91c2VFdmVudEVOU18xM0RyYWdPcGVyYXRpb25FCi1fX1pON1dlYkNvcmUxMkV2ZW50SGFu
ZGxlcjE3ZHJhZ1NvdXJjZU1vdmVkVG9FUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUKK19fWk43
V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdkcmFnU291cmNlTW92ZWRUb0VSS05TXzE4UGxhdGZvcm1N
b3VzZUV2ZW50RU5TXzEzRHJhZ09wZXJhdGlvbkUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVy
MTdldmVudE1heVN0YXJ0RHJhZ0VQN05TRXZlbnQKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVy
MjBoYW5kbGVUZXh0SW5wdXRFdmVudEVSS05TXzZTdHJpbmdFUE5TXzVFdmVudEViYgogX19aTjdX
ZWJDb3JlMTJFdmVudEhhbmRsZXIyMGhpdFRlc3RSZXN1bHRBdFBvaW50RVJLTlNfOEludFBvaW50
RWJiTlNfMTdIaXRUZXN0U2Nyb2xsYmFyc0UKSW5kZXg6IFdlYkNvcmUvZG9tL0NsaXBib2FyZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAkocmV2aXNpb24gNDc3
MTkpCisrKyBXZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCwxMCBAQCBDbGlwYm9hcmQ6OkNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpCiAgICAg
LCBtX2ZvckRyYWdnaW5nKGlzRm9yRHJhZ2dpbmcpCiAgICAgLCBtX2RyYWdJbWFnZSgwKQogewor
ICAgIGlmIChpc0ZvckRyYWdnaW5nKSB7CisgICAgICAgIC8vIHBlciBIVE1MNSBzcGVjLCBzZWMu
IDcuOS4yCisgICAgICAgIG1fZWZmZWN0QWxsb3dlZCA9ICJ1bmluaXRpYWxpemVkIjsKKyAgICB9
CiB9CiAgICAgCiB2b2lkIENsaXBib2FyZDo6c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3kpCkBAIC05OCw3ICsxMDIsNyBAQCBzdGF0aWMgU3RyaW5nIElFT3BGcm9t
RHJhZ09wKERyYWdPcGVyYXRpCiAKIGJvb2wgQ2xpcGJvYXJkOjpzb3VyY2VPcGVyYXRpb24oRHJh
Z09wZXJhdGlvbiYgb3ApIGNvbnN0CiB7Ci0gICAgaWYgKG1fZWZmZWN0QWxsb3dlZC5pc051bGwo
KSkKKyAgICBpZiAobV9lZmZlY3RBbGxvd2VkLmlzTnVsbCgpIHx8IG1fZWZmZWN0QWxsb3dlZCA9
PSAidW5pbml0aWFsaXplZCIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBvcCA9IGRyYWdP
cEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBXZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDQ3NzE5KQorKysgV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBEcmFnQ29udHJv
bGxlcjo6RHJhZ0NvbnRyb2xsZXIoUGFnZSogcGFnCiAgICAgLCBtX2RpZEluaXRpYXRlRHJhZyhm
YWxzZSkKICAgICAsIG1faXNIYW5kbGluZ0RyYWcoZmFsc2UpCiAgICAgLCBtX3NvdXJjZURyYWdP
cGVyYXRpb24oRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgLCBtX2Rlc3RpbmF0aW9uRHJhZ09wZXJh
dGlvbihEcmFnT3BlcmF0aW9uTm9uZSkKIHsKIH0KIApAQCAtMTU4LDYgKzE1OSw3IEBAIHZvaWQg
RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoRHJhZ0RhdGEKICAgICAgICAgQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSA9ICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgbV9kb2N1bWVudFVu
ZGVyTW91c2UtPnNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKSkgPyBDbGlwYm9hcmRSZWFkYWJs
ZSA6IENsaXBib2FyZFR5cGVzUmVhZGFibGU7CiAgICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNs
aXBib2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9hcmQocG9saWN5KTsKICAgICAgICAgY2xp
cGJvYXJkLT5zZXRTb3VyY2VPcGVyYXRpb24oZHJhZ0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFzaygpKTsKKyAgICAgICAgY2xpcGJvYXJkLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbihE
cmFnT3BlcmF0aW9uTm9uZSk7ICAvLyBIVE1MNSBzcGVjLCBzZWMuIDcuOS4zCiAgICAgICAgIG1h
aW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmNhbmNlbERyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZl
bnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkpOwogICAgICAgICBjbGlwYm9hcmQtPnNldEFj
Y2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsgICAgLy8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVy
ZSBmb3Igc2VjdXJpdHkKICAgICB9CkBAIC0xODEsNiArMTgzLDcgQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6cGVyZm9ybURyYWcoRHJhZ0RhdAogICAgICAgICAgICAgLy8gU2VuZGluZyBhbiBldmVu
dCBjYW4gcmVzdWx0IGluIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgdmlldyBhbmQgcGFydC4KICAg
ICAgICAgICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVD
bGlwYm9hcmQoQ2xpcGJvYXJkUmVhZGFibGUpOwogICAgICAgICAgICAgY2xpcGJvYXJkLT5zZXRT
b3VyY2VPcGVyYXRpb24oZHJhZ0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsK
KyAgICAgICAgICAgIGNsaXBib2FyZC0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24obV9kZXN0aW5h
dGlvbkRyYWdPcGVyYXRpb24pOyAgLy8gSFRNTDUgc3BlYywgc2VjLiA3LjkuMwogICAgICAgICAg
ICAgbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1v
dXNlRXZlbnQoZHJhZ0RhdGEpLCBjbGlwYm9hcmQuZ2V0KCkpOwogICAgICAgICAgICAgY2xpcGJv
YXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkTnVtYik7ICAgIC8vIGludmFsaWRhdGUgY2xp
cGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CiAgICAgICAgIH0KQEAgLTIyOSw3ICsyMzIsMTIgQEAg
RHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZQogICAgIERyYWdPcGVyYXRp
b24gb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CiAgICAgYm9vbCBoYW5kbGVkQnlEb2N1
bWVudCA9IHRyeURvY3VtZW50RHJhZyhkcmFnRGF0YSwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb24s
IG9wZXJhdGlvbik7CiAgICAgaWYgKCFoYW5kbGVkQnlEb2N1bWVudCAmJiAobV9kcmFnRGVzdGlu
YXRpb25BY3Rpb24gJiBEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKSkKLSAgICAgICAgcmV0dXJu
IG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpOworICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRp
b25Gb3JMb2FkKGRyYWdEYXRhKTsKKyAgICAKKyAgICAvLyBSZXN0cmljdCB0aGUgb3BlcmF0aW9u
IHRvIHdoYXQgdGhlIGRyYWcgc291cmNlIGFsbG93czoKKyAgICBpZiAoKG9wZXJhdGlvbiAmIGRy
YWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSkgIT0gb3BlcmF0aW9uKQorICAg
ICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBtX2Rlc3RpbmF0aW9uRHJh
Z09wZXJhdGlvbiA9IG9wZXJhdGlvbjsKICAgICByZXR1cm4gb3BlcmF0aW9uOwogfQogCkBAIC00
OTEsNiArNDk5LDggQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKERyYWdEYQog
ICAgIFJlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCA9IGRyYWdEYXRhLT5jcmVhdGVDbGlwYm9h
cmQocG9saWN5KTsKICAgICBEcmFnT3BlcmF0aW9uIHNyY09wTWFzayA9IGRyYWdEYXRhLT5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKICAgICBjbGlwYm9hcmQtPnNldFNvdXJjZU9wZXJh
dGlvbihzcmNPcE1hc2spOworICAgIG1fZGVzdGluYXRpb25EcmFnT3BlcmF0aW9uID0gZGVmYXVs
dE9wZXJhdGlvbkZvckRyYWcoc3JjT3BNYXNrKTsgICAgLy8gSFRNTDUgc3BlYywgc2VjLiA3Ljku
MworICAgIGNsaXBib2FyZC0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24obV9kZXN0aW5hdGlvbkRy
YWdPcGVyYXRpb24pOwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50ID0gY3JlYXRlTW91
c2VFdmVudChkcmFnRGF0YSk7CiAgICAgaWYgKCFtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT51
cGRhdGVEcmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJkLmdldCgpKSkgewpAQCAtNjIzLDYgKzYz
Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3IKIAogICAgIG1f
ZHJhZ2dpbmdJbWFnZVVSTCA9IEtVUkwoKTsKICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBz
cmNPcDsKKyAgICBtX2Rlc3RpbmF0aW9uRHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25l
OwogCiAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSA9IDA7CiAgICAgSW50UG9pbnQgZHJhZ0xv
YygwLCAwKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCShyZXZpc2lvbiA0NzcxOSkKKysrIFdl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRJc0hhbmRsaW5nRHJhZyhi
b29sIGhhbmRsaW5nKSB7IG1faXNIYW5kbGluZ0RyYWcgPSBoYW5kbGluZzsgfQogICAgICAgICBi
b29sIGlzSGFuZGxpbmdEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9pc0hhbmRsaW5nRHJhZzsgfQog
ICAgICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZURyYWdPcGVyYXRpb247IH0KKyAgICAgICAgRHJhZ09wZXJhdGlvbiBkZXN0aW5h
dGlvbkRyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uRHJhZ09wZXJh
dGlvbjsgfQogICAgICAgICB2b2lkIHNldERyYWdnaW5nSW1hZ2VVUkwoY29uc3QgS1VSTCYgdXJs
KSB7IG1fZHJhZ2dpbmdJbWFnZVVSTCA9IHVybDsgfQogICAgICAgICBjb25zdCBLVVJMJiBkcmFn
Z2luZ0ltYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ0ltYWdlVVJMOyB9CiAgICAg
ICAgIHZvaWQgc2V0RHJhZ0luaXRpYXRvcihEb2N1bWVudCogaW5pdGlhdG9yKSB7IG1fZHJhZ0lu
aXRpYXRvciA9IGluaXRpYXRvcjsgbV9kaWRJbml0aWF0ZURyYWcgPSB0cnVlOyB9CkBAIC0xMjIs
NiArMTIzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fZGlkSW5pdGlh
dGVEcmFnOwogICAgICAgICBib29sIG1faXNIYW5kbGluZ0RyYWc7CiAgICAgICAgIERyYWdPcGVy
YXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBk
cmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0CisgICAgICAgIERyYWdP
cGVyYXRpb24gbV9kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb247IC8vIExhc3Qgb3BlcmF0aW9uIHNl
dCBieSBldmVudCBoYW5kbGVyCiAgICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICAg
ICAgS1VSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCShyZXZpc2lvbiA0NzcxOSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTA2LDggKzE1MDYsMTQgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZURyYWdBbmREcm9wKGNvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RhdGlj
X2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihtX2RyYWdUYXJnZXQuZ2V0KCkpLT5jb250ZW50
RnJhbWUoKSA6IDA7CiAgICAgICAgICAgICBpZiAoZnJhbWUpCiAgICAgICAgICAgICAgICAgYWNj
ZXB0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgY2xp
cGJvYXJkKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIC8vIFRlbXBvcmFyaWx5IHNldCBkcm9wRWZmZWN0IHRvICdub25lJyB3aGlsZSBjYWxs
aW5nIGRyb3BsZWF2ZSBoYW5kbGVyIChhcyBwZXIgSFRNTDUgc3BlYykKKyAgICAgICAgICAgICAg
ICBEcmFnT3BlcmF0aW9uIHNhdmVPcCA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICAgICAg
ICAgIGNsaXBib2FyZC0+ZGVzdGluYXRpb25PcGVyYXRpb24oc2F2ZU9wKTsKKyAgICAgICAgICAg
ICAgICBjbGlwYm9hcmQtPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb25Ob25l
KTsKICAgICAgICAgICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xl
YXZlRXZlbnQsIG1fZHJhZ1RhcmdldC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCk7CisgICAgICAg
ICAgICAgICAgY2xpcGJvYXJkLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbihzYXZlT3ApOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG5ld1Rhcmdl
dCkgewpAQCAtMjEyOCwxMSArMjEzNCwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2hvdWxkRHJh
Z0F1dG9Ob2RlKE5vCiAgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+
bWF5U3RhcnREcmFnQXRFdmVudExvY2F0aW9uKG1fZnJhbWUsIHBvaW50KTsKIH0KICAgICAKLXZv
aWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlTW92ZWRUbyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KQordm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VNb3ZlZFRvKGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogewotICAg
IGlmIChkcmFnU3RhdGUoKS5tX2RyYWdTcmMgJiYgZHJhZ1N0YXRlKCkubV9kcmFnU3JjTWF5QmVE
SFRNTCkKKyAgICBpZiAoZHJhZ1N0YXRlKCkubV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJh
Z1NyY01heUJlREhUTUwpIHsKKyAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5z
ZXREZXN0aW5hdGlvbk9wZXJhdGlvbihvcGVyYXRpb24pOwogICAgICAgICAvLyBmb3Igbm93IHdl
IGRvbid0IGNhcmUgaWYgZXZlbnQgaGFuZGxlciBjYW5jZWxzIGRlZmF1bHQgYmVoYXZpb3IsIHNp
bmNlIHRoZXJlIGlzIG5vbmUKICAgICAgICAgZGlzcGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1l
cygpLmRyYWdFdmVudCwgZXZlbnQpOworICAgIH0KIH0KICAgICAKIHZvaWQgRXZlbnRIYW5kbGVy
OjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbikKQEAgLTIyMjYsNyArMjIzNCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMKICAgICAvLyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5
c3RlcmVzaXMgcG9pbnQsIHdlIGRvbid0IHdhbnQgdG8gdHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEg
Y2xpY2sKICAgICBpbnZhbGlkYXRlQ2xpY2soKTsKICAgICAKLSAgICBEcmFnT3BlcmF0aW9uIHNy
Y09wID0gRHJhZ09wZXJhdGlvbk5vbmU7ICAgICAgCisgICAgRHJhZ09wZXJhdGlvbiBzcmNPcCA9
IERyYWdPcGVyYXRpb25FdmVyeTsgICAgICAKICAgICAKICAgICBmcmVlQ2xpcGJvYXJkKCk7ICAg
IC8vIHdvdWxkIG9ubHkgaGFwcGVuIGlmIHdlIG1pc3NlZCBhIGRyYWdFbmQuICBEbyBpdCBhbnl3
YXksIGp1c3QKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSBpdCBnZXRz
IG51bWJpZmllZApAQCAtMjI0OSw2ICsyMjU3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZURyYWcoY29uc3QgTW91cwogICAgICAgICAgICAgfQogICAgICAgICB9IAogICAgICAgICAKKyAg
ICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlv
bihEcmFnT3BlcmF0aW9uTm9uZSk7IC8vIEhUTUw1IHNwZWMKICAgICAgICAgbV9tb3VzZURvd25N
YXlTdGFydERyYWcgPSBkaXNwYXRjaERyYWdTcmNFdmVudChldmVudE5hbWVzKCkuZHJhZ3N0YXJ0
RXZlbnQsIG1fbW91c2VEb3duKQogICAgICAgICAgICAgJiYgIW1fZnJhbWUtPnNlbGVjdGlvbigp
LT5pc0luUGFzc3dvcmRGaWVsZCgpOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJl
dmlzaW9uIDQ3NzE5KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBldmVudE1heVN0YXJ0
RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGRy
YWdTb3VyY2VNb3ZlZFRvKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZvaWQgZHJh
Z1NvdXJjZU1vdmVkVG8oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJhZ09wZXJhdGlvbiA9
IERyYWdPcGVyYXRpb25Ob25lKTsKICAgICB2b2lkIGRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYsIERyYWdPcGVyYXRpb24pOwogCiAgICAgdm9pZCBmb2N1c0RvY3Vt
ZW50VmlldygpOwpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ3NzE5KQorKysgV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wOC0yNCAgSmVucyBBbGZr
ZSAgPHNuZWpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluaXRpYWxpemUgRGF0YVRyYW5zZmVyJ3MgZWZmZWN0QWxsb3dlZCBh
bmQgZHJvcEVmZmVjdCBwcm9wZXJ0aWVzIGNvcnJlY3RseQorICAgICAgICBhY2NvcmRpbmcgdG8g
SFRNTDUgc3BlYyAoc2VjLiA3LjkuMi03LjkuMykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjcwMAorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFt
ZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VNb3ZlZFRvOl0pOgorICAgICAg
ICAgICAgUGFzcyBjdXJyZW50IGRyYWcgb3BlcmF0aW9uIChpZiBrbm93bikgdG8gRXZlbnRIYW5k
bGVyOjpkcmFnU291cmNlTW92ZWRUbygpLgorCiAyMDA5LTA4LTI0ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoYnVp
bGQgZml4KQpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gNDc3MTkpCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRpb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvRG9jTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZl
bnRIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWUuaD4KQEAgLTkzMiw3ICs5MzMsMTMgQEAgc3RhdGljIGlubGluZSBXZWJEYXRh
U291cmNlICpkYXRhU291cmNlKAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgZmFrZSBtb2RpZmll
ciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFsIG9uZXMgaW5zdGVhZC4KICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoSW50UG9pbnQod2luZG93TG9jKSwgZ2xvYmFsUG9pbnQo
d2luZG93TG9jLCBbdmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddKSwKICAgICAgICAgTGVm
dEJ1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
Y3VycmVudFRpbWUoKSk7Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmRyYWdTb3VyY2VNb3ZlZFRvKGV2ZW50KTsKKyAgICAKKyAgICAvLyBHZXQgdGhlIGN1cnJlbnQg
ZGVzdGluYXRpb24gZHJhZyBvcGVyYXRpb24sIGlmIHRoaXMgaXMgYW4gaW50cmEtcGFnZSBkcmFn
OgorICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5wYWdlKCkpCisgICAgICAgIG9w
ZXJhdGlvbiA9IHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRlc3RpbmF0aW9uRHJhZ09wZXJhdGlv
bigpOworCisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRyYWdTb3Vy
Y2VNb3ZlZFRvKGV2ZW50LCBvcGVyYXRpb24pOwogfQogCiAtICh2b2lkKV9kcmFnU291cmNlRW5k
ZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0
aW9uCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NzcxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA4LTI0ICBKZW5zIEFsZmtlICA8
c25lakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW5pdGlhbGl6ZSBEYXRhVHJhbnNmZXIncyBlZmZlY3RBbGxvd2VkIGFuZCBk
cm9wRWZmZWN0IHByb3BlcnRpZXMgY29ycmVjdGx5CisgICAgICAgIGFjY29yZGluZyB0byBIVE1M
NSBzcGVjIChzZWMuIDcuOS4yLTcuOS4zKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2NzAwCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9kcmFnLWRy
b3BlZmZlY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9kcmFn
LWRyb3BlZmZlY3QuaHRtbDogQWRkZWQuCisKIDIwMDktMDgtMjQgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWRyb3BlZmZlY3QtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctZHJvcGVmZmVjdC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWRy
b3BlZmZlY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACisKK1Ro
aXMgYXV0b21hdGVkIGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0IGVmZmVjdEFsbG93ZWQgYW5kIGRy
b3BFZmZlY3QgYXJlIHNldCBwcm9wZXJseSBpbiBkcmFnIGNhbGxiYWNrcy4KK0lmIHlvdSdyZSBy
dW5uaW5nIHRoaXMgaW4gYSBicm93c2VyLCB5b3UgY2FuIHNpbXVsYXRlIHBhcnQgb2YgaXQgYnkg
ZHJhZ2dpbmcgQWJlIG9udG8gdGhlIGJveC4KKworKioqIFRlc3RpbmcgYSBzdWNjZXNzZnVsIGRy
YWcuLi4KK1BBU1M6IGVmZmVjdEFsbG93ZWQgaW4gZHJhZ1N0YXJ0ID0gJ3VuaW5pdGlhbGl6ZWQn
CitQQVNTOiBkcm9wRWZmZWN0IGluIGRyYWdTdGFydCA9ICdub25lJworUEFTUzogZWZmZWN0QWxs
b3dlZCBpbiBkcmFnRW50ZXIgPSAnY29weU1vdmUnCitQQVNTOiBkcm9wRWZmZWN0IGluIGRyYWdF
bnRlciA9ICdjb3B5JworUEFTUzogZWZmZWN0QWxsb3dlZCBpbiBkcm9wID0gJ2NvcHlNb3ZlJwor
UEFTUzogZHJvcEVmZmVjdCBpbiBkcm9wID0gJ21vdmUnCitQQVNTOiBlZmZlY3RBbGxvd2VkIGlu
IGRyYWdFbmQgPSAnY29weU1vdmUnCitQQVNTOiBkcm9wRWZmZWN0IGluIGRyYWdFbmQgPSAnbW92
ZScKK1BBU1M6IGNhbGxzIHRvIGRyYWdTdGFydCA9ICcxJworUEFTUzogY2FsbHMgdG8gZHJhZ0Vu
ZCA9ICcxJworUEFTUzogY2FsbHMgdG8gZHJhZ0VudGVyID0gJzEnCitQQVNTOiBjYWxscyB0byBk
cm9wID0gJzEnCisqKiogVGVzdGluZyBhIGZhaWxlZCBkcmFnLi4uCitQQVNTOiBlZmZlY3RBbGxv
d2VkIGluIGRyYWdTdGFydCA9ICd1bmluaXRpYWxpemVkJworUEFTUzogZHJvcEVmZmVjdCBpbiBk
cmFnU3RhcnQgPSAnbm9uZScKK1BBU1M6IGVmZmVjdEFsbG93ZWQgaW4gZHJhZ0VudGVyID0gJ2xp
bmsnCitQQVNTOiBkcm9wRWZmZWN0IGluIGRyYWdFbnRlciA9ICdsaW5rJworUEFTUzogZWZmZWN0
QWxsb3dlZCBpbiBkcmFnTGVhdmUgPSAnbGluaycKK1BBU1M6IGRyb3BFZmZlY3QgaW4gZHJhZ0xl
YXZlID0gJ25vbmUnCitQQVNTOiBlZmZlY3RBbGxvd2VkIGluIGRyYWdFbmQgPSAnbGluaycKK1BB
U1M6IGRyb3BFZmZlY3QgaW4gZHJhZ0VuZCA9ICdub25lJworUEFTUzogY2FsbHMgdG8gZHJhZ1N0
YXJ0ID0gJzEnCitQQVNTOiBjYWxscyB0byBkcmFnRW5kID0gJzEnCitQQVNTOiBjYWxscyB0byBk
cmFnRW50ZXIgPSAnMScKK1BBU1M6IGNhbGxzIHRvIGRyb3AgPSAnMCcKClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctZHJvcGVmZmVjdC1leHBlY3RlZC50
eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWRyb3BlZmZlY3QuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgIAorPGltYWdlIGlkPSJkcmFnU291cmNlIiBzcmM9InJlc291
cmNlcy9hYmUucG5nIgorICAgICAgIG9uZHJhZ3N0YXJ0PSJkcmFnU3RhcnQoZXZlbnQpIiBvbmRy
YWc9ImRyYWcoZXZlbnQpIiBvbmRyYWdlbmQ9ImRyYWdFbmQoZXZlbnQpIj4KKzxkaXYgaWQ9ImRy
YWdUYXJnZXQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjogMXB4
IHNvbGlkIGdyYXk7IgorICAgICAgICBvbmRyYWdlbnRlcj0iZHJhZ0VudGVyKGV2ZW50KSIgb25k
cmFnb3Zlcj0iZHJhZ092ZXIoZXZlbnQpIgorICAgICAgICBvbmRyYWdsZWF2ZT0iZHJhZ0xlYXZl
KGV2ZW50KSIgb25kcm9wPSJkcm9wKGV2ZW50KSI+Cis8L2Rpdj4KKworPHA+VGhpcyBhdXRvbWF0
ZWQgbGF5b3V0IHRlc3QgY2hlY2tzIHRoYXQgZWZmZWN0QWxsb3dlZCBhbmQgZHJvcEVmZmVjdCBh
cmUgc2V0IHByb3Blcmx5IGluIGRyYWcKKyAgIGNhbGxiYWNrcy48YnI+CisgICBJZiB5b3UncmUg
cnVubmluZyB0aGlzIGluIGEgYnJvd3NlciwgeW91IGNhbiBzaW11bGF0ZSBwYXJ0IG9mIGl0IGJ5
IGRyYWdnaW5nIEFiZSBvbnRvIHRoZSBib3guPC9wPgorPHVsIGlkPSJsb2ciPjwvdWw+CisKKzxz
Y3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnbGknKTsKKyAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtc2cpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykuYXBwZW5kQ2hpbGQo
bGkpOworfQorCitmdW5jdGlvbiBhc3NlcnQocmVzdWx0LCB3aGF0KSB7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIGxvZygiRkFJTDogRXhwZWN0ZWQgdGhhdCAiK3doYXQpOworICAgIGVsc2UK
KyAgICAgICAgbG9nKCJQQVNTOiAiK3doYXQpOworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbCh0
ZXN0LCBleHBlY3RlZCwgd2hhdCwgcXVpZXQpIHsKKyAgICBpZiAodGVzdCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIGxvZygiRkFJTDogIit3aGF0KyIgPSAnIit0ZXN0KyInIC4uLiBleHBlY3RlZCAn
IitleHBlY3RlZCsiJyIpOworICAgIGVsc2UgaWYgKCFxdWlldCkKKyAgICAgICAgbG9nKCJQQVNT
OiAiK3doYXQrIiA9ICciK3Rlc3QrIiciKTsKK30KKworCit2YXIgZHJhZ1N0YXJ0Q2FsbGVkPTAs
IGRyYWdDYWxsZWQ9MCwgZHJhZ0VuZENhbGxlZD0wOwordmFyIGRyYWdFbnRlckNhbGxlZD0wLCBk
cmFnT3ZlckNhbGxlZD0wLCBkcmFnTGVhdmVDYWxsZWQ9MCwgZHJvcENhbGxlZD0wOworCit2YXIg
ZWZmZWN0QWxsb3dlZFRvU2V0ID0gImNvcHlNb3ZlIjsKK3ZhciBkZWZhdWx0RHJvcEVmZmVjdCA9
ICJjb3B5IjsKK3ZhciBkcm9wRWZmZWN0VG9TZXQgPSAibW92ZSI7Cit2YXIgZXhwZWN0ZWREcm9w
RWZmZWN0ID0gIm1vdmUiOworCisKKy8vIERSQUcgU09VUkNFIEVWRU5UIEhBTkRMRVJTOgorZnVu
Y3Rpb24gZHJhZ1N0YXJ0KGV2ZW50KSB7CisgICAgZHJhZ1N0YXJ0Q2FsbGVkKys7CisgICAgYXNz
ZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQsICJ1bmluaXRpYWxpemVk
IiwgImVmZmVjdEFsbG93ZWQgaW4gZHJhZ1N0YXJ0Iik7CisgICAgYXNzZXJ0RXF1YWwoZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QsICJub25lIiwgImRyb3BFZmZlY3QgaW4gZHJhZ1N0YXJ0
Iik7CisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBlZmZlY3RBbGxvd2Vk
VG9TZXQ7Cit9CisKK2Z1bmN0aW9uIGRyYWcoZXZlbnQpIHsKKyAgICBkcmFnQ2FsbGVkKys7Cisg
ICAgYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQsIGVmZmVjdEFs
bG93ZWRUb1NldCwgImVmZmVjdEFsbG93ZWQgaW4gZHJhZyIsIHRydWUpOworICAgIGFzc2VydEVx
dWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0LAorICAgICAgICAgICAgICAgIGRyYWdM
ZWF2ZUNhbGxlZCA8IGRyYWdFbnRlckNhbGxlZCA/ZXhwZWN0ZWREcm9wRWZmZWN0IDoibm9uZSIs
IAorICAgICAgICAgICAgICAgICJkcm9wRWZmZWN0IGluIGRyYWciLAorICAgICAgICAgICAgICAg
IHRydWUpOworfQorCitmdW5jdGlvbiBkcmFnRW5kKGV2ZW50KSB7CisgICAgZHJhZ0VuZENhbGxl
ZCsrOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkLCBl
ZmZlY3RBbGxvd2VkVG9TZXQsICJlZmZlY3RBbGxvd2VkIGluIGRyYWdFbmQiKTsKKyAgICBhc3Nl
cnRFcXVhbChldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCwgCisgICAgICAgICAgICAgICAg
ZHJhZ0xlYXZlQ2FsbGVkIDwgZHJhZ0VudGVyQ2FsbGVkID9leHBlY3RlZERyb3BFZmZlY3QgOiJu
b25lIiwKKyAgICAgICAgICAgICAgICAiZHJvcEVmZmVjdCBpbiBkcmFnRW5kIik7Cit9CisKKwor
Ly8gRFJBRyBERVNUSU5BVElPTiBFVkVOVCBIQU5ETEVSUzoKK2Z1bmN0aW9uIGRyYWdFbnRlcihl
dmVudCkgeworICAgIGRyYWdFbnRlckNhbGxlZCsrOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRh
dGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkLCBlZmZlY3RBbGxvd2VkVG9TZXQsICJlZmZlY3RBbGxv
d2VkIGluIGRyYWdFbnRlciIpOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0LCBkZWZhdWx0RHJvcEVmZmVjdCwgImRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyIik7
CisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBkcm9wRWZmZWN0VG9TZXQ7Cisg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30KKworZnVuY3Rpb24gZHJhZ092ZXIoZXZlbnQp
IHsKKyAgICBkcmFnT3ZlckNhbGxlZCsrOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFu
c2Zlci5lZmZlY3RBbGxvd2VkLCBlZmZlY3RBbGxvd2VkVG9TZXQsICJlZmZlY3RBbGxvd2VkIGlu
IGRyYWdPdmVyIiwgdHJ1ZSk7CisgICAgYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QsIGRlZmF1bHREcm9wRWZmZWN0LCAiZHJvcEVmZmVjdCBpbiBkcmFnT3ZlciIsIHRy
dWUpOworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gZHJvcEVmZmVjdFRvU2V0
OworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9CisKK2Z1bmN0aW9uIGRyYWdMZWF2ZShl
dmVudCkgeworICAgIGRyYWdMZWF2ZUNhbGxlZCsrOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRh
dGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkLCBlZmZlY3RBbGxvd2VkVG9TZXQsICJlZmZlY3RBbGxv
d2VkIGluIGRyYWdMZWF2ZSIpOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0LCAibm9uZSIsICJkcm9wRWZmZWN0IGluIGRyYWdMZWF2ZSIpOworICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7Cit9CisKK2Z1bmN0aW9uIGRyb3AoZXZlbnQpIHsKKyAgICBkcm9w
Q2FsbGVkKys7CisgICAgYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93
ZWQsIGVmZmVjdEFsbG93ZWRUb1NldCwgImVmZmVjdEFsbG93ZWQgaW4gZHJvcCIpOworICAgIGFz
c2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0LCBleHBlY3RlZERyb3BFZmZl
Y3QsICJkcm9wRWZmZWN0IGluIGRyb3AiKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwor
fQorCisKK2Z1bmN0aW9uIHBlcmZvcm1EcmFnKHNyY0lkLCBkc3RJZCkgeworICAgIGRyYWdTdGFy
dENhbGxlZCA9IGRyYWdDYWxsZWQgPSBkcmFnRW5kQ2FsbGVkID0gMDsKKyAgICBkcmFnRW50ZXJD
YWxsZWQgPSBkcmFnT3ZlckNhbGxlZCA9IGRyYWdMZWF2ZUNhbGxlZCA9IGRyb3BDYWxsZWQgPSAw
OworICAgIAorICAgIC8vIE1vdXNlIGRvd24gb24gdGhlIGVsZW1lbnQgdG8gZHJhZworICAgIHZh
ciBkcmFnU291cmNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3JjSWQpOworICAgIHZhciB4
ID0gZHJhZ1NvdXJjZS5vZmZzZXRMZWZ0ICsgZHJhZ1NvdXJjZS5vZmZzZXRXaWR0aCAvIDI7Cisg
ICAgdmFyIHkgPSBkcmFnU291cmNlLm9mZnNldFRvcCArIGRyYWdTb3VyY2Uub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKworICAgIC8vIERyYWcgdG8gdGhlIG1pZGRsZSBvZiB0aGUgZGVzdGlu
YXRpb24gZWxlbWVudAorICAgIHZhciBkcmFnVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoZHN0SWQpOworICAgIHggPSBkcmFnVGFyZ2V0Lm9mZnNldExlZnQgKyBkcmFnVGFyZ2V0Lm9m
ZnNldFdpZHRoIC8gMjsKKyAgICB5ID0gZHJhZ1RhcmdldC5vZmZzZXRUb3AgKyBkcmFnVGFyZ2V0
Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisK
KyAgICAvLyBEcm9wCisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgcmV0dXJuOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdHJ5IHsKKyAgICAgIAor
ICAgICAgbG9nKCIqKiogVGVzdGluZyBhIHN1Y2Nlc3NmdWwgZHJhZy4uLiIpOworICAgICAgZWZm
ZWN0QWxsb3dlZFRvU2V0ID0gImNvcHlNb3ZlIjsKKyAgICAgIGRlZmF1bHREcm9wRWZmZWN0ID0g
ImNvcHkiOworICAgICAgZHJvcEVmZmVjdFRvU2V0ID0gIm1vdmUiOworICAgICAgZXhwZWN0ZWRE
cm9wRWZmZWN0ID0gIm1vdmUiOworICAgICAgcGVyZm9ybURyYWcoJ2RyYWdTb3VyY2UnLCAnZHJh
Z1RhcmdldCcpOworICAgICAgCisgICAgICBhc3NlcnRFcXVhbChkcmFnU3RhcnRDYWxsZWQsIDEs
ICJjYWxscyB0byBkcmFnU3RhcnQiKTsKKyAgICAgIC8vIFdoZXRoZXIgZHJhZyBpcyBjYWxsZWQg
ZGVwZW5kcyBvbiB0aW1pbmcuIEluIGEgcmVhbC1saWZlIGRyYWcgaXQgd2lsbCBiZSBjYWxsZWQs
IGJ1dAorICAgICAgLy8gd2l0aCB0aGUgYXJ0aWZpY2lhbCBtb3VzZSBldmVudHMgZ2VuZXJhdGVk
IGJ5IHRoZSB0ZXN0IGNvbnRyb2xsZXIsIGl0IG1heSBub3QgYmUuCisgICAgICAvL2Fzc2VydChk
cmFnQ2FsbGVkID4gMCwgImRyYWcgd2FzIGNhbGxlZCBhdCBsZWFzdCBvbmNlIik7CisgICAgICBh
c3NlcnRFcXVhbChkcmFnRW5kQ2FsbGVkLCAxLCAiY2FsbHMgdG8gZHJhZ0VuZCIpOworICAgICAg
YXNzZXJ0RXF1YWwoZHJhZ0VudGVyQ2FsbGVkLCAxLCAiY2FsbHMgdG8gZHJhZ0VudGVyIik7Cisg
ICAgICAvLyBkcmFnT3ZlciB3b24ndCBuZWNlc3NhcmlseSBiZSBjYWxsZWQgaWYgdGhlcmUgd2Fz
IG9ubHkgb25lIG1vdXNlIGV2ZW50IG92ZXIKKyAgICAgIC8vIHRoZSBkcm9wIHRhcmdldCwgYXMg
aW4gcGVyZm9ybURyYWcuCisgICAgICAvLyBkcmFnTGVhdmUgaXNuJ3QgY2FsbGVkIGJlY2F1c2Ug
dGhlIGRyYWcgbmV2ZXIgZXhpdHMgdGhlIGRyb3AgdGFyZ2V0LgorICAgICAgYXNzZXJ0RXF1YWwo
ZHJvcENhbGxlZCwgMSwgImNhbGxzIHRvIGRyb3AiKTsKKworICAgICAgbG9nKCIqKiogVGVzdGlu
ZyBhIGZhaWxlZCBkcmFnLi4uIik7CisgICAgICBlZmZlY3RBbGxvd2VkVG9TZXQgPSAibGluayI7
CisgICAgICBkZWZhdWx0RHJvcEVmZmVjdCA9ICJsaW5rIjsKKyAgICAgIGRyb3BFZmZlY3RUb1Nl
dCA9ICJtb3ZlIjsKKyAgICAgIGV4cGVjdGVkRHJvcEVmZmVjdCA9ICJub25lIjsKKyAgICAgIHBl
cmZvcm1EcmFnKCdkcmFnU291cmNlJywgJ2RyYWdUYXJnZXQnKTsKKyAgICAgIAorICAgICAgYXNz
ZXJ0RXF1YWwoZHJhZ1N0YXJ0Q2FsbGVkLCAxLCAiY2FsbHMgdG8gZHJhZ1N0YXJ0Iik7CisgICAg
ICAvL2Fzc2VydChkcmFnQ2FsbGVkID4gMCwgImRyYWcgd2FzIGNhbGxlZCBhdCBsZWFzdCBvbmNl
Iik7CisgICAgICBhc3NlcnRFcXVhbChkcmFnRW5kQ2FsbGVkLCAxLCAiY2FsbHMgdG8gZHJhZ0Vu
ZCIpOworICAgICAgYXNzZXJ0RXF1YWwoZHJhZ0VudGVyQ2FsbGVkLCAxLCAiY2FsbHMgdG8gZHJh
Z0VudGVyIik7CisgICAgICBhc3NlcnRFcXVhbChkcm9wQ2FsbGVkLCAwLCAiY2FsbHMgdG8gZHJv
cCIpOworICAgICAgCisKKyAgICB9IGNhdGNoICh4KSB7CisgICAgICBsb2coIkZBSUxFRCBieSB0
aHJvd2luZyAiICsgeCk7CisgICAgfQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWRyb3BlZmZlY3QuaHRtbApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCg==
</data>
<flag name="review"
          id="19511"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39230</attachid>
            <date>2009-09-08 16:57:38 -0700</date>
            <delta_ts>2009-09-18 12:19:01 -0700</delta_ts>
            <desc>Patch with updated test case</desc>
            <filename>dragEffect4.patch</filename>
            <type>text/plain</type>
            <size>23640</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODE5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDktMDktMDggIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0
aWFsaXplIERhdGFUcmFuc2ZlcidzIGVmZmVjdEFsbG93ZWQgYW5kIGRyb3BFZmZlY3QgcHJvcGVy
dGllcyBjb3JyZWN0bHkKKyAgICAgICAgYWNjb3JkaW5nIHRvIEhUTUw1IHNwZWMgKHNlYy4gNy45
LjItNy45LjMpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjY3MDAKKyAgICAgICAgLSBBdCB0aGUgc3RhcnQgb2YgYSBkcmFnIG9wZXJhdGlvbiwgdGhl
IHZhbHVlIG9mIGVmZmVjdEFsbG93ZWQgc2hvdWxkIGJlCisgICAgICAgICAgdGhlIHN0cmluZyAi
dW5pbml0aWFsaXplZCIuCisgICAgICAgIC0gQXQgZW5kIG9mIGRyYWdzdGFydCBoYW5kbGVyLCBp
ZiBlZmZlY3RBbGxvd2VkIGhhc24ndCBiZWVuIHNldCB5ZXQsIGl0CisgICAgICAgICAgc2hvdWxk
IGJlIHNldCB0byAiY29weSIuCisgICAgICAgIC0gb24gZHJhZ2VudGVyIGFuZCBkcmFnb3ZlciBl
dmVudCwgZHJvcEVmZmVjdCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gYQorICAgICAgICAgIGRl
ZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGVmZmVjdEFsbG93ZWQuCisgICAgICAg
IC0gYXQgZW5kIG9mIGRyYWdlbnRlciBhbmQgZHJhZ292ZXIgdGhlIGRyb3BFZmZlY3Qgc2hvdWxk
IGJlIHNldCB0byAibm9uZSIKKyAgICAgICAgICBpZiB0aGUgdmFsdWUgc2V0IGJ5IHRoZSBoYW5k
bGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIGVmZmVjdEFsbG93ZWQuCisgICAgICAgIC0gb24gZHJhZ2xl
YXZlIGV2ZW50LCBkcm9wRWZmZWN0IHNob3VsZCBiZSAibm9uZSIuCisgICAgICAgIC0gb24gZHJv
cCBldmVudCwgZHJvcEVmZmVjdCBzaG91bGQgYmUgdGhlIHByZXZpb3VzbHkgbmVnb3RpYXRlZCB2
YWx1ZS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9kcmFnLWRyb3BlZmZlY3QuaHRtbAor
CisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgICAgIEFkZGVkIGEgcGFyYW1l
dGVyIHRvIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZU1vdmVkVG8uCisgICAgICAgICogZG9tL0Ns
aXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OkNsaXBib2FyZCk6Cisg
ICAgICAgICAgICBJbml0aWFsaXplIG1fZWZmZWN0QWxsb3dlZCB0byAidW5pbml0aWFsaXplZCIu
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNvdXJjZU9wZXJhdGlvbik6CisgICAgICAg
ICAgICBUcmVhdCAidW5pbml0aWFsaXplZCIgYXMgbWVhbmluZyBubyB2YWx1ZSBoYXMgYmVlbiBz
ZXQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIpOgorICAgICAgICAgICAgSW5pdGlhbGl6
ZSBuZXcgbWVtYmVyIG1fZGVzdGluYXRpb25EcmFnT3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQpOgorICAgICAgICAgICAgU2V0IG1fZGVzdGlu
YXRpb25EcmFnT3BlcmF0aW9uIHRvIG5vbmUgb24gZHJhZ0V4aXQuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWcpOgorICAgICAgICAgICAgU2V0IG1fZGVzdGlu
YXRpb25EcmFnT3BlcmF0aW9uIHRvIGN1cnJlbnQgZHJvcEVmZmVjdC4KKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisgICAgICAgICAgICBN
YWtlIHN1cmUgdG8gY2xlYXIgdGhlIG9wZXJhdGlvbiBpZiBkcmFnIHNvdXJjZSBkb2Vzbid0IGFs
bG93IGl0LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyk6
CisgICAgICAgICAgICBTZXQgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZHN0IGRyYWcgb3AgYmVm
b3JlIHNlbmRpbmcgZHJhZ0VudGVyL092ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgICAgIENsZWFyIG1fZGVzdGluYXRpb25EcmFnT3Bl
cmF0aW9uIGF0IHN0YXJ0IG9mIGRyYWcuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRlc3RpbmF0aW9uRHJhZ09wZXJh
dGlvbik6CisgICAgICAgICAgICBBZGRlZCBuZXcgbWVtYmVyIG1fZGVzdGluYXRpb25EcmFnT3Bl
cmF0aW9uLCBhbmQgaXRzIHB1YmxpYyBnZXR0ZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJv
cCk6CisgICAgICAgICAgICBkcm9wRWZmZWN0IHNob3VsZCBiZSAnbm9uZScgZHVyaW5nIGRyb3Bs
ZWF2ZSBoYW5kbGVyLCBwZXIgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
ZHJhZ1NvdXJjZU1vdmVkVG8pOgorICAgICAgICAgICAgQWRkZWQgRHJhZ09wZXJhdGlvbiBwYXJh
bWV0ZXIsIHNvIHRoZSBoYW5kbGVyIHNlZXMgdGhlIGN1cnJlbnQgZHJvcEVmZmVjdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICAgICBBc3N1
bWUgRHJhZ09wZXJhdGlvbkV2ZXJ5IGZvciBub24tREhUTUwgZHJhZ3MuCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgICAgIEFkZGVkIERyYWdPcGVyYXRpb24gcGFyYW1l
dGVyIHRvIGRyYWdTb3VyY2VNb3ZlZFRvKCkuCisKIDIwMDktMDktMDggIERhdmUgSHlhdHQgIDxo
eWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDog
V2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cAkocmV2aXNpb24gNDgxNjMpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNCw3ICsyMjQsNyBAQCBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxl
cjE0Y3VycmVudE5TRXZlCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE0c2Nyb2xsT3ZlcmZs
b3dFTlNfMTVTY3JvbGxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUUKIF9fWk43V2Vi
Q29yZTEyRXZlbnRIYW5kbGVyMTVzZW5kU2Nyb2xsRXZlbnRFdgogX19aTjdXZWJDb3JlMTJFdmVu
dEhhbmRsZXIxN2RyYWdTb3VyY2VFbmRlZEF0RVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFTlNf
MTNEcmFnT3BlcmF0aW9uRQotX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2RyYWdTb3VyY2VN
b3ZlZFRvRVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFCitfX1pON1dlYkNvcmUxMkV2ZW50SGFu
ZGxlcjE3ZHJhZ1NvdXJjZU1vdmVkVG9FUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEVOU18xM0Ry
YWdPcGVyYXRpb25FCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE3ZXZlbnRNYXlTdGFydERy
YWdFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwaGFuZGxlVGV4dElucHV0
RXZlbnRFUktOU182U3RyaW5nRVBOU181RXZlbnRFYmIKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5k
bGVyMjBoaXRUZXN0UmVzdWx0QXRQb2ludEVSS05TXzhJbnRQb2ludEViYk5TXzE3SGl0VGVzdFNj
cm9sbGJhcnNFCkluZGV4OiBXZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAJKHJldmlzaW9uIDQ4MTYzKQorKysgV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMTAgQEAgQ2xpcGJv
YXJkOjpDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saQogICAgICwgbV9mb3JEcmFnZ2luZyhp
c0ZvckRyYWdnaW5nKQogICAgICwgbV9kcmFnSW1hZ2UoMCkKIHsKKyAgICBpZiAoaXNGb3JEcmFn
Z2luZykgeworICAgICAgICAvLyBwZXIgSFRNTDUgc3BlYywgc2VjLiA3LjkuMgorICAgICAgICBt
X2VmZmVjdEFsbG93ZWQgPSAidW5pbml0aWFsaXplZCI7CisgICAgfQogfQogICAgIAogdm9pZCBD
bGlwYm9hcmQ6OnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQpA
QCAtOTgsNyArMTAyLDcgQEAgc3RhdGljIFN0cmluZyBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0
aQogCiBib29sIENsaXBib2FyZDo6c291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24mIG9wKSBj
b25zdAogewotICAgIGlmIChtX2VmZmVjdEFsbG93ZWQuaXNOdWxsKCkpCisgICAgaWYgKG1fZWZm
ZWN0QWxsb3dlZC5pc051bGwoKSB8fCBtX2VmZmVjdEFsbG93ZWQgPT0gInVuaW5pdGlhbGl6ZWQi
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgb3AgPSBkcmFnT3BGcm9tSUVPcChtX2VmZmVj
dEFsbG93ZWQpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA0ODE2MykKKysrIFdlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgRHJhZ0NvbnRyb2xsZXI6OkRyYWdDb250cm9s
bGVyKFBhZ2UqIHBhZwogICAgICwgbV9kaWRJbml0aWF0ZURyYWcoZmFsc2UpCiAgICAgLCBtX2lz
SGFuZGxpbmdEcmFnKGZhbHNlKQogICAgICwgbV9zb3VyY2VEcmFnT3BlcmF0aW9uKERyYWdPcGVy
YXRpb25Ob25lKQorICAgICwgbV9kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb24oRHJhZ09wZXJhdGlv
bk5vbmUpCiB7CiB9CiAKQEAgLTE1OCw2ICsxNTksNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpk
cmFnRXhpdGVkKERyYWdEYXRhCiAgICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kg
PSAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0
eU9yaWdpbigpLT5pc0xvY2FsKCkpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBDbGlwYm9hcmRUeXBl
c1JlYWRhYmxlOwogICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0
YS0+Y3JlYXRlQ2xpcGJvYXJkKHBvbGljeSk7CiAgICAgICAgIGNsaXBib2FyZC0+c2V0U291cmNl
T3BlcmF0aW9uKGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisgICAg
ICAgIGNsaXBib2FyZC0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbk5vbmUp
OyAgLy8gSFRNTDUgc3BlYywgc2VjLiA3LjkuMwogICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRhKSwgY2xp
cGJvYXJkLmdldCgpKTsKICAgICAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJv
YXJkTnVtYik7ICAgIC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CiAg
ICAgfQpAQCAtMTgxLDYgKzE4Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFn
KERyYWdEYXQKICAgICAgICAgICAgIC8vIFNlbmRpbmcgYW4gZXZlbnQgY2FuIHJlc3VsdCBpbiB0
aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIHZpZXcgYW5kIHBhcnQuCiAgICAgICAgICAgICBSZWZQdHI8
Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2Fy
ZFJlYWRhYmxlKTsKICAgICAgICAgICAgIGNsaXBib2FyZC0+c2V0U291cmNlT3BlcmF0aW9uKGRy
YWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisgICAgICAgICAgICBjbGlw
Ym9hcmQtPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG1fZGVzdGluYXRpb25EcmFnT3BlcmF0aW9u
KTsgIC8vIEhUTUw1IHNwZWMsIHNlYy4gNy45LjMKICAgICAgICAgICAgIG1haW5GcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPnBlcmZvcm1EcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRh
KSwgY2xpcGJvYXJkLmdldCgpKTsKICAgICAgICAgICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9s
aWN5KENsaXBib2FyZE51bWIpOyAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJlIGZvciBz
ZWN1cml0eQogICAgICAgICB9CkBAIC0yMjksNyArMjMyLDEyIEBAIERyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdFbnRlcmUKICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IERy
YWdPcGVyYXRpb25Ob25lOwogICAgIGJvb2wgaGFuZGxlZEJ5RG9jdW1lbnQgPSB0cnlEb2N1bWVu
dERyYWcoZHJhZ0RhdGEsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBvcGVyYXRpb24pOwogICAg
IGlmICghaGFuZGxlZEJ5RG9jdW1lbnQgJiYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uICYgRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCkpCi0gICAgICAgIHJldHVybiBvcGVyYXRpb25Gb3JMb2Fk
KGRyYWdEYXRhKTsKKyAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0
YSk7CisgICAgCisgICAgLy8gUmVzdHJpY3QgdGhlIG9wZXJhdGlvbiB0byB3aGF0IHRoZSBkcmFn
IHNvdXJjZSBhbGxvd3M6CisgICAgaWYgKChvcGVyYXRpb24gJiBkcmFnRGF0YS0+ZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKCkpICE9IG9wZXJhdGlvbikKKyAgICAgICAgb3BlcmF0aW9uID0g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgbV9kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb24gPSBvcGVy
YXRpb247CiAgICAgcmV0dXJuIG9wZXJhdGlvbjsKIH0KIApAQCAtNDkxLDYgKzQ5OSw4IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGEKICAgICBSZWZQdHI8Q2xpcGJv
YXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRlQ2xpcGJvYXJkKHBvbGljeSk7CiAgICAg
RHJhZ09wZXJhdGlvbiBzcmNPcE1hc2sgPSBkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrKCk7CiAgICAgY2xpcGJvYXJkLT5zZXRTb3VyY2VPcGVyYXRpb24oc3JjT3BNYXNrKTsK
KyAgICBtX2Rlc3RpbmF0aW9uRHJhZ09wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFn
KHNyY09wTWFzayk7ICAgIC8vIEhUTUw1IHNwZWMsIHNlYy4gNy45LjMKKyAgICBjbGlwYm9hcmQt
PnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG1fZGVzdGluYXRpb25EcmFnT3BlcmF0aW9uKTsKIAog
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudCA9IGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEp
OwogICAgIGlmICghbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3Ao
ZXZlbnQsIGNsaXBib2FyZC5nZXQoKSkpIHsKQEAgLTYyMyw2ICs2MzMsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyCiAKICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwg
PSBLVVJMKCk7CiAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gc3JjT3A7CisgICAgbV9kZXN0
aW5hdGlvbkRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKIAogICAgIERyYWdJbWFn
ZVJlZiBkcmFnSW1hZ2UgPSAwOwogICAgIEludFBvaW50IGRyYWdMb2MoMCwgMCk7CkluZGV4OiBX
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gNDgxNjMpCisrKyBXZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNIYW5kbGluZ0RyYWcoYm9vbCBoYW5kbGluZykgeyBt
X2lzSGFuZGxpbmdEcmFnID0gaGFuZGxpbmc7IH0KICAgICAgICAgYm9vbCBpc0hhbmRsaW5nRHJh
ZygpIGNvbnN0IHsgcmV0dXJuIG1faXNIYW5kbGluZ0RyYWc7IH0KICAgICAgICAgRHJhZ09wZXJh
dGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3Bl
cmF0aW9uOyB9CisgICAgICAgIERyYWdPcGVyYXRpb24gZGVzdGluYXRpb25EcmFnT3BlcmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb247IH0KICAgICAgICAg
dm9pZCBzZXREcmFnZ2luZ0ltYWdlVVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX2RyYWdnaW5nSW1h
Z2VVUkwgPSB1cmw7IH0KICAgICAgICAgY29uc3QgS1VSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgICAgICB2b2lkIHNldERyYWdJ
bml0aWF0b3IoRG9jdW1lbnQqIGluaXRpYXRvcikgeyBtX2RyYWdJbml0aWF0b3IgPSBpbml0aWF0
b3I7IG1fZGlkSW5pdGlhdGVEcmFnID0gdHJ1ZTsgfQpAQCAtMTIyLDYgKzEyMyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2RpZEluaXRpYXRlRHJhZzsKICAgICAgICAg
Ym9vbCBtX2lzSGFuZGxpbmdEcmFnOwogICAgICAgICBEcmFnT3BlcmF0aW9uIG1fc291cmNlRHJh
Z09wZXJhdGlvbjsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBh
IG1vdXNlIGRvd24gd2l0aGluIFdlYktpdAorICAgICAgICBEcmFnT3BlcmF0aW9uIG1fZGVzdGlu
YXRpb25EcmFnT3BlcmF0aW9uOyAvLyBMYXN0IG9wZXJhdGlvbiBzZXQgYnkgZXZlbnQgaGFuZGxl
cgogICAgICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAgICAgICAgIEtVUkwgbV9kcmFnZ2lu
Z0ltYWdlVVJMOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gNDgx
NjMpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUwNiw4ICsxNTA2LDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChj
b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVs
ZW1lbnRCYXNlKj4obV9kcmFnVGFyZ2V0LmdldCgpKS0+Y29udGVudEZyYW1lKCkgOiAwOwogICAg
ICAgICAgICAgaWYgKGZyYW1lKQogICAgICAgICAgICAgICAgIGFjY2VwdCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUZW1wb3Jh
cmlseSBzZXQgZHJvcEVmZmVjdCB0byAnbm9uZScgd2hpbGUgY2FsbGluZyBkcm9wbGVhdmUgaGFu
ZGxlciAoYXMgcGVyIEhUTUw1IHNwZWMpCisgICAgICAgICAgICAgICAgRHJhZ09wZXJhdGlvbiBz
YXZlT3AgPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPmRl
c3RpbmF0aW9uT3BlcmF0aW9uKHNhdmVPcCk7CisgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT5z
ZXREZXN0aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uTm9uZSk7CiAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCBtX2RyYWdU
YXJnZXQuZ2V0KCksIGV2ZW50LCBjbGlwYm9hcmQpOworICAgICAgICAgICAgICAgIGNsaXBib2Fy
ZC0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24oc2F2ZU9wKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuZXdUYXJnZXQpIHsKQEAgLTIxMzEsMTEg
KzIxMzcsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZERyYWdBdXRvTm9kZShObwogICAg
IHJldHVybiBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPm1heVN0YXJ0RHJhZ0F0RXZl
bnRMb2NhdGlvbihtX2ZyYW1lLCBwb2ludCk7CiB9CiAgICAgCi12b2lkIEV2ZW50SGFuZGxlcjo6
ZHJhZ1NvdXJjZU1vdmVkVG8oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3ZvaWQg
RXZlbnRIYW5kbGVyOjpkcmFnU291cmNlTW92ZWRUbyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsKLSAgICBpZiAoZHJhZ1N0YXRlKCku
bV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpCisgICAgaWYgKGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7
CisgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC0+c2V0RGVzdGluYXRpb25PcGVy
YXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkb24ndCBjYXJlIGlmIGV2
ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5jZSB0aGVyZSBpcyBub25l
CiAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2
ZW50KTsKKyAgICB9CiB9CiAgICAgCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVk
QXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRp
b24pCkBAIC0yMjI5LDcgKzIyMzcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhj
b25zdCBNb3VzCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRoZSBoeXN0ZXJlc2lzIHBvaW50LCB3
ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBhcyBhIGNsaWNrCiAgICAgaW52YWxp
ZGF0ZUNsaWNrKCk7CiAgICAgCi0gICAgRHJhZ09wZXJhdGlvbiBzcmNPcCA9IERyYWdPcGVyYXRp
b25Ob25lOyAgICAgIAorICAgIERyYWdPcGVyYXRpb24gc3JjT3AgPSBEcmFnT3BlcmF0aW9uRXZl
cnk7ICAgICAgCiAgICAgCiAgICAgZnJlZUNsaXBib2FyZCgpOyAgICAvLyB3b3VsZCBvbmx5IGhh
cHBlbiBpZiB3ZSBtaXNzZWQgYSBkcmFnRW5kLiAgRG8gaXQgYW55d2F5LCBqdXN0CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBudW1iaWZpZWQKQEAgLTIy
NTIsNiArMjI2MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSAKICAgICAgICAgCisgICAgICAgIGRyYWdTdGF0ZSgp
Lm1fZHJhZ0NsaXBib2FyZC0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbk5v
bmUpOyAvLyBIVE1MNSBzcGVjCiAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZGlz
cGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50LCBtX21vdXNlRG93
bikKICAgICAgICAgICAgICYmICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBhc3N3b3JkRmll
bGQoKTsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCShyZXZpc2lvbiA0ODE2MykKKysr
IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JikgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBkcmFnU291cmNlTW92ZWRUbyhj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2b2lkIGRyYWdTb3VyY2VNb3ZlZFRvKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZSk7CiAgICAgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
LCBEcmFnT3BlcmF0aW9uKTsKIAogICAgIHZvaWQgZm9jdXNEb2N1bWVudFZpZXcoKTsKSW5kZXg6
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODE2MykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMDggIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bml0aWFsaXplIERhdGFUcmFuc2ZlcidzIGVmZmVjdEFsbG93ZWQgYW5kIGRyb3BFZmZlY3QgcHJv
cGVydGllcyBjb3JyZWN0bHkKKyAgICAgICAgYWNjb3JkaW5nIHRvIEhUTUw1IHNwZWMgKHNlYy4g
Ny45LjItNy45LjMpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjY3MDAKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgt
W1dlYkZyYW1lIF9kcmFnU291cmNlTW92ZWRUbzpdKToKKyAgICAgICAgICAgIFBhc3MgY3VycmVu
dCBkcmFnIG9wZXJhdGlvbiAoaWYga25vd24pIHRvIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZU1v
dmVkVG8oKS4KKwogMjAwOS0wOS0wNyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0JKHJldmlzaW9uIDQ4MTYzKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RP
TUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY0xvYWRlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9FdmVudE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC05MzIsNyAr
OTMzLDEzIEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSgKICAgICAv
LyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91
bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KElu
dFBvaW50KHdpbmRvd0xvYyksIGdsb2JhbFBvaW50KHdpbmRvd0xvYywgW3ZpZXctPnBsYXRmb3Jt
V2lkZ2V0KCkgd2luZG93XSksCiAgICAgICAgIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwotICAgIF9wcml2
YXRlLT5jb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlTW92ZWRUbyhldmVudCk7
CisgICAgCisgICAgLy8gR2V0IHRoZSBjdXJyZW50IGRlc3RpbmF0aW9uIGRyYWcgb3BlcmF0aW9u
LCBpZiB0aGlzIGlzIGFuIGludHJhLXBhZ2UgZHJhZzoKKyAgICBEcmFnT3BlcmF0aW9uIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChQYWdlKiBwYWdlID0gX3ByaXZhdGUt
PmNvcmVGcmFtZS0+cGFnZSgpKQorICAgICAgICBvcGVyYXRpb24gPSBwYWdlLT5kcmFnQ29udHJv
bGxlcigpLT5kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb24oKTsKKworICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlTW92ZWRUbyhldmVudCwgb3BlcmF0aW9u
KTsKIH0KIAogLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9w
ZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDgx
NjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAwOS0wOS0wOCAgSmVucyBBbGZrZSAgPHNuZWpAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWxpemUgRGF0
YVRyYW5zZmVyJ3MgZWZmZWN0QWxsb3dlZCBhbmQgZHJvcEVmZmVjdCBwcm9wZXJ0aWVzIGNvcnJl
Y3RseQorICAgICAgICBhY2NvcmRpbmcgdG8gSFRNTDUgc3BlYyAoc2VjLiA3LjkuMi03LjkuMyku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjcwMAor
CisgICAgICAgICogZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0Lmh0bWw6IEFkZGVkLgor
CiAyMDA5LTA5LTA4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2RyYWctZHJvcGVmZmVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctZHJvcGVmZmVjdC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKK1RoaXMgYXV0b21hdGVkIGxheW91dCB0ZXN0IGNo
ZWNrcyB0aGF0IGVmZmVjdEFsbG93ZWQgYW5kIGRyb3BFZmZlY3QgYXJlIHNldCBwcm9wZXJseSBp
biBkcmFnIGNhbGxiYWNrcy4KK0lmIHlvdSdyZSBydW5uaW5nIHRoaXMgaW4gYSBicm93c2VyLCB5
b3UgY2FuIHNpbXVsYXRlIHBhcnQgb2YgaXQgYnkgZHJhZ2dpbmcgQWJlIG9udG8gdGhlIGJveC4K
KworKioqIFRlc3RpbmcgYSBzdWNjZXNzZnVsIGRyYWcuLi4KK1BBU1MgZWZmZWN0QWxsb3dlZCBp
biBkcmFnU3RhcnQgPSAndW5pbml0aWFsaXplZCcKK1BBU1MgZHJvcEVmZmVjdCBpbiBkcmFnU3Rh
cnQgPSAnbm9uZScKK1BBU1MgZWZmZWN0QWxsb3dlZCBpbiBkcmFnRW50ZXIgPSAnY29weU1vdmUn
CitQQVNTIGRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyID0gJ2NvcHknCitQQVNTIGVmZmVjdEFsbG93
ZWQgaW4gZHJvcCA9ICdjb3B5TW92ZScKK1BBU1MgZHJvcEVmZmVjdCBpbiBkcm9wID0gJ21vdmUn
CitQQVNTIGVmZmVjdEFsbG93ZWQgaW4gZHJhZ0VuZCA9ICdjb3B5TW92ZScKK1BBU1MgZHJvcEVm
ZmVjdCBpbiBkcmFnRW5kID0gJ21vdmUnCitQQVNTIGNhbGxzIHRvIGRyYWdTdGFydCA9ICcxJwor
UEFTUyBjYWxscyB0byBkcmFnRW5kID0gJzEnCitQQVNTIGNhbGxzIHRvIGRyYWdFbnRlciA9ICcx
JworUEFTUyBjYWxscyB0byBkcm9wID0gJzEnCisqKiogVGVzdGluZyBhIGZhaWxlZCBkcmFnLi4u
CitQQVNTIGVmZmVjdEFsbG93ZWQgaW4gZHJhZ1N0YXJ0ID0gJ3VuaW5pdGlhbGl6ZWQnCitQQVNT
IGRyb3BFZmZlY3QgaW4gZHJhZ1N0YXJ0ID0gJ25vbmUnCitQQVNTIGVmZmVjdEFsbG93ZWQgaW4g
ZHJhZ0VudGVyID0gJ2xpbmsnCitQQVNTIGRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyID0gJ2xpbmsn
CitQQVNTIGVmZmVjdEFsbG93ZWQgaW4gZHJhZ0xlYXZlID0gJ2xpbmsnCitQQVNTIGRyb3BFZmZl
Y3QgaW4gZHJhZ0xlYXZlID0gJ25vbmUnCitQQVNTIGVmZmVjdEFsbG93ZWQgaW4gZHJhZ0VuZCA9
ICdsaW5rJworUEFTUyBkcm9wRWZmZWN0IGluIGRyYWdFbmQgPSAnbm9uZScKK1BBU1MgY2FsbHMg
dG8gZHJhZ1N0YXJ0ID0gJzEnCitQQVNTIGNhbGxzIHRvIGRyYWdFbmQgPSAnMScKK1BBU1MgY2Fs
bHMgdG8gZHJhZ0VudGVyID0gJzEnCitQQVNTIGNhbGxzIHRvIGRyb3AgPSAnMCcKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0LWV4cGVjdGVkLnR4
dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGU6bmF0aXZlCiAgICsgCgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWRyb3BlZmZlY3QuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNzcgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIAorPGltYWdlIGlkPSJkcmFnU291cmNlIiBzcmM9InJl
c291cmNlcy9hYmUucG5nIiB3aWR0aD0iNzYiIGhlaWdodD0iMTAzIgorICAgICAgIG9uZHJhZ3N0
YXJ0PSJkcmFnU3RhcnQoZXZlbnQpIiBvbmRyYWc9ImRyYWcoZXZlbnQpIiBvbmRyYWdlbmQ9ImRy
YWdFbmQoZXZlbnQpIj4KKzxkaXYgaWQ9ImRyYWdUYXJnZXQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7IgorICAgICAgICBvbmRyYWdl
bnRlcj0iZHJhZ0VudGVyKGV2ZW50KSIgb25kcmFnb3Zlcj0iZHJhZ092ZXIoZXZlbnQpIgorICAg
ICAgICBvbmRyYWdsZWF2ZT0iZHJhZ0xlYXZlKGV2ZW50KSIgb25kcm9wPSJkcm9wKGV2ZW50KSI+
Cis8L2Rpdj4KKworPHA+VGhpcyBhdXRvbWF0ZWQgbGF5b3V0IHRlc3QgY2hlY2tzIHRoYXQgZWZm
ZWN0QWxsb3dlZCBhbmQgZHJvcEVmZmVjdCBhcmUgc2V0IHByb3Blcmx5IGluIGRyYWcKKyAgIGNh
bGxiYWNrcy48YnI+CisgICBJZiB5b3UncmUgcnVubmluZyB0aGlzIGluIGEgYnJvd3NlciwgeW91
IGNhbiBzaW11bGF0ZSBwYXJ0IG9mIGl0IGJ5IGRyYWdnaW5nIEFiZSBvbnRvIHRoZSBib3guPC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGFzc2Vy
dChyZXN1bHQsIHdoYXQpIHsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgdGVzdEZhaWxlZCgi
RXhwZWN0ZWQgdGhhdCAiK3doYXQpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCh3aGF0
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0RXF1YWwodGVzdCwgZXhwZWN0ZWQsIHdoYXQsIHF1aWV0
KSB7CisgICAgaWYgKHRlc3QgIT09IGV4cGVjdGVkKQorICAgICAgICB0ZXN0RmFpbGVkKHdoYXQr
IiA9ICciK3Rlc3QrIicgLi4uIGV4cGVjdGVkICciK2V4cGVjdGVkKyInIik7CisgICAgZWxzZSBp
ZiAoIXF1aWV0KQorICAgICAgICAgdGVzdFBhc3NlZCh3aGF0KyIgPSAnIit0ZXN0KyInIik7Cit9
CisKKwordmFyIGRyYWdTdGFydENhbGxlZCA9IDAsIGRyYWdDYWxsZWQgPSAwLCBkcmFnRW5kQ2Fs
bGVkID0gMDsKK3ZhciBkcmFnRW50ZXJDYWxsZWQgPSAwLCBkcmFnT3ZlckNhbGxlZCA9IDAsIGRy
YWdMZWF2ZUNhbGxlZCA9IDAsIGRyb3BDYWxsZWQgPSAwOworCit2YXIgZWZmZWN0QWxsb3dlZFRv
U2V0ID0gImNvcHlNb3ZlIjsKK3ZhciBkZWZhdWx0RHJvcEVmZmVjdCA9ICJjb3B5IjsKK3ZhciBk
cm9wRWZmZWN0VG9TZXQgPSAibW92ZSI7Cit2YXIgZXhwZWN0ZWREcm9wRWZmZWN0ID0gIm1vdmUi
OworCisKKy8vIERSQUcgU09VUkNFIEVWRU5UIEhBTkRMRVJTOgorZnVuY3Rpb24gZHJhZ1N0YXJ0
KGV2ZW50KSB7CisgICAgZHJhZ1N0YXJ0Q2FsbGVkKys7CisgICAgYXNzZXJ0RXF1YWwoZXZlbnQu
ZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQsICJ1bmluaXRpYWxpemVkIiwgImVmZmVjdEFsbG93
ZWQgaW4gZHJhZ1N0YXJ0Iik7CisgICAgYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmRy
b3BFZmZlY3QsICJub25lIiwgImRyb3BFZmZlY3QgaW4gZHJhZ1N0YXJ0Iik7CisgICAgZXZlbnQu
ZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBlZmZlY3RBbGxvd2VkVG9TZXQ7Cit9CisKK2Z1
bmN0aW9uIGRyYWcoZXZlbnQpIHsKKyAgICBkcmFnQ2FsbGVkKys7CisgICAgYXNzZXJ0RXF1YWwo
ZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQsIGVmZmVjdEFsbG93ZWRUb1NldCwgImVm
ZmVjdEFsbG93ZWQgaW4gZHJhZyIsIHRydWUpOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFU
cmFuc2Zlci5kcm9wRWZmZWN0LAorICAgICAgICAgICAgICAgIGRyYWdMZWF2ZUNhbGxlZCA8IGRy
YWdFbnRlckNhbGxlZCA/ZXhwZWN0ZWREcm9wRWZmZWN0IDoibm9uZSIsIAorICAgICAgICAgICAg
ICAgICJkcm9wRWZmZWN0IGluIGRyYWciLAorICAgICAgICAgICAgICAgIHRydWUpOworfQorCitm
dW5jdGlvbiBkcmFnRW5kKGV2ZW50KSB7CisgICAgZHJhZ0VuZENhbGxlZCsrOworICAgIGFzc2Vy
dEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkLCBlZmZlY3RBbGxvd2VkVG9T
ZXQsICJlZmZlY3RBbGxvd2VkIGluIGRyYWdFbmQiKTsKKyAgICBhc3NlcnRFcXVhbChldmVudC5k
YXRhVHJhbnNmZXIuZHJvcEVmZmVjdCwgCisgICAgICAgICAgICAgICAgZHJhZ0xlYXZlQ2FsbGVk
IDwgZHJhZ0VudGVyQ2FsbGVkID9leHBlY3RlZERyb3BFZmZlY3QgOiJub25lIiwKKyAgICAgICAg
ICAgICAgICAiZHJvcEVmZmVjdCBpbiBkcmFnRW5kIik7Cit9CisKKworLy8gRFJBRyBERVNUSU5B
VElPTiBFVkVOVCBIQU5ETEVSUzoKK2Z1bmN0aW9uIGRyYWdFbnRlcihldmVudCkgeworICAgIGRy
YWdFbnRlckNhbGxlZCsrOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZl
Y3RBbGxvd2VkLCBlZmZlY3RBbGxvd2VkVG9TZXQsICJlZmZlY3RBbGxvd2VkIGluIGRyYWdFbnRl
ciIpOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0LCBkZWZh
dWx0RHJvcEVmZmVjdCwgImRyb3BFZmZlY3QgaW4gZHJhZ0VudGVyIik7CisgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBkcm9wRWZmZWN0VG9TZXQ7CisgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKK30KKworZnVuY3Rpb24gZHJhZ092ZXIoZXZlbnQpIHsKKyAgICBkcmFnT3Zl
ckNhbGxlZCsrOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxv
d2VkLCBlZmZlY3RBbGxvd2VkVG9TZXQsICJlZmZlY3RBbGxvd2VkIGluIGRyYWdPdmVyIiwgdHJ1
ZSk7CisgICAgYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QsIGRlZmF1
bHREcm9wRWZmZWN0LCAiZHJvcEVmZmVjdCBpbiBkcmFnT3ZlciIsIHRydWUpOworICAgIGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gZHJvcEVmZmVjdFRvU2V0OworICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7Cit9CisKK2Z1bmN0aW9uIGRyYWdMZWF2ZShldmVudCkgeworICAgIGRy
YWdMZWF2ZUNhbGxlZCsrOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZl
Y3RBbGxvd2VkLCBlZmZlY3RBbGxvd2VkVG9TZXQsICJlZmZlY3RBbGxvd2VkIGluIGRyYWdMZWF2
ZSIpOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0LCAibm9u
ZSIsICJkcm9wRWZmZWN0IGluIGRyYWdMZWF2ZSIpOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0
KCk7Cit9CisKK2Z1bmN0aW9uIGRyb3AoZXZlbnQpIHsKKyAgICBkcm9wQ2FsbGVkKys7CisgICAg
YXNzZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQsIGVmZmVjdEFsbG93
ZWRUb1NldCwgImVmZmVjdEFsbG93ZWQgaW4gZHJvcCIpOworICAgIGFzc2VydEVxdWFsKGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0LCBleHBlY3RlZERyb3BFZmZlY3QsICJkcm9wRWZmZWN0
IGluIGRyb3AiKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfQorCisKK2Z1bmN0aW9u
IHBlcmZvcm1EcmFnKHNyY0lkLCBkc3RJZCkgeworICAgIGZ1bmN0aW9uIG1vdmVNb3VzZVRvQ2Vu
dGVyT2YoaWQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChpZCk7CisgICAgICAgIHZhciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZz
ZXRXaWR0aCAvIDI7CisgICAgICAgIHZhciB5ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50
Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgIH0KKyAgICAKKyAgICBkcmFnU3RhcnRDYWxsZWQgPSBkcmFnQ2FsbGVkID0gZHJhZ0Vu
ZENhbGxlZCA9IDA7CisgICAgZHJhZ0VudGVyQ2FsbGVkID0gZHJhZ092ZXJDYWxsZWQgPSBkcmFn
TGVhdmVDYWxsZWQgPSBkcm9wQ2FsbGVkID0gMDsKKyAgICAKKyAgICBtb3ZlTW91c2VUb0NlbnRl
ck9mKHNyY0lkKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBtb3ZlTW91c2VU
b0NlbnRlck9mKGRzdElkKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICByZXR1cm47CisgICAgdHJ5IHsKKyAgICAgIAorICAgICAgZGVidWcoIioqKiBUZXN0
aW5nIGEgc3VjY2Vzc2Z1bCBkcmFnLi4uIik7CisgICAgICBlZmZlY3RBbGxvd2VkVG9TZXQgPSAi
Y29weU1vdmUiOworICAgICAgZGVmYXVsdERyb3BFZmZlY3QgPSAiY29weSI7CisgICAgICBkcm9w
RWZmZWN0VG9TZXQgPSAibW92ZSI7CisgICAgICBleHBlY3RlZERyb3BFZmZlY3QgPSAibW92ZSI7
CisgICAgICBwZXJmb3JtRHJhZygnZHJhZ1NvdXJjZScsICdkcmFnVGFyZ2V0Jyk7CisgICAgICAK
KyAgICAgIGFzc2VydEVxdWFsKGRyYWdTdGFydENhbGxlZCwgMSwgImNhbGxzIHRvIGRyYWdTdGFy
dCIpOworICAgICAgLy8gV2hldGhlciBkcmFnIGlzIGNhbGxlZCBkZXBlbmRzIG9uIHRpbWluZy4g
SW4gYSByZWFsLWxpZmUgZHJhZyBpdCB3aWxsIGJlIGNhbGxlZCwgYnV0CisgICAgICAvLyB3aXRo
IHRoZSBhcnRpZmljaWFsIG1vdXNlIGV2ZW50cyBnZW5lcmF0ZWQgYnkgdGhlIHRlc3QgY29udHJv
bGxlciwgaXQgbWF5IG5vdCBiZS4KKyAgICAgIC8vYXNzZXJ0KGRyYWdDYWxsZWQgPiAwLCAiZHJh
ZyB3YXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UiKTsKKyAgICAgIGFzc2VydEVxdWFsKGRyYWdFbmRD
YWxsZWQsIDEsICJjYWxscyB0byBkcmFnRW5kIik7CisgICAgICBhc3NlcnRFcXVhbChkcmFnRW50
ZXJDYWxsZWQsIDEsICJjYWxscyB0byBkcmFnRW50ZXIiKTsKKyAgICAgIC8vIGRyYWdPdmVyIHdv
bid0IG5lY2Vzc2FyaWx5IGJlIGNhbGxlZCBpZiB0aGVyZSB3YXMgb25seSBvbmUgbW91c2UgZXZl
bnQgb3ZlcgorICAgICAgLy8gdGhlIGRyb3AgdGFyZ2V0LCBhcyBpbiBwZXJmb3JtRHJhZy4KKyAg
ICAgIC8vIGRyYWdMZWF2ZSBpc24ndCBjYWxsZWQgYmVjYXVzZSB0aGUgZHJhZyBuZXZlciBleGl0
cyB0aGUgZHJvcCB0YXJnZXQuCisgICAgICBhc3NlcnRFcXVhbChkcm9wQ2FsbGVkLCAxLCAiY2Fs
bHMgdG8gZHJvcCIpOworCisgICAgICBkZWJ1ZygiKioqIFRlc3RpbmcgYSBmYWlsZWQgZHJhZy4u
LiIpOworICAgICAgZWZmZWN0QWxsb3dlZFRvU2V0ID0gImxpbmsiOworICAgICAgZGVmYXVsdERy
b3BFZmZlY3QgPSAibGluayI7CisgICAgICBkcm9wRWZmZWN0VG9TZXQgPSAibW92ZSI7CisgICAg
ICBleHBlY3RlZERyb3BFZmZlY3QgPSAibm9uZSI7CisgICAgICBwZXJmb3JtRHJhZygnZHJhZ1Nv
dXJjZScsICdkcmFnVGFyZ2V0Jyk7CisgICAgICAKKyAgICAgIGFzc2VydEVxdWFsKGRyYWdTdGFy
dENhbGxlZCwgMSwgImNhbGxzIHRvIGRyYWdTdGFydCIpOworICAgICAgLy9hc3NlcnQoZHJhZ0Nh
bGxlZCA+IDAsICJkcmFnIHdhcyBjYWxsZWQgYXQgbGVhc3Qgb25jZSIpOworICAgICAgYXNzZXJ0
RXF1YWwoZHJhZ0VuZENhbGxlZCwgMSwgImNhbGxzIHRvIGRyYWdFbmQiKTsKKyAgICAgIGFzc2Vy
dEVxdWFsKGRyYWdFbnRlckNhbGxlZCwgMSwgImNhbGxzIHRvIGRyYWdFbnRlciIpOworICAgICAg
YXNzZXJ0RXF1YWwoZHJvcENhbGxlZCwgMCwgImNhbGxzIHRvIGRyb3AiKTsKKyAgICAgIAorICAg
ICAgLy8gRmluYWxseSBydW4gdGhlIHBvc3QtdGVzdCBmdW5jdGlvbjoKKyAgICAgIGlzU3VjY2Vz
c2Z1bGx5UGFyc2VkKCk7CisKKyAgICB9IGNhdGNoICh4KSB7CisgICAgICBkZWJ1ZygiRkFJTEVE
IGJ5IHRocm93aW5nICIgKyB4KTsKKyAgICB9CisgICAgLy8gT0ssIG5vdyBEUlQgY2FuIHF1aXQu
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCisvLyBUZWxsIERS
VCBub3QgdG8gcXVpdCBpbW1lZGlhdGVseSwgYmVjYXVzZSB0aGUgYWN0dWFsIHJ1blRlc3QoKSBm
dW5jdGlvbiB3b24ndAorLy8gYmUgY2FsbGVkIHVudGlsIHRoZSBvbmxvYWQgZXZlbnQgaXMgc2Vu
dCAob3RoZXJ3aXNlIHRoZSBmYWtlIGRyYWcgc3R1ZmYgZG9lc24ndCB3b3JrLikKK2xheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kcmFnLWRyb3BlZmZlY3QuaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>
<flag name="commit-queue"
          id="20353"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39293</attachid>
            <date>2009-09-09 12:43:57 -0700</date>
            <delta_ts>2009-09-09 15:19:29 -0700</delta_ts>
            <desc>Patch with fixes to test-case nits</desc>
            <filename>dragEffect5.patch</filename>
            <type>text/plain</type>
            <size>23724</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODE5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDktMDktMDggIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0
aWFsaXplIERhdGFUcmFuc2ZlcidzIGVmZmVjdEFsbG93ZWQgYW5kIGRyb3BFZmZlY3QgcHJvcGVy
dGllcyBjb3JyZWN0bHkKKyAgICAgICAgYWNjb3JkaW5nIHRvIEhUTUw1IHNwZWMgKHNlYy4gNy45
LjItNy45LjMpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjY3MDAKKyAgICAgICAgLSBBdCB0aGUgc3RhcnQgb2YgYSBkcmFnIG9wZXJhdGlvbiwgdGhl
IHZhbHVlIG9mIGVmZmVjdEFsbG93ZWQgc2hvdWxkIGJlCisgICAgICAgICAgdGhlIHN0cmluZyAi
dW5pbml0aWFsaXplZCIuCisgICAgICAgIC0gQXQgZW5kIG9mIGRyYWdzdGFydCBoYW5kbGVyLCBp
ZiBlZmZlY3RBbGxvd2VkIGhhc24ndCBiZWVuIHNldCB5ZXQsIGl0CisgICAgICAgICAgc2hvdWxk
IGJlIHNldCB0byAiY29weSIuCisgICAgICAgIC0gb24gZHJhZ2VudGVyIGFuZCBkcmFnb3ZlciBl
dmVudCwgZHJvcEVmZmVjdCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gYQorICAgICAgICAgIGRl
ZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGVmZmVjdEFsbG93ZWQuCisgICAgICAg
IC0gYXQgZW5kIG9mIGRyYWdlbnRlciBhbmQgZHJhZ292ZXIgdGhlIGRyb3BFZmZlY3Qgc2hvdWxk
IGJlIHNldCB0byAibm9uZSIKKyAgICAgICAgICBpZiB0aGUgdmFsdWUgc2V0IGJ5IHRoZSBoYW5k
bGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIGVmZmVjdEFsbG93ZWQuCisgICAgICAgIC0gb24gZHJhZ2xl
YXZlIGV2ZW50LCBkcm9wRWZmZWN0IHNob3VsZCBiZSAibm9uZSIuCisgICAgICAgIC0gb24gZHJv
cCBldmVudCwgZHJvcEVmZmVjdCBzaG91bGQgYmUgdGhlIHByZXZpb3VzbHkgbmVnb3RpYXRlZCB2
YWx1ZS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9kcmFnLWRyb3BlZmZlY3QuaHRtbAor
CisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgICAgIEFkZGVkIGEgcGFyYW1l
dGVyIHRvIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZU1vdmVkVG8uCisgICAgICAgICogZG9tL0Ns
aXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OkNsaXBib2FyZCk6Cisg
ICAgICAgICAgICBJbml0aWFsaXplIG1fZWZmZWN0QWxsb3dlZCB0byAidW5pbml0aWFsaXplZCIu
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OnNvdXJjZU9wZXJhdGlvbik6CisgICAgICAg
ICAgICBUcmVhdCAidW5pbml0aWFsaXplZCIgYXMgbWVhbmluZyBubyB2YWx1ZSBoYXMgYmVlbiBz
ZXQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6RHJhZ0NvbnRyb2xsZXIpOgorICAgICAgICAgICAgSW5pdGlhbGl6
ZSBuZXcgbWVtYmVyIG1fZGVzdGluYXRpb25EcmFnT3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQpOgorICAgICAgICAgICAgU2V0IG1fZGVzdGlu
YXRpb25EcmFnT3BlcmF0aW9uIHRvIG5vbmUgb24gZHJhZ0V4aXQuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWcpOgorICAgICAgICAgICAgU2V0IG1fZGVzdGlu
YXRpb25EcmFnT3BlcmF0aW9uIHRvIGN1cnJlbnQgZHJvcEVmZmVjdC4KKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisgICAgICAgICAgICBN
YWtlIHN1cmUgdG8gY2xlYXIgdGhlIG9wZXJhdGlvbiBpZiBkcmFnIHNvdXJjZSBkb2Vzbid0IGFs
bG93IGl0LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyk6
CisgICAgICAgICAgICBTZXQgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZHN0IGRyYWcgb3AgYmVm
b3JlIHNlbmRpbmcgZHJhZ0VudGVyL092ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgICAgIENsZWFyIG1fZGVzdGluYXRpb25EcmFnT3Bl
cmF0aW9uIGF0IHN0YXJ0IG9mIGRyYWcuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5o
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRlc3RpbmF0aW9uRHJhZ09wZXJh
dGlvbik6CisgICAgICAgICAgICBBZGRlZCBuZXcgbWVtYmVyIG1fZGVzdGluYXRpb25EcmFnT3Bl
cmF0aW9uLCBhbmQgaXRzIHB1YmxpYyBnZXR0ZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJv
cCk6CisgICAgICAgICAgICBkcm9wRWZmZWN0IHNob3VsZCBiZSAnbm9uZScgZHVyaW5nIGRyb3Bs
ZWF2ZSBoYW5kbGVyLCBwZXIgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
ZHJhZ1NvdXJjZU1vdmVkVG8pOgorICAgICAgICAgICAgQWRkZWQgRHJhZ09wZXJhdGlvbiBwYXJh
bWV0ZXIsIHNvIHRoZSBoYW5kbGVyIHNlZXMgdGhlIGN1cnJlbnQgZHJvcEVmZmVjdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICAgICBBc3N1
bWUgRHJhZ09wZXJhdGlvbkV2ZXJ5IGZvciBub24tREhUTUwgZHJhZ3MuCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgICAgIEFkZGVkIERyYWdPcGVyYXRpb24gcGFyYW1l
dGVyIHRvIGRyYWdTb3VyY2VNb3ZlZFRvKCkuCisKIDIwMDktMDktMDggIERhdmUgSHlhdHQgIDxo
eWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDog
V2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5i
YXNlLmV4cAkocmV2aXNpb24gNDgxNjMpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNCw3ICsyMjQsNyBAQCBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxl
cjE0Y3VycmVudE5TRXZlCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE0c2Nyb2xsT3ZlcmZs
b3dFTlNfMTVTY3JvbGxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUUKIF9fWk43V2Vi
Q29yZTEyRXZlbnRIYW5kbGVyMTVzZW5kU2Nyb2xsRXZlbnRFdgogX19aTjdXZWJDb3JlMTJFdmVu
dEhhbmRsZXIxN2RyYWdTb3VyY2VFbmRlZEF0RVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFTlNf
MTNEcmFnT3BlcmF0aW9uRQotX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN2RyYWdTb3VyY2VN
b3ZlZFRvRVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZlbnRFCitfX1pON1dlYkNvcmUxMkV2ZW50SGFu
ZGxlcjE3ZHJhZ1NvdXJjZU1vdmVkVG9FUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEVOU18xM0Ry
YWdPcGVyYXRpb25FCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE3ZXZlbnRNYXlTdGFydERy
YWdFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwaGFuZGxlVGV4dElucHV0
RXZlbnRFUktOU182U3RyaW5nRVBOU181RXZlbnRFYmIKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5k
bGVyMjBoaXRUZXN0UmVzdWx0QXRQb2ludEVSS05TXzhJbnRQb2ludEViYk5TXzE3SGl0VGVzdFNj
cm9sbGJhcnNFCkluZGV4OiBXZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAJKHJldmlzaW9uIDQ4MTYzKQorKysgV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMTAgQEAgQ2xpcGJv
YXJkOjpDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saQogICAgICwgbV9mb3JEcmFnZ2luZyhp
c0ZvckRyYWdnaW5nKQogICAgICwgbV9kcmFnSW1hZ2UoMCkKIHsKKyAgICBpZiAoaXNGb3JEcmFn
Z2luZykgeworICAgICAgICAvLyBwZXIgSFRNTDUgc3BlYywgc2VjLiA3LjkuMgorICAgICAgICBt
X2VmZmVjdEFsbG93ZWQgPSAidW5pbml0aWFsaXplZCI7CisgICAgfQogfQogICAgIAogdm9pZCBD
bGlwYm9hcmQ6OnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQpA
QCAtOTgsNyArMTAyLDcgQEAgc3RhdGljIFN0cmluZyBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0
aQogCiBib29sIENsaXBib2FyZDo6c291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24mIG9wKSBj
b25zdAogewotICAgIGlmIChtX2VmZmVjdEFsbG93ZWQuaXNOdWxsKCkpCisgICAgaWYgKG1fZWZm
ZWN0QWxsb3dlZC5pc051bGwoKSB8fCBtX2VmZmVjdEFsbG93ZWQgPT0gInVuaW5pdGlhbGl6ZWQi
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgb3AgPSBkcmFnT3BGcm9tSUVPcChtX2VmZmVj
dEFsbG93ZWQpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA0ODE2MykKKysrIFdlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgRHJhZ0NvbnRyb2xsZXI6OkRyYWdDb250cm9s
bGVyKFBhZ2UqIHBhZwogICAgICwgbV9kaWRJbml0aWF0ZURyYWcoZmFsc2UpCiAgICAgLCBtX2lz
SGFuZGxpbmdEcmFnKGZhbHNlKQogICAgICwgbV9zb3VyY2VEcmFnT3BlcmF0aW9uKERyYWdPcGVy
YXRpb25Ob25lKQorICAgICwgbV9kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb24oRHJhZ09wZXJhdGlv
bk5vbmUpCiB7CiB9CiAKQEAgLTE1OCw2ICsxNTksNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpk
cmFnRXhpdGVkKERyYWdEYXRhCiAgICAgICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kg
PSAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8IG1fZG9jdW1lbnRVbmRlck1vdXNlLT5zZWN1cml0
eU9yaWdpbigpLT5pc0xvY2FsKCkpID8gQ2xpcGJvYXJkUmVhZGFibGUgOiBDbGlwYm9hcmRUeXBl
c1JlYWRhYmxlOwogICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0
YS0+Y3JlYXRlQ2xpcGJvYXJkKHBvbGljeSk7CiAgICAgICAgIGNsaXBib2FyZC0+c2V0U291cmNl
T3BlcmF0aW9uKGRyYWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisgICAg
ICAgIGNsaXBib2FyZC0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbk5vbmUp
OyAgLy8gSFRNTDUgc3BlYywgc2VjLiA3LjkuMwogICAgICAgICBtYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5jYW5jZWxEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRhKSwgY2xp
cGJvYXJkLmdldCgpKTsKICAgICAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJv
YXJkTnVtYik7ICAgIC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CiAg
ICAgfQpAQCAtMTgxLDYgKzE4Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFn
KERyYWdEYXQKICAgICAgICAgICAgIC8vIFNlbmRpbmcgYW4gZXZlbnQgY2FuIHJlc3VsdCBpbiB0
aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIHZpZXcgYW5kIHBhcnQuCiAgICAgICAgICAgICBSZWZQdHI8
Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2Fy
ZFJlYWRhYmxlKTsKICAgICAgICAgICAgIGNsaXBib2FyZC0+c2V0U291cmNlT3BlcmF0aW9uKGRy
YWdEYXRhLT5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisgICAgICAgICAgICBjbGlw
Ym9hcmQtPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG1fZGVzdGluYXRpb25EcmFnT3BlcmF0aW9u
KTsgIC8vIEhUTUw1IHNwZWMsIHNlYy4gNy45LjMKICAgICAgICAgICAgIG1haW5GcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPnBlcmZvcm1EcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRh
KSwgY2xpcGJvYXJkLmdldCgpKTsKICAgICAgICAgICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9s
aWN5KENsaXBib2FyZE51bWIpOyAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJlIGZvciBz
ZWN1cml0eQogICAgICAgICB9CkBAIC0yMjksNyArMjMyLDEyIEBAIERyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdFbnRlcmUKICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IERy
YWdPcGVyYXRpb25Ob25lOwogICAgIGJvb2wgaGFuZGxlZEJ5RG9jdW1lbnQgPSB0cnlEb2N1bWVu
dERyYWcoZHJhZ0RhdGEsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBvcGVyYXRpb24pOwogICAg
IGlmICghaGFuZGxlZEJ5RG9jdW1lbnQgJiYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uICYgRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCkpCi0gICAgICAgIHJldHVybiBvcGVyYXRpb25Gb3JMb2Fk
KGRyYWdEYXRhKTsKKyAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0
YSk7CisgICAgCisgICAgLy8gUmVzdHJpY3QgdGhlIG9wZXJhdGlvbiB0byB3aGF0IHRoZSBkcmFn
IHNvdXJjZSBhbGxvd3M6CisgICAgaWYgKChvcGVyYXRpb24gJiBkcmFnRGF0YS0+ZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKCkpICE9IG9wZXJhdGlvbikKKyAgICAgICAgb3BlcmF0aW9uID0g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgbV9kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb24gPSBvcGVy
YXRpb247CiAgICAgcmV0dXJuIG9wZXJhdGlvbjsKIH0KIApAQCAtNDkxLDYgKzQ5OSw4IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhEcmFnRGEKICAgICBSZWZQdHI8Q2xpcGJv
YXJkPiBjbGlwYm9hcmQgPSBkcmFnRGF0YS0+Y3JlYXRlQ2xpcGJvYXJkKHBvbGljeSk7CiAgICAg
RHJhZ09wZXJhdGlvbiBzcmNPcE1hc2sgPSBkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrKCk7CiAgICAgY2xpcGJvYXJkLT5zZXRTb3VyY2VPcGVyYXRpb24oc3JjT3BNYXNrKTsK
KyAgICBtX2Rlc3RpbmF0aW9uRHJhZ09wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFn
KHNyY09wTWFzayk7ICAgIC8vIEhUTUw1IHNwZWMsIHNlYy4gNy45LjMKKyAgICBjbGlwYm9hcmQt
PnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG1fZGVzdGluYXRpb25EcmFnT3BlcmF0aW9uKTsKIAog
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudCA9IGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEp
OwogICAgIGlmICghbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3Ao
ZXZlbnQsIGNsaXBib2FyZC5nZXQoKSkpIHsKQEAgLTYyMyw2ICs2MzMsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyCiAKICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwg
PSBLVVJMKCk7CiAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gc3JjT3A7CisgICAgbV9kZXN0
aW5hdGlvbkRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKIAogICAgIERyYWdJbWFn
ZVJlZiBkcmFnSW1hZ2UgPSAwOwogICAgIEludFBvaW50IGRyYWdMb2MoMCwgMCk7CkluZGV4OiBX
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gNDgxNjMpCisrKyBXZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNIYW5kbGluZ0RyYWcoYm9vbCBoYW5kbGluZykgeyBt
X2lzSGFuZGxpbmdEcmFnID0gaGFuZGxpbmc7IH0KICAgICAgICAgYm9vbCBpc0hhbmRsaW5nRHJh
ZygpIGNvbnN0IHsgcmV0dXJuIG1faXNIYW5kbGluZ0RyYWc7IH0KICAgICAgICAgRHJhZ09wZXJh
dGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3Bl
cmF0aW9uOyB9CisgICAgICAgIERyYWdPcGVyYXRpb24gZGVzdGluYXRpb25EcmFnT3BlcmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb247IH0KICAgICAgICAg
dm9pZCBzZXREcmFnZ2luZ0ltYWdlVVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX2RyYWdnaW5nSW1h
Z2VVUkwgPSB1cmw7IH0KICAgICAgICAgY29uc3QgS1VSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgICAgICB2b2lkIHNldERyYWdJ
bml0aWF0b3IoRG9jdW1lbnQqIGluaXRpYXRvcikgeyBtX2RyYWdJbml0aWF0b3IgPSBpbml0aWF0
b3I7IG1fZGlkSW5pdGlhdGVEcmFnID0gdHJ1ZTsgfQpAQCAtMTIyLDYgKzEyMyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2RpZEluaXRpYXRlRHJhZzsKICAgICAgICAg
Ym9vbCBtX2lzSGFuZGxpbmdEcmFnOwogICAgICAgICBEcmFnT3BlcmF0aW9uIG1fc291cmNlRHJh
Z09wZXJhdGlvbjsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBh
IG1vdXNlIGRvd24gd2l0aGluIFdlYktpdAorICAgICAgICBEcmFnT3BlcmF0aW9uIG1fZGVzdGlu
YXRpb25EcmFnT3BlcmF0aW9uOyAvLyBMYXN0IG9wZXJhdGlvbiBzZXQgYnkgZXZlbnQgaGFuZGxl
cgogICAgICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAgICAgICAgIEtVUkwgbV9kcmFnZ2lu
Z0ltYWdlVVJMOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gNDgx
NjMpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUwNiw4ICsxNTA2LDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChj
b24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVs
ZW1lbnRCYXNlKj4obV9kcmFnVGFyZ2V0LmdldCgpKS0+Y29udGVudEZyYW1lKCkgOiAwOwogICAg
ICAgICAgICAgaWYgKGZyYW1lKQogICAgICAgICAgICAgICAgIGFjY2VwdCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIGNsaXBib2FyZCk7Ci0gICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUZW1wb3Jh
cmlseSBzZXQgZHJvcEVmZmVjdCB0byAnbm9uZScgd2hpbGUgY2FsbGluZyBkcm9wbGVhdmUgaGFu
ZGxlciAoYXMgcGVyIEhUTUw1IHNwZWMpCisgICAgICAgICAgICAgICAgRHJhZ09wZXJhdGlvbiBz
YXZlT3AgPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPmRl
c3RpbmF0aW9uT3BlcmF0aW9uKHNhdmVPcCk7CisgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT5z
ZXREZXN0aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uTm9uZSk7CiAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCBtX2RyYWdU
YXJnZXQuZ2V0KCksIGV2ZW50LCBjbGlwYm9hcmQpOworICAgICAgICAgICAgICAgIGNsaXBib2Fy
ZC0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24oc2F2ZU9wKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChuZXdUYXJnZXQpIHsKQEAgLTIxMzEsMTEg
KzIxMzcsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZERyYWdBdXRvTm9kZShObwogICAg
IHJldHVybiBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPm1heVN0YXJ0RHJhZ0F0RXZl
bnRMb2NhdGlvbihtX2ZyYW1lLCBwb2ludCk7CiB9CiAgICAgCi12b2lkIEV2ZW50SGFuZGxlcjo6
ZHJhZ1NvdXJjZU1vdmVkVG8oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3ZvaWQg
RXZlbnRIYW5kbGVyOjpkcmFnU291cmNlTW92ZWRUbyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsKLSAgICBpZiAoZHJhZ1N0YXRlKCku
bV9kcmFnU3JjICYmIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyY01heUJlREhUTUwpCisgICAgaWYgKGRy
YWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiBkcmFnU3RhdGUoKS5tX2RyYWdTcmNNYXlCZURIVE1MKSB7
CisgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC0+c2V0RGVzdGluYXRpb25PcGVy
YXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkb24ndCBjYXJlIGlmIGV2
ZW50IGhhbmRsZXIgY2FuY2VscyBkZWZhdWx0IGJlaGF2aW9yLCBzaW5jZSB0aGVyZSBpcyBub25l
CiAgICAgICAgIGRpc3BhdGNoRHJhZ1NyY0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2
ZW50KTsKKyAgICB9CiB9CiAgICAgCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVk
QXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRp
b24pCkBAIC0yMjI5LDcgKzIyMzcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhj
b25zdCBNb3VzCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRoZSBoeXN0ZXJlc2lzIHBvaW50LCB3
ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBhcyBhIGNsaWNrCiAgICAgaW52YWxp
ZGF0ZUNsaWNrKCk7CiAgICAgCi0gICAgRHJhZ09wZXJhdGlvbiBzcmNPcCA9IERyYWdPcGVyYXRp
b25Ob25lOyAgICAgIAorICAgIERyYWdPcGVyYXRpb24gc3JjT3AgPSBEcmFnT3BlcmF0aW9uRXZl
cnk7ICAgICAgCiAgICAgCiAgICAgZnJlZUNsaXBib2FyZCgpOyAgICAvLyB3b3VsZCBvbmx5IGhh
cHBlbiBpZiB3ZSBtaXNzZWQgYSBkcmFnRW5kLiAgRG8gaXQgYW55d2F5LCBqdXN0CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBudW1iaWZpZWQKQEAgLTIy
NTIsNiArMjI2MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXMK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSAKICAgICAgICAgCisgICAgICAgIGRyYWdTdGF0ZSgp
Lm1fZHJhZ0NsaXBib2FyZC0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbk5v
bmUpOyAvLyBIVE1MNSBzcGVjCiAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0gZGlz
cGF0Y2hEcmFnU3JjRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50LCBtX21vdXNlRG93
bikKICAgICAgICAgICAgICYmICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBhc3N3b3JkRmll
bGQoKTsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCShyZXZpc2lvbiA0ODE2MykKKysr
IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JikgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBkcmFnU291cmNlTW92ZWRUbyhj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2b2lkIGRyYWdTb3VyY2VNb3ZlZFRvKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZSk7CiAgICAgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
LCBEcmFnT3BlcmF0aW9uKTsKIAogICAgIHZvaWQgZm9jdXNEb2N1bWVudFZpZXcoKTsKSW5kZXg6
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODE2MykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMDggIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bml0aWFsaXplIERhdGFUcmFuc2ZlcidzIGVmZmVjdEFsbG93ZWQgYW5kIGRyb3BFZmZlY3QgcHJv
cGVydGllcyBjb3JyZWN0bHkKKyAgICAgICAgYWNjb3JkaW5nIHRvIEhUTUw1IHNwZWMgKHNlYy4g
Ny45LjItNy45LjMpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjY3MDAKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgt
W1dlYkZyYW1lIF9kcmFnU291cmNlTW92ZWRUbzpdKToKKyAgICAgICAgICAgIFBhc3MgY3VycmVu
dCBkcmFnIG9wZXJhdGlvbiAoaWYga25vd24pIHRvIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZU1v
dmVkVG8oKS4KKwogMjAwOS0wOS0wNyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0JKHJldmlzaW9uIDQ4MTYzKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RP
TUltcGxlbWVudGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY0xvYWRlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9FdmVudE5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC05MzIsNyAr
OTMzLDEzIEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSgKICAgICAv
LyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91
bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KElu
dFBvaW50KHdpbmRvd0xvYyksIGdsb2JhbFBvaW50KHdpbmRvd0xvYywgW3ZpZXctPnBsYXRmb3Jt
V2lkZ2V0KCkgd2luZG93XSksCiAgICAgICAgIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJlbnRUaW1lKCkpOwotICAgIF9wcml2
YXRlLT5jb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlTW92ZWRUbyhldmVudCk7
CisgICAgCisgICAgLy8gR2V0IHRoZSBjdXJyZW50IGRlc3RpbmF0aW9uIGRyYWcgb3BlcmF0aW9u
LCBpZiB0aGlzIGlzIGFuIGludHJhLXBhZ2UgZHJhZzoKKyAgICBEcmFnT3BlcmF0aW9uIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChQYWdlKiBwYWdlID0gX3ByaXZhdGUt
PmNvcmVGcmFtZS0+cGFnZSgpKQorICAgICAgICBvcGVyYXRpb24gPSBwYWdlLT5kcmFnQ29udHJv
bGxlcigpLT5kZXN0aW5hdGlvbkRyYWdPcGVyYXRpb24oKTsKKworICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kcmFnU291cmNlTW92ZWRUbyhldmVudCwgb3BlcmF0aW9u
KTsKIH0KIAogLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9w
ZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDgx
NjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAwOS0wOS0wOCAgSmVucyBBbGZrZSAgPHNuZWpAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWxpemUgRGF0
YVRyYW5zZmVyJ3MgZWZmZWN0QWxsb3dlZCBhbmQgZHJvcEVmZmVjdCBwcm9wZXJ0aWVzIGNvcnJl
Y3RseQorICAgICAgICBhY2NvcmRpbmcgdG8gSFRNTDUgc3BlYyAoc2VjLiA3LjkuMi03LjkuMyku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjcwMAor
CisgICAgICAgICogZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0Lmh0bWw6IEFkZGVkLgor
CiAyMDA5LTA5LTA4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2RyYWctZHJvcGVmZmVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctZHJvcGVmZmVjdC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKworVGhpcyBhdXRvbWF0ZWQgbGF5b3V0IHRlc3Qg
Y2hlY2tzIHRoYXQgZWZmZWN0QWxsb3dlZCBhbmQgZHJvcEVmZmVjdCBhcmUgc2V0IHByb3Blcmx5
IGluIGRyYWcgY2FsbGJhY2tzLgorSWYgeW91J3JlIHJ1bm5pbmcgdGhpcyBpbiBhIGJyb3dzZXIs
IHlvdSBjYW4gc2ltdWxhdGUgcGFydCBvZiBpdCBieSBkcmFnZ2luZyBBYmUgb250byB0aGUgYm94
LgorCisqKiogVGVzdGluZyBhIHN1Y2Nlc3NmdWwgZHJhZy4uLgorUEFTUyBlZmZlY3RBbGxvd2Vk
IGluIGRyYWdTdGFydCA9ICd1bmluaXRpYWxpemVkJworUEFTUyBkcm9wRWZmZWN0IGluIGRyYWdT
dGFydCA9ICdub25lJworUEFTUyBlZmZlY3RBbGxvd2VkIGluIGRyYWdFbnRlciA9ICdjb3B5TW92
ZScKK1BBU1MgZHJvcEVmZmVjdCBpbiBkcmFnRW50ZXIgPSAnY29weScKK1BBU1MgZWZmZWN0QWxs
b3dlZCBpbiBkcm9wID0gJ2NvcHlNb3ZlJworUEFTUyBkcm9wRWZmZWN0IGluIGRyb3AgPSAnbW92
ZScKK1BBU1MgZWZmZWN0QWxsb3dlZCBpbiBkcmFnRW5kID0gJ2NvcHlNb3ZlJworUEFTUyBkcm9w
RWZmZWN0IGluIGRyYWdFbmQgPSAnbW92ZScKK1BBU1MgY2FsbHMgdG8gZHJhZ1N0YXJ0ID0gJzEn
CitQQVNTIGNhbGxzIHRvIGRyYWdFbmQgPSAnMScKK1BBU1MgY2FsbHMgdG8gZHJhZ0VudGVyID0g
JzEnCitQQVNTIGNhbGxzIHRvIGRyb3AgPSAnMScKKyoqKiBUZXN0aW5nIGEgZmFpbGVkIGRyYWcu
Li4KK1BBU1MgZWZmZWN0QWxsb3dlZCBpbiBkcmFnU3RhcnQgPSAndW5pbml0aWFsaXplZCcKK1BB
U1MgZHJvcEVmZmVjdCBpbiBkcmFnU3RhcnQgPSAnbm9uZScKK1BBU1MgZWZmZWN0QWxsb3dlZCBp
biBkcmFnRW50ZXIgPSAnbGluaycKK1BBU1MgZHJvcEVmZmVjdCBpbiBkcmFnRW50ZXIgPSAnbGlu
aycKK1BBU1MgZWZmZWN0QWxsb3dlZCBpbiBkcmFnTGVhdmUgPSAnbGluaycKK1BBU1MgZHJvcEVm
ZmVjdCBpbiBkcmFnTGVhdmUgPSAnbm9uZScKK1BBU1MgZWZmZWN0QWxsb3dlZCBpbiBkcmFnRW5k
ID0gJ2xpbmsnCitQQVNTIGRyb3BFZmZlY3QgaW4gZHJhZ0VuZCA9ICdub25lJworUEFTUyBjYWxs
cyB0byBkcmFnU3RhcnQgPSAnMScKK1BBU1MgY2FsbHMgdG8gZHJhZ0VuZCA9ICcxJworUEFTUyBj
YWxscyB0byBkcmFnRW50ZXIgPSAnMScKK1BBU1MgY2FsbHMgdG8gZHJvcCA9ICcwJworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctZHJvcGVmZmVjdC1leHBlY3Rl
ZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlOm5hdGl2ZQogICArIAoKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctZHJvcGVmZmVjdC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctZHJvcGVmZmVjdC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1kcm9wZWZmZWN0Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAKKzxpbWFnZSBpZD0iZHJhZ1NvdXJjZSIgc3Jj
PSJyZXNvdXJjZXMvYWJlLnBuZyIgd2lkdGg9Ijc2IiBoZWlnaHQ9IjEwMyIKKyAgICAgICBvbmRy
YWdzdGFydD0iZHJhZ1N0YXJ0KGV2ZW50KSIgb25kcmFnPSJkcmFnKGV2ZW50KSIgb25kcmFnZW5k
PSJkcmFnRW5kKGV2ZW50KSI+Cis8ZGl2IGlkPSJkcmFnVGFyZ2V0IiBzdHlsZT0id2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBncmF5OyIKKyAgICAgICAgb25k
cmFnZW50ZXI9ImRyYWdFbnRlcihldmVudCkiIG9uZHJhZ292ZXI9ImRyYWdPdmVyKGV2ZW50KSIK
KyAgICAgICAgb25kcmFnbGVhdmU9ImRyYWdMZWF2ZShldmVudCkiIG9uZHJvcD0iZHJvcChldmVu
dCkiPgorPC9kaXY+CisKKzxwPlRoaXMgYXV0b21hdGVkIGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0
IGVmZmVjdEFsbG93ZWQgYW5kIGRyb3BFZmZlY3QgYXJlIHNldCBwcm9wZXJseSBpbiBkcmFnCisg
ICBjYWxsYmFja3MuPGJyPgorICAgSWYgeW91J3JlIHJ1bm5pbmcgdGhpcyBpbiBhIGJyb3dzZXIs
IHlvdSBjYW4gc2ltdWxhdGUgcGFydCBvZiBpdCBieSBkcmFnZ2luZyBBYmUgb250byB0aGUgYm94
LjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBh
c3NlcnQocmVzdWx0LCB3aGF0KQoreworICAgIGlmICghcmVzdWx0KQorICAgICAgICB0ZXN0RmFp
bGVkKCJFeHBlY3RlZCB0aGF0ICIgKyB3aGF0KTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNz
ZWQod2hhdCk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEVxdWFsKHRlc3QsIGV4cGVjdGVkLCB3aGF0
LCBxdWlldCkKK3sKKyAgICBpZiAodGVzdCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRlc3RGYWls
ZWQod2hhdCArICIgPSAnIiArIHRlc3QgKyAiJyAuLi4gZXhwZWN0ZWQgJyIgKyBleHBlY3RlZCAr
ICInIik7CisgICAgZWxzZSBpZiAoIXF1aWV0KQorICAgICAgICAgdGVzdFBhc3NlZCh3aGF0ICsg
IiA9ICciICsgdGVzdCArICInIik7Cit9CisKKwordmFyIGRyYWdTdGFydENhbGxlZCA9IDAsIGRy
YWdDYWxsZWQgPSAwLCBkcmFnRW5kQ2FsbGVkID0gMDsKK3ZhciBkcmFnRW50ZXJDYWxsZWQgPSAw
LCBkcmFnT3ZlckNhbGxlZCA9IDAsIGRyYWdMZWF2ZUNhbGxlZCA9IDAsIGRyb3BDYWxsZWQgPSAw
OworCit2YXIgZWZmZWN0QWxsb3dlZFRvU2V0ID0gImNvcHlNb3ZlIjsKK3ZhciBkZWZhdWx0RHJv
cEVmZmVjdCA9ICJjb3B5IjsKK3ZhciBkcm9wRWZmZWN0VG9TZXQgPSAibW92ZSI7Cit2YXIgZXhw
ZWN0ZWREcm9wRWZmZWN0ID0gIm1vdmUiOworCisKKy8vIERSQUcgU09VUkNFIEVWRU5UIEhBTkRM
RVJTOgorZnVuY3Rpb24gZHJhZ1N0YXJ0KGV2ZW50KQoreworICAgIGRyYWdTdGFydENhbGxlZCsr
OworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkLCAidW5p
bml0aWFsaXplZCIsICJlZmZlY3RBbGxvd2VkIGluIGRyYWdTdGFydCIpOworICAgIGFzc2VydEVx
dWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0LCAibm9uZSIsICJkcm9wRWZmZWN0IGlu
IGRyYWdTdGFydCIpOworICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gZWZm
ZWN0QWxsb3dlZFRvU2V0OworfQorCitmdW5jdGlvbiBkcmFnKGV2ZW50KQoreworICAgIGRyYWdD
YWxsZWQrKzsKKyAgICBhc3NlcnRFcXVhbChldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dl
ZCwgZWZmZWN0QWxsb3dlZFRvU2V0LCAiZWZmZWN0QWxsb3dlZCBpbiBkcmFnIiwgdHJ1ZSk7Cisg
ICAgYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QsCisgICAgICAgICAg
ICAgICAgZHJhZ0xlYXZlQ2FsbGVkIDwgZHJhZ0VudGVyQ2FsbGVkID9leHBlY3RlZERyb3BFZmZl
Y3QgOiJub25lIiwgCisgICAgICAgICAgICAgICAgImRyb3BFZmZlY3QgaW4gZHJhZyIsCisgICAg
ICAgICAgICAgICAgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdFbmQoZXZlbnQpCit7CisgICAg
ZHJhZ0VuZENhbGxlZCsrOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZl
Y3RBbGxvd2VkLCBlZmZlY3RBbGxvd2VkVG9TZXQsICJlZmZlY3RBbGxvd2VkIGluIGRyYWdFbmQi
KTsKKyAgICBhc3NlcnRFcXVhbChldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCwgCisgICAg
ICAgICAgICAgICAgZHJhZ0xlYXZlQ2FsbGVkIDwgZHJhZ0VudGVyQ2FsbGVkID8gZXhwZWN0ZWRE
cm9wRWZmZWN0IDogIm5vbmUiLAorICAgICAgICAgICAgICAgICJkcm9wRWZmZWN0IGluIGRyYWdF
bmQiKTsKK30KKworCisvLyBEUkFHIERFU1RJTkFUSU9OIEVWRU5UIEhBTkRMRVJTOgorZnVuY3Rp
b24gZHJhZ0VudGVyKGV2ZW50KQoreworICAgIGRyYWdFbnRlckNhbGxlZCsrOworICAgIGFzc2Vy
dEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkLCBlZmZlY3RBbGxvd2VkVG9T
ZXQsICJlZmZlY3RBbGxvd2VkIGluIGRyYWdFbnRlciIpOworICAgIGFzc2VydEVxdWFsKGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0LCBkZWZhdWx0RHJvcEVmZmVjdCwgImRyb3BFZmZlY3Qg
aW4gZHJhZ0VudGVyIik7CisgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBkcm9w
RWZmZWN0VG9TZXQ7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30KKworZnVuY3Rpb24g
ZHJhZ092ZXIoZXZlbnQpCit7CisgICAgZHJhZ092ZXJDYWxsZWQrKzsKKyAgICBhc3NlcnRFcXVh
bChldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCwgZWZmZWN0QWxsb3dlZFRvU2V0LCAi
ZWZmZWN0QWxsb3dlZCBpbiBkcmFnT3ZlciIsIHRydWUpOworICAgIGFzc2VydEVxdWFsKGV2ZW50
LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0LCBkZWZhdWx0RHJvcEVmZmVjdCwgImRyb3BFZmZlY3Qg
aW4gZHJhZ092ZXIiLCB0cnVlKTsKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9
IGRyb3BFZmZlY3RUb1NldDsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfQorCitmdW5j
dGlvbiBkcmFnTGVhdmUoZXZlbnQpCit7CisgICAgZHJhZ0xlYXZlQ2FsbGVkKys7CisgICAgYXNz
ZXJ0RXF1YWwoZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQsIGVmZmVjdEFsbG93ZWRU
b1NldCwgImVmZmVjdEFsbG93ZWQgaW4gZHJhZ0xlYXZlIik7CisgICAgYXNzZXJ0RXF1YWwoZXZl
bnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QsICJub25lIiwgImRyb3BFZmZlY3QgaW4gZHJhZ0xl
YXZlIik7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30KKworZnVuY3Rpb24gZHJvcChl
dmVudCkKK3sKKyAgICBkcm9wQ2FsbGVkKys7CisgICAgYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YVRy
YW5zZmVyLmVmZmVjdEFsbG93ZWQsIGVmZmVjdEFsbG93ZWRUb1NldCwgImVmZmVjdEFsbG93ZWQg
aW4gZHJvcCIpOworICAgIGFzc2VydEVxdWFsKGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
LCBleHBlY3RlZERyb3BFZmZlY3QsICJkcm9wRWZmZWN0IGluIGRyb3AiKTsKKyAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworfQorCisKK2Z1bmN0aW9uIHBlcmZvcm1EcmFnKHNyY0lkLCBkc3RJ
ZCkKK3sKKyAgICBmdW5jdGlvbiBtb3ZlTW91c2VUb0NlbnRlck9mKGlkKQorICAgIHsKKyAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgICAgIHZh
ciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAg
ICAgIHZhciB5ID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIH0KKyAgICAKKyAg
ICBkcmFnU3RhcnRDYWxsZWQgPSBkcmFnQ2FsbGVkID0gZHJhZ0VuZENhbGxlZCA9IDA7CisgICAg
ZHJhZ0VudGVyQ2FsbGVkID0gZHJhZ092ZXJDYWxsZWQgPSBkcmFnTGVhdmVDYWxsZWQgPSBkcm9w
Q2FsbGVkID0gMDsKKyAgICAKKyAgICBtb3ZlTW91c2VUb0NlbnRlck9mKHNyY0lkKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBtb3ZlTW91c2VUb0NlbnRlck9mKGRzdElkKTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47Cisg
ICAgdHJ5IHsKKyAgICAgIAorICAgICAgZGVidWcoIioqKiBUZXN0aW5nIGEgc3VjY2Vzc2Z1bCBk
cmFnLi4uIik7CisgICAgICBlZmZlY3RBbGxvd2VkVG9TZXQgPSAiY29weU1vdmUiOworICAgICAg
ZGVmYXVsdERyb3BFZmZlY3QgPSAiY29weSI7CisgICAgICBkcm9wRWZmZWN0VG9TZXQgPSAibW92
ZSI7CisgICAgICBleHBlY3RlZERyb3BFZmZlY3QgPSAibW92ZSI7CisgICAgICBwZXJmb3JtRHJh
ZygnZHJhZ1NvdXJjZScsICdkcmFnVGFyZ2V0Jyk7CisgICAgICAKKyAgICAgIGFzc2VydEVxdWFs
KGRyYWdTdGFydENhbGxlZCwgMSwgImNhbGxzIHRvIGRyYWdTdGFydCIpOworICAgICAgLy8gV2hl
dGhlciBkcmFnIGlzIGNhbGxlZCBkZXBlbmRzIG9uIHRpbWluZy4gSW4gYSByZWFsLWxpZmUgZHJh
ZyBpdCB3aWxsIGJlIGNhbGxlZCwgYnV0CisgICAgICAvLyB3aXRoIHRoZSBhcnRpZmljaWFsIG1v
dXNlIGV2ZW50cyBnZW5lcmF0ZWQgYnkgdGhlIHRlc3QgY29udHJvbGxlciwgaXQgbWF5IG5vdCBi
ZS4KKyAgICAgIC8vIFNvIEkndmUgcmVtb3ZlZCB0aGUgYXNzZXJ0aW9uIHRoYXQgZHJhZ0NhbGxl
ZCA+IDAuCisgICAgICBhc3NlcnRFcXVhbChkcmFnRW5kQ2FsbGVkLCAxLCAiY2FsbHMgdG8gZHJh
Z0VuZCIpOworICAgICAgYXNzZXJ0RXF1YWwoZHJhZ0VudGVyQ2FsbGVkLCAxLCAiY2FsbHMgdG8g
ZHJhZ0VudGVyIik7CisgICAgICAvLyBkcmFnT3ZlciB3b24ndCBuZWNlc3NhcmlseSBiZSBjYWxs
ZWQgaWYgdGhlcmUgd2FzIG9ubHkgb25lIG1vdXNlIGV2ZW50IG92ZXIKKyAgICAgIC8vIHRoZSBk
cm9wIHRhcmdldCwgYXMgaW4gcGVyZm9ybURyYWcuCisgICAgICAvLyBkcmFnTGVhdmUgaXNuJ3Qg
Y2FsbGVkIGJlY2F1c2UgdGhlIGRyYWcgbmV2ZXIgZXhpdHMgdGhlIGRyb3AgdGFyZ2V0LgorICAg
ICAgYXNzZXJ0RXF1YWwoZHJvcENhbGxlZCwgMSwgImNhbGxzIHRvIGRyb3AiKTsKKworICAgICAg
ZGVidWcoIioqKiBUZXN0aW5nIGEgZmFpbGVkIGRyYWcuLi4iKTsKKyAgICAgIGVmZmVjdEFsbG93
ZWRUb1NldCA9ICJsaW5rIjsKKyAgICAgIGRlZmF1bHREcm9wRWZmZWN0ID0gImxpbmsiOworICAg
ICAgZHJvcEVmZmVjdFRvU2V0ID0gIm1vdmUiOworICAgICAgZXhwZWN0ZWREcm9wRWZmZWN0ID0g
Im5vbmUiOworICAgICAgcGVyZm9ybURyYWcoJ2RyYWdTb3VyY2UnLCAnZHJhZ1RhcmdldCcpOwor
ICAgICAgCisgICAgICBhc3NlcnRFcXVhbChkcmFnU3RhcnRDYWxsZWQsIDEsICJjYWxscyB0byBk
cmFnU3RhcnQiKTsKKyAgICAgIC8vIEFzIGRlc2NyaWJlZCBhYm92ZSwgZHJhZyBtaWdodCBub3Qg
YmUgY2FsbGVkLCB1bmRlciB0ZXN0IGNvbmRpdGlvbnMsIHNvIGRvbid0IGNoZWNrIGRyYWdDYWxs
ZWQuCisgICAgICBhc3NlcnRFcXVhbChkcmFnRW5kQ2FsbGVkLCAxLCAiY2FsbHMgdG8gZHJhZ0Vu
ZCIpOworICAgICAgYXNzZXJ0RXF1YWwoZHJhZ0VudGVyQ2FsbGVkLCAxLCAiY2FsbHMgdG8gZHJh
Z0VudGVyIik7CisgICAgICBhc3NlcnRFcXVhbChkcm9wQ2FsbGVkLCAwLCAiY2FsbHMgdG8gZHJv
cCIpOworICAgICAgCisgICAgICAvLyBGaW5hbGx5IHJ1biB0aGUgcG9zdC10ZXN0IGZ1bmN0aW9u
OgorICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKworICAgIH0gY2F0Y2ggKHgpIHsKKyAg
ICAgIGRlYnVnKCJGQUlMRUQgYnkgdGhyb3dpbmcgIiArIHgpOworICAgIH0KKyAgICAvLyBPSywg
bm93IERSVCBjYW4gcXVpdC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKKy8vIFRlbGwgRFJUIG5vdCB0byBxdWl0IGltbWVkaWF0ZWx5LCBiZWNhdXNlIHRoZSBh
Y3R1YWwgcnVuVGVzdCgpIGZ1bmN0aW9uIHdvbid0IGJlIGNhbGxlZAorLy8gdW50aWwgdGhlIG9u
bG9hZCBldmVudCBpcyBzZW50IChvdGhlcndpc2UgdGhlIGZha2UgZHJhZyBzdHVmZiBjcmFzaGVz
OiBidWcgMjkxMDEuKQorbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+CisKKzwv
Ym9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2RyYWctZHJvcGVmZmVjdC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQog
ICArIG5hdGl2ZQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>