<?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>59048</bug_id>
          
          <creation_ts>2011-04-20 17:23:24 -0700</creation_ts>
          <short_desc>Need to track whether overlay scrollbar is currently visible and in lower-righthand corner</short_desc>
          <delta_ts>2011-04-21 15:50:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>389670</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-20 17:23:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/9211232&gt;

We need to know in the UI process if an overlay scrollbar is visible AND in the lower righthand corner. Patch coming in a moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389694</commentid>
    <comment_count>1</comment_count>
      <attachid>90459</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-20 17:38:23 -0700</bug_when>
    <thetext>Created attachment 90459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389695</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-20 17:39:36 -0700</bug_when>
    <thetext>Attachment 90459 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/mac/ScrollAnimatorMac.h:86:  The parameter name &quot;showing&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 20 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>389827</commentid>
    <comment_count>3</comment_count>
      <attachid>90459</attachid>
    <who name="">mitz</who>
    <bug_when>2011-04-20 21:29:52 -0700</bug_when>
    <thetext>Comment on attachment 90459
Patch

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

I wonder if the naming here can be improved. I pointed out one specific name I found problematic, but I also find it odd that everything in the internal naming differs from the external method:
scrollbar &lt;-&gt; scroller thumb (which is more accurate, I think)
showing &lt;-&gt; visible
south-east corner &lt;-&gt; window-resize… something

Maybe our naming should be more along the lines of “the scroll thumb is touching the corner”.

I was going to r+ but it occurred to me that I’m not sure this does the right thing in the two-scrollbars-neither-of-which-can-cover-the-corner case. Does it?

&gt; Source/WebCore/page/ChromeClient.h:310
&gt; +        virtual void setScrollbarIsShowingInSouthEastCorner(bool) { }

This name may not be the best for a function in a client interface, which is essentially a delegate. This might sound like the client is asked to show or hide something, but in reality it is just being notified. I don’t have a super-great name, but maybe something like scrollbarVisibilityInSouthEastCornerDidChange(bool).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389840</commentid>
    <comment_count>4</comment_count>
      <attachid>90459</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-04-20 21:53:43 -0700</bug_when>
    <thetext>Comment on attachment 90459
Patch

Mitz was too kind to r-, but it looks like this either needs some revision, or significant additional explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390110</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-21 10:09:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 90459 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90459&amp;action=review
&gt; 
&gt; I wonder if the naming here can be improved. I pointed out one specific name I found problematic, but I also find it odd that everything in the internal naming differs from the external method:
&gt; scrollbar &lt;-&gt; scroller thumb (which is more accurate, I think)
&gt; showing &lt;-&gt; visible
&gt; south-east corner &lt;-&gt; window-resize… something
&gt; 
&gt; Maybe our naming should be more along the lines of “the scroll thumb is touching the corner”.
&gt; 

I knew the naming was going to be a problem at review-time, though I only predicted that south-east corner would be a problem. I agree that &quot;scroller thumb&quot; and &quot;visible&quot; would be an improvement over  &quot;scrollbar&quot; and &quot;showing&quot; respectively. However, I really hate the window-resize phrase, and I think south-east corner is much more expressive. I adopted south-east in the first place because I saw it in the code of another component, and I really liked it. That being said, I can probably come up with something more consistent. 

&gt; I was going to r+ but it occurred to me that I’m not sure this does the right thing in the two-scrollbars-neither-of-which-can-cover-the-corner case. Does it?
&gt; 

Hummm, there is a bug in this case with my patch. With my patch, you can never resize the window when the vertical scrollbar is fully scrolled, and that should not always be the case in the two-scrollbar situation. I will have to think on this. A bool may be insufficient here. 

&gt; &gt; Source/WebCore/page/ChromeClient.h:310
&gt; &gt; +        virtual void setScrollbarIsShowingInSouthEastCorner(bool) { }
&gt; 
&gt; This name may not be the best for a function in a client interface, which is essentially a delegate. This might sound like the client is asked to show or hide something, but in reality it is just being notified. I don’t have a super-great name, but maybe something like scrollbarVisibilityInSouthEastCornerDidChange(bool).

Will think on this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390291</commentid>
    <comment_count>6</comment_count>
      <attachid>90589</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-21 13:38:13 -0700</bug_when>
    <thetext>Created attachment 90589
Patch that sends a rect through the client</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390352</commentid>
    <comment_count>7</comment_count>
      <attachid>90589</attachid>
    <who name="">mitz</who>
    <bug_when>2011-04-21 14:44:52 -0700</bug_when>
    <thetext>Comment on attachment 90589
Patch that sends a rect through the client

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

&gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:426
&gt; +            _animator-&gt;setVisibleScrollerThumbRect(WebCore::IntRect());

I don’t think the WebCore:: qualifier is needed here!

&gt; Source/WebCore/platform/mac/ScrollAnimatorMac.mm:506
&gt; +    , m_visibleScrollerThumbRect(IntRect())

No need to initialize an IntRect member variable

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:156
&gt; +    , m_visibleScrollerThumbRect(IntRect())

Unnecessary initialization

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:494
&gt; +    const WebCore::IntRect&amp; visibleScrollerThumbRect() const { return m_visibleScrollerThumbRect; }

I think typically functions that return an IntRect just return it by value, not a by (const) reference.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1599
&gt; +    const IntRect&amp; visibleThumbRect = _data-&gt;_page-&gt;visibleScrollerThumbRect();
&gt; +    NSRect visibleThumbNSRect = NSMakeRect(visibleThumbRect.x(), visibleThumbRect.y(), visibleThumbRect.width(), visibleThumbRect.height());

IntRect has an operator NSRect() so I think the conversion can just happen automatically or with a cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390412</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-21 15:50:24 -0700</bug_when>
    <thetext>Thanks Dan! I fixed all of the things you found, and committed the change with revision 84553.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90459</attachid>
            <date>2011-04-20 17:38:23 -0700</date>
            <delta_ts>2011-04-21 13:38:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-os.txt</filename>
            <type>text/plain</type>
            <size>18686</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NDQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDQtMjAgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTA0OAorICAgICAgICBOZWVkIHRvIHRyYWNrIHdoZXRoZXIgb3ZlcmxheSBzY3JvbGxiYXIgaXMg
