<?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>49106</bug_id>
          
          <creation_ts>2010-11-05 15:52:33 -0700</creation_ts>
          <short_desc>Include the FrameView widget of a RenderWidget in the accessibility tree.</short_desc>
          <delta_ts>2011-01-10 16:49:55 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>49994</dependson>
    
    <dependson>50499</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Chris Guillory">ctguil</reporter>
          <assigned_to name="Chris Guillory">ctguil</assigned_to>
          <cc>abarth</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>305597</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-05 15:52:33 -0700</bug_when>
    <thetext>During investigation of a Chromium bug I noticed that the RenderView of an iFrame is not included in the top document AX tree hierarchy.
http://code.google.com/p/chromium/issues/detail?id=57727

Perhaps we can include the RenderView of the iFrame in the main AX tree similar to Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305611</commentid>
    <comment_count>1</comment_count>
      <attachid>73135</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-05 16:08:23 -0700</bug_when>
    <thetext>Created attachment 73135
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305619</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-05 16:12:43 -0700</bug_when>
    <thetext>Attachment 73135 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/accessibility/iframe-has-document-expected.txt&apos;, u&apos;LayoutTests/accessibility/iframe-has-document.html&apos;, u&apos;LayoutTests/platform/win/Skipped&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/accessibility/AccessibilityRenderObject.cpp&apos;, u&apos;WebKitTools/ChangeLog&apos;, u&apos;WebKitTools/DumpRenderTree/AccessibilityUIElement.h&apos;, u&apos;WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp&apos;]&quot; exit_code: 1
WebCore/accessibility/AccessibilityRenderObject.cpp:3375:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp:62:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305620</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-11-05 16:14:04 -0700</bug_when>
    <thetext>what did the AX hiearchy look like, and what does it look like after this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305626</commentid>
    <comment_count>4</comment_count>
      <attachid>73138</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-05 16:32:43 -0700</bug_when>
    <thetext>Created attachment 73138
Proposed patch.

Before this patch the AX tree of the top document would not include any children for a RenderIFrame render object (firstChild() doesn&apos;t return any renderer children).

After this patch the AX tree of the top document will include the RenderView of a RenderIFrame as a child. The RenderView document of the iFrame already includes all of that document&apos;s children. Also calling AccessibilityRenderObject::parentObject() on the RenderView document of an iFrame will return the RenderIFrame of the parent document; previously calling parentObject() repeatedly on a sub-document wouldn&apos;t walk all the way up to the top document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305659</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-11-05 17:21:29 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=73138) [details]
&gt; Proposed patch.
&gt; 
&gt; Before this patch the AX tree of the top document would not include any children for a RenderIFrame render object (firstChild() doesn&apos;t return any renderer children).
&gt; 
&gt; After this patch the AX tree of the top document will include the RenderView of a RenderIFrame as a child. The RenderView document of the iFrame already includes all of that document&apos;s children. Also calling AccessibilityRenderObject::parentObject() on the RenderView document of an iFrame will return the RenderIFrame of the parent document; previously calling parentObject() repeatedly on a sub-document wouldn&apos;t walk all the way up to the top document.

I&apos;m worried that this will affect the AX hierarchy in undesired ways. Right now on the mac side, we see if the object has an attachment, then pass the call onto the attachment (you&apos;ll see that in AXObjectWrapperMac.mm). I suspect you&apos;d want to do similar things on windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305666</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-05 17:34:21 -0700</bug_when>
    <thetext>Interesting, I&apos;ll look into doing something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308896</commentid>
    <comment_count>7</comment_count>
      <attachid>73803</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-12 18:19:07 -0800</bug_when>
    <thetext>Created attachment 73803
Proposed patch.

Seems like the mac logic should be extended for all the ports. In this patch I&apos;m specifically excluding the mac port in the added logic. Perhaps that mac attachment forwarding logic could be removed in favor of something like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308897</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-12 18:21:32 -0800</bug_when>
    <thetext>Hey Dimitri, could you take a peek at WebKitTools/DumpRenderTree/chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309072</commentid>
    <comment_count>9</comment_count>
      <attachid>73803</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-14 08:31:55 -0800</bug_when>
    <thetext>Comment on attachment 73803
Proposed patch.

DRT changes are good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309322</commentid>
    <comment_count>10</comment_count>
      <attachid>73803</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-11-15 09:41:02 -0800</bug_when>
    <thetext>Comment on attachment 73803
Proposed patch.

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

&gt; WebCore/accessibility/AccessibilityRenderObject.cpp:416
&gt; +    // On the mac port this parent logic is in AccessibleObjectWrapper.mm.

not the right name of the file.

&gt; WebCore/accessibility/AccessibilityRenderObject.cpp:419
&gt;      }

one line else if shouldn&apos;t have { }

&gt; WebCore/accessibility/AccessibilityRenderObject.cpp:1879
&gt; +#endif

shouldn&apos;t this go into accessibilityIgnoreAttachment() which can be customized per platform?

&gt; WebCore/accessibility/AccessibilityRenderObject.cpp:3382
&gt; +    // for RenderWidget, add frame&apos;s content renderer if the widget is a FramwView.

spelling

&gt; WebCore/accessibility/AccessibilityRenderObject.cpp:3383
&gt; +    // on the mac port this children logic is in AccessibleObjectWrapper.mm.

the file name is AccessibilityObjectWrapper.mm.
All comments should be full sentences</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309377</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-15 11:49:17 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 73803 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73803&amp;action=review
&gt; 
&gt; &gt; WebCore/accessibility/AccessibilityRenderObject.cpp:416
&gt; &gt; +    // On the mac port this parent logic is in AccessibleObjectWrapper.mm.
&gt; 
&gt; not the right name of the file.
Fixed.

&gt; 
&gt; &gt; WebCore/accessibility/AccessibilityRenderObject.cpp:419
&gt; &gt;      }
&gt; 
&gt; one line else if shouldn&apos;t have { }
&gt; 
&gt; &gt; WebCore/accessibility/AccessibilityRenderObject.cpp:1879
&gt; &gt; +#endif
Fixed.

&gt; shouldn&apos;t this go into accessibilityIgnoreAttachment() which can be customized per platform?
Seems like the iFrame renderer could always be ignored. It has an unknown role. For now I&apos;ve moved this logic into AccessibilityObjectChromium.cpp.

&gt; &gt; WebCore/accessibility/AccessibilityRenderObject.cpp:3382
&gt; &gt; +    // for RenderWidget, add frame&apos;s content renderer if the widget is a FramwView.
&gt; 
&gt; spelling
Fixed.

&gt; &gt; WebCore/accessibility/AccessibilityRenderObject.cpp:3383
&gt; &gt; +    // on the mac port this children logic is in AccessibleObjectWrapper.mm.
&gt; 
&gt; the file name is AccessibilityObjectWrapper.mm.
&gt; All comments should be full sentences
Fixed capitalization. Is that what you were referring to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309386</commentid>
    <comment_count>12</comment_count>
      <attachid>73921</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-15 12:07:16 -0800</bug_when>
    <thetext>Created attachment 73921
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310964</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-18 10:58:44 -0800</bug_when>
    <thetext>WEBKIT API addition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310971</commentid>
    <comment_count>14</comment_count>
      <attachid>73921</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-11-18 11:06:32 -0800</bug_when>
    <thetext>Comment on attachment 73921
Proposed patch.

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

some small changes

can you file a Mac bug asking to revisit why Mac can&apos;t use this code (and assign to me, and relate to this)

&gt; WebCore/accessibility/AccessibilityRenderObject.cpp:3383
&gt; +#endif

can you put this in a method like,

appendWidgetChildren or something

&gt; WebCore/accessibility/chromium/AccessibilityObjectChromium.cpp:37
&gt; +    // Ignore iframe renderers that have a content renderer.

can you explain why you&apos;re ignoring content renderers here. this comment states what the code does, but not why</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310998</commentid>
    <comment_count>15</comment_count>
      <attachid>73921</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-11-18 11:34:55 -0800</bug_when>
    <thetext>Comment on attachment 73921
Proposed patch.

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

&gt; WebKit/chromium/public/WebAccessibilityObject.h:66
&gt; +    WEBKIT_API bool equals(const WebAccessibilityObject&amp;) const;

This API change looks good to me.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311085</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-18 13:52:47 -0800</bug_when>
    <thetext>&gt; can you file a Mac bug asking to revisit why Mac can&apos;t use this code (and assign to me, and relate to this)
https://bugs.webkit.org/show_bug.cgi?id=49760
 
&gt; &gt; WebCore/accessibility/AccessibilityRenderObject.cpp:3383
&gt; &gt; +#endif
&gt; 
&gt; can you put this in a method like,
Added addRenderWidgetChildren

&gt; 
&gt; appendWidgetChildren or something
&gt; 
&gt; &gt; WebCore/accessibility/chromium/AccessibilityObjectChromium.cpp:37
&gt; &gt; +    // Ignore iframe renderers that have a content renderer.
&gt; 
&gt; can you explain why you&apos;re ignoring content renderers here. this comment states what the code does, but not why
Updated comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311087</commentid>
    <comment_count>17</comment_count>
      <attachid>74289</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-18 13:53:34 -0800</bug_when>
    <thetext>Created attachment 74289
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311703</commentid>
    <comment_count>18</comment_count>
      <attachid>74289</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-11-19 14:44:25 -0800</bug_when>
    <thetext>Comment on attachment 74289
Proposed patch.

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

sorry, chris. one more time

&gt; WebCore/accessibility/AccessibilityRenderObject.cpp:3387
&gt; +    }

now that we have our own method, we should use early return in the 3 levels of if here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311711</commentid>
    <comment_count>19</comment_count>
      <attachid>74427</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-19 15:10:13 -0800</bug_when>
    <thetext>Created attachment 74427
Added early return statements in AccessibilityRenderObject::addRenderWidgetChildren</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311712</commentid>
    <comment_count>20</comment_count>
      <attachid>74427</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-11-19 15:11:38 -0800</bug_when>
    <thetext>Comment on attachment 74427
Added early return statements in AccessibilityRenderObject::addRenderWidgetChildren

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311891</commentid>
    <comment_count>21</comment_count>
      <attachid>74427</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-20 00:03:31 -0800</bug_when>
    <thetext>Comment on attachment 74427
Added early return statements in AccessibilityRenderObject::addRenderWidgetChildren

Rejecting patch 74427 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=both&apos;]&quot; exit_code: 2
Last 500 characters of output:
ild/Script-5DF50887116F3077005202AB.sh

** BUILD FAILED **


The following build commands failed:
WebCore:
	CompileC /Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/AccessibilityRenderObject.o /Projects/CommitQueue/WebCore/accessibility/AccessibilityRenderObject.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(1 failure)


Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
l x86_64 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/6277014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312467</commentid>
    <comment_count>22</comment_count>
      <attachid>74586</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-22 12:40:10 -0800</bug_when>
    <thetext>Created attachment 74586
Fix Mac Build

Using early return in AccessibilityRenderObject::renderParentObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312936</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-23 11:07:08 -0800</bug_when>
    <thetext>Hey Chris, if you&apos;re in can you take a look at this one. The previous change failed to commit because of a build error on mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313018</commentid>
    <comment_count>24</comment_count>
      <attachid>74586</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-23 14:34:09 -0800</bug_when>
    <thetext>Comment on attachment 74586
Fix Mac Build

Clearing flags on attachment: 74586

Committed r72628: &lt;http://trac.webkit.org/changeset/72628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313019</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-23 14:34:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313032</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-23 15:04:05 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/72628 might have broken GTK Linux 64-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313036</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-11-23 15:16:51 -0800</bug_when>
    <thetext>http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/16298
GTK Linux 64-bit Debug: layout-test
editing/execCommand/4128080-1.html -&gt; crashed
.................
editing/execCommand/4976800.html -&gt; crashed
........................
editing/execCommand/5543472-1.html -&gt; crashed
.....
editing/execCommand/5575101-1.html -&gt; crashed
....................
editing/execCommand/break-out-of-empty-list-item.html -&gt; crashed
......................
editing/execCommand/indent-node-to-split-to-crash.html -&gt; crashed
................................................
editing/input ..
editing/inserting ..........................................
editing/inserting/insert-3907422-fix.html -&gt; crashed
...........................
editing/pasteboard ............
editing/pasteboard/5032095.html -&gt; crashed
...............................................................
editing/pasteboard/paste-text-003.html -&gt; crashed
.........
editing/pasteboard/paste-text-events.html -&gt; crashed
....
editing/selection ........................................................................
editing/selection/extend-selection-enclosing-block.html -&gt; crashed
.............
editing/selection/home-end.html -&gt; crashed
.................................................
editing/spelling ..
editing/style ......................
editing/style/inline-style-extend-run.html -&gt; crashed
...
editing/style/push-down-font-styles.html -&gt; crashed
......................
editing/text-iterator .
editing/undo .
editing/undo/4059423-1.html -&gt; crashed
...........
editing/undo/redo-split-text-node.html -&gt; crashed

Look like this change needs to be reverted. I&apos;ll have to investigate this failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316202</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-12-02 09:28:20 -0800</bug_when>
    <thetext>Patch was reverted due to build failure.
http://trac.webkit.org/changeset/72628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316241</commentid>
    <comment_count>29</comment_count>
      <attachid>75393</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-12-02 10:44:07 -0800</bug_when>
    <thetext>Created attachment 75393
Patch

I ran the layout tests locally and didn&apos;t hit the crash issues. Not sure what the issue is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316242</commentid>
    <comment_count>30</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-12-02 10:46:10 -0800</bug_when>
    <thetext>can you get a crash log from the crashing server</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316245</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-12-02 10:54:06 -0800</bug_when>
    <thetext>How would I do that? I can see the stdout which shows test cases crashing.
http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/16603/steps/layout-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316247</commentid>
    <comment_count>32</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-12-02 10:59:01 -0800</bug_when>
    <thetext>yea it looks like if the tests aren&apos;t run to completion it doesn&apos;t collect crash logs unfortunately</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316977</commentid>
    <comment_count>33</comment_count>
      <attachid>75393</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-12-03 12:52:33 -0800</bug_when>
    <thetext>Comment on attachment 75393
Patch

yea it seems unlikely that this change caused tons of crashes. lets try again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317043</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-03 14:07:34 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 75393:

http/tests/loading/load-javascript-after-many-xhrs.html
http/tests/security/xss-DENIED-mime-type-execute-as-html.html

Please file bugs against the tests.  These tests were authored by abarth@webkit.org, ddkilzer@webkit.org, hayato@chromium.org, inferno@chromium.org, and svillar@igalia.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317053</commentid>
    <comment_count>35</comment_count>
      <attachid>75393</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-03 14:28:10 -0800</bug_when>
    <thetext>Comment on attachment 75393
Patch

Clearing flags on attachment: 75393

Committed r73302: &lt;http://trac.webkit.org/changeset/73302&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317054</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-03 14:28:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317066</commentid>
    <comment_count>37</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-12-03 14:45:02 -0800</bug_when>
    <thetext>chris, does this fix also address
https://bugs.webkit.org/show_bug.cgi?id=49379</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317068</commentid>
    <comment_count>38</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-12-03 14:47:50 -0800</bug_when>
    <thetext>Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317129</commentid>
    <comment_count>39</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-03 15:51:18 -0800</bug_when>
    <thetext>I think this is causing crashes in the debug layout tests in GTK+, hitting an ASSERT. One trace: http://webkit-bots.igalia.com/amd64/svn_73312.core-when_1291419012-_-who_DumpRenderTree-_-why_11.trace.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317178</commentid>
    <comment_count>40</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-12-03 16:49:56 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; I think this is causing crashes in the debug layout tests in GTK+, hitting an ASSERT. One trace: http://webkit-bots.igalia.com/amd64/svn_73312.core-when_1291419012-_-who_DumpRenderTree-_-why_11.trace.html