Y3VycmVudGx5IHZpc2libGUgYW5kIGluIGxvd2VyLQorICAgICAgICByaWdodGhhbmQgY29ybmVy
CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzky
MTEyMzI+CisKKyAgICAgICAgV2hlbmV2ZXIgd2Ugc3RhcnQgYSBuZXcgU2Nyb2xsYmFyUGFydEFu
aW1hdGlvbiwgY2hlY2sgaWYgdGhlIHNjcm9sbGJhciBpcyBzaG93aW5nIAorICAgICAgICAoYWxw
aGEgb2YgMSkgYW5kIGlmIGl0cyBkb3VibGVWYWx1ZSBpcyAxIChtZWFuaW5nIGl0J3MgaW4gdGhl
IHNvdXRoZWFzdCBjb3JuZXIpLCAKKyAgICAgICAgYW5kIGlmIHNvLCBjYWxsIHNldFNjcm9sbGJh
cklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVyIHdpdGggYSB2YWx1ZSBvZiB0cnVlLCAKKyAgICAg
ICAgb3RoZXJ3aXNlIHdpdGggYSB2YWx1ZSBvZiBmYWxzZS4gU2Nyb2xsQW5pbWF0b3JNYWMgaGFz
IGEgbG9jYWwgYm9vbCB0byB0cmFjayB0aGlzIAorICAgICAgICB2YWx1ZSBzbyB0aGF0IGl0IGNh
biBhdm9pZCBzZW5kaW5nIG1lc3NhZ2VzIGFjcm9zcyB0aGUgQ2hyb21lQ2xpZW50IHRvIHRoZSAK
KyAgICAgICAgVUlQcm9jZXNzIGlmIHRoZSB2YWx1ZSBoYXMgbm90IGNoYW5nZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoLVtTY3JvbGxiYXJQYWludGVyRGVs
ZWdhdGUgc2V0VXBBbmltYXRpb246c2Nyb2xsZXJQYWludGVyOnBhcnQ6V2ViQ29yZTo6YW5pbWF0
ZUFscGhhVG86ZHVyYXRpb246XSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1h
Yzo6U2Nyb2xsQW5pbWF0b3JNYWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JN
YWM6OnNldFNjcm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVyKToKKworICAgICAgICBU
aGUgcGx1bWJpbmcgdG8gY2FsbCBvdmVyIHRvIHRoZSBDaHJvbWVDbGllbnQuCisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c2V0
U2Nyb2xsYmFySXNTaG93aW5nSW5Tb3V0aEVhc3RDb3JuZXIpOgorICAgICAgICAqIHBhZ2UvRnJh
bWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0U2Nyb2xsYmFySXNT
aG93aW5nSW5Tb3V0aEVhc3RDb3JuZXIpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGFibGVBcmVhOjpzZXRTY3JvbGxiYXJJc1Nob3dpbmdJblNvdXRoRWFzdENvcm5lcik6Cisg
ICAgICAgIAorICAgICAgICBOZXcgV2ViQ29yZVN5c3RlbUludGVyZmFjZSBBUEkgdG8gYWNjZXNz
IHRoZSBkb3VibGVWYWx1ZSBvZiB0aGUgc2Nyb2xsYmFyIHBhaW50ZXIuCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToK
KwogMjAxMS0wNC0yMCAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHJldmlzaW9uIDg0NDE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTE0MjYsNiArMTQyNiw3IEBAIF93a01vdXNlRXhpdGVkQ29udGVudEFy
ZWEKIF93a01vdXNlTW92ZWRJbkNvbnRlbnRBcmVhCiBfd2tTY3JvbGxiYXJNaW5pbXVtVGh1bWJM
ZW5ndGgKIF93a1Njcm9sbGJhck1pbmltdW1Ub3RhbExlbmd0aE5lZWRlZEZvclRodW1iCitfd2tT
Y3JvbGxiYXJQYWludGVyRG91YmxlVmFsdWUKIF93a1Njcm9sbGJhclBhaW50ZXJGb3JjZUZsYXNo
U2Nyb2xsZXJzCiBfd2tTY3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFsCiBfd2tTY3JvbGxiYXJQ
YWludGVyS25vYkFscGhhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDg0NDE2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzA3LDYgKzMwNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHBvc3RBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlP
YmplY3QqLCBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbikgeyB9CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZShjb25zdCBJbnRTaXpl
JikgY29uc3QgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJJc1Nob3dpbmdJ
blNvdXRoRWFzdENvcm5lcihib29sKSB7IH0KIAogICAgICAgICBlbnVtIERpYWxvZ1R5cGUgewog
ICAgICAgICAgICAgQWxlcnREaWFsb2cgPSAwLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAkocmV2aXNpb24gODQ0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMjIsNiArMjEyMiwxNSBAQCB2b2lkIEZyYW1lVmlldzo6
c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKCkKICAgICBwYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5B
bGxGcmFtZXMoKTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnNldFNjcm9sbGJhcklzU2hvd2luZ0lu
U291dGhFYXN0Q29ybmVyKGJvb2wgc2hvd2luZykKK3sKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpOworICAgIEFTU0VSVChwYWdlKTsKKyAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkg
IT0gbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPnNldFNjcm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVyKHNob3dpbmcp
OworfQorCiBib29sIEZyYW1lVmlldzo6c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBj
b25zdAogewogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGUoKSAhPSBGcmFtZVN0
YXRlQ29tcGxldGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDg0NDE2
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzE3LDYgKzMxNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0
IEludFNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSdWJiZXJCYW5kKGNvbnN0
IEludFNpemUmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2Vk
KCk7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29y
bmVyKGJvb2wpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFs
IEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0OwogICAg
IHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCShyZXZpc2lv
biA4NDQxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbXBsZXRlUnViYmVyQmFuZChjb25zdCBJbnRTaXplJikgY29uc3QgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYmFy
U3R5bGVDaGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhcklzU2hvd2lu
Z0luU291dGhFYXN0Q29ybmVyKGJvb2wpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5l
Y3RGcm9tUGFnZSgpIHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkocmV2aXNpb24gODQ0MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wU2Nyb2xsYmFyUGFpbnRUaW1lcigpOwog
I2VuZGlmCiAKKyAgICB2b2lkIHNldFNjcm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVy
KGJvb2wgc2hvd2luZyk7CisKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPiBtX3Njcm9sbEFu
aW1hdGlvbkhlbHBlcjsKICAgICBSZXRhaW5QdHI8U2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdh
dGU+IG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGU7CkBAIC0xNDYsNiArMTQ4LDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIGJvb2wgbV9kcmF3aW5nSW50b0xheWVyOwogICAgIGJvb2wg
bV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOworICAgIGJvb2wgbV9zY3JvbGxiYXJJc1Nob3dp
bmdJblNvdXRoRWFzdENvcm5lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0J
KHJldmlzaW9uIDg0NDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTksNiArNDE5LDEzIEBAIC0gKHZvaWQp
c2V0VXBBbmltYXRpb246KFJldGFpblB0cjxTY3JvbGwKICAgICAgICAgc2Nyb2xsYmFyUGFydEFu
aW1hdGlvbiA9IG5pbDsKICAgICB9CiAKKyAgICBpZiAocGFydCA9PSBXZWJDb3JlOjpUaHVtYlBh
cnQpIHsKKyAgICAgICAgaWYgKG5ld0FscGhhID09IDEgJiYgd2tTY3JvbGxiYXJQYWludGVyRG91
YmxlVmFsdWUoc2Nyb2xsZXJQYWludGVyKSA9PSAxKQorICAgICAgICAgICAgX2FuaW1hdG9yLT5z
ZXRTY3JvbGxiYXJJc1Nob3dpbmdJblNvdXRoRWFzdENvcm5lcih0cnVlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgX2FuaW1hdG9yLT5zZXRTY3JvbGxiYXJJc1Nob3dpbmdJblNvdXRoRWFz
dENvcm5lcihmYWxzZSk7CisgICAgfQorCiAgICAgW05TQW5pbWF0aW9uQ29udGV4dCBiZWdpbkdy
b3VwaW5nXTsKICAgICBbW05TQW5pbWF0aW9uQ29udGV4dCBjdXJyZW50Q29udGV4dF0gc2V0RHVy
YXRpb246ZHVyYXRpb25dOwogICAgIHNjcm9sbGJhclBhcnRBbmltYXRpb24uYWRvcHROUyhbW1Nj
cm9sbGJhclBhcnRBbmltYXRpb24gYWxsb2NdIGluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjpzY3Jv
bGxlclBhaW50ZXIgCkBAIC00OTYsNiArNTAzLDcgQEAgU2Nyb2xsQW5pbWF0b3JNYWM6OlNjcm9s
bEFuaW1hdG9yTWFjKFNjcgogI2VuZGlmCiAgICAgLCBtX2RyYXdpbmdJbnRvTGF5ZXIoZmFsc2Up
CiAgICAgLCBtX2hhdmVTY3JvbGxlZFNpbmNlUGFnZUxvYWQoZmFsc2UpCisgICAgLCBtX3Njcm9s
bGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVyKGZhbHNlKQogewogICAgIG1fc2Nyb2xsQW5p
bWF0aW9uSGVscGVyRGVsZWdhdGUuYWRvcHROUyhbW1Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbEFuaW1hdG9yOnRoaXNdKTsKICAgICBtX3Njcm9sbEFu
aW1hdGlvbkhlbHBlci5hZG9wdE5TKFtbTlNDbGFzc0Zyb21TdHJpbmcoQCJOU1Njcm9sbEFuaW1h
dGlvbkhlbHBlciIpIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOm1fc2Nyb2xsQW5pbWF0aW9uSGVs
cGVyRGVsZWdhdGUuZ2V0KCldKTsKQEAgLTEyMDgsNiArMTIxNiwxNSBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yTWFjOjppbml0aWFsU2Nyb2xsYmFyCiB9CiAjZW5kaWYKIAordm9pZCBTY3JvbGxBbmlt
YXRvck1hYzo6c2V0U2Nyb2xsYmFySXNTaG93aW5nSW5Tb3V0aEVhc3RDb3JuZXIoYm9vbCBzaG93
aW5nKQoreworICAgIGlmIChzaG93aW5nID09IG1fc2Nyb2xsYmFySXNTaG93aW5nSW5Tb3V0aEVh
c3RDb3JuZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldFNj
cm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVyKHNob3dpbmcpOworICAgIG1fc2Nyb2xs
YmFySXNTaG93aW5nSW5Tb3V0aEVhc3RDb3JuZXIgPSBzaG93aW5nOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaAkocmV2aXNpb24gODQ0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNiArMjI1LDcg
QEAgZXh0ZXJuIHZvaWQgKCp3a1NldFNjcm9sbGJhclBhaW50ZXJLbm9iQQogZXh0ZXJuIENHRmxv
YXQgKCp3a1Njcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKShXS1Njcm9sbGJhclBhaW50ZXJSZWYp
OwogZXh0ZXJuIHZvaWQgKCp3a1NldFNjcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKShXS1Njcm9s
bGJhclBhaW50ZXJSZWYsIENHRmxvYXQpOwogZXh0ZXJuIGJvb2wgKCp3a1Njcm9sbGJhclBhaW50
ZXJJc0hvcml6b250YWwpKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7CitleHRlcm4gZG91YmxlICgq
d2tTY3JvbGxiYXJQYWludGVyRG91YmxlVmFsdWUpKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7CiBl
eHRlcm4gdm9pZCAoKndrU2Nyb2xsYmFyUGFpbnRlclNldE92ZXJsYXlTdGF0ZSkoV0tTY3JvbGxi
YXJQYWludGVyUmVmLCBpbnQgb3ZlcmxheVNjcm9sbGVyU3RhdGUpOwogCiBleHRlcm4gV0tTY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlclJlZiAoKndrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyKShpZCBwYWludGVyQ29udHJvbGxlckRlbGVnYXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCShyZXZp
c2lvbiA4NDQxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCAoKndr
U2V0U2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYSkoVwogQ0dGbG9hdCAoKndrU2Nyb2xsYmFyUGFp
bnRlclRyYWNrQWxwaGEpKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7CiB2b2lkICgqd2tTZXRTY3Jv
bGxiYXJQYWludGVyVHJhY2tBbHBoYSkoV0tTY3JvbGxiYXJQYWludGVyUmVmLCBDR0Zsb2F0KTsK
IGJvb2wgKCp3a1Njcm9sbGJhclBhaW50ZXJJc0hvcml6b250YWwpKFdLU2Nyb2xsYmFyUGFpbnRl
clJlZik7Citkb3VibGUgKCp3a1Njcm9sbGJhclBhaW50ZXJEb3VibGVWYWx1ZSkoV0tTY3JvbGxi
YXJQYWludGVyUmVmKTsKIHZvaWQgKCp3a1Njcm9sbGJhclBhaW50ZXJTZXRPdmVybGF5U3RhdGUp
KFdLU2Nyb2xsYmFyUGFpbnRlclJlZiwgaW50IG92ZXJsYXlTY3JvbGxlclN0YXRlKTsKIAogV0tT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiAoKndrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyKShpZCBwYWludGVyQ29udHJvbGxlckRlbGVnYXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0NDQxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDQtMjAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTA0OAorICAgICAgICBOZWVk
IHRvIHRyYWNrIHdoZXRoZXIgb3ZlcmxheSBzY3JvbGxiYXIgaXMgY3VycmVudGx5IHZpc2libGUg
YW5kIGluIGxvd2VyLQorICAgICAgICByaWdodGhhbmQgY29ybmVyCisgICAgICAgIC1hbmQgY29y
cmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkyMTEyMzI+CisKKyAgICAgICAg
V2ViUGFnZVByb3h5IGtlZXBzIHRoZSBib29sIHNldCBieSBXZWJDb3JlIHRocm91Z2ggdGhlIGNs
aWVudC4KKworICAgICAgICBfd2luZG93UmVzaXplTW91c2VMb2NhdGlvbklzSW5WaXNpYmxlU2Ny
b2xsZXJUaHVtYiBuZWVkcyB0byByZXR1cm4gdGhpcyB2YWx1ZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBfd2luZG93UmVzaXplTW91
c2VMb2NhdGlvbklzSW5WaXNpYmxlU2Nyb2xsZXJUaHVtYjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFNjcm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2Nyb2xsYmFySXNTaG93aW5nSW5Tb3V0aEVhc3RDb3JuZXIpOgorCisg
ICAgICAgIENocm9tZUNsaWVudCBhbmQgbWVzc2FnZS1zZW5kaW5nIHdvcmsuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6c2V0U2Nyb2xsYmFySXNTaG93aW5nSW5Tb3V0aEVhc3RDb3JuZXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisK
KyAgICAgICAgQSBuZXcgV2ViU3lzdGVtSW50ZXJmYWNlIGlzIG5lZWRlZCBmb3IgdGhpcy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW06CisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTEtMDQtMjAg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDg0NDE2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsNyBAQCBXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiBwCiAgICAgLCBtX21haW5GcmFtZUhhc1Zl
cnRpY2FsU2Nyb2xsYmFyKGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVJc1Bpbm5lZFRvTGVmdFNp
ZGUoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGUoZmFsc2UpCisg
ICAgLCBtX3Njcm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVyKGZhbHNlKQogewogI2lm
bmRlZiBOREVCVUcKICAgICB3ZWJQYWdlUHJveHlDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtMzI4
LDYgKzMyOSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgbV9tYWluRnJhbWVJ
c1Bpbm5lZFRvTGVmdFNpZGUgPSBmYWxzZTsKICAgICBtX21haW5GcmFtZUlzUGlubmVkVG9SaWdo
dFNpZGUgPSBmYWxzZTsKIAorICAgIG1fc2Nyb2xsYmFySXNTaG93aW5nSW5Tb3V0aEVhc3RDb3Ju
ZXIgPSBmYWxzZTsKKwogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3ZvaWRDYWxsYmFja3Mp
OwogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2RhdGFDYWxsYmFja3MpOwogICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX3N0cmluZ0NhbGxiYWNrcyk7CkBAIC0yNzYwLDYgKzI3NjMsOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICBtX21haW5GcmFtZUlz
UGlubmVkVG9MZWZ0U2lkZSA9IGZhbHNlOwogICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRUb1JpZ2h0
U2lkZSA9IGZhbHNlOwogCisgICAgbV9zY3JvbGxiYXJJc1Nob3dpbmdJblNvdXRoRWFzdENvcm5l
ciA9IGZhbHNlOworCiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fdm9pZENhbGxiYWNrcyk7
CiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fZGF0YUNhbGxiYWNrcyk7CiAgICAgaW52YWxp
ZGF0ZUNhbGxiYWNrTWFwKG1fc3RyaW5nQ2FsbGJhY2tzKTsKQEAgLTI5MTUsNiArMjkyMCwxMSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tcGxldGVSdWJiZXJCYW5kCiAgICAgbV91aUNsaWVu
dC5kaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUodGhpcywgaW5pdGlhbE92ZXJoYW5n
KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbGJhcklzU2hvd2luZ0luU291dGhF
YXN0Q29ybmVyKGJvb2wgc2hvd2luZykKK3sKKyAgICBtX3Njcm9sbGJhcklzU2hvd2luZ0luU291
dGhFYXN0Q29ybmVyID0gc2hvd2luZzsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5n
ZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyLCBib29s
IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKQogewogICAgIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNj
cm9sbGJhciA9IGhhc0hvcml6b250YWxTY3JvbGxiYXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA4NDQxNikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDkwLDYgKzQ5MCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgV2ViRGF0YSopOwogCiAgICAgdm9pZCBs
aW5rQ2xpY2tlZChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7CisKKyAgICBi
b29sIHNjcm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVyKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxiYXJJc1Nob3dpbmdJblNvdXRoRWFzdENvcm5lcjsgfQogIAogcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5Piwg
V2ViUGFnZUdyb3VwKiwgdWludDY0X3QgcGFnZUlEKTsKQEAgLTU3NCw2ICs1NzYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2
NF90IGdlb2xvY2F0aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlm
aWVyKTsKICAgICB2b2lkIHJ1bk1vZGFsKCkgeyBtX3VpQ2xpZW50LnJ1bk1vZGFsKHRoaXMpOyB9
CiAgICAgdm9pZCBkaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOworICAgIHZvaWQgc2V0U2Nyb2xsYmFySXNTaG93aW5nSW5Tb3V0aEVhc3RD
b3JuZXIoYm9vbCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKGJv
b2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhciwgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhcik7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXRQaW5uaW5nRm9yTWFpbkZyYW1lKGJvb2wgcGlu
bmVkVG9MZWZ0U2lkZSwgYm9vbCBwaW5uZWRUb1JpZ2h0U2lkZSk7CiAKQEAgLTgyNSw2ICs4Mjgs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tYWluRnJhbWVJc1Bpbm5lZFRvTGVmdFNpZGU7CiAg
ICAgYm9vbCBtX21haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGU7CiAKKyAgICBib29sIG1fc2Ny
b2xsYmFySXNTaG93aW5nSW5Tb3V0aEVhc3RDb3JuZXI7CisKICAgICBzdGF0aWMgV0tQYWdlRGVi
dWdQYWludEZsYWdzIHNfZGVidWdQYWludEZsYWdzOwogfTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA4
NDQxNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICBQcmludEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIC0+ICgpCiAgICAgUnVuTW9k
YWwoKQogICAgIERpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZShXZWJDb3JlOjpJbnRT
aXplIGluaXRpYWxPdmVyaGFuZykKKyAgICBTZXRTY3JvbGxiYXJJc1Nob3dpbmdJblNvdXRoRWFz
dENvcm5lcihib29sIHNob3dpbmcpCiAgICAgRGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFt
ZShib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIsIGJvb2wgaGFzVmVydGljYWxTY3JvbGxiYXIp
CiAgICAgRGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0UGlubmluZ0Zvck1haW5GcmFtZShib29sIGhhc0hv
cml6b250YWxTY3JvbGxiYXIsIGJvb2wgaGFzVmVydGljYWxTY3JvbGxiYXIpCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDg0NDE2
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTkyLDYgKzE1OTIsMTEgQEAgLSAoTlNWaWV3ICopX2hpdFRlc3Q6KE5TUG9p
bnQgKilwb2ludCBkcgogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKEJPT0wpX3dpbmRvd1Jlc2l6
ZU1vdXNlTG9jYXRpb25Jc0luVmlzaWJsZVNjcm9sbGVyVGh1bWI6KE5TUG9pbnQpbG9jCit7Cisg
ICAgcmV0dXJuIF9kYXRhLT5fcGFnZS0+c2Nyb2xsYmFySXNTaG93aW5nSW5Tb3V0aEVhc3RDb3Ju
ZXIoKTs7Cit9CisKIC0gKHZvaWQpX3VwZGF0ZVdpbmRvd1Zpc2liaWxpdHkKIHsKICAgICBfZGF0
YS0+X3BhZ2UtPnVwZGF0ZVdpbmRvd0lzVmlzaWJsZSghW1tzZWxmIHdpbmRvd10gaXNNaW5pYXR1
cml6ZWRdKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDg0NDE2KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDQsNCArNzQ0LDkgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmRpZENvbXBsZXRlUnViYmVyQgogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUoaW5pdGlhbE92ZXJo
YW5nKSk7CiB9CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXRTY3JvbGxiYXJJc1Nob3dpbmdJ
blNvdXRoRWFzdENvcm5lcihib29sIHNob3dpbmcpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNldFNjcm9sbGJhcklzU2hvd2luZ0luU291dGhFYXN0Q29ybmVy
KHNob3dpbmcpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgJKHJldmlzaW9uIDg0NDE2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYg
KzIxNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRh
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFySXNT
aG93aW5nSW5Tb3V0aEVhc3RDb3JuZXIoYm9vbCk7CiAKICAgICBTdHJpbmcgbV9jYWNoZWRUb29s
VGlwOwogICAgIG11dGFibGUgUmVmUHRyPFdlYkZyYW1lPiBtX2NhY2hlZEZyYW1lU2V0TGFyZ2Vz
dEZyYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNp
b24gODQ0MTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsNyBA
QCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoU2Ny
b2xsYmFyUGFpbnRlclRyYWNrQWxwaGEpOwogICAgICAgICBJTklUKFNldFNjcm9sbGJhclBhaW50
ZXJUcmFja0FscGhhKTsKICAgICAgICAgSU5JVChTY3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFs
KTsKKyAgICAgICAgSU5JVChTY3JvbGxiYXJQYWludGVyRG91YmxlVmFsdWUpOwogICAgICAgICBJ
TklUKFNjcm9sbGJhclBhaW50ZXJTZXRPdmVybGF5U3RhdGUpOwogICAgICAgICBJTklUKE1ha2VT
Y3JvbGxiYXJQYWludGVyQ29udHJvbGxlcik7CiAgICAgICAgIElOSVQoTWFrZVNjcm9sbGJhclJl
cGxhY2VtZW50UGFpbnRlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDQ0MikK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE3IEBACisyMDExLTA0LTIwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkwNDgKKyAgICAgICAgTmVlZCB0byB0cmFjayB3
aGV0aGVyIG92ZXJsYXkgc2Nyb2xsYmFyIGlzIGN1cnJlbnRseSB2aXNpYmxlIGFuZCBpbiBsb3dl
ci0KKyAgICAgICAgcmlnaHRoYW5kIGNvcm5lcgorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmct
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MjExMjMyPgorCisgICAgICAgIEEgbmV3IFdlYlN5
c3RlbUludGVyZmFjZSBpcyBuZWVkZWQgZm9yIHRoaXMuCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UpOgorCiAyMDExLTA0LTIwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCShyZXZpc2lvbiA4NDQxNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBA
IHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKFNjcm9sbGJh
clBhaW50ZXJUcmFja0FscGhhKTsKICAgICBJTklUKFNldFNjcm9sbGJhclBhaW50ZXJUcmFja0Fs
cGhhKTsKICAgICBJTklUKFNjcm9sbGJhclBhaW50ZXJJc0hvcml6b250YWwpOworICAgIElOSVQo
U2Nyb2xsYmFyUGFpbnRlckRvdWJsZVZhbHVlKTsKICAgICBJTklUKFNjcm9sbGJhclBhaW50ZXJT
ZXRPdmVybGF5U3RhdGUpOwogICAgIElOSVQoTWFrZVNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
KTsKICAgICBJTklUKE1ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50ZXIpOwo=
</data>
<flag name="review"
          id="83216"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90589</attachid>
            <date>2011-04-21 13:38:13 -0700</date>
            <delta_ts>2011-04-21 14:44:52 -0700</delta_ts>
            <desc>Patch that sends a rect through the client</desc>
            <filename>for-review-os-2.txt</filename>
            <type>text/plain</type>
            <size>19590</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NTQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDQtMjEgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTA0OAorICAgICAgICBOZWVkIHRvIHRyYWNrIHdoZXRoZXIgb3ZlcmxheSBzY3JvbGxiYXIgaXMg
Y3VycmVudGx5IHZpc2libGUgYW5kIGluIGxvd2VyLQorICAgICAgICByaWdodGhhbmQgY29ybmVy
CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzky
MTEyMzI+CisKKyAgICAgICAgV2hlbmV2ZXIgd2Ugc3RhcnQgYSBuZXcgU2Nyb2xsYmFyUGFydEFu
aW1hdGlvbiwgY2hlY2sgaWYgdGhlIHNjcm9sbGJhciBpcyB2ZXJ0aWNhbCAKKyAgICAgICAgYW5k
IHNob3dpbmcgKGFscGhhIG9mIDEpLCBhbmQgaWYgc28sIGNhbGwgc2V0VmlzaWJsZVNjcm9sbGVy
VGh1bWJSZWN0IHdpdGggdGhlIAorICAgICAgICBrbm9iIHJlY3QsIG90aGVyd2lzZSB3aXRoIGFu
IGVtcHR5IHJlY3QuIFNjcm9sbEFuaW1hdG9yTWFjIGhhcyBhIGxvY2FsIHJlY3QgdG8gCisgICAg
ICAgIHRyYWNrIHRoaXMgdmFsdWUgc28gdGhhdCBpdCBjYW4gYXZvaWQgc2VuZGluZyBtZXNzYWdl
cyBhY3Jvc3MgdGhlIENocm9tZUNsaWVudCB0byAKKyAgICAgICAgdGhlIFVJUHJvY2VzcyBpZiB0
aGUgcmVjdCBoYXMgbm90IGNoYW5nZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
OgorICAgICAgICAoLVtTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUgc2V0VXBBbmltYXRpb246c2Ny
b2xsZXJQYWludGVyOnBhcnQ6V2ViQ29yZTo6YW5pbWF0ZUFscGhhVG86ZHVyYXRpb246XSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6U2Nyb2xsQW5pbWF0b3JNYWMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdCk6CisKKyAgICAgICAgUGx1bWJpbmcgZm9yIHRoZSBjaHJvbWUgY2xpZW50LgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnQ6Om5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0VmlzaWJsZVNj
cm9sbGVyVGh1bWJSZWN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxl
QXJlYTo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KToKKworICAgICAgICBOZXcgV2ViQ29y
ZVN5c3RlbUludGVyZmFjZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtub2IgcmVjdC4KKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
Lm1tOgorCiAyMDExLTA0LTIxICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgkocmV2aXNpb24gODQ0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTQyOSw2ICsxNDI5LDcgQEAgX3drU2Nyb2xsYmFyTWluaW11bVRv
dGFsTGVuZ3RoTmVlZGVkRm9yVAogX3drU2Nyb2xsYmFyUGFpbnRlckZvcmNlRmxhc2hTY3JvbGxl
cnMKIF93a1Njcm9sbGJhclBhaW50ZXJJc0hvcml6b250YWwKIF93a1Njcm9sbGJhclBhaW50ZXJL
bm9iQWxwaGEKK193a1Njcm9sbGJhclBhaW50ZXJLbm9iUmVjdAogX3drU2Nyb2xsYmFyUGFpbnRl
clBhaW50CiBfd2tTY3JvbGxiYXJQYWludGVyU2V0RGVsZWdhdGUKIF93a1Njcm9sbGJhclBhaW50
ZXJTZXRPdmVybGF5U3RhdGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2
aXNpb24gODQ0MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9zdEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0
eU9iamVjdCosIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uKSB7IH0KIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lKGNvbnN0IEludFNp
emUmKSBjb25zdCB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJ
c1Zpc2libGVJblJlY3QoY29uc3QgSW50UmVjdCYpIHsgfQogCiAgICAgICAgIGVudW0gRGlhbG9n
VHlwZSB7CiAgICAgICAgICAgICBBbGVydERpYWxvZyA9IDAsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCShyZXZpc2lvbiA4NDQxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyMiw2ICsyMTIyLDE1IEBAIHZvaWQgRnJh
bWVWaWV3OjpzY3JvbGxiYXJTdHlsZUNoYW5nZWQoKQogICAgIHBhZ2UtPnNldE5lZWRzUmVjYWxj
U3R5bGVJbkFsbEZyYW1lcygpOwogfQogCit2b2lkIEZyYW1lVmlldzo6c2V0VmlzaWJsZVNjcm9s
bGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIpCit7CisgICAgUGFnZSog
cGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBBU1NFUlQocGFnZSk7CisgICAgaWYgKHBhZ2Ut
Pm1haW5GcmFtZSgpICE9IG1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gcGFn
ZS0+Y2hyb21lKCktPmNsaWVudCgpLT5ub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0
KHNjcm9sbGVyVGh1bWIpOworfQorCiBib29sIEZyYW1lVmlldzo6c2hvdWxkU3VzcGVuZFNjcm9s
bEFuaW1hdGlvbnMoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+c3Rh
dGUoKSAhPSBGcmFtZVN0YXRlQ29tcGxldGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJ
KHJldmlzaW9uIDg0NDE2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29y
a2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbFRvKGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVS
dWJiZXJCYW5kKGNvbnN0IEludFNpemUmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
YmFyU3R5bGVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdChjb25zdCBJbnRSZWN0Jik7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Ny
b2xsYmFyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmgJKHJldmlzaW9uIDg0NDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSdWJiZXJCYW5kKGNvbnN0IEludFNpemUmKSBjb25z
dCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1c3Bl
bmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlz
aWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgJKHJldmlzaW9uIDg0NDE2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQog
CisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgpAQCAtODMsNiArODQs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wU2Nyb2xsYmFyUGFpbnRUaW1lcigpOwogI2VuZGlm
CiAKKyAgICB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jik7
CisKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPiBtX3Njcm9sbEFuaW1hdGlvbkhlbHBlcjsK
ICAgICBSZXRhaW5QdHI8U2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGU+IG1fc2Nyb2xsQW5p
bWF0aW9uSGVscGVyRGVsZWdhdGU7CkBAIC0xNDYsNiArMTQ5LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogICAgIGJvb2wgbV9kcmF3aW5nSW50b0xheWVyOwogICAgIGJvb2wgbV9oYXZlU2Nyb2xsZWRT
aW5jZVBhZ2VMb2FkOworICAgIEludFJlY3QgbV92aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3Q7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCShyZXZpc2lvbiA4NDQxNikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yTWFjLmgiCiAK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50Lmgi
CiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgpAQCAtNDE5LDYgKzQxOCwxNCBAQCAtICh2b2lkKXNl
dFVwQW5pbWF0aW9uOihSZXRhaW5QdHI8U2Nyb2xsCiAgICAgICAgIHNjcm9sbGJhclBhcnRBbmlt
YXRpb24gPSBuaWw7CiAgICAgfQogCisgICAgaWYgKHBhcnQgPT0gV2ViQ29yZTo6VGh1bWJQYXJ0
ICYmICF3a1Njcm9sbGJhclBhaW50ZXJJc0hvcml6b250YWwoc2Nyb2xsZXJQYWludGVyKSkgewor
ICAgICAgICBpZiAobmV3QWxwaGEgPT0gMSkgeworICAgICAgICAgICAgSW50UmVjdCB0aHVtYlJl
Y3QgPSBJbnRSZWN0KHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0KHNjcm9sbGVyUGFpbnRlcikp
OworICAgICAgICAgICAgX2FuaW1hdG9yLT5zZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QodGh1
bWJSZWN0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBfYW5pbWF0b3ItPnNldFZpc2li
bGVTY3JvbGxlclRodW1iUmVjdChXZWJDb3JlOjpJbnRSZWN0KCkpOworICAgIH0KKwogICAgIFtO
U0FuaW1hdGlvbkNvbnRleHQgYmVnaW5Hcm91cGluZ107CiAgICAgW1tOU0FuaW1hdGlvbkNvbnRl
eHQgY3VycmVudENvbnRleHRdIHNldER1cmF0aW9uOmR1cmF0aW9uXTsKICAgICBzY3JvbGxiYXJQ
YXJ0QW5pbWF0aW9uLmFkb3B0TlMoW1tTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIGFsbG9jXSBpbml0
V2l0aFNjcm9sbGJhclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIApAQCAtNDk2LDYgKzUwMyw3IEBA
IFNjcm9sbEFuaW1hdG9yTWFjOjpTY3JvbGxBbmltYXRvck1hYyhTY3IKICNlbmRpZgogICAgICwg
bV9kcmF3aW5nSW50b0xheWVyKGZhbHNlKQogICAgICwgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VM
b2FkKGZhbHNlKQorICAgICwgbV92aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoSW50UmVjdCgpKQog
ewogICAgIG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUuYWRvcHROUyhbW1Njcm9sbEFu
aW1hdGlvbkhlbHBlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbEFuaW1hdG9yOnRoaXNd
KTsKICAgICBtX3Njcm9sbEFuaW1hdGlvbkhlbHBlci5hZG9wdE5TKFtbTlNDbGFzc0Zyb21TdHJp
bmcoQCJOU1Njcm9sbEFuaW1hdGlvbkhlbHBlciIpIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOm1f
c2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUuZ2V0KCldKTsKQEAgLTEyMDgsNiArMTIxNiwx
OSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjppbml0aWFsU2Nyb2xsYmFyCiB9CiAjZW5kaWYK
IAordm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNv
bnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIpCit7CisgICAgSW50UmVjdCByZWN0SW5WaWV3Q29v
cmRpbmF0ZXMgPSBzY3JvbGxlclRodW1iOworICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsU2Ny
b2xsYmFyID0gbV9zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAg
cmVjdEluVmlld0Nvb3JkaW5hdGVzID0gdmVydGljYWxTY3JvbGxiYXItPmNvbnZlcnRUb0NvbnRh
aW5pbmdWaWV3KHNjcm9sbGVyVGh1bWIpOworCisgICAgaWYgKHJlY3RJblZpZXdDb29yZGluYXRl
cyA9PSBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zY3JvbGxhYmxlQXJlYS0+c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KHJlY3RJblZpZXdD
b29yZGluYXRlcyk7CisgICAgbV92aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QgPSByZWN0SW5WaWV3
Q29vcmRpbmF0ZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCShyZXZpc2lvbiA4NDQxNikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUsNyBAQCBleHRlcm4gdm9pZCAoKndrU2V0U2Nyb2xs
YmFyUGFpbnRlcktub2JBCiBleHRlcm4gQ0dGbG9hdCAoKndrU2Nyb2xsYmFyUGFpbnRlclRyYWNr
QWxwaGEpKFdLU2Nyb2xsYmFyUGFpbnRlclJlZik7CiBleHRlcm4gdm9pZCAoKndrU2V0U2Nyb2xs
YmFyUGFpbnRlclRyYWNrQWxwaGEpKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiwgQ0dGbG9hdCk7CiBl
eHRlcm4gYm9vbCAoKndrU2Nyb2xsYmFyUGFpbnRlcklzSG9yaXpvbnRhbCkoV0tTY3JvbGxiYXJQ
YWludGVyUmVmKTsKK2V4dGVybiBDR1JlY3QgKCp3a1Njcm9sbGJhclBhaW50ZXJLbm9iUmVjdCko
V0tTY3JvbGxiYXJQYWludGVyUmVmKTsKIGV4dGVybiB2b2lkICgqd2tTY3JvbGxiYXJQYWludGVy
U2V0T3ZlcmxheVN0YXRlKShXS1Njcm9sbGJhclBhaW50ZXJSZWYsIGludCBvdmVybGF5U2Nyb2xs
ZXJTdGF0ZSk7CiAKIGV4dGVybiBXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmICgqd2tN
YWtlU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIpKGlkIHBhaW50ZXJDb250cm9sbGVyRGVsZWdh
dGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDg0NDE2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE0OCw2ICsxNDgsNyBAQCB2b2lkICgqd2tTZXRTY3JvbGxiYXJQYWludGVyS25vYkFscGhhKShX
CiBDR0Zsb2F0ICgqd2tTY3JvbGxiYXJQYWludGVyVHJhY2tBbHBoYSkoV0tTY3JvbGxiYXJQYWlu
dGVyUmVmKTsKIHZvaWQgKCp3a1NldFNjcm9sbGJhclBhaW50ZXJUcmFja0FscGhhKShXS1Njcm9s
bGJhclBhaW50ZXJSZWYsIENHRmxvYXQpOwogYm9vbCAoKndrU2Nyb2xsYmFyUGFpbnRlcklzSG9y
aXpvbnRhbCkoV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKK0NHUmVjdCAoKndrU2Nyb2xsYmFyUGFp
bnRlcktub2JSZWN0KShXS1Njcm9sbGJhclBhaW50ZXJSZWYpOwogdm9pZCAoKndrU2Nyb2xsYmFy
UGFpbnRlclNldE92ZXJsYXlTdGF0ZSkoV0tTY3JvbGxiYXJQYWludGVyUmVmLCBpbnQgb3Zlcmxh
eVNjcm9sbGVyU3RhdGUpOwogCiBXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmICgqd2tN
YWtlU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIpKGlkIHBhaW50ZXJDb250cm9sbGVyRGVsZWdh
dGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODQ1NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wNC0yMSAgQmV0
aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU5MDQ4CisgICAgICAgIE5lZWQgdG8gdHJhY2sgd2hldGhlciBvdmVybGF5IHNjcm9sbGJh
ciBpcyBjdXJyZW50bHkgdmlzaWJsZSBhbmQgaW4gbG93ZXItCisgICAgICAgIHJpZ2h0aGFuZCBj
b3JuZXIKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vOTIxMTIzMj4KKworICAgICAgICBXZWJQYWdlUHJveHkgbm93IHN0b3JlcyBhbiBJbnRSZWN0
IG9mIHRoZSBzY3JvbGxlciB0aHVtYiBzZXQgYnkgV2ViQ29yZSB0aHJvdWdoIAorICAgICAgICB0
aGUgY2xpZW50LgorCisgICAgICAgIF93aW5kb3dSZXNpemVNb3VzZUxvY2F0aW9uSXNJblZpc2li
bGVTY3JvbGxlclRodW1iIHRlc3RzIGlmIHRoZSBwYXJhbWV0ZXIgcG9pbnQgaXMgCisgICAgICAg
IGluc2lkZSB0aGUgY2FjaGVkIHNjcm9sbGVyIHRodW1iIHJlY3QuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgX3dpbmRvd1Jlc2l6ZU1v
dXNlTG9jYXRpb25Jc0luVmlzaWJsZVNjcm9sbGVyVGh1bWI6XSk6CisKKyAgICAgICAgQ2xpZW50
IHdvcmsgdG8gY2FjaGUgdGhlIHJlY3QuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlz
aWJsZVNjcm9sbGVyVGh1bWJSZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpub3RpZnlT
Y3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorCisgICAgICAgIE5ldyBXZWJTeXN0ZW1JbnRl
cmZhY2UgaXMgbmVlZGVkIGJ5IFdlYkNvcmUgZm9yIHRoaXMuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UpOgorCiAyMDExLTA0LTIxICBBbmRyZWFzIEtsaW5nICA8
YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gODQ0MTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYgKzE1Myw3IEBAIFdlYlBh
Z2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHAKICAgICAsIG1fbWFpbkZyYW1lSGFz
VmVydGljYWxTY3JvbGxiYXIoZmFsc2UpCiAgICAgLCBtX21haW5GcmFtZUlzUGlubmVkVG9MZWZ0
U2lkZShmYWxzZSkKICAgICAsIG1fbWFpbkZyYW1lSXNQaW5uZWRUb1JpZ2h0U2lkZShmYWxzZSkK
KyAgICAsIG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KEludFJlY3QoKSkKIHsKICNpZm5kZWYg
TkRFQlVHCiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5pbmNyZW1lbnQoKTsKQEAgLTMyOCw2ICsz
MjksOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1fbWFpbkZyYW1lSXNQaW5u
ZWRUb0xlZnRTaWRlID0gZmFsc2U7CiAgICAgbV9tYWluRnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRl
ID0gZmFsc2U7CiAKKyAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9IEludFJlY3QoKTsK
KwogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3ZvaWRDYWxsYmFja3MpOwogICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2RhdGFDYWxsYmFja3MpOwogICAgIGludmFsaWRhdGVDYWxsYmFj
a01hcChtX3N0cmluZ0NhbGxiYWNrcyk7CkBAIC0yNzYwLDYgKzI3NjMsOCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICBtX21haW5GcmFtZUlzUGlubmVkVG9MZWZ0
U2lkZSA9IGZhbHNlOwogICAgIG1fbWFpbkZyYW1lSXNQaW5uZWRUb1JpZ2h0U2lkZSA9IGZhbHNl
OwogCisgICAgbV92aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QgPSBJbnRSZWN0KCk7CisKICAgICBp
bnZhbGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzKTsKICAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV9kYXRhQ2FsbGJhY2tzKTsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9z
dHJpbmdDYWxsYmFja3MpOwpAQCAtMjkxNSw2ICsyOTIwLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDb21wbGV0ZVJ1YmJlckJhbmQKICAgICBtX3VpQ2xpZW50LmRpZENvbXBsZXRlUnViYmVy
QmFuZEZvck1haW5GcmFtZSh0aGlzLCBpbml0aWFsT3ZlcmhhbmcpOwogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6bm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBJbnRSZWN0
JiBzY3JvbGxlclRodW1iKQoreworICAgIG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0ID0gc2Ny
b2xsZXJUaHVtYjsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVNjcm9sbGJhcnNG
b3JNYWluRnJhbWUoYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyLCBib29sIGhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKQogewogICAgIG1fbWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9IGhh
c0hvcml6b250YWxTY3JvbGxiYXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiA4NDQxNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDkwLDYgKzQ5MCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hdGluZ1VSTFN0cmluZywgV2ViRGF0YSopOwogCiAgICAgdm9pZCBsaW5rQ2xpY2tlZChj
b25zdCBTdHJpbmcmLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7CisKKyAgICBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiB2aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Zp
c2libGVTY3JvbGxlclRodW1iUmVjdDsgfQogIAogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHko
UGFnZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFnZUdyb3VwKiwg
dWludDY0X3QgcGFnZUlEKTsKQEAgLTU3NCw2ICs1NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKTsKICAgICB2b2lk
IHJ1bk1vZGFsKCkgeyBtX3VpQ2xpZW50LnJ1bk1vZGFsKHRoaXMpOyB9CiAgICAgdm9pZCBkaWRD
b21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwor
ICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKGJv
b2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhciwgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhcik7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXRQaW5uaW5nRm9yTWFpbkZyYW1lKGJvb2wgcGlu
bmVkVG9MZWZ0U2lkZSwgYm9vbCBwaW5uZWRUb1JpZ2h0U2lkZSk7CiAKQEAgLTgyNSw2ICs4Mjgs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tYWluRnJhbWVJc1Bpbm5lZFRvTGVmdFNpZGU7CiAg
ICAgYm9vbCBtX21haW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGU7CiAKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0OworCiAgICAgc3RhdGljIFdLUGFnZURl
YnVnUGFpbnRGbGFncyBzX2RlYnVnUGFpbnRGbGFnczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
ODQ0MTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgUHJpbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSAtPiAoKQogICAgIFJ1bk1v
ZGFsKCkKICAgICBEaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUoV2ViQ29yZTo6SW50
U2l6ZSBpbml0aWFsT3ZlcmhhbmcpCisgICAgTm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUlu
UmVjdChXZWJDb3JlOjpJbnRSZWN0IHNjcm9sbGVyVGh1bWIpCiAgICAgRGlkQ2hhbmdlU2Nyb2xs
YmFyc0Zvck1haW5GcmFtZShib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIsIGJvb2wgaGFzVmVy
dGljYWxTY3JvbGxiYXIpCiAgICAgRGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0UGlubmluZ0Zvck1haW5G
cmFtZShib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIsIGJvb2wgaGFzVmVydGljYWxTY3JvbGxi
YXIpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0J
KHJldmlzaW9uIDg0NDE2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTkyLDYgKzE1OTIsMTQgQEAgLSAoTlNWaWV3ICop
X2hpdFRlc3Q6KE5TUG9pbnQgKilwb2ludCBkcgogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKEJP
T0wpX3dpbmRvd1Jlc2l6ZU1vdXNlTG9jYXRpb25Jc0luVmlzaWJsZVNjcm9sbGVyVGh1bWI6KE5T
UG9pbnQpbG9jCit7CisgICAgTlNQb2ludCBsb2NhbFBvaW50ID0gW3NlbGYgY29udmVydFBvaW50
OmxvYyBmcm9tVmlldzpuaWxdOworICAgIGNvbnN0IEludFJlY3QmIHZpc2libGVUaHVtYlJlY3Qg
PSBfZGF0YS0+X3BhZ2UtPnZpc2libGVTY3JvbGxlclRodW1iUmVjdCgpOworICAgIE5TUmVjdCB2
aXNpYmxlVGh1bWJOU1JlY3QgPSBOU01ha2VSZWN0KHZpc2libGVUaHVtYlJlY3QueCgpLCB2aXNp
YmxlVGh1bWJSZWN0LnkoKSwgdmlzaWJsZVRodW1iUmVjdC53aWR0aCgpLCB2aXNpYmxlVGh1bWJS
ZWN0LmhlaWdodCgpKTsKKyAgICByZXR1cm4gTlNNb3VzZUluUmVjdChsb2NhbFBvaW50LCB2aXNp
YmxlVGh1bWJOU1JlY3QsIFtzZWxmIGlzRmxpcHBlZF0pOworfQorCiAtICh2b2lkKV91cGRhdGVX
aW5kb3dWaXNpYmlsaXR5CiB7CiAgICAgX2RhdGEtPl9wYWdlLT51cGRhdGVXaW5kb3dJc1Zpc2li
bGUoIVtbc2VsZiB3aW5kb3ddIGlzTWluaWF0dXJpemVkXSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCShyZXZpc2lvbiA4NDQxNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ0
LDQgKzc0NCw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRDb21wbGV0ZVJ1YmJlckIKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tcGxldGVSdWJiZXJC
YW5kRm9yTWFpbkZyYW1lKGluaXRpYWxPdmVyaGFuZykpOwogfQogCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6bm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBJbnRSZWN0JiBz
Y3JvbGxlclRodW1iKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpOb3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KHNjcm9sbGVyVGh1bWIpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlz
aW9uIDg0NDE2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmlld3BvcnREYXRhRGlkQ2hhbmdlKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUlu
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAKICAgICBTdHJpbmcgbV9jYWNoZWRUb29s
VGlwOwogICAgIG11dGFibGUgUmVmUHRyPFdlYkZyYW1lPiBtX2NhY2hlZEZyYW1lU2V0TGFyZ2Vz
dEZyYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNp
b24gODQ0MTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsNyBA
QCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoU2Ny
b2xsYmFyUGFpbnRlclRyYWNrQWxwaGEpOwogICAgICAgICBJTklUKFNldFNjcm9sbGJhclBhaW50
ZXJUcmFja0FscGhhKTsKICAgICAgICAgSU5JVChTY3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFs
KTsKKyAgICAgICAgSU5JVChTY3JvbGxiYXJQYWludGVyS25vYlJlY3QpOwogICAgICAgICBJTklU
KFNjcm9sbGJhclBhaW50ZXJTZXRPdmVybGF5U3RhdGUpOwogICAgICAgICBJTklUKE1ha2VTY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlcik7CiAgICAgICAgIElOSVQoTWFrZVNjcm9sbGJhclJlcGxh
Y2VtZW50UGFpbnRlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDU0MikKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDExLTA0LTIxICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkwNDgKKyAgICAgICAgTmVlZCB0byB0cmFjayB3aGV0
aGVyIG92ZXJsYXkgc2Nyb2xsYmFyIGlzIGN1cnJlbnRseSB2aXNpYmxlIGFuZCBpbiBsb3dlci0K
KyAgICAgICAgcmlnaHRoYW5kIGNvcm5lcgorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MjExMjMyPgorCisgICAgICAgIEEgbmV3IFdlYlN5c3Rl
bUludGVyZmFjZSBpcyBuZWVkZWQgZm9yIHRoaXMuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UpOgorCiAyMDExLTA0LTIxICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQko
cmV2aXNpb24gODQ0MTYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCB2b2lk
IEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChTY3JvbGxiYXJQYWlu
dGVyVHJhY2tBbHBoYSk7CiAgICAgSU5JVChTZXRTY3JvbGxiYXJQYWludGVyVHJhY2tBbHBoYSk7
CiAgICAgSU5JVChTY3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFsKTsKKyAgICBJTklUKFNjcm9s
bGJhclBhaW50ZXJLbm9iUmVjdCk7CiAgICAgSU5JVChTY3JvbGxiYXJQYWludGVyU2V0T3Zlcmxh
eVN0YXRlKTsKICAgICBJTklUKE1ha2VTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlcik7CiAgICAg
SU5JVChNYWtlU2Nyb2xsYmFyUmVwbGFjZW1lbnRQYWludGVyKTsK
</data>
<flag name="review"
          id="83350"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>