(In reply to comment #39)
&gt; I think this is causing crashes in the debug layout tests in GTK+, hitting an ASSERT. One trace: http://webkit-bots.igalia.com/amd64/svn_73312.core-when_1291419012-_-who_DumpRenderTree-_-why_11.trace.html

So it looks like you can&apos;t pass in 0 to 
RenderWidget::find(frameViewIfRenderView())

and the other thing is that accessibility is always enabled on the GTK test bot, interestingly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317180</commentid>
    <comment_count>41</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-03 16:53:06 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; and the other thing is that accessibility is always enabled on the GTK test bot, interestingly

a11y is enabled by default in the GTK+ port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317181</commentid>
    <comment_count>42</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-12-03 16:54:34 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; (In reply to comment #40)
&gt; &gt; and the other thing is that accessibility is always enabled on the GTK test bot, interestingly
&gt; 
&gt; a11y is enabled by default in the GTK+ port.

good idea i think, helps catch more bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317182</commentid>
    <comment_count>43</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-12-03 16:55:02 -0800</bug_when>
    <thetext>changing resolved status back to unconfirmed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317901</commentid>
    <comment_count>44</comment_count>
      <attachid>75746</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-12-06 16:13:03 -0800</bug_when>
    <thetext>Created attachment 75746
Not passing 0 to RenderWidget::find</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317905</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-06 16:16:15 -0800</bug_when>
    <thetext>Attachment 75746 did not pass style-queue:

Failed to run &quot;[u&apos;git&apos;, u&apos;reset&apos;, u&apos;--hard&apos;, u&apos;HEAD&apos;]&quot; exit_code: 128
error: Could not write new index file.
fatal: Could not reset index file to revision &apos;HEAD&apos;.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321324</commentid>
    <comment_count>46</comment_count>
      <attachid>75746</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-12-13 12:25:26 -0800</bug_when>
    <thetext>Comment on attachment 75746
Not passing 0 to RenderWidget::find

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

&gt; WebCore/accessibility/AccessibilityRenderObject.cpp:420
&gt; +            return renderWidget;

since parent already is nil in this case, it probably doesn&apos;t matter if renderWidget is nil, so you could probably just do
if (frameView)
   return RenderWidget::find(frameView);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321620</commentid>
    <comment_count>47</comment_count>
      <attachid>76485</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-12-13 19:13:27 -0800</bug_when>
    <thetext>Created attachment 76485
Patch

- Using return RenderWidget::find(frameView) now.
- Added the iframe-has-document.html layout test back to the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321749</commentid>
    <comment_count>48</comment_count>
      <attachid>74427</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 01:24:06 -0800</bug_when>
    <thetext>Comment on attachment 74427
Added early return statements in AccessibilityRenderObject::addRenderWidgetChildren

Cleared Chris Fleizach&apos;s review+ from obsolete attachment 74427 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331990</commentid>
    <comment_count>49</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-01-10 15:29:48 -0800</bug_when>
    <thetext>Chris can you look this over when you get a chance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331992</commentid>
    <comment_count>50</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-01-10 15:30:39 -0800</bug_when>
    <thetext>(In reply to comment #49)
&gt; Chris can you look this over when you get a chance?

I made a bunch of changes to support WebKit2, one of which inserts the ScrollView widget into the AX tree. do you still need this patch in light of that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332045</commentid>
    <comment_count>51</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2011-01-10 16:49:37 -0800</bug_when>
    <thetext>That seems to resolve the original issue in Chromium. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73135</attachid>
            <date>2010-11-05 16:08:23 -0700</date>
            <delta_ts>2010-11-05 16:32:43 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>9632</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDUgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvaWZy
YW1lLWhhcy1kb2N1bWVudC5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6cmVuZGVyUGFyZW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKToKKwogMjAxMC0xMS0wNSAgSWx5YSBT
aGVybWFuICA8aXNoZXJtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDcxMzYyKQorKysgV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zODQsMTEgKzM4NCwxMiBAQCBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBtX3Jl
bmRlcmVyLT5wYXJlbnQoKTsKKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2ZDb250cyA9IDA7Cisg
ICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gMDsKKyAgICBSZW5kZXJXaWRnZXQqIHJlbmRl
cldpZGdldCA9IDA7CiAKICAgICAvLyBDYXNlIDE6IG5vZGUgaXMgYSBibG9jayBhbmQgaXMgYW4g
aW5saW5lJ3MgY29udGludWF0aW9uLiBQYXJlbnQKICAgICAvLyBpcyB0aGUgc3RhcnQgb2YgdGhl
IGNvbnRpbnVhdGlvbiBjaGFpbi4KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2ZDb250cyA9IDA7
Ci0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gMDsKICAgICBpZiAobV9yZW5kZXJlci0+
aXNSZW5kZXJCbG9jaygpICYmIChzdGFydE9mQ29udHMgPSBzdGFydE9mQ29udGludWF0aW9ucyht
X3JlbmRlcmVyKSkpCiAgICAgICAgIHBhcmVudCA9IHN0YXJ0T2ZDb250czsKIApAQCAtNDA5LDYg
KzQxMCwxMCBAQCBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgLy8gQ2FzZSA0OiBU
aGUgbm9kZSBpcyBhIFJlbmRlclZpZXcgd2hvc2UgRnJhbWVWaWV3IGhhcyBhbiBhc3NvY2lhdGVk
IFJlbmRlcldpZGdldC4KKyAgICAvLyBQYXJlbnQgaXMgdGhlIGFzc29jaWF0ZWQgUmVuZGVyV2lk
Z2V0LgorICAgIH0gZWxzZSBpZiAoIXBhcmVudCAmJiAocmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKGZyYW1lVmlld0lmUmVuZGVyVmlldygpKSkpIHsKKyAgICAgICAgcGFyZW50ID0g
cmVuZGVyV2lkZ2V0OwogICAgIH0KICAgICAgICAgCiAgICAgcmV0dXJuIHBhcmVudDsKQEAgLTMz
NTcsNiArMzM2MiwyMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gZm9yIFJlbmRlcldpZGdldCwgYWRkIGZyYW1lJ3MgY29udGVudCByZW5kZXJlciBpZiB0
aGUgd2lkZ2V0IGlzIGEgRnJhbXdWaWV3LgorICAgIGlmIChtX3JlbmRlcmVyLT5pc1dpZGdldCgp
KSB7CisgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQobV9yZW5kZXJlcikt
PndpZGdldCgpOworICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSkg
eworICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lk
Z2V0KS0+ZnJhbWUoKTsKKyAgICAgICAgICAgIGlmIChmcmFtZSkgeworICAgICAgICAgICAgICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG1fY2hpbGRyZW4uc2l6ZSgpID09IDApOworICAgICAgICAgICAgICAgICAgICBtX2NoaWxkcmVu
LmFwcGVuZChheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlclZpZXcpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAgICAgICAg
IApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNzE0NTMpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0xMS0wNSAgQ2hyaXMgR3VpbGxvcnkg
IDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIEZyYW1lVmlldyB3aWRnZXQgb2YgYSBS
ZW5kZXJXaWRnZXQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA2CisgICAgICAgIAorICAgICAgICBG
b3Igd2luZG93cyB1c2UgSUFjY2Vzc2libGVDb21wYXJhYmxlIGluIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzRXF1YWwKKyAgICAgICAgdG8gY29tcGFyZSBhY2Nlc3NpYmlsaXR5IG9iamVjdHMg
Zm9yIGVxdWFsaXR5LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50V2luLmNwcDoKKyAgICAgICAgKGNvbXBhcmFibGVPYmplY3QpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbCk6CisKIDIwMTAtMTEtMDUgIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZp
bi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDcxMzYyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3
MCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNPYmplY3RSZWYgbWFrZUpTQWNjZXNzaWJp
bGl0eVVJRWxlbWVudChKU0NvbnRleHRSZWYsIGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQm
KTsKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCogb3RoZXJFbGVtZW50KTsKKyNlbHNlCiAgICAgYm9vbCBpc0VxdWFsKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkgeyByZXR1cm4gcGxhdGZvcm1VSUVsZW1lbnQo
KSA9PSBvdGhlckVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCk7IH0KLSAgICAKKyNlbmRpZgor
CiAgICAgdm9pZCBnZXRMaW5rZWRVSUVsZW1lbnRzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiYpOwogICAgIHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4mKTsKICAgICB2b2lkIGdldENoaWxkcmVuKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiYpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gNzEzNjIp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDE2IEBACiAKIHVzaW5nIHN0ZDo6
d3N0cmluZzsKIAorc3RhdGljIENPTVB0cjxJQWNjZXNzaWJsZUNvbXBhcmFibGU+IGNvbXBhcmFi
bGVPYmplY3QoSUFjY2Vzc2libGUqIGFjY2Vzc2libGUpCit7CisgICAgQ09NUHRyPElTZXJ2aWNl
UHJvdmlkZXI+IHNlcnZpY2VQcm92aWRlcihRdWVyeSwgYWNjZXNzaWJsZSk7CisgICAgaWYgKCFz
ZXJ2aWNlUHJvdmlkZXIpCisgICAgICAgIHJldHVybiAwOworICAgIENPTVB0cjxJQWNjZXNzaWJs
ZUNvbXBhcmFibGU+IGNvbXBhcmFibGU7CisgICAgc2VydmljZVByb3ZpZGVyLT5RdWVyeVNlcnZp
Y2UoU0lEX0FjY2Vzc2libGVDb21wYXJhYmxlLCBfX3V1aWRvZihJQWNjZXNzaWJsZUNvbXBhcmFi
bGUpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmNvbXBhcmFibGUpKTsKKyAgICByZXR1cm4g
Y29tcGFyYWJsZTsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50KQogICAgIDogbV9lbGVtZW50KGVsZW1l
bnQpCiB7CkBAIC00OSw2ICs1OSwxNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNz
aWJpbGl0eVVJCiB7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBvdGhlckVsZW1lbnQpIHsKKyAgICBDT01QdHI8SUFjY2Vz
c2libGVDb21wYXJhYmxlPiBjb21wYXJhYmxlID0gY29tcGFyYWJsZU9iamVjdChtX2VsZW1lbnQu
Z2V0KCkpOworICAgIENPTVB0cjxJQWNjZXNzaWJsZUNvbXBhcmFibGU+IG90aGVyQ29tcGFyYWJs
ZSA9IGNvbXBhcmFibGVPYmplY3Qob3RoZXJFbGVtZW50LT5tX2VsZW1lbnQuZ2V0KCkpOworICAg
IGlmICghY29tcGFyYWJsZSB8fCAhb3RoZXJDb21wYXJhYmxlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQk9PTCBpc1NhbWUgPSBGQUxTRTsKKyAgICBpZiAoRkFJTEVEKGNvbXBhcmFibGUt
PmlzU2FtZU9iamVjdChvdGhlckNvbXBhcmFibGUuZ2V0KCksICZpc1NhbWUpKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc1NhbWU7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4mKQogewogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzE0NTMpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMS0wNSAgQ2hy
aXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIEZyYW1lVmlldyB3
aWRnZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA2CisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMTEtMDUgIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpJ
bmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1o
YXMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMSBAQAorCitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgaWZyYW1lJ3MgZG9j
dW1lbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1haW4gQVggdHJlZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgcGFyZW50SWZyYW1lRG9jdW1lbnQuaXNFcXVhbChpZnJhbWUp
IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMt
ZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aWZyYW1lLWhhcy1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD4KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBm
YWxzZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworICAgIDxp
ZnJhbWUgaWQ9J2lmcmFtZTEnIHNyYz0ncmVzb3VyY2VzL2Nha2UucG5nJz48L2lmcmFtZT4KKwor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgaWZyYW1l
J3MgZG9jdW1lbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1haW4gQVggdHJlZS4iKTsKKworICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5mb2N1cygpOworICAgICAgICB2YXIgYm9keSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50OworICAgICAgICB2YXIgcmVuZGVyQmxvY2sgPSBib2R5LmNoaWxkQXRJbmRl
eCgwKTsKKyAgICAgICAgdmFyIGlmcmFtZSA9IHJlbmRlckJsb2NrLmNoaWxkQXRJbmRleCgwKTsK
KyAgICAgICAgdmFyIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNoaWxkQXRJbmRleCgwKTsKKyAg
ICAgICAgCisgICAgICAgIHZhciBwYXJlbnRJZnJhbWVEb2N1bWVudCA9IGlmcmFtZURvY3VtZW50
LnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgCisgICAgICAgIHNob3VsZEJlKCJwYXJlbnRJZnJh
bWVEb2N1bWVudC5pc0VxdWFsKGlmcmFtZSkiLCAidHJ1ZSIpOworICAgIH0KKworICAgIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1o
YXMtZG9jdW1lbnQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoK
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gNzEzNjIpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDkgKzMw
Niw2IEBAIGZhc3QvZXZlbnRzL2RyYWdnaW5nLW1vdXNlLW1vdmVzLmh0bWwKICMgQ3Jhc2ggYmVu
ZWF0aCBTb2NrZXRTdHJlYW06OnJlYWRTdHJlYW1DYWxsYmFjayBodHRwOi8vd2Via2l0Lm9yZy9i
LzQ0MTM4CiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL3dvcmtlci1oYW5kc2hh
a2UtY2hhbGxlbmdlLXJhbmRvbW5lc3MuaHRtbAogCi0jIGh0dHA6Ly93ZWJraXQub3JnL2IvNDY5
MTEKLWFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4tdXBkYXRlLmh0bWwKLQogIyBDYXVzZXMgbmV4
dCB0ZXN0IHRvIHRpbWUgb3V0IGh0dHA6Ly93ZWJraXQub3JnL2IvNDY5NzUKIGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy12cy1hc3luYy1hc3NlcnRpb24tZmFp
bHVyZS5odG1sCiAKQEAgLTQ4NCw3ICs0ODEsNiBAQCBhY2Nlc3NpYmlsaXR5L2J1dHRvbi1wcmVz
cy1hY3Rpb24uaHRtbAogYWNjZXNzaWJpbGl0eS9jYW52YXMuaHRtbAogYWNjZXNzaWJpbGl0eS9k
b2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwKIGFjY2Vzc2liaWxpdHkvZWRpdGFibGUtd2ViYXJlYS1j
b250ZXh0LW1lbnUtcG9pbnQuaHRtbAotYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRp
b24uaHRtbAogYWNjZXNzaWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVsZW1lbnRzLmh0bWwKIGFjY2Vz
c2liaWxpdHkvaW1hZ2UtbGluay5odG1sCiBhY2Nlc3NpYmlsaXR5L2ltYWdlLW1hcDEuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73138</attachid>
            <date>2010-11-05 16:32:43 -0700</date>
            <delta_ts>2010-11-12 18:19:07 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>9458</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTQ1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDUgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvaWZy
YW1lLWhhcy1kb2N1bWVudC5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6cmVuZGVyUGFyZW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKToKKwogMjAxMC0xMS0wNSAgSWx5YSBT
aGVybWFuICA8aXNoZXJtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDcxMzYyKQorKysgV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zODQsMTEgKzM4NCwxMiBAQCBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBtX3Jl
bmRlcmVyLT5wYXJlbnQoKTsKKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2ZDb250cyA9IDA7Cisg
ICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gMDsKKyAgICBSZW5kZXJXaWRnZXQqIHJlbmRl
cldpZGdldCA9IDA7CiAKICAgICAvLyBDYXNlIDE6IG5vZGUgaXMgYSBibG9jayBhbmQgaXMgYW4g
aW5saW5lJ3MgY29udGludWF0aW9uLiBQYXJlbnQKICAgICAvLyBpcyB0aGUgc3RhcnQgb2YgdGhl
IGNvbnRpbnVhdGlvbiBjaGFpbi4KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2ZDb250cyA9IDA7
Ci0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gMDsKICAgICBpZiAobV9yZW5kZXJlci0+
aXNSZW5kZXJCbG9jaygpICYmIChzdGFydE9mQ29udHMgPSBzdGFydE9mQ29udGludWF0aW9ucyht
X3JlbmRlcmVyKSkpCiAgICAgICAgIHBhcmVudCA9IHN0YXJ0T2ZDb250czsKIApAQCAtNDA5LDYg
KzQxMCwxMCBAQCBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgLy8gQ2FzZSA0OiBU
aGUgbm9kZSBpcyBhIFJlbmRlclZpZXcgd2hvc2UgRnJhbWVWaWV3IGhhcyBhbiBhc3NvY2lhdGVk
IFJlbmRlcldpZGdldC4KKyAgICAvLyBQYXJlbnQgaXMgdGhlIGFzc29jaWF0ZWQgUmVuZGVyV2lk
Z2V0LgorICAgIH0gZWxzZSBpZiAoIXBhcmVudCAmJiAocmVuZGVyV2lkZ2V0ID0gUmVuZGVyV2lk
Z2V0OjpmaW5kKGZyYW1lVmlld0lmUmVuZGVyVmlldygpKSkpIHsKKyAgICAgICAgcGFyZW50ID0g
cmVuZGVyV2lkZ2V0OwogICAgIH0KICAgICAgICAgCiAgICAgcmV0dXJuIHBhcmVudDsKQEAgLTMz
NTcsNiArMzM2MiwyMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxk
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gZm9yIFJlbmRlcldpZGdldCwgYWRkIGZyYW1lJ3MgY29udGVudCByZW5kZXJlciBpZiB0
aGUgd2lkZ2V0IGlzIGEgRnJhbXdWaWV3LgorICAgIGlmIChtX3JlbmRlcmVyLT5pc1dpZGdldCgp
KSB7CisgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQobV9yZW5kZXJlcikt
PndpZGdldCgpOworICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSkg
eworICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lk
Z2V0KS0+ZnJhbWUoKTsKKyAgICAgICAgICAgIGlmIChmcmFtZSkgeworICAgICAgICAgICAgICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFtX2NoaWxkcmVuLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyVmlldykpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIH0KICAgICAgICAgCklu
ZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3MTQ1MykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTExLTA1ICBDaHJpcyBHdWlsbG9yeSAgPGNo
cmlzLmd1aWxsb3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW5jbHVkZSB0aGUgRnJhbWVWaWV3IHdpZGdldCBvZiBhIFJlbmRl
cldpZGdldCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxMDYKKyAgICAgICAgCisgICAgICAgIEZvciB3
aW5kb3dzIHVzZSBJQWNjZXNzaWJsZUNvbXBhcmFibGUgaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNFcXVhbAorICAgICAgICB0byBjb21wYXJlIGFjY2Vzc2liaWxpdHkgb2JqZWN0cyBmb3Ig
ZXF1YWxpdHkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRXaW4uY3BwOgorICAgICAgICAoY29tcGFyYWJsZU9iamVjdCk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKToKKwogMjAxMC0xMS0wNSAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaAkocmV2aXNpb24gNzEzNjIpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDEy
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwog
CisjaWYgUExBVEZPUk0oV0lOKQorICAgIGJvb2wgaXNFcXVhbChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiBvdGhlckVsZW1lbnQpOworI2Vsc2UKICAgICBib29sIGlzRXF1YWwoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCogb3RoZXJFbGVtZW50KSB7IHJldHVybiBwbGF0Zm9ybVVJRWxlbWVudCgpID09
IG90aGVyRWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKTsgfQotICAgIAorI2VuZGlmCisKICAg
ICB2b2lkIGdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
Jik7CiAgICAgdm9pZCBnZXREb2N1bWVudExpbmtzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiYpOwogICAgIHZvaWQgZ2V0Q2hpbGRyZW4oVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+Jik7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0
eVVJRWxlbWVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCShyZXZpc2lvbiA3MTM2MikKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTYgQEAKIAogdXNpbmcgc3RkOjp3c3Ry
aW5nOwogCitzdGF0aWMgQ09NUHRyPElBY2Nlc3NpYmxlQ29tcGFyYWJsZT4gY29tcGFyYWJsZU9i
amVjdChJQWNjZXNzaWJsZSogYWNjZXNzaWJsZSkKK3sKKyAgICBDT01QdHI8SVNlcnZpY2VQcm92
aWRlcj4gc2VydmljZVByb3ZpZGVyKFF1ZXJ5LCBhY2Nlc3NpYmxlKTsKKyAgICBpZiAoIXNlcnZp
Y2VQcm92aWRlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQ09NUHRyPElBY2Nlc3NpYmxlQ29t
cGFyYWJsZT4gY29tcGFyYWJsZTsKKyAgICBzZXJ2aWNlUHJvdmlkZXItPlF1ZXJ5U2VydmljZShT
SURfQWNjZXNzaWJsZUNvbXBhcmFibGUsIF9fdXVpZG9mKElBY2Nlc3NpYmxlQ29tcGFyYWJsZSks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmY29tcGFyYWJsZSkpOworICAgIHJldHVybiBjb21w
YXJhYmxlOworfQorCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkK
IHsKQEAgLTQ5LDYgKzU5LDE4IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmls
aXR5VUkKIHsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKK3sKKyAgICBDT01QdHI8SUFjY2Vzc2li
bGVDb21wYXJhYmxlPiBjb21wYXJhYmxlID0gY29tcGFyYWJsZU9iamVjdChtX2VsZW1lbnQuZ2V0
KCkpOworICAgIENPTVB0cjxJQWNjZXNzaWJsZUNvbXBhcmFibGU+IG90aGVyQ29tcGFyYWJsZSA9
IGNvbXBhcmFibGVPYmplY3Qob3RoZXJFbGVtZW50LT5tX2VsZW1lbnQuZ2V0KCkpOworICAgIGlm
ICghY29tcGFyYWJsZSB8fCAhb3RoZXJDb21wYXJhYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgQk9PTCBpc1NhbWUgPSBGQUxTRTsKKyAgICBpZiAoRkFJTEVEKGNvbXBhcmFibGUtPmlz
U2FtZU9iamVjdChvdGhlckNvbXBhcmFibGUuZ2V0KCksICZpc1NhbWUpKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBpc1NhbWU7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4mKQogewogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzE0NTMpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMS0wNSAgQ2hyaXMg
R3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIEZyYW1lVmlldyB3aWRn
ZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA2CisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMTEtMDUgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpJbmRl
eDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMt
ZG9jdW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMSBAQAorCitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgaWZyYW1lJ3MgZG9jdW1l
bnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1haW4gQVggdHJlZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgcGFyZW50SWZyYW1lRG9jdW1lbnQuaXNFcXVhbChpZnJhbWUpIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9j
dW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZy
YW1lLWhhcy1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD4KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxz
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworICAgIDxpZnJh
bWUgaWQ9J2lmcmFtZTEnIHNyYz0ncmVzb3VyY2VzL2Nha2UucG5nJz48L2lmcmFtZT4KKworPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgaWZyYW1lJ3Mg
ZG9jdW1lbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1haW4gQVggdHJlZS4iKTsKKworICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5m
b2N1cygpOworICAgICAgICB2YXIgYm9keSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OworICAgICAgICB2YXIgcmVuZGVyQmxvY2sgPSBib2R5LmNoaWxkQXRJbmRleCgw
KTsKKyAgICAgICAgdmFyIGlmcmFtZSA9IHJlbmRlckJsb2NrLmNoaWxkQXRJbmRleCgwKTsKKyAg
ICAgICAgdmFyIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNoaWxkQXRJbmRleCgwKTsKKyAgICAg
ICAgCisgICAgICAgIHZhciBwYXJlbnRJZnJhbWVEb2N1bWVudCA9IGlmcmFtZURvY3VtZW50LnBh
cmVudEVsZW1lbnQoKTsKKyAgICAgICAgCisgICAgICAgIHNob3VsZEJlKCJwYXJlbnRJZnJhbWVE
b2N1bWVudC5pc0VxdWFsKGlmcmFtZSkiLCAidHJ1ZSIpOworICAgIH0KKworICAgIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gNzEzNjIpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDkgKzMwNiw2
IEBAIGZhc3QvZXZlbnRzL2RyYWdnaW5nLW1vdXNlLW1vdmVzLmh0bWwKICMgQ3Jhc2ggYmVuZWF0
aCBTb2NrZXRTdHJlYW06OnJlYWRTdHJlYW1DYWxsYmFjayBodHRwOi8vd2Via2l0Lm9yZy9iLzQ0
MTM4CiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy93b3JrZXJzL3dvcmtlci1oYW5kc2hha2Ut
Y2hhbGxlbmdlLXJhbmRvbW5lc3MuaHRtbAogCi0jIGh0dHA6Ly93ZWJraXQub3JnL2IvNDY5MTEK
LWFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4tdXBkYXRlLmh0bWwKLQogIyBDYXVzZXMgbmV4dCB0
ZXN0IHRvIHRpbWUgb3V0IGh0dHA6Ly93ZWJraXQub3JnL2IvNDY5NzUKIGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtc3luYy12cy1hc3luYy1hc3NlcnRpb24tZmFpbHVy
ZS5odG1sCiAKQEAgLTQ4NCw3ICs0ODEsNiBAQCBhY2Nlc3NpYmlsaXR5L2J1dHRvbi1wcmVzcy1h
Y3Rpb24uaHRtbAogYWNjZXNzaWJpbGl0eS9jYW52YXMuaHRtbAogYWNjZXNzaWJpbGl0eS9kb2N1
bWVudC1hdHRyaWJ1dGVzLmh0bWwKIGFjY2Vzc2liaWxpdHkvZWRpdGFibGUtd2ViYXJlYS1jb250
ZXh0LW1lbnUtcG9pbnQuaHRtbAotYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRpb24u
aHRtbAogYWNjZXNzaWJpbGl0eS9pZ25vcmUtc3BhY2VyLWVsZW1lbnRzLmh0bWwKIGFjY2Vzc2li
aWxpdHkvaW1hZ2UtbGluay5odG1sCiBhY2Nlc3NpYmlsaXR5L2ltYWdlLW1hcDEuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73803</attachid>
            <date>2010-11-12 18:19:07 -0800</date>
            <delta_ts>2010-11-15 12:07:16 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>14332</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTk2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMTEtMTIgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEluY2x1ZGUgaUZyYW1lIGNoaWxkcmVu
IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUgZm9yIG5vdCBtYWMgd2Via2l0IHBvcnRzLgorCisg
ICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC5odG1sCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVuZGVyUGFyZW50T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWRkQ2hpbGRyZW4pOgorCiAyMDEwLTExLTEyICBKb3NlcGggUGVjb3Jhcm8gIDxq
b2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5
YWtvdi4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDcxODY1KQorKysgV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODQs
MTEgKzM4NCwxMiBAQCBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6CiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBtX3JlbmRlcmVy
LT5wYXJlbnQoKTsKKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2ZDb250cyA9IDA7CisgICAgUmVu
ZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gMDsKKyAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdl
dCA9IDA7CiAKICAgICAvLyBDYXNlIDE6IG5vZGUgaXMgYSBibG9jayBhbmQgaXMgYW4gaW5saW5l
J3MgY29udGludWF0aW9uLiBQYXJlbnQKICAgICAvLyBpcyB0aGUgc3RhcnQgb2YgdGhlIGNvbnRp
bnVhdGlvbiBjaGFpbi4KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2ZDb250cyA9IDA7Ci0gICAg
UmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gMDsKICAgICBpZiAobV9yZW5kZXJlci0+aXNSZW5k
ZXJCbG9jaygpICYmIChzdGFydE9mQ29udHMgPSBzdGFydE9mQ29udGludWF0aW9ucyhtX3JlbmRl
cmVyKSkpCiAgICAgICAgIHBhcmVudCA9IHN0YXJ0T2ZDb250czsKIApAQCAtNDA5LDcgKzQxMCwx
NCBAQCBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisjaWYgIVBMQVRGT1JNKE1BQykKKyAg
ICAvLyBDYXNlIDQ6IG5vZGUgaXMgYSBSZW5kZXJWaWV3IHdob3NlIEZyYW1lVmlldyBoYXMgYW4g
YXNzb2NpYXRlZCBSZW5kZXJXaWRnZXQuCisgICAgLy8gUGFyZW50IGlzIHRoZSBhc3NvY2lhdGVk
IFJlbmRlcldpZGdldC4KKyAgICAvLyBPbiB0aGUgbWFjIHBvcnQgdGhpcyBwYXJlbnQgbG9naWMg
aXMgaW4gQWNjZXNzaWJsZU9iamVjdFdyYXBwZXIubW0uCisgICAgfSBlbHNlIGlmICghcGFyZW50
ICYmIChyZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoZnJhbWVWaWV3SWZSZW5kZXJW
aWV3KCkpKSkgeworICAgICAgICBwYXJlbnQgPSByZW5kZXJXaWRnZXQ7CiAgICAgfQorI2VuZGlm
CiAgICAgICAgIAogICAgIHJldHVybiBwYXJlbnQ7CiB9CkBAIC0xODU4LDggKzE4NjYsMTkgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYgogICAgIH0KICAgICAKICAg
ICAvLyBtYWtlIGEgcGxhdGZvcm0tc3BlY2lmaWMgZGVjaXNpb24KLSAgICBpZiAoaXNBdHRhY2ht
ZW50KCkpCisgICAgaWYgKGlzQXR0YWNobWVudCgpKSB7CisjaWYgIVBMQVRGT1JNKE1BQykKKyAg
ICAgIC8vIGlnbm9yZSBpZnJhbWUgcmVuZGVyZXJzCisgICAgICAvLyBvbiB0aGUgbWFjIHBvcnQg
dGhpcyBsb2dpYyBpcyBpbiBBY2Nlc3NpYmxlT2JqZWN0V3JhcHBlci5tbS4KKyAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKKyAgICAgIGlmICh3aWRnZXQg
JiYgd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7CisgICAgICAgICAgRnJhbWUqIGZyYW1lID0gc3Rh
dGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KS0+ZnJhbWUoKTsKKyAgICAgICAgICBpZiAoZnJh
bWUgJiYgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlnbm9yZUF0
dGFjaG1lbnQoKTsKKyAgICB9CiAgICAgCiAgICAgcmV0dXJuICFtX3JlbmRlcmVyLT5pc0xpc3RN
YXJrZXIoKSAmJiAhaXNXZWJBcmVhKCk7CiB9CkBAIC0zMzU4LDYgKzMzNzcsMjIgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZAogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQorCisjaWYgIVBMQVRGT1JNKE1BQykKKyAgICAvLyBmb3IgUmVuZGVyV2lkZ2V0
LCBhZGQgZnJhbWUncyBjb250ZW50IHJlbmRlcmVyIGlmIHRoZSB3aWRnZXQgaXMgYSBGcmFtd1Zp
ZXcuCisgICAgLy8gb24gdGhlIG1hYyBwb3J0IHRoaXMgY2hpbGRyZW4gbG9naWMgaXMgaW4gQWNj
ZXNzaWJsZU9iamVjdFdyYXBwZXIubW0uCisgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JB
dHRhY2htZW50VmlldygpOworICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5pc0ZyYW1lVmlldygp
KSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdl
dCktPmZyYW1lKCk7CisgICAgICAgIGlmIChmcmFtZSkgeworICAgICAgICAgICAgUmVuZGVyVmll
dyogcmVuZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlm
IChyZW5kZXJWaWV3KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2NoaWxkcmVuLnNpemUo
KSk7CisgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShyZW5kZXJWaWV3KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYKIH0KICAgICAgICAgCiBjb25zdCBBdG9taWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9uU3RhdHVzKCkgY29uc3QKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzE5NjApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTEtMTIgIENocmlzIEd1aWxsb3J5ICA8Y2hy
aXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVy
V2lkZ2V0IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgICogcHVibGljL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVxdWFscyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdCk6
CisKIDIwMTAtMTEtMTIgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA3MTg2NSkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIFdFQktJVF9BUEkgdm9p
ZCByZXNldCgpOwogICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdCYpOworICAgIFdFQktJVF9BUEkgYm9vbCBlcXVhbHMoY29uc3QgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9wcml2YXRlOyB9CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gNzE4NjUpCisrKyBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2
NSwxMSBAQCB2b2lkIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFzc2lnbihjb25zCiAgICAgYXNz
aWduKHApOwogfQogCitib29sIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVxdWFscyhjb25zdCBX
ZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG90aGVyKSBjb25zdAoreworICAgIHJldHVy
biAobV9wcml2YXRlID09IG90aGVyLm1fcHJpdmF0ZSk7Cit9CisKIFdlYlN0cmluZyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdAogewogICAg
IGlmICghbV9wcml2YXRlKQpAQCAtMTc4LDcgKzE4Myw3IEBAIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QgV2ViQWNjZXNzaWJpbGl0eU8KICAgICAgICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QoKTsKIAogICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgcmV0dXJu
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QobV9wcml2YXRlLT5wYXJlbnRPYmplY3QoKSk7CisgICAg
cmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QobV9wcml2YXRlLT5wYXJlbnRPYmplY3RVbmln
bm9yZWQoKSk7CiB9CiAKIApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzE5NjApCisrKyBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMS0xMiAg
Q2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIEZyYW1lVmll
dyB3aWRnZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA2CisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxi
YWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudENhbGxiYWNr
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWxDYWxsYmFjayk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwOgor
ICAgICAgICAoQ3BwQm91bmRDbGFzczo6Z2V0RnJvbUNwcFZhcmlhbnQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuaDoKKwogMjAxMC0xMS0xMiAgRGly
ayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBK
YW1lcyBSb2JpbnNvbi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lv
biA3MTg2NSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiArMzA0LDcgQEAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRQogICAgIGJpbmRNZXRob2QoInBh
cmVudEVsZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxi
YWNrKTsKICAgICBiaW5kTWV0aG9kKCJpbmNyZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aW5jcmVtZW50Q2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoImRlY3JlbWVudCIsICZBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnRDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgi
aXNFcXVhbCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2spOwogCiAg
ICAgYmluZFByb3BlcnR5KCJyb2xlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVHZXR0
ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJzdWJyb2xlIiwgJm1fc3Vicm9sZSk7CkBA
IC00OTAsNyArNDkxLDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25T
dXAKIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50Q2FsbGJhY2so
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHBhcmVudCA9IG1fZmFj
dG9yeS0+Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QoKS5wYXJlbnRPYmplY3QoKSk7CisgICAg
aWYgKHBhcmVudCkKKyAgICAgICAgcmVzdWx0LT5zZXQoKihwYXJlbnQtPmdldEFzQ3BwVmFyaWFu
dCgpKSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQtPnNldE51bGwoKTsgICAgICAgIAogfQog
CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudENhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTUwMyw2ICs1MDgsMTUgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnRDYQogICAgIHJlc3VsdC0+c2V0
TnVsbCgpOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWxDYWxsYmFj
ayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIGJvb2wgZXF1YWwgPSBmYWxzZTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBl
bGVtZW50ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+KENwcEJvdW5kQ2xh
c3M6OmdldEZyb21DcHBWYXJpYW50KGFyZ3VtZW50c1swXSkpOworICAgIGlmIChlbGVtZW50KQor
ICAgICAgICBlcXVhbCA9IGFjY2Vzc2liaWxpdHlPYmplY3QoKS5lcXVhbHMoZWxlbWVudC0+YWNj
ZXNzaWJpbGl0eU9iamVjdCgpKTsKKyAgICByZXN1bHQtPnNldChlcXVhbCk7Cit9CisKIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QgJiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcy4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDcxODY1KQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
YXJlbnRFbGVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgaW5jcmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogICAgIHZvaWQgZGVjcmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgaXNFcXVhbENhbGxiYWNrKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBjaGlsZHJlbkNv
dW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5jcHAJKHJldmlzaW9u
IDcxODY1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRD
bGFzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNCw2ICszMjQsMTggQEAgYm9vbCBDcHBCb3Vu
ZENsYXNzOjppc01ldGhvZFJlZ2lzdGVyZWQoYwogICAgIHJldHVybiBjYWxsYmFjayAhPSBtX21l
dGhvZHMuZW5kKCk7CiB9CiAKKy8vIHN0YXRpYworQ3BwQm91bmRDbGFzcyogQ3BwQm91bmRDbGFz
czo6Z2V0RnJvbUNwcFZhcmlhbnQoY29uc3QgQ3BwVmFyaWFudCYgdmFsdWUpCit7CisgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBOUE9iamVjdCogbnBP
YmogPSBOUFZBUklBTlRfVE9fT0JKRUNUKHZhbHVlKTsKKyAgICBpZiAoIW5wT2JqIHx8IG5wT2Jq
LT5fY2xhc3MgIT0gJkNwcE5QT2JqZWN0OjpucENsYXNzKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBDcHBOUE9iamVjdCogb2JqID0gcmVpbnRlcnByZXRfY2FzdDxDcHBOUE9iamVjdCo+KG5wT2Jq
KTsKKyAgICByZXR1cm4gb2JqLT5ib3VuZENsYXNzOworfQorCiBDcHBWYXJpYW50KiBDcHBCb3Vu
ZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQoKQogewogICAgIGlmICghbV9zZWxmVmFyaWFudC5pc09i
amVjdCgpKSB7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBC
b3VuZENsYXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vQ3BwQm91bmRDbGFzcy5oCShyZXZpc2lvbiA3MTg2NSkKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNiArODUsMTAgQEAgcHVibGljOgogICAgIENwcEJvdW5kQ2xhc3MoKSA6IG1fYm91bmRUb0Zy
YW1lKGZhbHNlKSB7fQogICAgIHZpcnR1YWwgfkNwcEJvdW5kQ2xhc3MoKTsKIAorICAgIC8vIFJl
dHVybiB0aGUgQ3BwQm91bmRDbGFzcyBib3VuZCB0byBhIENwcFZhcmlhbnQgaWYgaXQgZXhpc3Rz
LiBSZXR1cm5zIG51bGwKKyAgICAvLyBvdGhlcndpc2UuCisgICAgc3RhdGljIENwcEJvdW5kQ2xh
c3MqIGdldEZyb21DcHBWYXJpYW50KGNvbnN0IENwcFZhcmlhbnQmKTsKKwogICAgIC8vIFJldHVy
biBhIENwcFZhcmlhbnQgcmVwcmVzZW50aW5nIHRoaXMgY2xhc3MsIGZvciB1c2Ugd2l0aCBCaW5k
UHJvcGVydHkoKS4KICAgICAvLyBUaGUgdmFyaWFudCB0eXBlIGlzIGd1YXJhbnRlZWQgdG8gYmUg
TlBWYXJpYW50VHlwZV9PYmplY3QuCiAgICAgQ3BwVmFyaWFudCogZ2V0QXNDcHBWYXJpYW50KCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MTk2MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTExLTEyICBDaHJpcyBHdWlsbG9yeSAg
PGNocmlzLmd1aWxsb3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5jbHVkZSB0aGUgRnJhbWVWaWV3IHdpZGdldCBvZiBhIFJl
bmRlcldpZGdldCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxMDYKKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0xMS0xMiAgVG9ueSBDaGFuZyAgPHRvbnlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydCBjaGFuZ2VzIHRvIHNj
cmlwdC1vYmplY3QtaW52b2tlIHRoYXQgY3Jhc2gKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1
bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKworVGhpcyB0
ZXN0IG1ha2VzIHN1cmUgdGhlIGlmcmFtZSdzIGRvY3VtZW50IGlzIGluY2x1ZGVkIGluIHRoZSBt
YWluIEFYIHRyZWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhcmVu
dElmcmFtZURvY3VtZW50LmlzRXF1YWwocmVuZGVyQmxvY2spIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCisgICAgPGlmcmFtZSBpZD0naWZy
YW1lMScgc3JjPSdyZXNvdXJjZXMvY2FrZS5wbmcnPjwvaWZyYW1lPgorCis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoZSBpZnJhbWUncyBkb2N1bWVudCBp
cyBpbmNsdWRlZCBpbiB0aGUgbWFpbiBBWCB0cmVlLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7Cisg
ICAgICAgIHZhciBib2R5ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7
CisgICAgICAgIHZhciByZW5kZXJCbG9jayA9IGJvZHkuY2hpbGRBdEluZGV4KDApOworICAgICAg
ICB2YXIgaWZyYW1lRG9jdW1lbnQgPSByZW5kZXJCbG9jay5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgIAorICAgICAgICB2YXIgcGFyZW50SWZyYW1lRG9jdW1lbnQgPSBpZnJhbWVEb2N1bWVudC5w
YXJlbnRFbGVtZW50KCk7CisgICAgICAgIAorICAgICAgICBzaG91bGRCZSgicGFyZW50SWZyYW1l
RG9jdW1lbnQuaXNFcXVhbChyZW5kZXJCbG9jaykiLCAidHJ1ZSIpOworICAgIH0KKworICAgIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQJKHJldmlzaW9uIDcxODY1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw5ICszODAsNiBAQCBmYXN0L3dvcmtlcnMvc3RvcmFn
ZS9jaGFuZ2UtdmVyc2lvbi1oYW5kCiAjIFNvbWV0aW1lcyBmYWlscyBodHRwOi8vd2Via2l0Lm9y
Zy9iLzQ5MTgyCiBhbmltYXRpb25zL3N0b3AtYW5pbWF0aW9uLW9uLXN1c3BlbmQuaHRtbAogCi0j
IENyYXNoaW5nIGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQgaHR0cDov
L3dlYmtpdC5vcmcvYi80OTM3OQotYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRpb24u
aHRtbAotCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg
Tm8gYnVncyBmaWxlZCBhYm91dCB0aGUgYmVsb3cgeWV0IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCg==
</data>
<flag name="review"
          id="64307"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73921</attachid>
            <date>2010-11-15 12:07:16 -0800</date>
            <delta_ts>2010-11-18 13:53:34 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>14682</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjAxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTUgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEluY2x1ZGUgaUZyYW1lIGNoaWxkcmVu
IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUgZm9yIG5vdCBtYWMgd2Via2l0IHBvcnRzLgorCisg
ICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC5odG1sCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVuZGVyUGFyZW50T2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENo
aWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FjY2Vzc2liaWxpdHlP
YmplY3RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCk6CisKIDIwMTAtMTEtMTIgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlk
c29uLgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNzE4NjUpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCwx
MSArMzg0LDEyIEBAIFJlbmRlck9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDoKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudCA9IG1fcmVuZGVyZXIt
PnBhcmVudCgpOworICAgIFJlbmRlck9iamVjdCogc3RhcnRPZkNvbnRzID0gMDsKKyAgICBSZW5k
ZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSAwOworICAgIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0
ID0gMDsKIAogICAgIC8vIENhc2UgMTogbm9kZSBpcyBhIGJsb2NrIGFuZCBpcyBhbiBpbmxpbmUn
cyBjb250aW51YXRpb24uIFBhcmVudAogICAgIC8vIGlzIHRoZSBzdGFydCBvZiB0aGUgY29udGlu
dWF0aW9uIGNoYWluLgotICAgIFJlbmRlck9iamVjdCogc3RhcnRPZkNvbnRzID0gMDsKLSAgICBS
ZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSAwOwogICAgIGlmIChtX3JlbmRlcmVyLT5pc1JlbmRl
ckJsb2NrKCkgJiYgKHN0YXJ0T2ZDb250cyA9IHN0YXJ0T2ZDb250aW51YXRpb25zKG1fcmVuZGVy
ZXIpKSkKICAgICAgICAgcGFyZW50ID0gc3RhcnRPZkNvbnRzOwogCkBAIC00MDksNyArNDEwLDEz
IEBAIFJlbmRlck9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDoKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9CisjaWYgIVBMQVRGT1JNKE1B
QykKKyAgICAvLyBDYXNlIDQ6IFRoZWUgbm9kZSBpcyBhIFJlbmRlclZpZXcgd2hvc2UgRnJhbWVW
aWV3IGhhcyBhbiBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAgICAvLyBUaGUgcGFyZW50IGlz
IHRoZSBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAgICAvLyBPbiB0aGUgbWFjIHBvcnQgdGhp
cyBwYXJlbnQgbG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0uCisgICAg
fSBlbHNlIGlmICghcGFyZW50ICYmIChyZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQo
ZnJhbWVWaWV3SWZSZW5kZXJWaWV3KCkpKSkKKyAgICAgICAgcGFyZW50ID0gcmVuZGVyV2lkZ2V0
OworI2VuZGlmCiAgICAgICAgIAogICAgIHJldHVybiBwYXJlbnQ7CiB9CkBAIC0zMzU4LDYgKzMz
NjUsMjIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZAogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisjaWYgIVBMQVRGT1JNKE1BQykKKyAgICAvLyBG
b3IgUmVuZGVyV2lkZ2V0LCBhZGQgZnJhbWUncyBjb250ZW50IHJlbmRlcmVyIGlmIHRoZSB3aWRn
ZXQgaXMgYSBGcmFtZVZpZXcuCisgICAgLy8gT24gdGhlIG1hYyBwb3J0IHRoaXMgY2hpbGRyZW4g
bG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0uCisgICAgV2lkZ2V0KiB3
aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOworICAgIGlmICh3aWRnZXQgJiYgd2lk
Z2V0LT5pc0ZyYW1lVmlldygpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0
PEZyYW1lVmlldyo+KHdpZGdldCktPmZyYW1lKCk7CisgICAgICAgIGlmIChmcmFtZSkgeworICAg
ICAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KCFtX2NoaWxkcmVuLnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQo
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJWaWV3KSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KICAgICAgICAgCiBjb25zdCBBdG9taWNTdHJp
bmcmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9uU3RhdHVzKCkgY29u
c3QKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJv
bWl1bS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MTg2NSkKKysr
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21p
dW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMjIgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIldpZGdldC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eUlnbm9yZUF0dGFjaG1lbnQoKSBjb25zdAogeworICAgIC8vIElnbm9yZSBpZnJhbWUgcmVuZGVy
ZXJzIHRoYXQgaGF2ZSBhIGNvbnRlbnQgcmVuZGVyZXIuCisgICAgV2lkZ2V0KiB3aWRnZXQgPSB3
aWRnZXRGb3JBdHRhY2htZW50VmlldygpOworICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5pc0Zy
YW1lVmlldygpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEZyYW1lVmll
dyo+KHdpZGdldCktPmZyYW1lKCk7CisgICAgICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzIwMTgpCisrKyBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTAtMTEtMTUgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIHRo
ZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGluIHRoZSBhY2Nlc3NpYmlsaXR5
IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
OTEwNgorCisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAg
ICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVxdWFscyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVjdCk6CisKIDIwMTAtMTEtMTUgIElseWEgU2hlcm1h
biAgPGlzaGVybWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRh
bXVyYS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiA3MTg2NSkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQktJVF9BUEkgdm9pZCByZXNldCgpOwogICAgIFdFQktJVF9BUEkgdm9p
ZCBhc3NpZ24oY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOworICAgIFdFQktJVF9BUEkg
Ym9vbCBlcXVhbHMoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9CiAKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24g
NzE4NjUpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxMSBAQCB2b2lkIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFzc2lnbihjb25zCiAgICAgYXNzaWduKHApOwogfQogCitib29sIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmVxdWFscyhjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Qm
IG90aGVyKSBjb25zdAoreworICAgIHJldHVybiAobV9wcml2YXRlID09IG90aGVyLm1fcHJpdmF0
ZSk7Cit9CisKIFdlYlN0cmluZyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5
RGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIGlmICghbV9wcml2YXRlKQpAQCAtMTc4LDcgKzE4
Myw3IEBAIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QgV2ViQWNjZXNzaWJpbGl0eU8KICAgICAgICAg
cmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoKTsKIAogICAgIG1fcHJpdmF0ZS0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7Ci0gICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QobV9wcml2
YXRlLT5wYXJlbnRPYmplY3QoKSk7CisgICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qo
bV9wcml2YXRlLT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7CiB9CiAKIApJbmRleDogV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gNzIwMTgpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAxMC0xMS0xNSAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9y
eUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluY2x1ZGUgdGhlIEZyYW1lVmlldyB3aWRnZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4g
dGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MTA2CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmRlY3JlbWVudENhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzRXF1YWxDYWxsYmFjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwOgorICAgICAgICAoQ3BwQm91bmRDbGFzczo6Z2V0RnJv
bUNwcFZhcmlhbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5k
Q2xhc3MuaDoKKwogMjAxMC0xMS0xNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxh
aW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4
OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gNzE4NjUpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA0LDYgKzMwNCw3IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OkFjY2Vzc2liaWxpdHlVSUUKICAgICBiaW5kTWV0aG9kKCJwYXJlbnRFbGVtZW50IiwgJkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnRDYWxsYmFjayk7CiAgICAgYmluZE1ldGhv
ZCgiaW5jcmVtZW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudENhbGxiYWNr
KTsKICAgICBiaW5kTWV0aG9kKCJkZWNyZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGVjcmVtZW50Q2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoImlzRXF1YWwiLCAmQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNFcXVhbENhbGxiYWNrKTsKIAogICAgIGJpbmRQcm9wZXJ0eSgicm9s
ZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlR2V0dGVyQ2FsbGJhY2spOwogICAgIGJp
bmRQcm9wZXJ0eSgic3Vicm9sZSIsICZtX3N1YnJvbGUpOwpAQCAtNDkwLDcgKzQ5MSwxMSBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwCiAKIHZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBwYXJlbnQgPSBtX2ZhY3RvcnktPmNyZWF0ZShhY2Nlc3Np
YmlsaXR5T2JqZWN0KCkucGFyZW50T2JqZWN0KCkpOworICAgIGlmIChwYXJlbnQpCisgICAgICAg
IHJlc3VsdC0+c2V0KCoocGFyZW50LT5nZXRBc0NwcFZhcmlhbnQoKSkpOworICAgIGVsc2UKKyAg
ICAgICAgcmVzdWx0LT5zZXROdWxsKCk7ICAgICAgICAKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbmNyZW1lbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50KiByZXN1bHQpCkBAIC01MDMsNiArNTA4LDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZGVjcmVtZW50Q2EKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAordm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBib29sIGVxdWFsID0g
ZmFsc2U7CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqPihDcHBCb3VuZENsYXNzOjpnZXRGcm9tQ3BwVmFyaWFu
dChhcmd1bWVudHNbMF0pKTsKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgZXF1YWwgPSBhY2Nl
c3NpYmlsaXR5T2JqZWN0KCkuZXF1YWxzKGVsZW1lbnQtPmFjY2Vzc2liaWxpdHlPYmplY3QoKSk7
CisgICAgcmVzdWx0LT5zZXQoZXF1YWwpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0ICYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCkluZGV4OiBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiA3MTg2NSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtODIsNiArODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyZW50RWxlbWVudENhbGxiYWNr
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGluY3JlbWVu
dENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lk
IGRlY3JlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KyAgICB2b2lkIGlzRXF1YWxDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CiAgICAgdm9pZCBmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKIAogICAgIHZvaWQgY2hpbGRyZW5Db3VudEdldHRlckNhbGxiYWNrKENw
cFZhcmlhbnQqKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0Nw
cEJvdW5kQ2xhc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwCShyZXZpc2lvbiA3MTg2NSkKKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjQsNiArMzI0LDE4IEBAIGJvb2wgQ3BwQm91bmRDbGFzczo6aXNNZXRob2RSZWdp
c3RlcmVkKGMKICAgICByZXR1cm4gY2FsbGJhY2sgIT0gbV9tZXRob2RzLmVuZCgpOwogfQogCisv
LyBzdGF0aWMKK0NwcEJvdW5kQ2xhc3MqIENwcEJvdW5kQ2xhc3M6OmdldEZyb21DcHBWYXJpYW50
KGNvbnN0IENwcFZhcmlhbnQmIHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgTlBPYmplY3QqIG5wT2JqID0gTlBWQVJJQU5UX1RPX09C
SkVDVCh2YWx1ZSk7CisgICAgaWYgKCFucE9iaiB8fCBucE9iai0+X2NsYXNzICE9ICZDcHBOUE9i
amVjdDo6bnBDbGFzcykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQ3BwTlBPYmplY3QqIG9iaiA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q3BwTlBPYmplY3QqPihucE9iaik7CisgICAgcmV0dXJuIG9iai0+
Ym91bmRDbGFzczsKK30KKwogQ3BwVmFyaWFudCogQ3BwQm91bmRDbGFzczo6Z2V0QXNDcHBWYXJp
YW50KCkKIHsKICAgICBpZiAoIW1fc2VsZlZhcmlhbnQuaXNPYmplY3QoKSkgewpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3Mu
aAkocmV2aXNpb24gNzE4NjUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9DcHBCb3VuZENsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDEwIEBAIHB1Ymxp
YzoKICAgICBDcHBCb3VuZENsYXNzKCkgOiBtX2JvdW5kVG9GcmFtZShmYWxzZSkge30KICAgICB2
aXJ0dWFsIH5DcHBCb3VuZENsYXNzKCk7CiAKKyAgICAvLyBSZXR1cm4gdGhlIENwcEJvdW5kQ2xh
c3MgYm91bmQgdG8gYSBDcHBWYXJpYW50IGlmIGl0IGV4aXN0cy4gUmV0dXJucyBudWxsCisgICAg
Ly8gb3RoZXJ3aXNlLgorICAgIHN0YXRpYyBDcHBCb3VuZENsYXNzKiBnZXRGcm9tQ3BwVmFyaWFu
dChjb25zdCBDcHBWYXJpYW50Jik7CisKICAgICAvLyBSZXR1cm4gYSBDcHBWYXJpYW50IHJlcHJl
c2VudGluZyB0aGlzIGNsYXNzLCBmb3IgdXNlIHdpdGggQmluZFByb3BlcnR5KCkuCiAgICAgLy8g
VGhlIHZhcmlhbnQgdHlwZSBpcyBndWFyYW50ZWVkIHRvIGJlIE5QVmFyaWFudFR5cGVfT2JqZWN0
LgogICAgIENwcFZhcmlhbnQqIGdldEFzQ3BwVmFyaWFudCgpOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzIwMTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMC0xMS0xNSAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluY2x1ZGUgdGhlIEZyYW1lVmlldyB3aWRnZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4gdGhlIGFj
Y2Vzc2liaWxpdHkgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5MTA2CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9j
dW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lmcmFt
ZS1oYXMtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBw
ZWQ6CisKIDIwMTAtMTEtMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIE5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIEFQSSBuZWVkcyB0
byBpbmNsdWRlIHRoZSBET00gbm9kZSB0aGF0IHRoZSBkZWNpc2lvbiBvcmlnaW5hdGVkIGZyb20K
SW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUt
aGFzLWRvY3VtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTEgQEAKKworVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGlmcmFtZSdzIGRv
Y3VtZW50IGlzIGluY2x1ZGVkIGluIHRoZSBtYWluIEFYIHRyZWUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHBhcmVudElmcmFtZURvY3VtZW50LmlzRXF1YWwoaWZyYW1l
KSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFz
LWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IGZhbHNlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHki
PgorCisgICAgPGlmcmFtZSBpZD0naWZyYW1lMScgc3JjPSdyZXNvdXJjZXMvY2FrZS5wbmcnPjwv
aWZyYW1lPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJl
IHRoZSBpZnJhbWUncyBkb2N1bWVudCBpcyBpbmNsdWRlZCBpbiB0aGUgbWFpbiBBWCB0cmVlLiIp
OworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBk
b2N1bWVudC5ib2R5LmZvY3VzKCk7CisgICAgICAgIHZhciBib2R5ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciByZW5kZXJCbG9jayA9IGJvZHku
Y2hpbGRBdEluZGV4KDApOworICAgICAgICB2YXIgaWZyYW1lID0gcmVuZGVyQmxvY2suY2hpbGRB
dEluZGV4KDApOworICAgICAgICB2YXIgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY2hpbGRBdElu
ZGV4KDApOworICAgICAgICAKKyAgICAgICAgdmFyIHBhcmVudElmcmFtZURvY3VtZW50ID0gaWZy
YW1lRG9jdW1lbnQucGFyZW50RWxlbWVudCgpOworICAgICAgICAKKyAgICAgICAgc2hvdWxkQmUo
InBhcmVudElmcmFtZURvY3VtZW50LmlzRXF1YWwoaWZyYW1lKSIsICJ0cnVlIik7CisgICAgfQor
CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vU2tpcHBlZAkocmV2aXNpb24gNzE4NjUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDkgKzM4MCw2IEBAIGZhc3Qvd29ya2Vy
cy9zdG9yYWdlL2NoYW5nZS12ZXJzaW9uLWhhbmQKICMgU29tZXRpbWVzIGZhaWxzIGh0dHA6Ly93
ZWJraXQub3JnL2IvNDkxODIKIGFuaW1hdGlvbnMvc3RvcC1hbmltYXRpb24tb24tc3VzcGVuZC5o
dG1sCiAKLSMgQ3Jhc2hpbmcgaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVu
dCBodHRwOi8vd2Via2l0Lm9yZy9iLzQ5Mzc5Ci1hY2Nlc3NpYmlsaXR5L2lmcmFtZS1iYXN0YXJk
aXphdGlvbi5odG1sCi0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyBObyBidWdzIGZpbGVkIGFib3V0IHRoZSBiZWxvdyB5ZXQjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
</data>
<flag name="review"
          id="64449"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74289</attachid>
            <date>2010-11-18 13:53:34 -0800</date>
            <delta_ts>2010-11-19 15:10:13 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>15600</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjMyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTEtMTggIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEluY2x1ZGUgcmVuZGVyIHdpZGdldCBj
aGlsZHJlbiBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIGZvciBub3QgbWFjIHdlYmtpdCBwb3J0
cy4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlclBh
cmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRSZW5kZXJXaWRnZXRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9jaHJv
bWl1bS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQpOgorCiAy
MDEwLTExLTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNzIzMjYp
CisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4NCwxMSArMzg0LDEyIEBAIFJlbmRlck9iamVjdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDoKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZW5kZXJPYmpl
Y3QqIHBhcmVudCA9IG1fcmVuZGVyZXItPnBhcmVudCgpOworICAgIFJlbmRlck9iamVjdCogc3Rh
cnRPZkNvbnRzID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSAwOworICAgIFJl
bmRlcldpZGdldCogcmVuZGVyV2lkZ2V0ID0gMDsKIAogICAgIC8vIENhc2UgMTogbm9kZSBpcyBh
IGJsb2NrIGFuZCBpcyBhbiBpbmxpbmUncyBjb250aW51YXRpb24uIFBhcmVudAogICAgIC8vIGlz
IHRoZSBzdGFydCBvZiB0aGUgY29udGludWF0aW9uIGNoYWluLgotICAgIFJlbmRlck9iamVjdCog
c3RhcnRPZkNvbnRzID0gMDsKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSAwOwogICAg
IGlmIChtX3JlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgJiYgKHN0YXJ0T2ZDb250cyA9IHN0YXJ0
T2ZDb250aW51YXRpb25zKG1fcmVuZGVyZXIpKSkKICAgICAgICAgcGFyZW50ID0gc3RhcnRPZkNv
bnRzOwogCkBAIC00MDksNyArNDEwLDEzIEBAIFJlbmRlck9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICB9CisjaWYgIVBMQVRGT1JNKE1BQykKKyAgICAvLyBDYXNlIDQ6IFRoZWUgbm9kZSBpcyBh
IFJlbmRlclZpZXcgd2hvc2UgRnJhbWVWaWV3IGhhcyBhbiBhc3NvY2lhdGVkIFJlbmRlcldpZGdl
dC4KKyAgICAvLyBUaGUgcGFyZW50IGlzIHRoZSBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAg
ICAvLyBPbiB0aGUgbWFjIHBvcnQgdGhpcyBwYXJlbnQgbG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0uCisgICAgfSBlbHNlIGlmICghcGFyZW50ICYmIChyZW5kZXJXaWRn
ZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoZnJhbWVWaWV3SWZSZW5kZXJWaWV3KCkpKSkKKyAgICAg
ICAgcGFyZW50ID0gcmVuZGVyV2lkZ2V0OworI2VuZGlmCiAgICAgICAgIAogICAgIHJldHVybiBw
YXJlbnQ7CiB9CkBAIC0zMzU4LDYgKzMzNjUsMjcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAg
YWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4oKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRSZW5kZXJXaWRnZXRDaGlsZHJlbigpCit7CisjaWYgIVBMQVRGT1JNKE1BQykK
KyAgICAvLyBGb3IgUmVuZGVyV2lkZ2V0LCBhZGQgZnJhbWUncyBjb250ZW50IHJlbmRlcmVyIGlm
IHRoZSB3aWRnZXQgaXMgYSBGcmFtZVZpZXcuCisgICAgLy8gT24gdGhlIG1hYyBwb3J0IHRoaXMg
Y2hpbGRyZW4gbG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0uCisgICAg
V2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOworICAgIGlmICh3aWRn
ZXQgJiYgd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0
YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCktPmZyYW1lKCk7CisgICAgICAgIGlmIChmcmFt
ZSkgeworICAgICAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKCFtX2NoaWxkcmVuLnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQoYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJWaWV3KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KICAgICAgICAgCiBjb25zdCBB
dG9taWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9uU3Rh
dHVzKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNzIzMjYpCisrKyBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjks
NiArMjY5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29u
c3QgeyByZXR1cm4gIW1fcmVuZGVyZXI7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGFkZFJlbmRl
cldpZGdldENoaWxkcmVuKCk7CiAgICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4o
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCBhcmlhTGlzdGJveFZpc2li
bGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICBib29sIGFyaWFJ
c0hpZGRlbigpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0Fj
Y2Vzc2liaWxpdHlPYmplY3RDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2Nocm9taXVtL0FjY2Vzc2liaWxpdHlPYmplY3RDaHJvbWl1bS5jcHAJKHJldmlz
aW9uIDcyMzI2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FjY2Vzc2liaWxp
dHlPYmplY3RDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwyNSBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiV2lk
Z2V0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0CiB7CisgICAgLy8gSWdub3Jl
IHJlbmRlciB3aWRnZXRzIHdpdGggYW4gYXR0YWNoZWQgUmVuZGVyVmlldyBiZWNhdXNlIHRoZXkg
aGF2ZQorICAgIC8vIG5vIHJvbGUgYW5kIGFyZSBub3QgdXNlZnVsIGluIHRoZSBhY2Nlc3NpYmls
aXR5IHRyZWUuCisgICAgLy8gT24gdGhlIG1hYyBwb3J0LCB0aGVzZSByZW5kZXIgd2lkZ2V0cyBh
cmUgaWdub3JlZCBieSBmb3J3YXJkaW5nCisgICAgLy8gY2FsbHMgdGhlIHRvIHRoZSBhdHRhY2hl
ZCB3aWRnZXQuCisgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50Vmlldygp
OworICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7CisgICAgICAgIEZy
YW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCktPmZyYW1lKCk7Cisg
ICAgICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNzIzMjcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTEtMTggIENocmlzIEd1aWxsb3J5
ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEg
UmVuZGVyV2lkZ2V0IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgICogcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVx
dWFscyk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9i
amVjdCk6CisKIDIwMTAtMTEtMTggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA3MjMy
NikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIFdFQktJVF9BUEkg
dm9pZCByZXNldCgpOwogICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdCYpOworICAgIFdFQktJVF9BUEkgYm9vbCBlcXVhbHMoY29uc3QgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9wcml2YXRlOyB9CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gNzIzMjYpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2
ICs2NSwxMSBAQCB2b2lkIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFzc2lnbihjb25zCiAgICAg
YXNzaWduKHApOwogfQogCitib29sIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVxdWFscyhjb25z
dCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG90aGVyKSBjb25zdAoreworICAgIHJl
dHVybiAobV9wcml2YXRlID09IG90aGVyLm1fcHJpdmF0ZSk7Cit9CisKIFdlYlN0cmluZyBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdAogewog
ICAgIGlmICghbV9wcml2YXRlKQpAQCAtMTc4LDcgKzE4Myw3IEBAIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QgV2ViQWNjZXNzaWJpbGl0eU8KICAgICAgICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QoKTsKIAogICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgcmV0
dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QobV9wcml2YXRlLT5wYXJlbnRPYmplY3QoKSk7Cisg
ICAgcmV0dXJuIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QobV9wcml2YXRlLT5wYXJlbnRPYmplY3RV
bmlnbm9yZWQoKSk7CiB9CiAKIApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzIzMjcpCisrKyBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMS0x
OCAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIEZyYW1l
VmlldyB3aWRnZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA2CisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENh
bGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudENhbGxi
YWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWxDYWxsYmFjayk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3Bw
OgorICAgICAgICAoQ3BwQm91bmRDbGFzczo6Z2V0RnJvbUNwcFZhcmlhbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuaDoKKwogMjAxMC0xMS0xOCAg
RGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBSb2Jlbi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MjMy
NikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiArMzA0LDcgQEAgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRQogICAgIGJpbmRNZXRob2QoInBhcmVudEVs
ZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxiYWNrKTsK
ICAgICBiaW5kTWV0aG9kKCJpbmNyZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5j
cmVtZW50Q2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoImRlY3JlbWVudCIsICZBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpkZWNyZW1lbnRDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiaXNFcXVh
bCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2spOwogCiAgICAgYmlu
ZFByb3BlcnR5KCJyb2xlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVHZXR0ZXJDYWxs
YmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJzdWJyb2xlIiwgJm1fc3Vicm9sZSk7CkBAIC00OTAs
NyArNDkxLDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXAKIAog
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50Q2FsbGJhY2soY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIHJlc3VsdC0+c2V0
TnVsbCgpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHBhcmVudCA9IG1fZmFjdG9yeS0+
Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QoKS5wYXJlbnRPYmplY3QoKSk7CisgICAgaWYgKHBh
cmVudCkKKyAgICAgICAgcmVzdWx0LT5zZXQoKihwYXJlbnQtPmdldEFzQ3BwVmFyaWFudCgpKSk7
CisgICAgZWxzZQorICAgICAgICByZXN1bHQtPnNldE51bGwoKTsgICAgICAgIAogfQogCiB2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTUwMyw2ICs1MDgsMTUgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnRDYQogICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWxDYWxsYmFjayhjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IGJvb2wgZXF1YWwgPSBmYWxzZTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+KENwcEJvdW5kQ2xhc3M6Omdl
dEZyb21DcHBWYXJpYW50KGFyZ3VtZW50c1swXSkpOworICAgIGlmIChlbGVtZW50KQorICAgICAg
ICBlcXVhbCA9IGFjY2Vzc2liaWxpdHlPYmplY3QoKS5lcXVhbHMoZWxlbWVudC0+YWNjZXNzaWJp
bGl0eU9iamVjdCgpKTsKKyAgICByZXN1bHQtPnNldChlcXVhbCk7Cit9CisKIHZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qg
JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDcyMzI2KQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJlbnRF
bGVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAg
IHZvaWQgaW5jcmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgZGVjcmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworICAgIHZvaWQgaXNFcXVhbENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBjaGlsZHJlbkNvdW50R2V0
dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5jcHAJKHJldmlzaW9uIDcyMzI2
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNCw2ICszMjQsMTggQEAgYm9vbCBDcHBCb3VuZENsYXNz
Ojppc01ldGhvZFJlZ2lzdGVyZWQoYwogICAgIHJldHVybiBjYWxsYmFjayAhPSBtX21ldGhvZHMu
ZW5kKCk7CiB9CiAKKy8vIHN0YXRpYworQ3BwQm91bmRDbGFzcyogQ3BwQm91bmRDbGFzczo6Z2V0
RnJvbUNwcFZhcmlhbnQoY29uc3QgQ3BwVmFyaWFudCYgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1
ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBOUE9iamVjdCogbnBPYmogPSBO
UFZBUklBTlRfVE9fT0JKRUNUKHZhbHVlKTsKKyAgICBpZiAoIW5wT2JqIHx8IG5wT2JqLT5fY2xh
c3MgIT0gJkNwcE5QT2JqZWN0OjpucENsYXNzKQorICAgICAgICByZXR1cm4gMDsKKyAgICBDcHBO
UE9iamVjdCogb2JqID0gcmVpbnRlcnByZXRfY2FzdDxDcHBOUE9iamVjdCo+KG5wT2JqKTsKKyAg
ICByZXR1cm4gb2JqLT5ib3VuZENsYXNzOworfQorCiBDcHBWYXJpYW50KiBDcHBCb3VuZENsYXNz
OjpnZXRBc0NwcFZhcmlhbnQoKQogewogICAgIGlmICghbV9zZWxmVmFyaWFudC5pc09iamVjdCgp
KSB7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENs
YXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
Q3BwQm91bmRDbGFzcy5oCShyZXZpc2lvbiA3MjMyNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiAr
ODUsMTAgQEAgcHVibGljOgogICAgIENwcEJvdW5kQ2xhc3MoKSA6IG1fYm91bmRUb0ZyYW1lKGZh
bHNlKSB7fQogICAgIHZpcnR1YWwgfkNwcEJvdW5kQ2xhc3MoKTsKIAorICAgIC8vIFJldHVybiB0
aGUgQ3BwQm91bmRDbGFzcyBib3VuZCB0byBhIENwcFZhcmlhbnQgaWYgaXQgZXhpc3RzLiBSZXR1
cm5zIG51bGwKKyAgICAvLyBvdGhlcndpc2UuCisgICAgc3RhdGljIENwcEJvdW5kQ2xhc3MqIGdl
dEZyb21DcHBWYXJpYW50KGNvbnN0IENwcFZhcmlhbnQmKTsKKwogICAgIC8vIFJldHVybiBhIENw
cFZhcmlhbnQgcmVwcmVzZW50aW5nIHRoaXMgY2xhc3MsIGZvciB1c2Ugd2l0aCBCaW5kUHJvcGVy
dHkoKS4KICAgICAvLyBUaGUgdmFyaWFudCB0eXBlIGlzIGd1YXJhbnRlZWQgdG8gYmUgTlBWYXJp
YW50VHlwZV9PYmplY3QuCiAgICAgQ3BwVmFyaWFudCogZ2V0QXNDcHBWYXJpYW50KCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3MjMyNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTExLTE4ICBDaHJpcyBHdWlsbG9yeSAgPGNocmlz
Lmd1aWxsb3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW5jbHVkZSB0aGUgRnJhbWVWaWV3IHdpZGdldCBvZiBhIFJlbmRlcldp
ZGdldCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxMDYKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
aWZyYW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0xMS0xOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIFdpbmRvd3MgcmVzdWx0cyBmb3IgdGVzdCBhZGRlZCBpbiBy
NzE5ODAKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVu
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9p
ZnJhbWUtaGFzLWRvY3VtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKworVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGlmcmFt
ZSdzIGRvY3VtZW50IGlzIGluY2x1ZGVkIGluIHRoZSBtYWluIEFYIHRyZWUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhcmVudElmcmFtZURvY3VtZW50LmlzRXF1YWwo
aWZyYW1lKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRv
Y3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJh
bWUtaGFzLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIC8+Cis8c2NyaXB0PgordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IGZhbHNlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9
ImJvZHkiPgorCisgICAgPGlmcmFtZSBpZD0naWZyYW1lMScgc3JjPSdyZXNvdXJjZXMvY2FrZS5w
bmcnPjwvaWZyYW1lPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtl
cyBzdXJlIHRoZSBpZnJhbWUncyBkb2N1bWVudCBpcyBpbmNsdWRlZCBpbiB0aGUgbWFpbiBBWCB0
cmVlLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
ICAgICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7CisgICAgICAgIHZhciBib2R5ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciByZW5kZXJCbG9jayA9
IGJvZHkuY2hpbGRBdEluZGV4KDApOworICAgICAgICB2YXIgaWZyYW1lID0gcmVuZGVyQmxvY2su
Y2hpbGRBdEluZGV4KDApOworICAgICAgICB2YXIgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY2hp
bGRBdEluZGV4KDApOworICAgICAgICAKKyAgICAgICAgdmFyIHBhcmVudElmcmFtZURvY3VtZW50
ID0gaWZyYW1lRG9jdW1lbnQucGFyZW50RWxlbWVudCgpOworICAgICAgICAKKyAgICAgICAgc2hv
dWxkQmUoInBhcmVudElmcmFtZURvY3VtZW50LmlzRXF1YWwoaWZyYW1lKSIsICJ0cnVlIik7Cisg
ICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24gNzIzMjYpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMzgwLDkgKzM4MCw2IEBAIGZhc3Qv
d29ya2Vycy9zdG9yYWdlL2NoYW5nZS12ZXJzaW9uLWhhbmQKICMgU29tZXRpbWVzIGZhaWxzIGh0
dHA6Ly93ZWJraXQub3JnL2IvNDkxODIKIGFuaW1hdGlvbnMvc3RvcC1hbmltYXRpb24tb24tc3Vz
cGVuZC5odG1sCiAKLSMgQ3Jhc2hpbmcgaW4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50
RWxlbWVudCBodHRwOi8vd2Via2l0Lm9yZy9iLzQ5Mzc5Ci1hY2Nlc3NpYmlsaXR5L2lmcmFtZS1i
YXN0YXJkaXphdGlvbi5odG1sCi0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyBObyBidWdzIGZpbGVkIGFib3V0IHRoZSBiZWxvdyB5ZXQjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
</data>
<flag name="review"
          id="64858"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74427</attachid>
            <date>2010-11-19 15:10:13 -0800</date>
            <delta_ts>2010-12-14 01:24:06 -0800</delta_ts>
            <desc>Added early return statements in AccessibilityRenderObject::addRenderWidgetChildren</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>15568</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjMyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTEtMTggIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEluY2x1ZGUgcmVuZGVyIHdpZGdldCBj
aGlsZHJlbiBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIGZvciBub3QgbWFjIHdlYmtpdCBwb3J0
cy4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlclBh
cmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRSZW5kZXJXaWRnZXRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9jaHJv
bWl1bS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQpOgorCiAy
MDEwLTExLTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNzIzMjYp
CisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4NCwxMSArMzg0LDEyIEBAIFJlbmRlck9iamVjdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDoKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZW5kZXJPYmpl
Y3QqIHBhcmVudCA9IG1fcmVuZGVyZXItPnBhcmVudCgpOworICAgIFJlbmRlck9iamVjdCogc3Rh
cnRPZkNvbnRzID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSAwOworICAgIFJl
bmRlcldpZGdldCogcmVuZGVyV2lkZ2V0ID0gMDsKIAogICAgIC8vIENhc2UgMTogbm9kZSBpcyBh
IGJsb2NrIGFuZCBpcyBhbiBpbmxpbmUncyBjb250aW51YXRpb24uIFBhcmVudAogICAgIC8vIGlz
IHRoZSBzdGFydCBvZiB0aGUgY29udGludWF0aW9uIGNoYWluLgotICAgIFJlbmRlck9iamVjdCog
c3RhcnRPZkNvbnRzID0gMDsKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSAwOwogICAg
IGlmIChtX3JlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgJiYgKHN0YXJ0T2ZDb250cyA9IHN0YXJ0
T2ZDb250aW51YXRpb25zKG1fcmVuZGVyZXIpKSkKICAgICAgICAgcGFyZW50ID0gc3RhcnRPZkNv
bnRzOwogCkBAIC00MDksNyArNDEwLDEzIEBAIFJlbmRlck9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICB9CisjaWYgIVBMQVRGT1JNKE1BQykKKyAgICAvLyBDYXNlIDQ6IFRoZWUgbm9kZSBpcyBh
IFJlbmRlclZpZXcgd2hvc2UgRnJhbWVWaWV3IGhhcyBhbiBhc3NvY2lhdGVkIFJlbmRlcldpZGdl
dC4KKyAgICAvLyBUaGUgcGFyZW50IGlzIHRoZSBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAg
ICAvLyBPbiB0aGUgbWFjIHBvcnQgdGhpcyBwYXJlbnQgbG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0uCisgICAgfSBlbHNlIGlmICghcGFyZW50ICYmIChyZW5kZXJXaWRn
ZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoZnJhbWVWaWV3SWZSZW5kZXJWaWV3KCkpKSkKKyAgICAg
ICAgcGFyZW50ID0gcmVuZGVyV2lkZ2V0OworI2VuZGlmCiAgICAgICAgIAogICAgIHJldHVybiBw
YXJlbnQ7CiB9CkBAIC0zMzU4LDYgKzMzNjUsMjcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAg
YWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4oKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRSZW5kZXJXaWRnZXRDaGlsZHJlbigpCit7CisjaWYgIVBMQVRGT1JNKE1BQykK
KyAgICAvLyBGb3IgUmVuZGVyV2lkZ2V0LCBhZGQgZnJhbWUncyBjb250ZW50IHJlbmRlcmVyIGlm
IHRoZSB3aWRnZXQgaXMgYSBGcmFtZVZpZXcuCisgICAgLy8gT24gdGhlIG1hYyBwb3J0IHRoaXMg
Y2hpbGRyZW4gbG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0uCisgICAg
V2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOworICAgIGlmICghd2lk
Z2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCisgICAgICAgIHJldHVybjsKKyAgICBGcmFt
ZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpLT5mcmFtZSgpOworICAg
IGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyVmlldykKKyAgICAg
ICAgcmV0dXJuOworICAgIEFTU0VSVCghbV9jaGlsZHJlbi5zaXplKCkpOworICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyVmlldykpOworI2Vu
ZGlmCiB9CiAgICAgICAgIAogY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphcmlhTGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDcy
MzI2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDYgKzI2OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlbmRlcmVyOyB9CiAKIHBy
aXZhdGU6CisgICAgdm9pZCBhZGRSZW5kZXJXaWRnZXRDaGlsZHJlbigpOwogICAgIHZvaWQgYXJp
YUxpc3Rib3hTZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwog
ICAgIHZvaWQgYXJpYUxpc3Rib3hWaXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7CiAgICAgYm9vbCBhcmlhSXNIaWRkZW4oKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUv
YWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21pdW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MjMyNikKKysrIFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxMSArMjYsMjUgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgorI2luY2x1ZGUgIldpZGdldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQo
KSBjb25zdAogeworICAgIC8vIElnbm9yZSByZW5kZXIgd2lkZ2V0cyB3aXRoIGFuIGF0dGFjaGVk
IFJlbmRlclZpZXcgYmVjYXVzZSB0aGV5IGhhdmUKKyAgICAvLyBubyByb2xlIGFuZCBhcmUgbm90
IHVzZWZ1bCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorICAgIC8vIE9uIHRoZSBtYWMgcG9y
dCwgdGhlc2UgcmVuZGVyIHdpZGdldHMgYXJlIGlnbm9yZWQgYnkgZm9yd2FyZGluZworICAgIC8v
IGNhbGxzIHRoZSB0byB0aGUgYXR0YWNoZWQgd2lkZ2V0LgorICAgIFdpZGdldCogd2lkZ2V0ID0g
d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKKyAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNG
cmFtZVZpZXcoKSkgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxGcmFtZVZp
ZXcqPih3aWRnZXQpLT5mcmFtZSgpOworICAgICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcyMzI3KQorKysgV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDEwLTExLTE4ICBDaHJpcyBHdWlsbG9yeSAgPGNocmlzLmd1aWxsb3J5QGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jbHVkZSB0
aGUgRnJhbWVWaWV3IHdpZGdldCBvZiBhIFJlbmRlcldpZGdldCBpbiB0aGUgYWNjZXNzaWJpbGl0
eSB0cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDkxMDYKKworICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgICogc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjplcXVhbHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3QpOgorCiAyMDEwLTExLTE4ICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQg
TGV2aW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuaAkocmV2aXNpb24gNzIzMjYpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKICAgICBXRUJLSVRfQVBJIHZv
aWQgYXNzaWduKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKKyAgICBXRUJLSVRfQVBJ
IGJvb2wgZXF1YWxzKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKSBjb25zdDsKIAogICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQogCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9u
IDcyMzI2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgdm9pZCBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojphc3NpZ24oY29ucwogICAgIGFzc2lnbihwKTsKIH0KIAorYm9vbCBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0OjplcXVhbHMoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fcHJpdmF0ZSA9PSBvdGhlci5tX3ByaXZh
dGUpOworfQorCiBXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKQEAgLTE3OCw3ICsx
ODMsNyBAQCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IFdlYkFjY2Vzc2liaWxpdHlPCiAgICAgICAg
IHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAKICAgICBtX3ByaXZhdGUtPnVwZGF0
ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KG1fcHJp
dmF0ZS0+cGFyZW50T2JqZWN0KCkpOworICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpOwogfQogCiAKSW5kZXg6IFdlYktp
dFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDcyMzI3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTggIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnBhcmVudEVsZW1lbnRDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkZWNyZW1lbnRDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0VxdWFsQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9DcHBCb3VuZENsYXNzLmNwcDoKKyAgICAgICAgKENwcEJvdW5kQ2xhc3M6OmdldEZy
b21DcHBWYXJpYW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3Vu
ZENsYXNzLmg6CisKIDIwMTAtMTEtMTggIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAkocmV2aXNpb24gNzIzMjYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzA0LDYgKzMwNCw3IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUUK
ICAgICBiaW5kTWV0aG9kKCJwYXJlbnRFbGVtZW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnBhcmVudEVsZW1lbnRDYWxsYmFjayk7CiAgICAgYmluZE1ldGhvZCgiaW5jcmVtZW50IiwgJkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudENhbGxiYWNrKTsKICAgICBiaW5kTWV0aG9k
KCJkZWNyZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50Q2FsbGJhY2sp
OworICAgIGJpbmRNZXRob2QoImlzRXF1YWwiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNF
cXVhbENhbGxiYWNrKTsKIAogICAgIGJpbmRQcm9wZXJ0eSgicm9sZSIsICZBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb2xlR2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgic3Vicm9s
ZSIsICZtX3N1YnJvbGUpOwpAQCAtNDkwLDcgKzQ5MSwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzQWN0aW9uU3VwCiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFy
ZW50RWxlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKLSAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiBwYXJlbnQgPSBtX2ZhY3RvcnktPmNyZWF0ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KCkucGFy
ZW50T2JqZWN0KCkpOworICAgIGlmIChwYXJlbnQpCisgICAgICAgIHJlc3VsdC0+c2V0KCoocGFy
ZW50LT5nZXRBc0NwcFZhcmlhbnQoKSkpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7ICAgICAgICAKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1l
bnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCkBA
IC01MDMsNiArNTA4LDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50
Q2EKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0VxdWFsQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBib29sIGVxdWFsID0gZmFsc2U7CisgICAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqPihDcHBCb3VuZENsYXNzOjpnZXRGcm9tQ3BwVmFyaWFudChhcmd1bWVudHNbMF0pKTsK
KyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgZXF1YWwgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0KCku
ZXF1YWxzKGVsZW1lbnQtPmFjY2Vzc2liaWxpdHlPYmplY3QoKSk7CisgICAgcmVzdWx0LT5zZXQo
ZXF1YWwpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZhbGxiYWNrQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0ICYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShy
ZXZpc2lvbiA3MjMyNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGFyZW50RWxlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGluY3JlbWVudENhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGRlY3JlbWVudENhbGxiYWNr
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGlzRXF1YWxD
YWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBm
YWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAog
ICAgIHZvaWQgY2hpbGRyZW5Db3VudEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKSW5kZXg6
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5k
Q2xhc3MuY3BwCShyZXZpc2lvbiA3MjMyNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsNiArMzI0
LDE4IEBAIGJvb2wgQ3BwQm91bmRDbGFzczo6aXNNZXRob2RSZWdpc3RlcmVkKGMKICAgICByZXR1
cm4gY2FsbGJhY2sgIT0gbV9tZXRob2RzLmVuZCgpOwogfQogCisvLyBzdGF0aWMKK0NwcEJvdW5k
Q2xhc3MqIENwcEJvdW5kQ2xhc3M6OmdldEZyb21DcHBWYXJpYW50KGNvbnN0IENwcFZhcmlhbnQm
IHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgTlBPYmplY3QqIG5wT2JqID0gTlBWQVJJQU5UX1RPX09CSkVDVCh2YWx1ZSk7CisgICAg
aWYgKCFucE9iaiB8fCBucE9iai0+X2NsYXNzICE9ICZDcHBOUE9iamVjdDo6bnBDbGFzcykKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgQ3BwTlBPYmplY3QqIG9iaiA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Q3BwTlBPYmplY3QqPihucE9iaik7CisgICAgcmV0dXJuIG9iai0+Ym91bmRDbGFzczsKK30KKwog
Q3BwVmFyaWFudCogQ3BwQm91bmRDbGFzczo6Z2V0QXNDcHBWYXJpYW50KCkKIHsKICAgICBpZiAo
IW1fc2VsZlZhcmlhbnQuaXNPYmplY3QoKSkgewpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuaAkocmV2aXNpb24gNzIzMjYp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDEwIEBAIHB1YmxpYzoKICAgICBDcHBCb3VuZENs
YXNzKCkgOiBtX2JvdW5kVG9GcmFtZShmYWxzZSkge30KICAgICB2aXJ0dWFsIH5DcHBCb3VuZENs
YXNzKCk7CiAKKyAgICAvLyBSZXR1cm4gdGhlIENwcEJvdW5kQ2xhc3MgYm91bmQgdG8gYSBDcHBW
YXJpYW50IGlmIGl0IGV4aXN0cy4gUmV0dXJucyBudWxsCisgICAgLy8gb3RoZXJ3aXNlLgorICAg
IHN0YXRpYyBDcHBCb3VuZENsYXNzKiBnZXRGcm9tQ3BwVmFyaWFudChjb25zdCBDcHBWYXJpYW50
Jik7CisKICAgICAvLyBSZXR1cm4gYSBDcHBWYXJpYW50IHJlcHJlc2VudGluZyB0aGlzIGNsYXNz
LCBmb3IgdXNlIHdpdGggQmluZFByb3BlcnR5KCkuCiAgICAgLy8gVGhlIHZhcmlhbnQgdHlwZSBp
cyBndWFyYW50ZWVkIHRvIGJlIE5QVmFyaWFudFR5cGVfT2JqZWN0LgogICAgIENwcFZhcmlhbnQq
IGdldEFzQ3BwVmFyaWFudCgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzIzMjcpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMS0x
OCAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIEZyYW1l
VmlldyB3aWRnZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA2CisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMTEtMTgg
IEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXaW5kb3dzIHJl
c3VsdHMgZm9yIHRlc3QgYWRkZWQgaW4gcjcxOTgwCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9j
dW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACisKK1RoaXMg
dGVzdCBtYWtlcyBzdXJlIHRoZSBpZnJhbWUncyBkb2N1bWVudCBpcyBpbmNsdWRlZCBpbiB0aGUg
bWFpbiBBWCB0cmVlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwYXJl
bnRJZnJhbWVEb2N1bWVudC5pc0VxdWFsKGlmcmFtZSkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
IiAvPgorPHNjcmlwdD4KK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworICAgIDxpZnJhbWUgaWQ9J2lmcmFt
ZTEnIHNyYz0ncmVzb3VyY2VzL2Nha2UucG5nJz48L2lmcmFtZT4KKworPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgaWZyYW1lJ3MgZG9jdW1lbnQgaXMg
aW5jbHVkZWQgaW4gdGhlIG1haW4gQVggdHJlZS4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOworICAg
ICAgICB2YXIgYm9keSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Owor
ICAgICAgICB2YXIgcmVuZGVyQmxvY2sgPSBib2R5LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAg
dmFyIGlmcmFtZSA9IHJlbmRlckJsb2NrLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgdmFyIGlm
cmFtZURvY3VtZW50ID0gaWZyYW1lLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgCisgICAgICAg
IHZhciBwYXJlbnRJZnJhbWVEb2N1bWVudCA9IGlmcmFtZURvY3VtZW50LnBhcmVudEVsZW1lbnQo
KTsKKyAgICAgICAgCisgICAgICAgIHNob3VsZEJlKCJwYXJlbnRJZnJhbWVEb2N1bWVudC5pc0Vx
dWFsKGlmcmFtZSkiLCAidHJ1ZSIpOworICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDcy
MzI2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTM4MCw5ICszODAsNiBAQCBmYXN0L3dvcmtlcnMvc3RvcmFnZS9jaGFuZ2UtdmVyc2lvbi1o
YW5kCiAjIFNvbWV0aW1lcyBmYWlscyBodHRwOi8vd2Via2l0Lm9yZy9iLzQ5MTgyCiBhbmltYXRp
b25zL3N0b3AtYW5pbWF0aW9uLW9uLXN1c3BlbmQuaHRtbAogCi0jIENyYXNoaW5nIGluIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQgaHR0cDovL3dlYmtpdC5vcmcvYi80OTM3
OQotYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRpb24uaHRtbAotCiAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTm8gYnVncyBmaWxlZCBhYm91
dCB0aGUgYmVsb3cgeWV0IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74586</attachid>
            <date>2010-11-22 12:40:10 -0800</date>
            <delta_ts>2010-12-02 10:44:07 -0800</delta_ts>
            <desc>Fix Mac Build</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>16482</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjU1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTEtMjIgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEluY2x1ZGUgcmVuZGVyIHdpZGdldCBj
aGlsZHJlbiBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIGZvciBub3QgbWFjIHdlYmtpdCBwb3J0
cy4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlclBh
cmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRSZW5kZXJXaWRnZXRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9jaHJv
bWl1bS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQpOgorCiAy
MDEwLTExLTIyICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDcy
NTUwKQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsMjYgKzM5MCwzMyBAQCBSZW5kZXJPYmplY3QqIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6CiAgICAgUmVuZGVyT2JqZWN0KiBzdGFydE9mQ29udHMg
PSAwOwogICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCA9IDA7CiAgICAgaWYgKG1fcmVuZGVy
ZXItPmlzUmVuZGVyQmxvY2soKSAmJiAoc3RhcnRPZkNvbnRzID0gc3RhcnRPZkNvbnRpbnVhdGlv
bnMobV9yZW5kZXJlcikpKQotICAgICAgICBwYXJlbnQgPSBzdGFydE9mQ29udHM7CisgICAgICAg
IHJldHVybiBzdGFydE9mQ29udHM7CiAKICAgICAvLyBDYXNlIDI6IG5vZGUncyBwYXJlbnQgaXMg
YW4gaW5saW5lIHdoaWNoIGlzIHNvbWUgbm9kZSdzIGNvbnRpbnVhdGlvbjsgcGFyZW50IGlzIAog
ICAgIC8vIHRoZSBlYXJsaWVzdCBub2RlIGluIHRoZSBjb250aW51YXRpb24gY2hhaW4uCi0gICAg
ZWxzZSBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAmJiAoc3RhcnRPZkNv
bnRzID0gc3RhcnRPZkNvbnRpbnVhdGlvbnMocGFyZW50KSkpCi0gICAgICAgIHBhcmVudCA9IHN0
YXJ0T2ZDb250czsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAm
JiAoc3RhcnRPZkNvbnRzID0gc3RhcnRPZkNvbnRpbnVhdGlvbnMocGFyZW50KSkpCisgICAgICAg
IHJldHVybiBzdGFydE9mQ29udHM7CiAgICAgCiAgICAgLy8gQ2FzZSAzOiBUaGUgZmlyc3Qgc2li
bGluZyBpcyB0aGUgYmVnaW5uaW5nIG9mIGEgY29udGludWF0aW9uIGNoYWluLiBGaW5kIHRoZSBv
cmlnaW4gb2YgdGhhdCBjb250aW51YXRpb24uCi0gICAgZWxzZSBpZiAocGFyZW50ICYmIChmaXJz
dENoaWxkID0gcGFyZW50LT5maXJzdENoaWxkKCkpICYmIGZpcnN0Q2hpbGQtPm5vZGUoKSkgewor
ICAgIGlmIChwYXJlbnQgJiYgKGZpcnN0Q2hpbGQgPSBwYXJlbnQtPmZpcnN0Q2hpbGQoKSkgJiYg
Zmlyc3RDaGlsZC0+bm9kZSgpKSB7CiAgICAgICAgIC8vIEdldCB0aGUgbm9kZSdzIHJlbmRlcmVy
IGFuZCBmb2xsb3cgdGhhdCBjb250aW51YXRpb24gY2hhaW4gdW50aWwgdGhlIGZpcnN0IGNoaWxk
IGlzIGZvdW5kCiAgICAgICAgIFJlbmRlck9iamVjdCogbm9kZVJlbmRlckZpcnN0Q2hpbGQgPSBm
aXJzdENoaWxkLT5ub2RlKCktPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChub2RlUmVuZGVyRmly
c3RDaGlsZCAhPSBmaXJzdENoaWxkKSB7CiAgICAgICAgICAgICBmb3IgKFJlbmRlck9iamVjdCog
Y29udHNUZXN0ID0gbm9kZVJlbmRlckZpcnN0Q2hpbGQ7IGNvbnRzVGVzdDsgY29udHNUZXN0ID0g
bmV4dENvbnRpbnVhdGlvbihjb250c1Rlc3QpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRz
VGVzdCA9PSBmaXJzdENoaWxkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IG5vZGVS
ZW5kZXJGaXJzdENoaWxkLT5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb250c1Rlc3QgPT0gZmlyc3RD
aGlsZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVSZW5kZXJGaXJzdENoaWxkLT5w
YXJlbnQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKworI2lmICFQTEFURk9S
TShNQUMpCisgICAgLy8gQ2FzZSA0OiBUaGUgbm9kZSBpcyBhIFJlbmRlclZpZXcgd2hvc2UgRnJh
bWVWaWV3IGhhcyBhbiBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAgICAvLyBUaGUgcGFyZW50
IGlzIHRoZSBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAgICAvLyBPbiB0aGUgbWFjIHBvcnQg
dGhpcyBwYXJlbnQgbG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0uCisg
ICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSAwOworICAgIGlmICghcGFyZW50ICYmIChy
ZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoZnJhbWVWaWV3SWZSZW5kZXJWaWV3KCkp
KSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcldpZGdldDsKKyNlbmRpZgogICAgICAgICAKICAgICBy
ZXR1cm4gcGFyZW50OwogfQpAQCAtMzM1OCw2ICszMzY1LDI3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkQ2hpbGQKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
KworICAgIGFkZFJlbmRlcldpZGdldENoaWxkcmVuKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4oKQoreworI2lmICFQTEFURk9S
TShNQUMpCisgICAgLy8gRm9yIFJlbmRlcldpZGdldCwgYWRkIGZyYW1lJ3MgY29udGVudCByZW5k
ZXJlciBpZiB0aGUgd2lkZ2V0IGlzIGEgRnJhbWVWaWV3LgorICAgIC8vIE9uIHRoZSBtYWMgcG9y
dCB0aGlzIGNoaWxkcmVuIGxvZ2ljIGlzIGluIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1t
LgorICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKKyAgICBp
ZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICByZXR1cm47Cisg
ICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KS0+ZnJhbWUo
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlclZpZXcp
CisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIW1fY2hpbGRyZW4uc2l6ZSgpKTsKKyAgICBt
X2NoaWxkcmVuLmFwcGVuZChheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlclZpZXcp
KTsKKyNlbmRpZgogfQogICAgICAgICAKIGNvbnN0IEF0b21pY1N0cmluZyYgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YXJpYUxpdmVSZWdpb25TdGF0dXMoKSBjb25zdApJbmRleDogV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZp
c2lvbiA3MjU1MCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJlcjsg
fQogCiBwcml2YXRlOgorICAgIHZvaWQgYWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4oKTsKICAgICB2
b2lkIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94VmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwogICAgIGJvb2wgYXJpYUlzSGlkZGVuKCkgY29uc3Q7CkluZGV4OiBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQWNjZXNzaWJpbGl0eU9iamVjdENocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQWNjZXNz
aWJpbGl0eU9iamVjdENocm9taXVtLmNwcAkocmV2aXNpb24gNzI1NTApCisrKyBXZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvY2hyb21pdW0vQWNjZXNzaWJpbGl0eU9iamVjdENocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDI1IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRh
Y2htZW50KCkgY29uc3QKIHsKKyAgICAvLyBJZ25vcmUgcmVuZGVyIHdpZGdldHMgd2l0aCBhbiBh
dHRhY2hlZCBSZW5kZXJWaWV3IGJlY2F1c2UgdGhleSBoYXZlCisgICAgLy8gbm8gcm9sZSBhbmQg
YXJlIG5vdCB1c2VmdWwgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAgICAvLyBPbiB0aGUg
bWFjIHBvcnQsIHRoZXNlIHJlbmRlciB3aWRnZXRzIGFyZSBpZ25vcmVkIGJ5IGZvcndhcmRpbmcK
KyAgICAvLyBjYWxscyB0aGUgdG8gdGhlIGF0dGFjaGVkIHdpZGdldC4KKyAgICBXaWRnZXQqIHdp
ZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7CisgICAgaWYgKHdpZGdldCAmJiB3aWRn
ZXQtPmlzRnJhbWVWaWV3KCkpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
RnJhbWVWaWV3Kj4od2lkZ2V0KS0+ZnJhbWUoKTsKKyAgICAgICAgaWYgKGZyYW1lICYmIGZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MjU1MCkK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0xMS0yMiAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
Y2x1ZGUgdGhlIEZyYW1lVmlldyB3aWRnZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4gdGhlIGFjY2Vz
c2liaWxpdHkgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ5MTA2CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5o
OgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZXF1YWxzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0KToKKwogMjAxMC0xMS0yMiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3
ZWQuIFBhcnRpYWxseSByb2xsIG91dCByNzIyODIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gNzI1NTApCisrKyBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVz
ZXQoKTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QmKTsKKyAgICBXRUJLSVRfQVBJIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkFjY2Vzc2liaWxp
dHlPYmplY3QmKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1f
cHJpdmF0ZTsgfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDcyNTUwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEg
QEAgdm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphc3NpZ24oY29ucwogICAgIGFzc2lnbihw
KTsKIH0KIAorYm9vbCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjplcXVhbHMoY29uc3QgV2ViS2l0
OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gKG1f
cHJpdmF0ZSA9PSBvdGhlci5tX3ByaXZhdGUpOworfQorCiBXZWJTdHJpbmcgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcHJpdmF0ZSkKQEAgLTE3OCw3ICsxODMsNyBAQCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IFdl
YkFjY2Vzc2liaWxpdHlPCiAgICAgICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7
CiAKICAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0KCkpOworICAgIHJldHVy
biBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0VW5pZ25vcmVk
KCkpOwogfQogCiAKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcyNTUwKQorKysgV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTEtMjIgIENocmlz
IEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lk
Z2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnRDYWxsYmFjayk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2spOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmNwcDoKKyAg
ICAgICAgKENwcEJvdW5kQ2xhc3M6OmdldEZyb21DcHBWYXJpYW50KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmg6CisKIDIwMTAtMTEtMjIgIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkg
Q2hhbmcuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gNzI1NTAp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDYgKzMwNCw3IEBAIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUUKICAgICBiaW5kTWV0aG9kKCJwYXJlbnRFbGVt
ZW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnRDYWxsYmFjayk7CiAg
ICAgYmluZE1ldGhvZCgiaW5jcmVtZW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3Jl
bWVudENhbGxiYWNrKTsKICAgICBiaW5kTWV0aG9kKCJkZWNyZW1lbnQiLCAmQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZGVjcmVtZW50Q2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoImlzRXF1YWwi
LCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbENhbGxiYWNrKTsKIAogICAgIGJpbmRQ
cm9wZXJ0eSgicm9sZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlR2V0dGVyQ2FsbGJh
Y2spOwogICAgIGJpbmRQcm9wZXJ0eSgic3Vicm9sZSIsICZtX3N1YnJvbGUpOwpAQCAtNDkwLDcg
KzQ5MSwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwCiAKIHZv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICByZXN1bHQtPnNldE51
bGwoKTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBwYXJlbnQgPSBtX2ZhY3RvcnktPmNy
ZWF0ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KCkucGFyZW50T2JqZWN0KCkpOworICAgIGlmIChwYXJl
bnQpCisgICAgICAgIHJlc3VsdC0+c2V0KCoocGFyZW50LT5nZXRBc0NwcFZhcmlhbnQoKSkpOwor
ICAgIGVsc2UKKyAgICAgICAgcmVzdWx0LT5zZXROdWxsKCk7ICAgICAgICAKIH0KIAogdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCkBAIC01MDMsNiArNTA4LDE1IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50Q2EKICAgICByZXN1bHQtPnNldE51bGwoKTsK
IH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2soY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBi
b29sIGVxdWFsID0gZmFsc2U7CisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqPihDcHBCb3VuZENsYXNzOjpnZXRG
cm9tQ3BwVmFyaWFudChhcmd1bWVudHNbMF0pKTsKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAg
ZXF1YWwgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuZXF1YWxzKGVsZW1lbnQtPmFjY2Vzc2liaWxp
dHlPYmplY3QoKSk7CisgICAgcmVzdWx0LT5zZXQoZXF1YWwpOworfQorCiB2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0ICYs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiA3MjU1MCkKKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyZW50RWxl
bWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2
b2lkIGluY3JlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKICAgICB2b2lkIGRlY3JlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKKyAgICB2b2lkIGlzRXF1YWxDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIHZvaWQgY2hpbGRyZW5Db3VudEdldHRl
ckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwCShyZXZpc2lvbiA3MjU1MCkK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsNiArMzI0LDE4IEBAIGJvb2wgQ3BwQm91bmRDbGFzczo6
aXNNZXRob2RSZWdpc3RlcmVkKGMKICAgICByZXR1cm4gY2FsbGJhY2sgIT0gbV9tZXRob2RzLmVu
ZCgpOwogfQogCisvLyBzdGF0aWMKK0NwcEJvdW5kQ2xhc3MqIENwcEJvdW5kQ2xhc3M6OmdldEZy
b21DcHBWYXJpYW50KGNvbnN0IENwcFZhcmlhbnQmIHZhbHVlKQoreworICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgTlBPYmplY3QqIG5wT2JqID0gTlBW
QVJJQU5UX1RPX09CSkVDVCh2YWx1ZSk7CisgICAgaWYgKCFucE9iaiB8fCBucE9iai0+X2NsYXNz
ICE9ICZDcHBOUE9iamVjdDo6bnBDbGFzcykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQ3BwTlBP
YmplY3QqIG9iaiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3BwTlBPYmplY3QqPihucE9iaik7CisgICAg
cmV0dXJuIG9iai0+Ym91bmRDbGFzczsKK30KKwogQ3BwVmFyaWFudCogQ3BwQm91bmRDbGFzczo6
Z2V0QXNDcHBWYXJpYW50KCkKIHsKICAgICBpZiAoIW1fc2VsZlZhcmlhbnQuaXNPYmplY3QoKSkg
ewpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0Nw
cEJvdW5kQ2xhc3MuaAkocmV2aXNpb24gNzI1NTApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1
LDEwIEBAIHB1YmxpYzoKICAgICBDcHBCb3VuZENsYXNzKCkgOiBtX2JvdW5kVG9GcmFtZShmYWxz
ZSkge30KICAgICB2aXJ0dWFsIH5DcHBCb3VuZENsYXNzKCk7CiAKKyAgICAvLyBSZXR1cm4gdGhl
IENwcEJvdW5kQ2xhc3MgYm91bmQgdG8gYSBDcHBWYXJpYW50IGlmIGl0IGV4aXN0cy4gUmV0dXJu
cyBudWxsCisgICAgLy8gb3RoZXJ3aXNlLgorICAgIHN0YXRpYyBDcHBCb3VuZENsYXNzKiBnZXRG
cm9tQ3BwVmFyaWFudChjb25zdCBDcHBWYXJpYW50Jik7CisKICAgICAvLyBSZXR1cm4gYSBDcHBW
YXJpYW50IHJlcHJlc2VudGluZyB0aGlzIGNsYXNzLCBmb3IgdXNlIHdpdGggQmluZFByb3BlcnR5
KCkuCiAgICAgLy8gVGhlIHZhcmlhbnQgdHlwZSBpcyBndWFyYW50ZWVkIHRvIGJlIE5QVmFyaWFu
dFR5cGVfT2JqZWN0LgogICAgIENwcFZhcmlhbnQqIGdldEFzQ3BwVmFyaWFudCgpOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzI1NTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0xMS0yMiAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5n
dWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluY2x1ZGUgdGhlIEZyYW1lVmlldyB3aWRnZXQgb2YgYSBSZW5kZXJXaWRn
ZXQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA2CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lm
cmFtZS1oYXMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vd2luL1NraXBwZWQ6CisKIDIwMTAtMTEtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCB1cGRhdGUgb2YgV2luZG93cyBTa2lwcGVkIGxp
c3QuCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZy
YW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDExIEBACisKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoZSBpZnJhbWUn
cyBkb2N1bWVudCBpcyBpbmNsdWRlZCBpbiB0aGUgbWFpbiBBWCB0cmVlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwYXJlbnRJZnJhbWVEb2N1bWVudC5pc0VxdWFsKGlm
cmFtZSkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1
bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1l
LWhhcy1kb2N1bWVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcg
QEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIiAvPgorPHNjcmlwdD4KK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJi
b2R5Ij4KKworICAgIDxpZnJhbWUgaWQ9J2lmcmFtZTEnIHNyYz0ncmVzb3VyY2VzL2Nha2UucG5n
Jz48L2lmcmFtZT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMg
c3VyZSB0aGUgaWZyYW1lJ3MgZG9jdW1lbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1haW4gQVggdHJl
ZS4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAg
ICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOworICAgICAgICB2YXIgYm9keSA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB2YXIgcmVuZGVyQmxvY2sgPSBi
b2R5LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgdmFyIGlmcmFtZSA9IHJlbmRlckJsb2NrLmNo
aWxkQXRJbmRleCgwKTsKKyAgICAgICAgdmFyIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNoaWxk
QXRJbmRleCgwKTsKKyAgICAgICAgCisgICAgICAgIHZhciBwYXJlbnRJZnJhbWVEb2N1bWVudCA9
IGlmcmFtZURvY3VtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgCisgICAgICAgIHNob3Vs
ZEJlKCJwYXJlbnRJZnJhbWVEb2N1bWVudC5pc0VxdWFsKGlmcmFtZSkiLCAidHJ1ZSIpOworICAg
IH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkocmV2aXNpb24g
NzI1NTApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAkod29ya2luZyBjb3B5
KQpAQCAtMzgwLDkgKzM4MCw2IEBAIGZhc3Qvd29ya2Vycy9zdG9yYWdlL2NoYW5nZS12ZXJzaW9u
LWhhbmQKICMgU29tZXRpbWVzIGZhaWxzIGh0dHA6Ly93ZWJraXQub3JnL2IvNDkxODIKIGFuaW1h
dGlvbnMvc3RvcC1hbmltYXRpb24tb24tc3VzcGVuZC5odG1sCiAKLSMgQ3Jhc2hpbmcgaW4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCBodHRwOi8vd2Via2l0Lm9yZy9iLzQ5
Mzc5Ci1hY2Nlc3NpYmlsaXR5L2lmcmFtZS1iYXN0YXJkaXphdGlvbi5odG1sCi0KICMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBObyBidWdzIGZpbGVkIGFi
b3V0IHRoZSBiZWxvdyB5ZXQjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75393</attachid>
            <date>2010-12-02 10:44:07 -0800</date>
            <delta_ts>2010-12-06 16:13:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>14389</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzE1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTItMDIgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEluY2x1ZGUgcmVuZGVyIHdpZGdldCBj
aGlsZHJlbiBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIGZvciBub3QgbWFjIHdlYmtpdCBwb3J0
cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW5kZXJQ
YXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2hy
b21pdW0vQWNjZXNzaWJpbGl0eU9iamVjdENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KToKKwog
MjAxMC0xMi0wMSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDcz
MDc3KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsMjYgKzM5MCwzMyBAQCBSZW5kZXJPYmplY3QqIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6CiAgICAgUmVuZGVyT2JqZWN0KiBzdGFydE9mQ29udHMg
PSAwOwogICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCA9IDA7CiAgICAgaWYgKG1fcmVuZGVy
ZXItPmlzUmVuZGVyQmxvY2soKSAmJiAoc3RhcnRPZkNvbnRzID0gc3RhcnRPZkNvbnRpbnVhdGlv
bnMobV9yZW5kZXJlcikpKQotICAgICAgICBwYXJlbnQgPSBzdGFydE9mQ29udHM7CisgICAgICAg
IHJldHVybiBzdGFydE9mQ29udHM7CiAKICAgICAvLyBDYXNlIDI6IG5vZGUncyBwYXJlbnQgaXMg
YW4gaW5saW5lIHdoaWNoIGlzIHNvbWUgbm9kZSdzIGNvbnRpbnVhdGlvbjsgcGFyZW50IGlzIAog
ICAgIC8vIHRoZSBlYXJsaWVzdCBub2RlIGluIHRoZSBjb250aW51YXRpb24gY2hhaW4uCi0gICAg
ZWxzZSBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAmJiAoc3RhcnRPZkNv
bnRzID0gc3RhcnRPZkNvbnRpbnVhdGlvbnMocGFyZW50KSkpCi0gICAgICAgIHBhcmVudCA9IHN0
YXJ0T2ZDb250czsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAm
JiAoc3RhcnRPZkNvbnRzID0gc3RhcnRPZkNvbnRpbnVhdGlvbnMocGFyZW50KSkpCisgICAgICAg
IHJldHVybiBzdGFydE9mQ29udHM7CiAgICAgCiAgICAgLy8gQ2FzZSAzOiBUaGUgZmlyc3Qgc2li
bGluZyBpcyB0aGUgYmVnaW5uaW5nIG9mIGEgY29udGludWF0aW9uIGNoYWluLiBGaW5kIHRoZSBv
cmlnaW4gb2YgdGhhdCBjb250aW51YXRpb24uCi0gICAgZWxzZSBpZiAocGFyZW50ICYmIChmaXJz
dENoaWxkID0gcGFyZW50LT5maXJzdENoaWxkKCkpICYmIGZpcnN0Q2hpbGQtPm5vZGUoKSkgewor
ICAgIGlmIChwYXJlbnQgJiYgKGZpcnN0Q2hpbGQgPSBwYXJlbnQtPmZpcnN0Q2hpbGQoKSkgJiYg
Zmlyc3RDaGlsZC0+bm9kZSgpKSB7CiAgICAgICAgIC8vIEdldCB0aGUgbm9kZSdzIHJlbmRlcmVy
IGFuZCBmb2xsb3cgdGhhdCBjb250aW51YXRpb24gY2hhaW4gdW50aWwgdGhlIGZpcnN0IGNoaWxk
IGlzIGZvdW5kCiAgICAgICAgIFJlbmRlck9iamVjdCogbm9kZVJlbmRlckZpcnN0Q2hpbGQgPSBm
aXJzdENoaWxkLT5ub2RlKCktPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChub2RlUmVuZGVyRmly
c3RDaGlsZCAhPSBmaXJzdENoaWxkKSB7CiAgICAgICAgICAgICBmb3IgKFJlbmRlck9iamVjdCog
Y29udHNUZXN0ID0gbm9kZVJlbmRlckZpcnN0Q2hpbGQ7IGNvbnRzVGVzdDsgY29udHNUZXN0ID0g
bmV4dENvbnRpbnVhdGlvbihjb250c1Rlc3QpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRz
VGVzdCA9PSBmaXJzdENoaWxkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IG5vZGVS
ZW5kZXJGaXJzdENoaWxkLT5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb250c1Rlc3QgPT0gZmlyc3RD
aGlsZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVSZW5kZXJGaXJzdENoaWxkLT5w
YXJlbnQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKworI2lmICFQTEFURk9S
TShNQUMpCisgICAgLy8gQ2FzZSA0OiBUaGUgbm9kZSBpcyBhIFJlbmRlclZpZXcgd2hvc2UgRnJh
bWVWaWV3IGhhcyBhbiBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAgICAvLyBUaGUgcGFyZW50
IGlzIHRoZSBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAgICAvLyBPbiB0aGUgbWFjIHBvcnQg
dGhpcyBwYXJlbnQgbG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0uCisg
ICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSAwOworICAgIGlmICghcGFyZW50ICYmIChy
ZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoZnJhbWVWaWV3SWZSZW5kZXJWaWV3KCkp
KSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcldpZGdldDsKKyNlbmRpZgogICAgICAgICAKICAgICBy
ZXR1cm4gcGFyZW50OwogfQpAQCAtMzM3MSw2ICszMzc4LDI3IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkQ2hpbGQKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
KworICAgIGFkZFJlbmRlcldpZGdldENoaWxkcmVuKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4oKQoreworI2lmICFQTEFURk9S
TShNQUMpCisgICAgLy8gRm9yIFJlbmRlcldpZGdldCwgYWRkIGZyYW1lJ3MgY29udGVudCByZW5k
ZXJlciBpZiB0aGUgd2lkZ2V0IGlzIGEgRnJhbWVWaWV3LgorICAgIC8vIE9uIHRoZSBtYWMgcG9y
dCB0aGlzIGNoaWxkcmVuIGxvZ2ljIGlzIGluIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1t
LgorICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKKyAgICBp
ZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQorICAgICAgICByZXR1cm47Cisg
ICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KS0+ZnJhbWUo
KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlclZpZXcp
CisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIW1fY2hpbGRyZW4uc2l6ZSgpKTsKKyAgICBt
X2NoaWxkcmVuLmFwcGVuZChheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlclZpZXcp
KTsKKyNlbmRpZgogfQogICAgICAgICAKIGNvbnN0IEF0b21pY1N0cmluZyYgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YXJpYUxpdmVSZWdpb25TdGF0dXMoKSBjb25zdApJbmRleDogV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZp
c2lvbiA3MzA3NykKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9yZW5kZXJlcjsg
fQogCiBwcml2YXRlOgorICAgIHZvaWQgYWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4oKTsKICAgICB2
b2lkIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94VmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpOwogICAgIGJvb2wgYXJpYUlzSGlkZGVuKCkgY29uc3Q7CkluZGV4OiBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQWNjZXNzaWJpbGl0eU9iamVjdENocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQWNjZXNz
aWJpbGl0eU9iamVjdENocm9taXVtLmNwcAkocmV2aXNpb24gNzMwNzcpCisrKyBXZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvY2hyb21pdW0vQWNjZXNzaWJpbGl0eU9iamVjdENocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDI1IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRh
Y2htZW50KCkgY29uc3QKIHsKKyAgICAvLyBJZ25vcmUgcmVuZGVyIHdpZGdldHMgd2l0aCBhbiBh
dHRhY2hlZCBSZW5kZXJWaWV3IGJlY2F1c2UgdGhleSBoYXZlCisgICAgLy8gbm8gcm9sZSBhbmQg
YXJlIG5vdCB1c2VmdWwgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAgICAvLyBPbiB0aGUg
bWFjIHBvcnQsIHRoZXNlIHJlbmRlciB3aWRnZXRzIGFyZSBpZ25vcmVkIGJ5IGZvcndhcmRpbmcK
KyAgICAvLyBjYWxscyB0aGUgdG8gdGhlIGF0dGFjaGVkIHdpZGdldC4KKyAgICBXaWRnZXQqIHdp
ZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7CisgICAgaWYgKHdpZGdldCAmJiB3aWRn
ZXQtPmlzRnJhbWVWaWV3KCkpIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
RnJhbWVWaWV3Kj4od2lkZ2V0KS0+ZnJhbWUoKTsKKyAgICAgICAgaWYgKGZyYW1lICYmIGZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzE1MykK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0xMi0wMiAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
Y2x1ZGUgdGhlIEZyYW1lVmlldyB3aWRnZXQgb2YgYSBSZW5kZXJXaWRnZXQgaW4gdGhlIGFjY2Vz
c2liaWxpdHkgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ5MTA2CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5o
OgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZXF1YWxzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0KToKKwogMjAxMC0xMi0wMSAgQW5k
cmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gNzMwNzcpCisrKyBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiAr
NjMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKICAgICBXRUJL
SVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKKyAgICBX
RUJLSVRfQVBJIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKSBjb25z
dDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQogCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJ
KHJldmlzaW9uIDczMDc3KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgdm9pZCBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojphc3NpZ24oY29ucwogICAgIGFzc2lnbihwKTsKIH0KIAorYm9vbCBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjplcXVhbHMoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fcHJpdmF0ZSA9PSBvdGhl
ci5tX3ByaXZhdGUpOworfQorCiBXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNj
ZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKQEAg
LTE3OCw3ICsxODMsNyBAQCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IFdlYkFjY2Vzc2liaWxpdHlP
CiAgICAgICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAKICAgICBtX3ByaXZh
dGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0KCkpOworICAgIHJldHVybiBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpOwogfQogCiAKSW5k
ZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDczMTUzKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTItMDIgIENocmlzIEd1aWxsb3J5ICA8Y2hy
aXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVy
V2lkZ2V0IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnRDYWxsYmFjayk6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmNwcDoKKyAgICAgICAgKENwcEJvdW5k
Q2xhc3M6OmdldEZyb21DcHBWYXJpYW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9DcHBCb3VuZENsYXNzLmg6CisKIDIwMTAtMTItMDIgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MzA3NykKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiArMzA0LDcgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6QWNjZXNzaWJpbGl0eVVJRQogICAgIGJpbmRNZXRob2QoInBhcmVudEVsZW1lbnQiLCAmQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxiYWNrKTsKICAgICBiaW5kTWV0
aG9kKCJpbmNyZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50Q2FsbGJh
Y2spOwogICAgIGJpbmRNZXRob2QoImRlY3JlbWVudCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkZWNyZW1lbnRDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiaXNFcXVhbCIsICZBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2spOwogCiAgICAgYmluZFByb3BlcnR5KCJy
b2xlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVHZXR0ZXJDYWxsYmFjayk7CiAgICAg
YmluZFByb3BlcnR5KCJzdWJyb2xlIiwgJm1fc3Vicm9sZSk7CkBAIC00OTAsNyArNDkxLDExIEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25TdXAKIAogdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAg
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHBhcmVudCA9IG1fZmFjdG9yeS0+Y3JlYXRlKGFjY2Vz
c2liaWxpdHlPYmplY3QoKS5wYXJlbnRPYmplY3QoKSk7CisgICAgaWYgKHBhcmVudCkKKyAgICAg
ICAgcmVzdWx0LT5zZXQoKihwYXJlbnQtPmdldEFzQ3BwVmFyaWFudCgpKSk7CisgICAgZWxzZQor
ICAgICAgICByZXN1bHQtPnNldE51bGwoKTsgICAgICAgIAogfQogCiB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluY3JlbWVudENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqIHJlc3VsdCkKQEAgLTUwMyw2ICs1MDgsMTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkZWNyZW1lbnRDYQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWxDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGJvb2wgZXF1YWwg
PSBmYWxzZTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+KENwcEJvdW5kQ2xhc3M6OmdldEZyb21DcHBWYXJp
YW50KGFyZ3VtZW50c1swXSkpOworICAgIGlmIChlbGVtZW50KQorICAgICAgICBlcXVhbCA9IGFj
Y2Vzc2liaWxpdHlPYmplY3QoKS5lcXVhbHMoZWxlbWVudC0+YWNjZXNzaWJpbGl0eU9iamVjdCgp
KTsKKyAgICByZXN1bHQtPnNldChlcXVhbCk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QgJiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDczMDc3KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJlbnRFbGVtZW50Q2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaW5jcmVt
ZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZv
aWQgZGVjcmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OworICAgIHZvaWQgaXNFcXVhbENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKICAgICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBjaGlsZHJlbkNvdW50R2V0dGVyQ2FsbGJhY2so
Q3BwVmFyaWFudCopOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
Q3BwQm91bmRDbGFzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5jcHAJKHJldmlzaW9uIDczMDc3KQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNCw2ICszMjQsMTggQEAgYm9vbCBDcHBCb3VuZENsYXNzOjppc01ldGhvZFJl
Z2lzdGVyZWQoYwogICAgIHJldHVybiBjYWxsYmFjayAhPSBtX21ldGhvZHMuZW5kKCk7CiB9CiAK
Ky8vIHN0YXRpYworQ3BwQm91bmRDbGFzcyogQ3BwQm91bmRDbGFzczo6Z2V0RnJvbUNwcFZhcmlh
bnQoY29uc3QgQ3BwVmFyaWFudCYgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBOUE9iamVjdCogbnBPYmogPSBOUFZBUklBTlRfVE9f
T0JKRUNUKHZhbHVlKTsKKyAgICBpZiAoIW5wT2JqIHx8IG5wT2JqLT5fY2xhc3MgIT0gJkNwcE5Q
T2JqZWN0OjpucENsYXNzKQorICAgICAgICByZXR1cm4gMDsKKyAgICBDcHBOUE9iamVjdCogb2Jq
ID0gcmVpbnRlcnByZXRfY2FzdDxDcHBOUE9iamVjdCo+KG5wT2JqKTsKKyAgICByZXR1cm4gb2Jq
LT5ib3VuZENsYXNzOworfQorCiBDcHBWYXJpYW50KiBDcHBCb3VuZENsYXNzOjpnZXRBc0NwcFZh
cmlhbnQoKQogewogICAgIGlmICghbV9zZWxmVmFyaWFudC5pc09iamVjdCgpKSB7CkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFz
cy5oCShyZXZpc2lvbiA3MzA3NykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0NwcEJvdW5kQ2xhc3MuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTAgQEAgcHVi
bGljOgogICAgIENwcEJvdW5kQ2xhc3MoKSA6IG1fYm91bmRUb0ZyYW1lKGZhbHNlKSB7fQogICAg
IHZpcnR1YWwgfkNwcEJvdW5kQ2xhc3MoKTsKIAorICAgIC8vIFJldHVybiB0aGUgQ3BwQm91bmRD
bGFzcyBib3VuZCB0byBhIENwcFZhcmlhbnQgaWYgaXQgZXhpc3RzLiBSZXR1cm5zIG51bGwKKyAg
ICAvLyBvdGhlcndpc2UuCisgICAgc3RhdGljIENwcEJvdW5kQ2xhc3MqIGdldEZyb21DcHBWYXJp
YW50KGNvbnN0IENwcFZhcmlhbnQmKTsKKwogICAgIC8vIFJldHVybiBhIENwcFZhcmlhbnQgcmVw
cmVzZW50aW5nIHRoaXMgY2xhc3MsIGZvciB1c2Ugd2l0aCBCaW5kUHJvcGVydHkoKS4KICAgICAv
LyBUaGUgdmFyaWFudCB0eXBlIGlzIGd1YXJhbnRlZWQgdG8gYmUgTlBWYXJpYW50VHlwZV9PYmpl
Y3QuCiAgICAgQ3BwVmFyaWFudCogZ2V0QXNDcHBWYXJpYW50KCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA3MzE1MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyIEBACisyMDEwLTEyLTAyICBDaHJpcyBHdWlsbG9yeSAgPGNocmlzLmd1aWxsb3J5QGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW5jbHVkZSB0aGUgRnJhbWVWaWV3IHdpZGdldCBvZiBhIFJlbmRlcldpZGdldCBpbiB0aGUg
YWNjZXNzaWJpbGl0eSB0cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDkxMDYKKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAy
MDEwLTEyLTAxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQJKHJldmlzaW9uIDczMDc3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw5ICszODAsNiBAQCBmYXN0L3dvcmtlcnMvc3RvcmFn
ZS9jaGFuZ2UtdmVyc2lvbi1oYW5kCiAjIFNvbWV0aW1lcyBmYWlscyBodHRwOi8vd2Via2l0Lm9y
Zy9iLzQ5MTgyCiBhbmltYXRpb25zL3N0b3AtYW5pbWF0aW9uLW9uLXN1c3BlbmQuaHRtbAogCi0j
IENyYXNoaW5nIGluIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQgaHR0cDov
L3dlYmtpdC5vcmcvYi80OTM3OQotYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRpb24u
aHRtbAotCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg
Tm8gYnVncyBmaWxlZCBhYm91dCB0aGUgYmVsb3cgeWV0IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75746</attachid>
            <date>2010-12-06 16:13:03 -0800</date>
            <delta_ts>2010-12-13 19:14:02 -0800</delta_ts>
            <desc>Not passing 0 to RenderWidget::find</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>14486</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzQwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTItMDYgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEluY2x1ZGUgcmVuZGVyIHdpZGdldCBj
aGlsZHJlbiBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIGZvciBub3QgbWFjIHdlYmtpdCBwb3J0
cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW5kZXJQ
YXJlbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2hy
b21pdW0vQWNjZXNzaWJpbGl0eU9iamVjdENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KToKKwog
MjAxMC0xMi0wMyAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDczNDAwKQorKysg
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTAsMjYgKzM5MCwzNiBAQCBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6CiAgICAgUmVuZGVyT2JqZWN0KiBzdGFydE9mQ29udHMgPSAwOwogICAg
IFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCA9IDA7CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzUmVu
ZGVyQmxvY2soKSAmJiAoc3RhcnRPZkNvbnRzID0gc3RhcnRPZkNvbnRpbnVhdGlvbnMobV9yZW5k
ZXJlcikpKQotICAgICAgICBwYXJlbnQgPSBzdGFydE9mQ29udHM7CisgICAgICAgIHJldHVybiBz
dGFydE9mQ29udHM7CiAKICAgICAvLyBDYXNlIDI6IG5vZGUncyBwYXJlbnQgaXMgYW4gaW5saW5l
IHdoaWNoIGlzIHNvbWUgbm9kZSdzIGNvbnRpbnVhdGlvbjsgcGFyZW50IGlzIAogICAgIC8vIHRo
ZSBlYXJsaWVzdCBub2RlIGluIHRoZSBjb250aW51YXRpb24gY2hhaW4uCi0gICAgZWxzZSBpZiAo
cGFyZW50ICYmIHBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAmJiAoc3RhcnRPZkNvbnRzID0gc3Rh
cnRPZkNvbnRpbnVhdGlvbnMocGFyZW50KSkpCi0gICAgICAgIHBhcmVudCA9IHN0YXJ0T2ZDb250
czsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNSZW5kZXJJbmxpbmUoKSAmJiAoc3RhcnRP
ZkNvbnRzID0gc3RhcnRPZkNvbnRpbnVhdGlvbnMocGFyZW50KSkpCisgICAgICAgIHJldHVybiBz
dGFydE9mQ29udHM7CiAgICAgCiAgICAgLy8gQ2FzZSAzOiBUaGUgZmlyc3Qgc2libGluZyBpcyB0
aGUgYmVnaW5uaW5nIG9mIGEgY29udGludWF0aW9uIGNoYWluLiBGaW5kIHRoZSBvcmlnaW4gb2Yg
dGhhdCBjb250aW51YXRpb24uCi0gICAgZWxzZSBpZiAocGFyZW50ICYmIChmaXJzdENoaWxkID0g
cGFyZW50LT5maXJzdENoaWxkKCkpICYmIGZpcnN0Q2hpbGQtPm5vZGUoKSkgeworICAgIGlmIChw
YXJlbnQgJiYgKGZpcnN0Q2hpbGQgPSBwYXJlbnQtPmZpcnN0Q2hpbGQoKSkgJiYgZmlyc3RDaGls
ZC0+bm9kZSgpKSB7CiAgICAgICAgIC8vIEdldCB0aGUgbm9kZSdzIHJlbmRlcmVyIGFuZCBmb2xs
b3cgdGhhdCBjb250aW51YXRpb24gY2hhaW4gdW50aWwgdGhlIGZpcnN0IGNoaWxkIGlzIGZvdW5k
CiAgICAgICAgIFJlbmRlck9iamVjdCogbm9kZVJlbmRlckZpcnN0Q2hpbGQgPSBmaXJzdENoaWxk
LT5ub2RlKCktPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChub2RlUmVuZGVyRmlyc3RDaGlsZCAh
PSBmaXJzdENoaWxkKSB7CiAgICAgICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY29udHNUZXN0
ID0gbm9kZVJlbmRlckZpcnN0Q2hpbGQ7IGNvbnRzVGVzdDsgY29udHNUZXN0ID0gbmV4dENvbnRp
bnVhdGlvbihjb250c1Rlc3QpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRzVGVzdCA9PSBm
aXJzdENoaWxkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IG5vZGVSZW5kZXJGaXJz
dENoaWxkLT5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb250c1Rlc3QgPT0gZmlyc3RDaGlsZCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVSZW5kZXJGaXJzdENoaWxkLT5wYXJlbnQoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKworI2lmICFQTEFURk9STShNQUMpCisg
ICAgLy8gQ2FzZSA0OiBUaGUgbm9kZSBpcyBhIFJlbmRlclZpZXcgd2hvc2UgRnJhbWVWaWV3IGhh
cyBhbiBhc3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAgICAvLyBUaGUgcGFyZW50IGlzIHRoZSBh
c3NvY2lhdGVkIFJlbmRlcldpZGdldC4KKyAgICAvLyBPbiB0aGUgbWFjIHBvcnQgdGhpcyBwYXJl
bnQgbG9naWMgaXMgaW4gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0uCisgICAgaWYgKCFw
YXJlbnQpIHsKKyAgICAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSAwOworICAgICAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lVmlld0lmUmVuZGVyVmlldygpOworICAgICAg
ICBpZiAoZnJhbWVWaWV3ICYmIChyZW5kZXJXaWRnZXQgPSBSZW5kZXJXaWRnZXQ6OmZpbmQoZnJh
bWVWaWV3KSkpCisgICAgICAgICAgICByZXR1cm4gcmVuZGVyV2lkZ2V0OworICAgIH0KKyNlbmRp
ZgogICAgICAgICAKICAgICByZXR1cm4gcGFyZW50OwogfQpAQCAtMzM3OCw2ICszMzg4LDI3IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGQKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KKworICAgIGFkZFJlbmRlcldpZGdldENoaWxkcmVuKCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmVuZGVyV2lkZ2V0Q2hpbGRyZW4o
KQoreworI2lmICFQTEFURk9STShNQUMpCisgICAgLy8gRm9yIFJlbmRlcldpZGdldCwgYWRkIGZy
YW1lJ3MgY29udGVudCByZW5kZXJlciBpZiB0aGUgd2lkZ2V0IGlzIGEgRnJhbWVWaWV3LgorICAg
IC8vIE9uIHRoZSBtYWMgcG9ydCB0aGlzIGNoaWxkcmVuIGxvZ2ljIGlzIGluIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tLgorICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9yQXR0YWNo
bWVudFZpZXcoKTsKKyAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQor
ICAgICAgICByZXR1cm47CisgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3
Kj4od2lkZ2V0KS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47Cisg
ICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKKyAg
ICBpZiAoIXJlbmRlclZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIW1fY2hpbGRy
ZW4uc2l6ZSgpKTsKKyAgICBtX2NoaWxkcmVuLmFwcGVuZChheE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKHJlbmRlclZpZXcpKTsKKyNlbmRpZgogfQogICAgICAgICAKIGNvbnN0IEF0b21pY1N0
cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxpdmVSZWdpb25TdGF0dXMoKSBj
b25zdApJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5oCShyZXZpc2lvbiA3MzQwMCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9yZW5kZXJlcjsgfQogCiBwcml2YXRlOgorICAgIHZvaWQgYWRkUmVuZGVyV2lkZ2V0
Q2hpbGRyZW4oKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94VmlzaWJsZUNoaWxk
cmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIGJvb2wgYXJpYUlzSGlkZGVu
KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQWNjZXNzaWJp
bGl0eU9iamVjdENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvY2hyb21pdW0vQWNjZXNzaWJpbGl0eU9iamVjdENocm9taXVtLmNwcAkocmV2aXNpb24gNzM0
MDApCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQWNjZXNzaWJpbGl0eU9iamVj
dENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDI1IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vz
c2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3QKIHsKKyAgICAvLyBJZ25vcmUgcmVuZGVy
IHdpZGdldHMgd2l0aCBhbiBhdHRhY2hlZCBSZW5kZXJWaWV3IGJlY2F1c2UgdGhleSBoYXZlCisg
ICAgLy8gbm8gcm9sZSBhbmQgYXJlIG5vdCB1c2VmdWwgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJl
ZS4KKyAgICAvLyBPbiB0aGUgbWFjIHBvcnQsIHRoZXNlIHJlbmRlciB3aWRnZXRzIGFyZSBpZ25v
cmVkIGJ5IGZvcndhcmRpbmcKKyAgICAvLyBjYWxscyB0aGUgdG8gdGhlIGF0dGFjaGVkIHdpZGdl
dC4KKyAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7CisgICAg
aWYgKHdpZGdldCAmJiB3aWRnZXQtPmlzRnJhbWVWaWV3KCkpIHsKKyAgICAgICAgRnJhbWUqIGZy
YW1lID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KS0+ZnJhbWUoKTsKKyAgICAgICAg
aWYgKGZyYW1lICYmIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzQwOCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMi0wNiAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJp
cy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIEZyYW1lVmlldyB3aWRnZXQgb2YgYSBSZW5kZXJX
aWRnZXQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA2CisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZXF1YWxzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0KToK
KwogMjAxMC0xMi0wNiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gNzM0MDApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQo
KTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QmKTsKKyAgICBXRUJLSVRfQVBJIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QmKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJp
dmF0ZTsgfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAJKHJldmlzaW9uIDczNDAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAg
dm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphc3NpZ24oY29ucwogICAgIGFzc2lnbihwKTsK
IH0KIAorYm9vbCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjplcXVhbHMoY29uc3QgV2ViS2l0OjpX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fcHJp
dmF0ZSA9PSBvdGhlci5tX3ByaXZhdGUpOworfQorCiBXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cHJpdmF0ZSkKQEAgLTE3OCw3ICsxODMsNyBAQCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IFdlYkFj
Y2Vzc2liaWxpdHlPCiAgICAgICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAK
ICAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0KCkpOworICAgIHJldHVybiBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkp
OwogfQogCiAKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNDA4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTItMDYgIENocmlzIEd1
aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0
IG9mIGEgUmVuZGVyV2lkZ2V0IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnRDYWxsYmFjayk6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnRDYWxsYmFjayk6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2spOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmNwcDoKKyAgICAgICAg
KENwcEJvdW5kQ2xhc3M6OmdldEZyb21DcHBWYXJpYW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmg6CisKIDIwMTAtMTItMDYgIFRvbnkgQ2hhbmcg
IDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDczNDAwKQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw2ICszMDQsNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpBY2Nlc3NpYmlsaXR5VUlFCiAgICAgYmluZE1ldGhvZCgicGFyZW50RWxlbWVudCIsICZB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50Q2FsbGJhY2spOwogICAgIGJpbmRN
ZXRob2QoImluY3JlbWVudCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnRDYWxs
YmFjayk7CiAgICAgYmluZE1ldGhvZCgiZGVjcmVtZW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRlY3JlbWVudENhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJpc0VxdWFsIiwgJkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWxDYWxsYmFjayk7CiAKICAgICBiaW5kUHJvcGVydHko
InJvbGUiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZUdldHRlckNhbGxiYWNrKTsKICAg
ICBiaW5kUHJvcGVydHkoInN1YnJvbGUiLCAmbV9zdWJyb2xlKTsKQEAgLTQ5MCw3ICs0OTEsMTEg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1cAogCiB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Cisg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogcGFyZW50ID0gbV9mYWN0b3J5LT5jcmVhdGUoYWNj
ZXNzaWJpbGl0eU9iamVjdCgpLnBhcmVudE9iamVjdCgpKTsKKyAgICBpZiAocGFyZW50KQorICAg
ICAgICByZXN1bHQtPnNldCgqKHBhcmVudC0+Z2V0QXNDcHBWYXJpYW50KCkpKTsKKyAgICBlbHNl
CisgICAgICAgIHJlc3VsdC0+c2V0TnVsbCgpOyAgICAgICAgCiB9CiAKIHZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aW5jcmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCogcmVzdWx0KQpAQCAtNTAzLDYgKzUwOCwxNSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRlY3JlbWVudENhCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbENhbGxiYWNrKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgYm9vbCBlcXVh
bCA9IGZhbHNlOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4oQ3BwQm91bmRDbGFzczo6Z2V0RnJvbUNwcFZh
cmlhbnQoYXJndW1lbnRzWzBdKSk7CisgICAgaWYgKGVsZW1lbnQpCisgICAgICAgIGVxdWFsID0g
YWNjZXNzaWJpbGl0eU9iamVjdCgpLmVxdWFscyhlbGVtZW50LT5hY2Nlc3NpYmlsaXR5T2JqZWN0
KCkpOworICAgIHJlc3VsdC0+c2V0KGVxdWFsKTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCAmLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gNzM0MDApCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDYgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcmVudEVsZW1lbnRDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBpbmNy
ZW1lbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCBkZWNyZW1lbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisgICAgdm9pZCBpc0VxdWFsQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogICAgIHZvaWQgZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2b2lkIGNoaWxkcmVuQ291bnRHZXR0ZXJDYWxsYmFj
ayhDcHBWYXJpYW50Kik7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9DcHBCb3VuZENsYXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmNwcAkocmV2aXNpb24gNzM0MDApCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENsYXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI0LDYgKzMyNCwxOCBAQCBib29sIENwcEJvdW5kQ2xhc3M6OmlzTWV0aG9k
UmVnaXN0ZXJlZChjCiAgICAgcmV0dXJuIGNhbGxiYWNrICE9IG1fbWV0aG9kcy5lbmQoKTsKIH0K
IAorLy8gc3RhdGljCitDcHBCb3VuZENsYXNzKiBDcHBCb3VuZENsYXNzOjpnZXRGcm9tQ3BwVmFy
aWFudChjb25zdCBDcHBWYXJpYW50JiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIE5QT2JqZWN0KiBucE9iaiA9IE5QVkFSSUFOVF9U
T19PQkpFQ1QodmFsdWUpOworICAgIGlmICghbnBPYmogfHwgbnBPYmotPl9jbGFzcyAhPSAmQ3Bw
TlBPYmplY3Q6Om5wQ2xhc3MpCisgICAgICAgIHJldHVybiAwOworICAgIENwcE5QT2JqZWN0KiBv
YmogPSByZWludGVycHJldF9jYXN0PENwcE5QT2JqZWN0Kj4obnBPYmopOworICAgIHJldHVybiBv
YmotPmJvdW5kQ2xhc3M7Cit9CisKIENwcFZhcmlhbnQqIENwcEJvdW5kQ2xhc3M6OmdldEFzQ3Bw
VmFyaWFudCgpCiB7CiAgICAgaWYgKCFtX3NlbGZWYXJpYW50LmlzT2JqZWN0KCkpIHsKSW5kZXg6
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBCb3VuZENs
YXNzLmgJKHJldmlzaW9uIDczNDAwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vQ3BwQm91bmRDbGFzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxMCBAQCBw
dWJsaWM6CiAgICAgQ3BwQm91bmRDbGFzcygpIDogbV9ib3VuZFRvRnJhbWUoZmFsc2UpIHt9CiAg
ICAgdmlydHVhbCB+Q3BwQm91bmRDbGFzcygpOwogCisgICAgLy8gUmV0dXJuIHRoZSBDcHBCb3Vu
ZENsYXNzIGJvdW5kIHRvIGEgQ3BwVmFyaWFudCBpZiBpdCBleGlzdHMuIFJldHVybnMgbnVsbAor
ICAgIC8vIG90aGVyd2lzZS4KKyAgICBzdGF0aWMgQ3BwQm91bmRDbGFzcyogZ2V0RnJvbUNwcFZh
cmlhbnQoY29uc3QgQ3BwVmFyaWFudCYpOworCiAgICAgLy8gUmV0dXJuIGEgQ3BwVmFyaWFudCBy
ZXByZXNlbnRpbmcgdGhpcyBjbGFzcywgZm9yIHVzZSB3aXRoIEJpbmRQcm9wZXJ0eSgpLgogICAg
IC8vIFRoZSB2YXJpYW50IHR5cGUgaXMgZ3VhcmFudGVlZCB0byBiZSBOUFZhcmlhbnRUeXBlX09i
amVjdC4KICAgICBDcHBWYXJpYW50KiBnZXRBc0NwcFZhcmlhbnQoKTsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDczNDA4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTAtMTItMDYgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGluIHRo
ZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisK
IDIwMTAtMTItMDYgIFZpY3RvciBXYW5nICA8dmljdG9yd0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA3
MzQwMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkp
CkBAIC0zODEsOSArMzgxLDYgQEAgZmFzdC93b3JrZXJzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24t
aGFuZAogIyBTb21ldGltZXMgZmFpbHMgaHR0cDovL3dlYmtpdC5vcmcvYi80OTE4MgogYW5pbWF0
aW9ucy9zdG9wLWFuaW1hdGlvbi1vbi1zdXNwZW5kLmh0bWwKIAotIyBDcmFzaGluZyBpbiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50IGh0dHA6Ly93ZWJraXQub3JnL2IvNDkz
NzkKLWFjY2Vzc2liaWxpdHkvaWZyYW1lLWJhc3RhcmRpemF0aW9uLmh0bWwKLQogIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE5vIGJ1Z3MgZmlsZWQgYWJv
dXQgdGhlIGJlbG93IHlldCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76485</attachid>
            <date>2010-12-13 19:13:27 -0800</date>
            <delta_ts>2011-01-10 16:49:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>16570</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzk1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTItMTMgIENocmlzIEd1aWxsb3J5ICA8Y2hyaXMuZ3VpbGxv
cnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVuZGVyV2lkZ2V0IGlu
IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEluY2x1ZGUgcmVuZGVyIHdpZGdldCBj
aGlsZHJlbiBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIGZvciBub24tbWFjIHdlYmtpdCBwb3J0
cy4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1lbnQuaHRt
bAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlclBh
cmVudE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRSZW5kZXJXaWRnZXRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9jaHJv
bWl1bS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFjaG1lbnQpOgorCiAy
MDEwLTEyLTEzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByNzM4NDAuCkluZGV4OiBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lv
biA3MzkzMSkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDI3ICszOTAsMzYgQEAgUmVuZGVyT2JqZWN0
KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OgogICAgIFJlbmRlck9iamVjdCogc3RhcnRPZkNv
bnRzID0gMDsKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQgPSAwOwogICAgIGlmIChtX3Jl
bmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgJiYgKHN0YXJ0T2ZDb250cyA9IHN0YXJ0T2ZDb250aW51
YXRpb25zKG1fcmVuZGVyZXIpKSkKLSAgICAgICAgcGFyZW50ID0gc3RhcnRPZkNvbnRzOworICAg
ICAgICByZXR1cm4gc3RhcnRPZkNvbnRzOwogCiAgICAgLy8gQ2FzZSAyOiBub2RlJ3MgcGFyZW50
IGlzIGFuIGlubGluZSB3aGljaCBpcyBzb21lIG5vZGUncyBjb250aW51YXRpb247IHBhcmVudCBp
cyAKICAgICAvLyB0aGUgZWFybGllc3Qgbm9kZSBpbiB0aGUgY29udGludWF0aW9uIGNoYWluLgot
ICAgIGVsc2UgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzUmVuZGVySW5saW5lKCkgJiYgKHN0YXJ0
T2ZDb250cyA9IHN0YXJ0T2ZDb250aW51YXRpb25zKHBhcmVudCkpKQotICAgICAgICBwYXJlbnQg
PSBzdGFydE9mQ29udHM7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzUmVuZGVySW5saW5l
KCkgJiYgKHN0YXJ0T2ZDb250cyA9IHN0YXJ0T2ZDb250aW51YXRpb25zKHBhcmVudCkpKQorICAg
ICAgICByZXR1cm4gc3RhcnRPZkNvbnRzOwogICAgIAogICAgIC8vIENhc2UgMzogVGhlIGZpcnN0
IHNpYmxpbmcgaXMgdGhlIGJlZ2lubmluZyBvZiBhIGNvbnRpbnVhdGlvbiBjaGFpbi4gRmluZCB0
aGUgb3JpZ2luIG9mIHRoYXQgY29udGludWF0aW9uLgotICAgIGVsc2UgaWYgKHBhcmVudCAmJiAo
Zmlyc3RDaGlsZCA9IHBhcmVudC0+Zmlyc3RDaGlsZCgpKSAmJiBmaXJzdENoaWxkLT5ub2RlKCkp
IHsKKyAgICBpZiAocGFyZW50ICYmIChmaXJzdENoaWxkID0gcGFyZW50LT5maXJzdENoaWxkKCkp
ICYmIGZpcnN0Q2hpbGQtPm5vZGUoKSkgewogICAgICAgICAvLyBHZXQgdGhlIG5vZGUncyByZW5k
ZXJlciBhbmQgZm9sbG93IHRoYXQgY29udGludWF0aW9uIGNoYWluIHVudGlsIHRoZSBmaXJzdCBj
aGlsZCBpcyBmb3VuZAogICAgICAgICBSZW5kZXJPYmplY3QqIG5vZGVSZW5kZXJGaXJzdENoaWxk
ID0gZmlyc3RDaGlsZC0+bm9kZSgpLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAobm9kZVJlbmRl
ckZpcnN0Q2hpbGQgIT0gZmlyc3RDaGlsZCkgewogICAgICAgICAgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGNvbnRzVGVzdCA9IG5vZGVSZW5kZXJGaXJzdENoaWxkOyBjb250c1Rlc3Q7IGNvbnRzVGVz
dCA9IG5leHRDb250aW51YXRpb24oY29udHNUZXN0KSkgewotICAgICAgICAgICAgICAgIGlmIChj
b250c1Rlc3QgPT0gZmlyc3RDaGlsZCkgewotICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBu
b2RlUmVuZGVyRmlyc3RDaGlsZC0+cGFyZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY29udHNUZXN0ID09IGZp
cnN0Q2hpbGQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlUmVuZGVyRmlyc3RDaGls
ZC0+cGFyZW50KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgICAgIAor
CisjaWYgIVBMQVRGT1JNKE1BQykKKyAgICAvLyBDYXNlIDQ6IFRoZSBub2RlIGlzIGEgUmVuZGVy
VmlldyB3aG9zZSBGcmFtZVZpZXcgaGFzIGFuIGFzc29jaWF0ZWQgUmVuZGVyV2lkZ2V0LgorICAg
IC8vIFRoZSBwYXJlbnQgaXMgdGhlIGFzc29jaWF0ZWQgUmVuZGVyV2lkZ2V0LgorICAgIC8vIE9u
IHRoZSBtYWMgcG9ydCB0aGlzIHBhcmVudCBsb2dpYyBpcyBpbiBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlci5tbS4KKyAgICBpZiAoIXBhcmVudCkgeworICAgICAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IGZyYW1lVmlld0lmUmVuZGVyVmlldygpOworICAgICAgICBpZiAoZnJhbWVWaWV3KQor
ICAgICAgICAgICAgcmV0dXJuIFJlbmRlcldpZGdldDo6ZmluZChmcmFtZVZpZXcpOworICAgIH0K
KyNlbmRpZgorCiAgICAgcmV0dXJuIHBhcmVudDsKIH0KICAgICAKQEAgLTMzNzIsNiArMzM4MSwy
NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICBhZGRSZW5kZXJXaWRnZXRDaGlsZHJlbigpOwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJlbmRlcldpZGdldENoaWxk
cmVuKCkKK3sKKyNpZiAhUExBVEZPUk0oTUFDKQorICAgIC8vIEZvciBSZW5kZXJXaWRnZXQsIGFk
ZCBmcmFtZSdzIGNvbnRlbnQgcmVuZGVyZXIgaWYgdGhlIHdpZGdldCBpcyBhIEZyYW1lVmlldy4K
KyAgICAvLyBPbiB0aGUgbWFjIHBvcnQgdGhpcyBjaGlsZHJlbiBsb2dpYyBpcyBpbiBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5tbS4KKyAgICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0
dGFjaG1lbnRWaWV3KCk7CisgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXco
KSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEZyYW1l
Vmlldyo+KHdpZGdldCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
OworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJWaWV3KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCFtX2No
aWxkcmVuLnNpemUoKSk7CisgICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShyZW5kZXJWaWV3KSk7CisjZW5kaWYKIH0KICAgICAgICAgCiBjb25zdCBBdG9t
aWNTdHJpbmcmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXZlUmVnaW9uU3RhdHVz
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNzM5MzEpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNiAr
MjcxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Qg
eyByZXR1cm4gIW1fcmVuZGVyZXI7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGFkZFJlbmRlcldp
ZGdldENoaWxkcmVuKCk7CiAgICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4oQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCBhcmlhTGlzdGJveFZpc2libGVD
aGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICBib29sIGFyaWFJc0hp
ZGRlbigpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FjY2Vz
c2liaWxpdHlPYmplY3RDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2Nocm9taXVtL0FjY2Vzc2liaWxpdHlPYmplY3RDaHJvbWl1bS5jcHAJKHJldmlzaW9u
IDczOTMxKQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FjY2Vzc2liaWxpdHlP
YmplY3RDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwyNSBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiV2lkZ2V0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgpIGNvbnN0CiB7CisgICAgLy8gSWdub3JlIHJl
bmRlciB3aWRnZXRzIHdpdGggYW4gYXR0YWNoZWQgUmVuZGVyVmlldyBiZWNhdXNlIHRoZXkgaGF2
ZQorICAgIC8vIG5vIHJvbGUgYW5kIGFyZSBub3QgdXNlZnVsIGluIHRoZSBhY2Nlc3NpYmlsaXR5
IHRyZWUuCisgICAgLy8gT24gdGhlIG1hYyBwb3J0LCB0aGVzZSByZW5kZXIgd2lkZ2V0cyBhcmUg
aWdub3JlZCBieSBmb3J3YXJkaW5nCisgICAgLy8gY2FsbHMgdGhlIHRvIHRoZSBhdHRhY2hlZCB3
aWRnZXQuCisgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpOwor
ICAgIGlmICh3aWRnZXQgJiYgd2lkZ2V0LT5pc0ZyYW1lVmlldygpKSB7CisgICAgICAgIEZyYW1l
KiBmcmFtZSA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCktPmZyYW1lKCk7CisgICAg
ICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzM5NTUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMTItMTMgIENocmlzIEd1aWxsb3J5ICA8
Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVu
ZGVyV2lkZ2V0IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIFJldHVybiB0aGUg
Zmlyc3Qgbm9uLWlnbm9yZWQgcGFyZW50IG9iamVjdCBpbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpwYXJlbnRPYmplY3QuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dC5oOgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6ZXF1YWxzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFyZW50T2JqZWN0KToKKwogMjAxMC0xMi0xMyAg
RGF2aWQgSG9sbG93YXkgIDxkaG9sbG93YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gNzM5MzEpCisrKyBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NiArNjMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKICAgICBX
RUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKKyAg
ICBXRUJLSVRfQVBJIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKSBj
b25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQog
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAJKHJldmlzaW9uIDczOTMxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgdm9pZCBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojphc3NpZ24oY29ucwogICAgIGFzc2lnbihwKTsKIH0KIAorYm9v
bCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjplcXVhbHMoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fcHJpdmF0ZSA9PSBv
dGhlci5tX3ByaXZhdGUpOworfQorCiBXZWJTdHJpbmcgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkK
QEAgLTE3OCw3ICsxODMsNyBAQCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0IFdlYkFjY2Vzc2liaWxp
dHlPCiAgICAgICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAKICAgICBtX3By
aXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0KCkpOworICAgIHJldHVybiBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0KG1fcHJpdmF0ZS0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpOwogfQogCiAK
SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDczOTU1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMTItMTMgIENocmlzIEd1aWxsb3J5ICA8
Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbmNsdWRlIHRoZSBGcmFtZVZpZXcgd2lkZ2V0IG9mIGEgUmVu
ZGVyV2lkZ2V0IGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBhY2Nlc3NpYmlsaXR5IGVsZW1lbnQgZXF1YWxpdHkgY29tcGFyaXNvbnMuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxiYWNr
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudENhbGxiYWNrKToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWxDYWxsYmFjayk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuY3BwOgorICAg
ICAgICAoQ3BwQm91bmRDbGFzczo6Z2V0RnJvbUNwcFZhcmlhbnQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuaDoKKwogMjAxMC0xMi0xMyAgR2Fib3Ig
UmFwY3NhbnlpICA8cmdhYm9yQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lv
biA3MzkzMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiArMzA0LDcgQEAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRQogICAgIGJpbmRNZXRob2QoInBh
cmVudEVsZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudENhbGxi
YWNrKTsKICAgICBiaW5kTWV0aG9kKCJpbmNyZW1lbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aW5jcmVtZW50Q2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoImRlY3JlbWVudCIsICZBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnRDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgi
aXNFcXVhbCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsQ2FsbGJhY2spOwogCiAg
ICAgYmluZFByb3BlcnR5KCJyb2xlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVHZXR0
ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJzdWJyb2xlIiwgJm1fc3Vicm9sZSk7CkBA
IC00OTAsNyArNDkxLDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3Rpb25T
dXAKIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50Q2FsbGJhY2so
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIHBhcmVudCA9IG1fZmFj
dG9yeS0+Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QoKS5wYXJlbnRPYmplY3QoKSk7CisgICAg
aWYgKHBhcmVudCkKKyAgICAgICAgcmVzdWx0LT5zZXQoKihwYXJlbnQtPmdldEFzQ3BwVmFyaWFu
dCgpKSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQtPnNldE51bGwoKTsgICAgICAgIAogfQog
CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudENhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTUwMyw2ICs1MDgsMTUgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnRDYQogICAgIHJlc3VsdC0+c2V0
TnVsbCgpOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWxDYWxsYmFj
ayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIGJvb2wgZXF1YWwgPSBmYWxzZTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBl
bGVtZW50ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+KENwcEJvdW5kQ2xh
c3M6OmdldEZyb21DcHBWYXJpYW50KGFyZ3VtZW50c1swXSkpOworICAgIGlmIChlbGVtZW50KQor
ICAgICAgICBlcXVhbCA9IGFjY2Vzc2liaWxpdHlPYmplY3QoKS5lcXVhbHMoZWxlbWVudC0+YWNj
ZXNzaWJpbGl0eU9iamVjdCgpKTsKKyAgICByZXN1bHQtPnNldChlcXVhbCk7Cit9CisKIHZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QgJiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcy4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDczOTMxKQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
YXJlbnRFbGVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgaW5jcmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogICAgIHZvaWQgZGVjcmVtZW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgaXNFcXVhbENhbGxiYWNrKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBjaGlsZHJlbkNv
dW50R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRDbGFzcy5jcHAJKHJldmlzaW9u
IDczOTMxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQ3BwQm91bmRD
bGFzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNCw2ICszMjQsMTggQEAgYm9vbCBDcHBCb3Vu
ZENsYXNzOjppc01ldGhvZFJlZ2lzdGVyZWQoYwogICAgIHJldHVybiBjYWxsYmFjayAhPSBtX21l
dGhvZHMuZW5kKCk7CiB9CiAKKy8vIHN0YXRpYworQ3BwQm91bmRDbGFzcyogQ3BwQm91bmRDbGFz
czo6Z2V0RnJvbUNwcFZhcmlhbnQoY29uc3QgQ3BwVmFyaWFudCYgdmFsdWUpCit7CisgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBOUE9iamVjdCogbnBP
YmogPSBOUFZBUklBTlRfVE9fT0JKRUNUKHZhbHVlKTsKKyAgICBpZiAoIW5wT2JqIHx8IG5wT2Jq
LT5fY2xhc3MgIT0gJkNwcE5QT2JqZWN0OjpucENsYXNzKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBDcHBOUE9iamVjdCogb2JqID0gcmVpbnRlcnByZXRfY2FzdDxDcHBOUE9iamVjdCo+KG5wT2Jq
KTsKKyAgICByZXR1cm4gb2JqLT5ib3VuZENsYXNzOworfQorCiBDcHBWYXJpYW50KiBDcHBCb3Vu
ZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQoKQogewogICAgIGlmICghbV9zZWxmVmFyaWFudC5pc09i
amVjdCgpKSB7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9DcHBC
b3VuZENsYXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vQ3BwQm91bmRDbGFzcy5oCShyZXZpc2lvbiA3MzkzMSkKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0NwcEJvdW5kQ2xhc3MuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNiArODUsMTAgQEAgcHVibGljOgogICAgIENwcEJvdW5kQ2xhc3MoKSA6IG1fYm91bmRUb0Zy
YW1lKGZhbHNlKSB7fQogICAgIHZpcnR1YWwgfkNwcEJvdW5kQ2xhc3MoKTsKIAorICAgIC8vIFJl
dHVybiB0aGUgQ3BwQm91bmRDbGFzcyBib3VuZCB0byBhIENwcFZhcmlhbnQgaWYgaXQgZXhpc3Rz
LiBSZXR1cm5zIG51bGwKKyAgICAvLyBvdGhlcndpc2UuCisgICAgc3RhdGljIENwcEJvdW5kQ2xh
c3MqIGdldEZyb21DcHBWYXJpYW50KGNvbnN0IENwcFZhcmlhbnQmKTsKKwogICAgIC8vIFJldHVy
biBhIENwcFZhcmlhbnQgcmVwcmVzZW50aW5nIHRoaXMgY2xhc3MsIGZvciB1c2Ugd2l0aCBCaW5k
UHJvcGVydHkoKS4KICAgICAvLyBUaGUgdmFyaWFudCB0eXBlIGlzIGd1YXJhbnRlZWQgdG8gYmUg
TlBWYXJpYW50VHlwZV9PYmplY3QuCiAgICAgQ3BwVmFyaWFudCogZ2V0QXNDcHBWYXJpYW50KCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3Mzk1NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTEyLTEzICBDaHJpcyBHdWlsbG9yeSAg
PGNocmlzLmd1aWxsb3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5jbHVkZSB0aGUgRnJhbWVWaWV3IHdpZGdldCBvZiBhIFJl
bmRlcldpZGdldCBpbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxMDYKKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0xMi0xMyAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaWZyYW1lLWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaWZyYW1l
LWhhcy1kb2N1bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAK
KworVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhlIGlmcmFtZSdzIGRvY3VtZW50IGlzIGluY2x1ZGVk
IGluIHRoZSBtYWluIEFYIHRyZWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHBhcmVudElmcmFtZURvY3VtZW50LmlzRXF1YWwoaWZyYW1lKSBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pZnJhbWUtaGFzLWRvY3VtZW50Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lmcmFtZS1oYXMtZG9jdW1l
bnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiIC8+Cis8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCisgICAgPGlmcmFtZSBp
ZD0naWZyYW1lMScgc3JjPSdyZXNvdXJjZXMvY2FrZS5wbmcnPjwvaWZyYW1lPgorCis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoZSBpZnJhbWUncyBkb2N1
bWVudCBpcyBpbmNsdWRlZCBpbiB0aGUgbWFpbiBBWCB0cmVlLiIpOworCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBkb2N1bWVudC5ib2R5LmZvY3Vz
KCk7CisgICAgICAgIHZhciBib2R5ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CisgICAgICAgIHZhciByZW5kZXJCbG9jayA9IGJvZHkuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICB2YXIgaWZyYW1lID0gcmVuZGVyQmxvY2suY2hpbGRBdEluZGV4KDApOworICAgICAg
ICB2YXIgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY2hpbGRBdEluZGV4KDApOworICAgICAgICAK
KyAgICAgICAgdmFyIHBhcmVudElmcmFtZURvY3VtZW50ID0gaWZyYW1lRG9jdW1lbnQucGFyZW50
RWxlbWVudCgpOworICAgICAgICAKKyAgICAgICAgc2hvdWxkQmUoInBhcmVudElmcmFtZURvY3Vt
ZW50LmlzRXF1YWwoaWZyYW1lKSIsICJ0cnVlIik7CisgICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCShyZXZpc2lvbiA3MzkzMSkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsOSArMzg0LDYgQEAg
ZmFzdC93b3JrZXJzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZAogIyBTb21ldGltZXMgZmFp
bHMgaHR0cDovL3dlYmtpdC5vcmcvYi80OTE4MgogYW5pbWF0aW9ucy9zdG9wLWFuaW1hdGlvbi1v
bi1zdXNwZW5kLmh0bWwKIAotIyBDcmFzaGluZyBpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
YXJlbnRFbGVtZW50IGh0dHA6Ly93ZWJraXQub3JnL2IvNDkzNzkKLWFjY2Vzc2liaWxpdHkvaWZy
YW1lLWJhc3RhcmRpemF0aW9uLmh0bWwKLQogIyBTcGV3cyBhIGNvbnNvbGUgbWVzc2FnZSBpbnRv
IHRoZSBuZXh0IHRlc3QgdW5kZXIgQWVybyBodHRwOi8vd2Via2l0Lm9yZy9iLzQ5OTQ1CiBzdmcv
Y3VzdG9tL2NsaXAtcGF0aC1yZWZlcmVuY2luZy11c2UyLnN2ZwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>