<?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>69964</bug_id>
          
          <creation_ts>2011-10-12 14:36:50 -0700</creation_ts>
          <short_desc>Make the interface of locationAndLengthFromRange and rangeFromLocationAndLength consistent</short_desc>
          <delta_ts>2011-10-14 10:53:41 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68330</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>482731</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-12 14:36:50 -0700</bug_when>
    <thetext>rangeFromLocationAndLength and locationAndLengthFromRange are used by pairs. We should make their interface consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482756</commentid>
    <comment_count>1</comment_count>
      <attachid>110750</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-12 14:51:40 -0700</bug_when>
    <thetext>Created attachment 110750
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482772</commentid>
    <comment_count>2</comment_count>
      <attachid>110750</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-12 15:06:39 -0700</bug_when>
    <thetext>Comment on attachment 110750
cleanup

Attachment 110750 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10044051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482783</commentid>
    <comment_count>3</comment_count>
      <attachid>110755</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-12 15:18:47 -0700</bug_when>
    <thetext>Created attachment 110755
Fixed qt &amp; gtk build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482804</commentid>
    <comment_count>4</comment_count>
      <attachid>110755</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-12 15:44:08 -0700</bug_when>
    <thetext>Comment on attachment 110755
Fixed qt &amp; gtk build

Attachment 110755 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10047048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482808</commentid>
    <comment_count>5</comment_count>
      <attachid>110759</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-12 15:47:01 -0700</bug_when>
    <thetext>Created attachment 110759
Fixed Chromium build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482877</commentid>
    <comment_count>6</comment_count>
      <attachid>110759</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-10-12 17:11:10 -0700</bug_when>
    <thetext>Comment on attachment 110759
Fixed Chromium build

I don&apos;t see the value of this change. We discussed this extensively in IRC and you know what is my opinion about this. TextIterator is a class used to iterate through text both in editable and non editable content. What is this adding as value? Any call will now have an additional parameter that will be either the root editable element or the document element and by looking at the code you can&apos;t really tell which one has been selected.
Where is the benefit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482883</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-12 17:16:01 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 110759 [details])
&gt;TextIterator is a class used to iterate through text both in editable and non editable content. What is this adding as value?

The value is that TextIterator::locationAndLengthFromRange no longer depends on FrameSelection. As Darin said on the bug 68330. TextIterator is rather a low-level concept and I don&apos;t think it should depend on the current selection.

&gt;Any call will now have an additional parameter that will be either the root editable element or the document element and by looking at the code you can&apos;t really tell which one has been selected.
&gt; Where is the benefit?

The benefit of this patch is remove the dependency on FrameSelection and make locationAndLengthFromRange and rangeFromLocationAndLength both take the scope element. It makes the API more generic.

For example, I suspect many platforms other than Mac wants to use rootEditableElementOrDocumentElement. They just want to pass rootEditableElement and bail out in other cases. They probably copied Mac port&apos;s code without knowing why Mac port does this. I&apos;d definitely would like to remove this odd behavior from Chromium code for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482912</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-12 17:54:52 -0700</bug_when>
    <thetext>Removing FrameSelection dependency sounds valuable to me. Also, it does feel a little too magical for these functions to decide what root to use all by themselves.

I have some concerns about the suggested approach. First, the pain point has been just moved - we still have a place that confusingly does &quot;this or that&quot; without explanation. The new place isn&apos;t obviously better - why does FrameSelection class decide what offsets text input and editing code uses?

The new API also looks confusingly generic. Do we actually need to imply that any element can be used as root? If I were investigating the code, that would send me in the wrong direction. As far as I can tell, root editable element or document are the two options, and they correspond to distinct use cases (editable vs. non-editable content).

To address the second point, renaming the argument to &quot;editableRoot&quot;, and passing 0 when there is none might suffice. Some assertions and comments need to be added to enforce correct use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482914</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-12 18:03:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I have some concerns about the suggested approach. First, the pain point has been just moved - we still have a place that confusingly does &quot;this or that&quot; without explanation. The new place isn&apos;t obviously better - why does FrameSelection class decide what offsets text input and editing code uses?

FrameSelection doesn&apos;t decide. That&apos;s why I gave a name that doesn&apos;t sound related to these two functions. My intent was that call sites of these functions will clearly document what it&apos;s doing and move on to just use rootEditableElement instead.

&gt; The new API also looks confusingly generic. Do we actually need to imply that any element can be used as root?

I think this is valuable for testing purpose. Because there are few places where we start textIterator at an arbitrary element, it&apos;ll be helpful to test various cases but we don&apos;t necessarily want to add IDL for TextIterator etc... for testing purposes.

&gt; If I were investigating the code, that would send me in the wrong direction. As far as I can tell, root editable element or document are the two options, and they correspond to distinct use cases (editable vs. non-editable content).

This is a valid point. Hopefully readers see where these functions are called and figure that out. Alternatively, I can add assertions at the beginning of these classes to assert that scope elements are root editable element or document element.

&gt; To address the second point, renaming the argument to &quot;editableRoot&quot;, and passing 0 when there is none might suffice. Some assertions and comments need to be added to enforce correct use.

So are you suggesting that we&apos;ll still magically fall back to documentElement when editableRoot is 0? That sounds too confusing to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482916</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-12 18:16:21 -0700</bug_when>
    <thetext>&gt; FrameSelection doesn&apos;t decide.

I don&apos;t see it that way. The function is called &quot;ThisOrThat&quot;, meaning that there is a decision made inside.

&gt; So are you suggesting that we&apos;ll still magically fall back to documentElement when editableRoot is 0? That sounds too confusing to me.

The idea is that if there is an editable root, it&apos;s used, and if there is no editable root, some default kind of offset is returned. The caller doesn&apos;t really care if it&apos;s relative to document element or what. Passing 0 for editing root is a reasonable wear to specify that there isn&apos;t one. Perhaps this suggestion can grow on you with a little time?

Your point about testing is valid. However, this seems like a fairly involved area (few people even know why there are different roots for offsets used in different circumstances), so perhaps we can get away without making tests affect code clarity in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482922</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-12 18:24:51 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; FrameSelection doesn&apos;t decide.
&gt; 
&gt; I don&apos;t see it that way. The function is called &quot;ThisOrThat&quot;, meaning that there is a decision made inside.

Perhaps we just need a better name.

&gt; &gt; So are you suggesting that we&apos;ll still magically fall back to documentElement when editableRoot is 0? That sounds too confusing to me.
&gt; 
&gt; The idea is that if there is an editable root, it&apos;s used, and if there is no editable root, some default kind of offset is returned.

This is the part I don&apos;t really like. It&apos;s not clear at all why we have some fallback ingrained in TextIterator code.

&gt; The caller doesn&apos;t really care if it&apos;s relative to document element or what. Passing 0 for editing root is a reasonable wear to specify that there isn&apos;t one. Perhaps this suggestion can grow on you with a little time?

The part I don&apos;t get is why we need an offset rooted at document. As far as I&apos;m concerned, there is no use case for this in Chromium port.

&gt; Your point about testing is valid. However, this seems like a fairly involved area (few people even know why there are different roots for offsets used in different circumstances), so perhaps we can get away without making tests affect code clarity in this case.

I&apos;d really like to understand why we need such a document fallback and Enrica pointed out on IRC that this hack is needed to support RTF copy &amp; paste in Mac port. If that&apos;s the case, then it&apos;s not applicable to many other usage (e.g. firstRect... in Qt &amp; GTK).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482939</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-12 18:44:14 -0700</bug_when>
    <thetext>NSTextInputClient methods like attributedSubstringForProposedRange:actualRange: can be called on non-editable content, that&apos;s simply API contract. Methods like firstRectForCharacterRange also obviously have uses beyond editing.

At some point, Dictionary pop-up on Mac OS X was using NSTextInput (then, without &quot;Client&quot;) to get text to highlight from WebKit. I don&apos;t know if it is still doing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483260</commentid>
    <comment_count>13</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-10-13 10:05:47 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; NSTextInputClient methods like attributedSubstringForProposedRange:actualRange: can be called on non-editable content, that&apos;s simply API contract. Methods like firstRectForCharacterRange also obviously have uses beyond editing.
&gt; 
&gt; At some point, Dictionary pop-up on Mac OS X was using NSTextInput (then, without &quot;Client&quot;) to get text to highlight from WebKit. I don&apos;t know if it is still doing that.

I see the value of removing implicit dependence on frame selection on a low level class like TextIterator even though there is a lot of code in TextIterator that is aimed at preserving the selection.
The two methods we are discussing are the only ones that reference the selection object, but the concept still pervades the class (see comments throughout the file).
The point I&apos;m trying to make is that this change is not a step forward in making more clear what is the exact scope in every case these methods are called.
Your argument, and I apologize if I&apos;m misunderstanding you here, is that there should no need to default to the document element because this should only be used with editable content. 
I believe Alexey has explained correctly why we need that.
I also want to stress again that TextIterator is not meant to deal only with editable content.
I agree that is not desirable not to know exactly which scope is being used and when, but I honestly I don&apos;t see how this patch is making this more explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483319</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-13 11:03:48 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; The point I&apos;m trying to make is that this change is not a step forward in making more clear what is the exact scope in every case these methods are called.
&gt; Your argument, and I apologize if I&apos;m misunderstanding you here, is that there should no need to default to the document element because this should only be used with editable content. 

Not really. What I&apos;m saying is that some callers of these functions is falling back to document needlessly.

WebViewImpl::compositionRange in chromium/src/WebViewImpl.cpp for example shouldn&apos;t be falling back to Document when there is no editable content as this function is used only to deal with IME.

So it appears to me that we need to address the use care where you want to call these functions with a scope element without falling back to document.

&gt; I also want to stress again that TextIterator is not meant to deal only with editable content.

Agreed.

&gt; I agree that is not desirable not to know exactly which scope is being used and when, but I honestly I don&apos;t see how this patch is making this more explicit.

This patch itself doesn&apos;t because I&apos;m not changing any behaviors. But I&apos;m intending to change some call sites of these functions to use rootEditableElement instead of rootEditableElementOrDocumentElement in follow ups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484025</commentid>
    <comment_count>15</comment_count>
      <attachid>110759</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-10-14 09:50:31 -0700</bug_when>
    <thetext>Comment on attachment 110759
Fixed Chromium build

I understand that this is the first step in the direction of making the code more understandable and removing knowledge about selection from the TextIterator class. I look forward to seeing the follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484029</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-14 09:53:35 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 110759 [details])
&gt; I understand that this is the first step in the direction of making the code more understandable and removing knowledge about selection from the TextIterator class. I look forward to seeing the follow up.

Thanks the review :D  I believe this and follow up patches will make TextIterator much more hackable and maintainable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484061</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-14 10:53:41 -0700</bug_when>
    <thetext>Committed r97478: &lt;http://trac.webkit.org/changeset/97478&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110750</attachid>
            <date>2011-10-12 14:51:40 -0700</date>
            <delta_ts>2011-10-12 15:18:43 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-69964-20111012145139.patch</filename>
            <type>text/plain</type>
            <size>19685</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MzA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTAtMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSB0aGUgaW50ZXJmYWNlIG9m
IGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlIGFuZCByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aCBjb25zaXN0ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV4dHJhY3RlZCB0aGUgbG9naWMgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBlbGVtZW50IGFz
IEZyYW1lU2VsZWN0aW9uOjpyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQKKyAg
ICAgICAgYW5kIGRlcGxveWVkIGl0IGluIFdlYktpdCBsYXllci4gTWFkZSBsb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZSB0YWtlIGEgc2NvcGUgZWxlbWVudCBhbmQgcmVuYW1lZCBpdCB0bworICAg
ICAgICBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxl
bWVudCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0
ZXJhdG9yLmg6CisKIDIwMTEtMTAtMTIgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RA
ZXJpY3Nzb24uY29tPgogCiAgICAgICAgIFVwZGF0ZSBQZWVyQ29ubmVjdGlvbiB0byB1c2UgV2Vi
Q29yZSBwbGF0Zm9ybSBpbnRlcmZhY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gOTcyODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5
KQpAQCAtMjk0LDcgKzI5NCw3IEBAIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyRDFFdgogX19a
TjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE4VGV4
dENoZWNraW5nUmVzdWx0RUxtMEVFRQogX19aTjdXZWJDb3JlMTJUZXh0RW5jb2RpbmdDMUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMTFyYW5nZUxlbmd0aEVQS05T
XzVSYW5nZUViCi1fX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2bG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2VFUEtOU181UmFuZ2VFUm1TNF8KK19fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjln
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUm1T
Nl8KIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aEVQTlNfN0VsZW1lbnRFaWliCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjdhZHZhbmNlRXYK
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yOHN1YnJhbmdlRVBOU181UmFuZ2VFaWkKQEAgLTEx
OTIsNiArMTE5Miw3IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMTVjb3B5VHlwaW4K
IF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMTdpc0luUGFzc3dvcmRGaWVsZEV2CiBfX1pO
SzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE4aXNGb2N1c2VkQW5kQWN0aXZlRXYKIF9fWk5LN1dl
YkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJO
M1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFRUUKK19fWk5LN1dlYkNvcmUxNEZyYW1lU2Vs
ZWN0aW9uMzZyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19aTks3V2Vi
Q29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWIKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJ
dGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTBjb25uZWN0
aW9uRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiA5NzI4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDEyIEBAIEZyYW1lU2VsZWN0aW9uOjpG
cmFtZVNlbGVjdGlvbihGcmFtZSogZnIKICAgICAgICAgbV9zZWxlY3Rpb24uc2V0SXNEaXJlY3Rp
b25hbCh0cnVlKTsKIH0KIAorRWxlbWVudCogRnJhbWVTZWxlY3Rpb246OnJvb3RFZGl0YWJsZUVs
ZW1lbnRPckRvY3VtZW50RWxlbWVudCgpIGNvbnN0Cit7CisgICAgRWxlbWVudCogc2VsZWN0aW9u
Um9vdCA9IG1fc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICByZXR1cm4gc2Vs
ZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKTsKK30KKwogdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmcG9zLCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBDdXJzb3JBbGln
bk9uU2Nyb2xsIGFsaWduKQogewogICAgIFNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucyA9IENs
b3NlVHlwaW5nIHwgQ2xlYXJUeXBpbmdTdHlsZSB8IHVzZXJUcmlnZ2VyZWQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiA5NzI4NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MTI2LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBGcmFtZVNlbGVjdGlvbihGcmFtZSogPSAwKTsK
IAogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7IH0KKyAgICBFbGVtZW50KiByb290RWRpdGFi
bGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSBjb25zdDsKICAgICBib29sIGlzQ29udGVudEVk
aXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsg
fQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvbi5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOyB9CiAgICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gOTcyODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
NzYsNyArMjQ3Niw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm8K
ICAgICByZXR1cm4gcmVzdWx0UmFuZ2UucmVsZWFzZSgpOwogfQogCi1ib29sIFRleHRJdGVyYXRv
cjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlLCBzaXplX3Qm
IGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCkKK2Jvb2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlv
bkFuZExlbmd0aEZyb21SYW5nZShFbGVtZW50KiBzY29wZSwgY29uc3QgUmFuZ2UqIHJhbmdlLCBz
aXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IG5vdEZv
dW5kOwogICAgIGxlbmd0aCA9IDA7CkBAIC0yNDg0LDkgKzI0ODQsNiBAQCBib29sIFRleHRJdGVy
YXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tCiAgICAgaWYgKCFyYW5nZS0+c3RhcnRDb250YWlu
ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9v
dCA9IHJhbmdlLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2Vs
ZWN0aW9uUm9vdCA6IHJhbmdlLT5vd25lckRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwot
CiAgICAgLy8gVGhlIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIG9ubHkgZ2V0cyBj
YWxsZWQgd2l0aCByYW5nZXMgdGhhdAogICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJl
YSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24gcm9vdC4gVGhpcyBpcyBkb25lCiAgICAgLy8gYmVj
YXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBu
b3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gOTcy
ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgCiAgICAgc3RhdGljIGludCByYW5n
ZUxlbmd0aChjb25zdCBSYW5nZSosIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZh
bHNlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoRWxlbWVudCogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgs
IGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKLSAgICBzdGF0aWMgYm9v
bCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShjb25zdCBSYW5nZSosIHNpemVfdCYgbG9jYXRp
b24sIHNpemVfdCYgbGVuZ3RoKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZShFbGVtZW50KiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9u
LCBzaXplX3QmIGxlbmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHN1YnJhbmdl
KFJhbmdlKiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNv
dW50KTsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NzMwNSkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTEwLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IE1ha2UgdGhlIGludGVyZmFjZSBvZiBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSBhbmQgcmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGggY29uc2lzdGVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OmNv
bnZlcnRUb1JhbmdlKToKKwogMjAxMS0xMC0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEhhbmcgYmVuZWF0aCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZVBy
b3BlcnR5TGlzdEZpbGUoKSB3aGVuIHVzaW5nIGEgdGhpbiBidWlsZApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2
aXNpb24gOTcyODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IGZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOwogICAgIHNpemVfdCBsb2NhdGlv
blNpemU7CiAgICAgc2l6ZV90IGxlbmd0aFNpemU7Ci0gICAgaWYgKHJhbmdlICYmIFRleHRJdGVy
YXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6
ZSwgbGVuZ3RoU2l6ZSkpIHsKKyAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2Nh
dGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVs
ZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5n
dGhTaXplKSkgewogICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2Nh
dGlvblNpemUpOwogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3Ro
U2l6ZSk7CiAgICAgfQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0
ZWRSYW5nZSh1aW50NjRfdCYKICAgICBzaXplX3QgbG9jYXRpb25TaXplOwogICAgIHNpemVfdCBs
ZW5ndGhTaXplOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkt
PnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKHJhbmdlICYmIFRleHRJdGVyYXRvcjo6bG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6ZSwgbGVuZ3Ro
U2l6ZSkpIHsKKyAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkg
ewogICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2NhdGlvblNpemUp
OwogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoU2l6ZSk7CiAg
ICAgfQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQ
b2ludChJbnQKIAogICAgIHNpemVfdCBsb2NhdGlvbjsKICAgICBzaXplX3QgbGVuZ3RoOwotICAg
IGlmIChUZXh0SXRlcmF0b3I6OmxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlLmdldCgp
LCBsb2NhdGlvbiwgbGVuZ3RoKSkKKyAgICBpZiAoVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRP
ckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb24sIGxlbmd0aCkpCiAgICAg
ICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvY2F0aW9uKTsKIH0KIApAQCAtMzc3
LDkgKzM3Nyw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbnZlcnRUb1JhbmdlKEZyYW1lKiAKICAg
ICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHBy
b2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMKICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFi
bGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2Uu
CiAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0
LgotICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBz
ZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAg
IHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBu
c3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5n
ZS5sZW5ndGgpOwogfQogICAgIAogdm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJDb3JlOjpJbnRSZWN0
JiByZXN1bHRSZWN0KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3
MzA1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBpbnRlcmZhY2Ugb2YgbG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UgYW5kIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGNvbnNpc3RlbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5OTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmNvbXBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Z2V0U2VsZWN0aW9uT2Zmc2V0c0FuZFRleHRJbkVkaXRhYmxlQ29udGVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjYXJldE9yU2VsZWN0aW9uUmFuZ2UpOgor
ICAgICAgICAqIHNyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3Vic3RyaW5nVXRpbDo6YXR0cmlidXRlZFN1YnN0cmluZ0luUmFuZ2UpOgorCiAyMDExLTEw
LTEyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIEFkZCBhIHNldFNlbGVjdGlvblRvUmFuZ2UoKSBtZXRob2QgdG8gV2ViRnJhbWUuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9u
IDk3Mjg0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEwNiw5ICsxMTA2LDcgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmZp
cnN0UmVjdEZvckNoYXJhY3RlcgogICAgIGlmICgobG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlv
bikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoKSkKICAgICAgICAgbGVuZ3RoID0gMDsKIAotICAgIEVs
ZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlv
blJvb3QgOiBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChzY29wZSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUoKS0+c2VsZWN0aW9u
KCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBzY29wZSwgbG9jYXRp
b24sIGxlbmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IEludFJlY3QgaW50UmVjdCA9IGZyYW1lKCktPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShy
YW5nZS5nZXQoKSk7CkBAIC0xMTMwLDcgKzExMjgsNyBAQCBzaXplX3QgV2ViRnJhbWVJbXBsOjpj
aGFyYWN0ZXJJbmRleEZvclBvCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAogICAgIHNpemVf
dCBsb2NhdGlvbiwgbGVuZ3RoOwotICAgIFRleHRJdGVyYXRvcjo6bG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UocmFuZ2UuZ2V0KCksIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFRleHRJdGVyYXRv
cjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoZnJhbWUoKS0+c2VsZWN0aW9uKCktPnJv
b3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRp
b24sIGxlbmd0aCk7CiAgICAgcmV0dXJuIGxvY2F0aW9uOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA5NzI4NCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0Myw3ICsxNDQzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29uZmlybUNvbXBvc2l0aW9u
KGNvbgogYm9vbCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRpb25SYW5nZShzaXplX3QqIGxvY2F0aW9u
LCBzaXplX3QqIGxlbmd0aCkKIHsKICAgICBGcmFtZSogZm9jdXNlZCA9IGZvY3VzZWRXZWJDb3Jl
RnJhbWUoKTsKLSAgICBpZiAoIWZvY3VzZWQgfHwgIW1faW1lQWNjZXB0RXZlbnRzKQorICAgIGlm
ICghZm9jdXNlZCB8fCAhZm9jdXNlZC0+c2VsZWN0aW9uKCkgfHwgIW1faW1lQWNjZXB0RXZlbnRz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWRpdG9yKiBlZGl0b3IgPSBmb2N1c2VkLT5l
ZGl0b3IoKTsKICAgICBpZiAoIWVkaXRvciB8fCAhZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQpA
QCAtMTQ1Myw3ICsxNDUzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRpb25SYW5nZShz
aXplXwogICAgIGlmICghcmFuZ2UuZ2V0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmIChUZXh0SXRlcmF0b3I6OmxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlLmdldCgp
LCAqbG9jYXRpb24sICpsZW5ndGgpKQorICAgIGlmIChUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlKGZvY3VzZWQtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVt
ZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UuZ2V0KCksICpsb2NhdGlvbiwgKmxlbmd0aCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE1MTksNyAr
MTUxOSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmdldFNlbGVjdGlvbk9mZnNldHNBbmQKICAgICBz
aXplX3QgbG9jYXRpb247CiAgICAgc2l6ZV90IGxlbmd0aDsKICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7Ci0gICAgaWYgKCFyYW5n
ZSB8fCAhVGV4dEl0ZXJhdG9yOjpsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZS5nZXQo
KSwgbG9jYXRpb24sIGxlbmd0aCkpCisgICAgaWYgKCFyYW5nZSB8fCAhVGV4dEl0ZXJhdG9yOjpn
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShzZWxlY3Rpb24tPnJvb3RFZGl0YWJsZUVsZW1l
bnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb24sIGxlbmd0aCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmlz
QmFzZUZpcnN0KCkpIHsKQEAgLTE2MTUsNyArMTYxNSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNh
cmV0T3JTZWxlY3Rpb25SYW5nZSgKICAgICBpZiAoIXJhbmdlLmdldCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoVGV4dEl0ZXJhdG9yOjpsb2NhdGlvbkFuZExlbmd0aEZyb21S
YW5nZShyYW5nZS5nZXQoKSwgKmxvY2F0aW9uLCAqbGVuZ3RoKSkKKyAgICBpZiAoVGV4dEl0ZXJh
dG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShzZWxlY3Rpb24tPnJvb3RFZGl0YWJs
ZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgKmxvY2F0aW9uLCAqbGVu
Z3RoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYlN1YnN0cmluZ1V0aWwubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYlN1YnN0cmluZ1V0aWwu
bW0JKHJldmlzaW9uIDk3Mjg0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dl
YlN1YnN0cmluZ1V0aWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSw3IEBAIE5TQXR0
cmlidXRlZFN0cmluZyogV2ViU3Vic3RyaW5nVXRpbDo6YXQKICAgICBpZiAoZnJhbWUtPnZpZXco
KS0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CiAKLSAg
ICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFi
bGVFbGVtZW50KCk7Ci0gICAgc2VsZWN0aW9uUm9vdCA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rp
b25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotCi0gICAgUmVm
UHRyPFJhbmdlPiByYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KHNlbGVjdGlvblJvb3QsIGxvY2F0aW9uLCBsZW5ndGgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNlbGVj
dGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc2VsZWN0aW9u
Um9vdCwgbG9jYXRpb24sIGxlbmd0aCkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MzA1KQorKysgU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMTAtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFr
ZSB0aGUgaW50ZXJmYWNlIG9mIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlIGFuZCByYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aCBjb25zaXN0ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Zmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorCiAyMDExLTA5LTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNb3ZlIGRyYWctYW5kLWRyb3AgY29k
ZSB3aGljaCBjYW4gYmUgc2hhcmVkIHdpdGggV2ViS2l0MiB0byBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJldmlzaW9uIDk3Mjg0KQorKysgU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjE2LDkgKzYxNiw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpm
aXJzdFJlY3QKICAgICBpZiAoIWVkaXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
RWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlv
blJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
c2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLT5zZWxlY3Rpb24oKS0+
cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHNjb3BlLCBsb2NhdGlvbiwg
bGVuZ3RoKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MzA1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMTIgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSB0aGUgaW50ZXJmYWNl
IG9mIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlIGFuZCByYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aCBjb25zaXN0ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02OTk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2NvbnZl
cnRUb05TUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9jb252ZXJ0VG9ET01SYW5nZTpd
KToKKwogMjAxMS0xMC0xMCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVzZSBhIENhY2hlZEltYWdlQ2xpZW50IGluc3RlYWQgb2YgQ2FjaGVkUmVzb3VyY2VD
bGllbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24g
OTcyODQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02NjYsNyArNjY2LDcgQEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNSYW5nZToo
UmFuZ2UgKilyYQogCiAgICAgc2l6ZV90IGxvY2F0aW9uOwogICAgIHNpemVfdCBsZW5ndGg7Ci0g
ICAgaWYgKCFUZXh0SXRlcmF0b3I6OmxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlLCBs
b2NhdGlvbiwgbGVuZ3RoKSkKKyAgICBpZiAoIVRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRM
ZW5ndGhGcm9tUmFuZ2UoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0
YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZSwgbG9jYXRpb24sIGxlbmd0aCkp
CiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKIAogICAgIHJldHVy
biBOU01ha2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKTsKQEAgLTY4NSw5ICs2ODUsNyBAQCAtIChQ
YXNzUmVmUHRyPFJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6CiAgICAgLy8gZGlyZWN0bHkgaW4g
dGhlIGRvY3VtZW50IERPTSwgc28gc2VyaWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNv
bHV0aW9uIGlzCiAgICAgLy8gdG8gdXNlIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhl
IHNlbGVjdGlvbiBzdGFydCBhcyB0aGUgcG9zaXRpb25hbCBiYXNlLgogICAgIC8vIFRoYXQgZml0
cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQgY29udGV4dC4KLSAgICBFbGVtZW50KiBz
ZWxlY3Rpb25Sb290ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxl
Y3Rpb25Sb290IDogX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVt
ZW50KCk7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoc2NvcGUsIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICByZXR1cm4g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChfcHJpdmF0ZS0+Y29yZUZy
YW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCks
IG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKIH0KIAogLSAoRE9NUmFuZ2UgKilj
b252ZXJ0TlNSYW5nZVRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQpJbmRleDogU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDk3MzA1KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMC0xMiAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBpbnRlcmZhY2Ugb2YgbG9jYXRpb25B
bmRMZW5ndGhGcm9tUmFuZ2UgYW5kIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGNvbnNpc3Rl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5OTY0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorCiAyMDExLTEw
LTExICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgY3VzdG9tIHNjcm9sbGJhciB0aGVtZSBmb3IgdXNlIGluIERSVCwgdG8gcmVkdWNlIHBpeGVs
IGRpZmZzIGJldHdlZW4gcGxhdGZvcm1zCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2
aXNpb24gOTcyODQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE2LDkgKzYxNiw3IEBAIFFW
YXJpYW50TGlzdCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZmkKICAgICBpZiAoKGxvY2F0aW9u
ICsgbGVuZ3RoIDwgbG9jYXRpb24pICYmIChsb2NhdGlvbiArIGxlbmd0aCkpCiAgICAgICAgIGxl
bmd0aCA9IDA7CiAKLSAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rp
b25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1l
bnQoKTsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChzY29wZSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJh
bWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwg
c2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOwogCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0
dXJuIFFWYXJpYW50TGlzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110755</attachid>
            <date>2011-10-12 15:18:47 -0700</date>
            <delta_ts>2011-10-12 15:46:57 -0700</delta_ts>
            <desc>Fixed qt &amp; gtk build</desc>
            <filename>bug-69964-20111012151846.patch</filename>
            <type>text/plain</type>
            <size>19671</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MzA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTAtMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSB0aGUgaW50ZXJmYWNlIG9m
IGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlIGFuZCByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aCBjb25zaXN0ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV4dHJhY3RlZCB0aGUgbG9naWMgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBlbGVtZW50IGFz
IEZyYW1lU2VsZWN0aW9uOjpyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQKKyAg
ICAgICAgYW5kIGRlcGxveWVkIGl0IGluIFdlYktpdCBsYXllci4gTWFkZSBsb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZSB0YWtlIGEgc2NvcGUgZWxlbWVudCBhbmQgcmVuYW1lZCBpdCB0bworICAg
ICAgICBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxl
bWVudCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0
ZXJhdG9yLmg6CisKIDIwMTEtMTAtMTIgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RA
ZXJpY3Nzb24uY29tPgogCiAgICAgICAgIFVwZGF0ZSBQZWVyQ29ubmVjdGlvbiB0byB1c2UgV2Vi
Q29yZSBwbGF0Zm9ybSBpbnRlcmZhY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gOTcyODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5
KQpAQCAtMjk0LDcgKzI5NCw3IEBAIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyRDFFdgogX19a
TjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE4VGV4
dENoZWNraW5nUmVzdWx0RUxtMEVFRQogX19aTjdXZWJDb3JlMTJUZXh0RW5jb2RpbmdDMUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMTFyYW5nZUxlbmd0aEVQS05T
XzVSYW5nZUViCi1fX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2bG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2VFUEtOU181UmFuZ2VFUm1TNF8KK19fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjln
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUm1T
Nl8KIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aEVQTlNfN0VsZW1lbnRFaWliCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjdhZHZhbmNlRXYK
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yOHN1YnJhbmdlRVBOU181UmFuZ2VFaWkKQEAgLTEx
OTIsNiArMTE5Miw3IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMTVjb3B5VHlwaW4K
IF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMTdpc0luUGFzc3dvcmRGaWVsZEV2CiBfX1pO
SzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE4aXNGb2N1c2VkQW5kQWN0aXZlRXYKIF9fWk5LN1dl
YkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJO
M1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFRUUKK19fWk5LN1dlYkNvcmUxNEZyYW1lU2Vs
ZWN0aW9uMzZyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19aTks3V2Vi
Q29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWIKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJ
dGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTBjb25uZWN0
aW9uRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiA5NzI4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDEyIEBAIEZyYW1lU2VsZWN0aW9uOjpG
cmFtZVNlbGVjdGlvbihGcmFtZSogZnIKICAgICAgICAgbV9zZWxlY3Rpb24uc2V0SXNEaXJlY3Rp
b25hbCh0cnVlKTsKIH0KIAorRWxlbWVudCogRnJhbWVTZWxlY3Rpb246OnJvb3RFZGl0YWJsZUVs
ZW1lbnRPckRvY3VtZW50RWxlbWVudCgpIGNvbnN0Cit7CisgICAgRWxlbWVudCogc2VsZWN0aW9u
Um9vdCA9IG1fc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICByZXR1cm4gc2Vs
ZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKTsKK30KKwogdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmcG9zLCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBDdXJzb3JBbGln
bk9uU2Nyb2xsIGFsaWduKQogewogICAgIFNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucyA9IENs
b3NlVHlwaW5nIHwgQ2xlYXJUeXBpbmdTdHlsZSB8IHVzZXJUcmlnZ2VyZWQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiA5NzI4NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MTI2LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBGcmFtZVNlbGVjdGlvbihGcmFtZSogPSAwKTsK
IAogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7IH0KKyAgICBFbGVtZW50KiByb290RWRpdGFi
bGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSBjb25zdDsKICAgICBib29sIGlzQ29udGVudEVk
aXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsg
fQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvbi5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOyB9CiAgICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gOTcyODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
NzYsNyArMjQ3Niw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm8K
ICAgICByZXR1cm4gcmVzdWx0UmFuZ2UucmVsZWFzZSgpOwogfQogCi1ib29sIFRleHRJdGVyYXRv
cjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlLCBzaXplX3Qm
IGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCkKK2Jvb2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlv
bkFuZExlbmd0aEZyb21SYW5nZShFbGVtZW50KiBzY29wZSwgY29uc3QgUmFuZ2UqIHJhbmdlLCBz
aXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IG5vdEZv
dW5kOwogICAgIGxlbmd0aCA9IDA7CkBAIC0yNDg0LDkgKzI0ODQsNiBAQCBib29sIFRleHRJdGVy
YXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tCiAgICAgaWYgKCFyYW5nZS0+c3RhcnRDb250YWlu
ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9v
dCA9IHJhbmdlLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2Vs
ZWN0aW9uUm9vdCA6IHJhbmdlLT5vd25lckRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwot
CiAgICAgLy8gVGhlIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIG9ubHkgZ2V0cyBj
YWxsZWQgd2l0aCByYW5nZXMgdGhhdAogICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJl
YSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24gcm9vdC4gVGhpcyBpcyBkb25lCiAgICAgLy8gYmVj
YXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBu
b3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gOTcy
ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgCiAgICAgc3RhdGljIGludCByYW5n
ZUxlbmd0aChjb25zdCBSYW5nZSosIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZh
bHNlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoRWxlbWVudCogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgs
IGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKLSAgICBzdGF0aWMgYm9v
bCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShjb25zdCBSYW5nZSosIHNpemVfdCYgbG9jYXRp
b24sIHNpemVfdCYgbGVuZ3RoKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZShFbGVtZW50KiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9u
LCBzaXplX3QmIGxlbmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHN1YnJhbmdl
KFJhbmdlKiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNv
dW50KTsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NzMwNSkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTEwLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IE1ha2UgdGhlIGludGVyZmFjZSBvZiBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSBhbmQgcmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGggY29uc2lzdGVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OmNv
bnZlcnRUb1JhbmdlKToKKwogMjAxMS0xMC0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEhhbmcgYmVuZWF0aCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZVBy
b3BlcnR5TGlzdEZpbGUoKSB3aGVuIHVzaW5nIGEgdGhpbiBidWlsZApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2
aXNpb24gOTcyODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IGZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOwogICAgIHNpemVfdCBsb2NhdGlv
blNpemU7CiAgICAgc2l6ZV90IGxlbmd0aFNpemU7Ci0gICAgaWYgKHJhbmdlICYmIFRleHRJdGVy
YXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6
ZSwgbGVuZ3RoU2l6ZSkpIHsKKyAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2Nh
dGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVs
ZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5n
dGhTaXplKSkgewogICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2Nh
dGlvblNpemUpOwogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3Ro
U2l6ZSk7CiAgICAgfQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0
ZWRSYW5nZSh1aW50NjRfdCYKICAgICBzaXplX3QgbG9jYXRpb25TaXplOwogICAgIHNpemVfdCBs
ZW5ndGhTaXplOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkt
PnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKHJhbmdlICYmIFRleHRJdGVyYXRvcjo6bG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6ZSwgbGVuZ3Ro
U2l6ZSkpIHsKKyAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkg
ewogICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2NhdGlvblNpemUp
OwogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoU2l6ZSk7CiAg
ICAgfQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQ
b2ludChJbnQKIAogICAgIHNpemVfdCBsb2NhdGlvbjsKICAgICBzaXplX3QgbGVuZ3RoOwotICAg
IGlmIChUZXh0SXRlcmF0b3I6OmxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlLmdldCgp
LCBsb2NhdGlvbiwgbGVuZ3RoKSkKKyAgICBpZiAoVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRP
ckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb24sIGxlbmd0aCkpCiAgICAg
ICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvY2F0aW9uKTsKIH0KIApAQCAtMzc3
LDkgKzM3Nyw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbnZlcnRUb1JhbmdlKEZyYW1lKiAKICAg
ICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHBy
b2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMKICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFi
bGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2Uu
CiAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0
LgotICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBz
ZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAg
IHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBu
c3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5n
ZS5sZW5ndGgpOwogfQogICAgIAogdm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJDb3JlOjpJbnRSZWN0
JiByZXN1bHRSZWN0KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3
MzA1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBpbnRlcmZhY2Ugb2YgbG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UgYW5kIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGNvbnNpc3RlbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5OTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmNvbXBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Z2V0U2VsZWN0aW9uT2Zmc2V0c0FuZFRleHRJbkVkaXRhYmxlQ29udGVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjYXJldE9yU2VsZWN0aW9uUmFuZ2UpOgor
ICAgICAgICAqIHNyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3Vic3RyaW5nVXRpbDo6YXR0cmlidXRlZFN1YnN0cmluZ0luUmFuZ2UpOgorCiAyMDExLTEw
LTEyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIEFkZCBhIHNldFNlbGVjdGlvblRvUmFuZ2UoKSBtZXRob2QgdG8gV2ViRnJhbWUuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9u
IDk3Mjg0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEwNiw5ICsxMTA2LDcgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmZp
cnN0UmVjdEZvckNoYXJhY3RlcgogICAgIGlmICgobG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlv
bikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoKSkKICAgICAgICAgbGVuZ3RoID0gMDsKIAotICAgIEVs
ZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlv
blJvb3QgOiBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChzY29wZSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUoKS0+c2VsZWN0aW9u
KCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBzY29wZSwgbG9jYXRp
b24sIGxlbmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IEludFJlY3QgaW50UmVjdCA9IGZyYW1lKCktPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShy
YW5nZS5nZXQoKSk7CkBAIC0xMTMwLDcgKzExMjgsNyBAQCBzaXplX3QgV2ViRnJhbWVJbXBsOjpj
aGFyYWN0ZXJJbmRleEZvclBvCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAogICAgIHNpemVf
dCBsb2NhdGlvbiwgbGVuZ3RoOwotICAgIFRleHRJdGVyYXRvcjo6bG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UocmFuZ2UuZ2V0KCksIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFRleHRJdGVyYXRv
cjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoZnJhbWUoKS0+c2VsZWN0aW9uKCktPnJv
b3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRp
b24sIGxlbmd0aCk7CiAgICAgcmV0dXJuIGxvY2F0aW9uOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA5NzI4NCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0Myw3ICsxNDQzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29uZmlybUNvbXBvc2l0aW9u
KGNvbgogYm9vbCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRpb25SYW5nZShzaXplX3QqIGxvY2F0aW9u
LCBzaXplX3QqIGxlbmd0aCkKIHsKICAgICBGcmFtZSogZm9jdXNlZCA9IGZvY3VzZWRXZWJDb3Jl
RnJhbWUoKTsKLSAgICBpZiAoIWZvY3VzZWQgfHwgIW1faW1lQWNjZXB0RXZlbnRzKQorICAgIGlm
ICghZm9jdXNlZCB8fCAhZm9jdXNlZC0+c2VsZWN0aW9uKCkgfHwgIW1faW1lQWNjZXB0RXZlbnRz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgRWRpdG9yKiBlZGl0b3IgPSBmb2N1c2VkLT5l
ZGl0b3IoKTsKICAgICBpZiAoIWVkaXRvciB8fCAhZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQpA
QCAtMTQ1Myw3ICsxNDUzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRpb25SYW5nZShz
aXplXwogICAgIGlmICghcmFuZ2UuZ2V0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmIChUZXh0SXRlcmF0b3I6OmxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlLmdldCgp
LCAqbG9jYXRpb24sICpsZW5ndGgpKQorICAgIGlmIChUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9u
QW5kTGVuZ3RoRnJvbVJhbmdlKGZvY3VzZWQtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVt
ZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UuZ2V0KCksICpsb2NhdGlvbiwgKmxlbmd0aCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE1MTksNyAr
MTUxOSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmdldFNlbGVjdGlvbk9mZnNldHNBbmQKICAgICBz
aXplX3QgbG9jYXRpb247CiAgICAgc2l6ZV90IGxlbmd0aDsKICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7Ci0gICAgaWYgKCFyYW5n
ZSB8fCAhVGV4dEl0ZXJhdG9yOjpsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZS5nZXQo
KSwgbG9jYXRpb24sIGxlbmd0aCkpCisgICAgaWYgKCFyYW5nZSB8fCAhVGV4dEl0ZXJhdG9yOjpn
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShzZWxlY3Rpb24tPnJvb3RFZGl0YWJsZUVsZW1l
bnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb24sIGxlbmd0aCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmlz
QmFzZUZpcnN0KCkpIHsKQEAgLTE2MTUsNyArMTYxNSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmNh
cmV0T3JTZWxlY3Rpb25SYW5nZSgKICAgICBpZiAoIXJhbmdlLmdldCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoVGV4dEl0ZXJhdG9yOjpsb2NhdGlvbkFuZExlbmd0aEZyb21S
YW5nZShyYW5nZS5nZXQoKSwgKmxvY2F0aW9uLCAqbGVuZ3RoKSkKKyAgICBpZiAoVGV4dEl0ZXJh
dG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShzZWxlY3Rpb24tPnJvb3RFZGl0YWJs
ZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgKmxvY2F0aW9uLCAqbGVu
Z3RoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYlN1YnN0cmluZ1V0aWwubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYlN1YnN0cmluZ1V0aWwu
bW0JKHJldmlzaW9uIDk3Mjg0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dl
YlN1YnN0cmluZ1V0aWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSw3IEBAIE5TQXR0
cmlidXRlZFN0cmluZyogV2ViU3Vic3RyaW5nVXRpbDo6YXQKICAgICBpZiAoZnJhbWUtPnZpZXco
KS0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgZnJhbWUtPnZpZXcoKS0+bGF5b3V0KCk7CiAKLSAg
ICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFi
bGVFbGVtZW50KCk7Ci0gICAgc2VsZWN0aW9uUm9vdCA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rp
b25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotCi0gICAgUmVm
UHRyPFJhbmdlPiByYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KHNlbGVjdGlvblJvb3QsIGxvY2F0aW9uLCBsZW5ndGgpKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNlbGVj
dGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgc2VsZWN0aW9u
Um9vdCwgbG9jYXRpb24sIGxlbmd0aCkpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MzA1KQorKysgU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMTAtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFr
ZSB0aGUgaW50ZXJmYWNlIG9mIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlIGFuZCByYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aCBjb25zaXN0ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Zmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorCiAyMDExLTA5LTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNb3ZlIGRyYWctYW5kLWRyb3AgY29k
ZSB3aGljaCBjYW4gYmUgc2hhcmVkIHdpdGggV2ViS2l0MiB0byBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJldmlzaW9uIDk3Mjg0KQorKysgU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjE2LDkgKzYxNiw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpm
aXJzdFJlY3QKICAgICBpZiAoIWVkaXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
RWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlv
blJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgo
c2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLT5zZWxlY3Rpb24oKS0+
cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIGxvY2F0aW9uLCBsZW5ndGgp
OwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkocmV2aXNpb24gOTczMDUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0xMiAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBpbnRlcmZhY2Ugb2YgbG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgYW5kIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGNv
bnNpc3RlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY5OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY29udmVydFRvTlNS
YW5nZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2NvbnZlcnRUb0RPTVJhbmdlOl0pOgorCiAy
MDExLTEwLTEwICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VXNlIGEgQ2FjaGVkSW1hZ2VDbGllbnQgaW5zdGVhZCBvZiBDYWNoZWRSZXNvdXJjZUNsaWVudApJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA5NzI4NCkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTY2Niw3ICs2NjYsNyBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSAq
KXJhCiAKICAgICBzaXplX3QgbG9jYXRpb247CiAgICAgc2l6ZV90IGxlbmd0aDsKLSAgICBpZiAo
IVRleHRJdGVyYXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UsIGxvY2F0aW9u
LCBsZW5ndGgpKQorICAgIGlmICghVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZy
b21SYW5nZShfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxl
bWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHJhbmdlLCBsb2NhdGlvbiwgbGVuZ3RoKSkKICAgICAg
ICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCiAgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOwpAQCAtNjg1LDkgKzY4NSw3IEBAIC0gKFBhc3NSZWZQ
dHI8UmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToKICAgICAvLyBkaXJlY3RseSBpbiB0aGUgZG9j
dW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHByb2JsZW1hdGljLiBPdXIgc29sdXRpb24g
aXMKICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFibGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0
aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2UuCiAgICAgLy8gVGhhdCBmaXRzIHdpdGgg
QXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgotICAgIEVsZW1lbnQqIHNlbGVjdGlv
blJvb3QgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxl
bWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJv
b3QgOiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsK
LSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29w
ZSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOworICAgIHJldHVybiBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNl
bGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbnNyYW5n
ZS5sb2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwogfQogCiAtIChET01SYW5nZSAqKWNvbnZlcnRO
U1JhbmdlVG9ET01SYW5nZTooTlNSYW5nZSluc3JhbmdlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gOTczMDUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1ha2UgdGhlIGludGVyZmFjZSBvZiBsb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZSBhbmQgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggY29uc2lzdGVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk5NjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisKIDIwMTEtMTAtMTEgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBjdXN0
b20gc2Nyb2xsYmFyIHRoZW1lIGZvciB1c2UgaW4gRFJULCB0byByZWR1Y2UgcGl4ZWwgZGlmZnMg
YmV0d2VlbiBwbGF0Zm9ybXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiA5
NzI4NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTYsOSArNjE2LDcgQEAgUVZhcmlhbnRM
aXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpmaQogICAgIGlmICgobG9jYXRpb24gKyBsZW5n
dGggPCBsb2NhdGlvbikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoKSkKICAgICAgICAgbGVuZ3RoID0g
MDsKIAotICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJv
b3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3Qg
PyBzZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwot
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHNjb3BlLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS0+c2Vs
ZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBsb2NhdGlv
biwgbGVuZ3RoKTsKIAogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBRVmFyaWFudExp
c3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110759</attachid>
            <date>2011-10-12 15:47:01 -0700</date>
            <delta_ts>2011-10-14 09:50:30 -0700</delta_ts>
            <desc>Fixed Chromium build</desc>
            <filename>bug-69964-20111012154700.patch</filename>
            <type>text/plain</type>
            <size>19664</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MzA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTAtMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSB0aGUgaW50ZXJmYWNlIG9m
IGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlIGFuZCByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aCBjb25zaXN0ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTk2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV4dHJhY3RlZCB0aGUgbG9naWMgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBlbGVtZW50IGFz
IEZyYW1lU2VsZWN0aW9uOjpyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQKKyAg
ICAgICAgYW5kIGRlcGxveWVkIGl0IGluIFdlYktpdCBsYXllci4gTWFkZSBsb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZSB0YWtlIGEgc2NvcGUgZWxlbWVudCBhbmQgcmVuYW1lZCBpdCB0bworICAg
ICAgICBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxl
bWVudCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0
ZXJhdG9yLmg6CisKIDIwMTEtMTAtMTIgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RA
ZXJpY3Nzb24uY29tPgogCiAgICAgICAgIFVwZGF0ZSBQZWVyQ29ubmVjdGlvbiB0byB1c2UgV2Vi
Q29yZSBwbGF0Zm9ybSBpbnRlcmZhY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gOTcyODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5
KQpAQCAtMjk0LDcgKzI5NCw3IEBAIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyRDFFdgogX19a
TjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE4VGV4
dENoZWNraW5nUmVzdWx0RUxtMEVFRQogX19aTjdXZWJDb3JlMTJUZXh0RW5jb2RpbmdDMUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMTFyYW5nZUxlbmd0aEVQS05T
XzVSYW5nZUViCi1fX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2bG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2VFUEtOU181UmFuZ2VFUm1TNF8KK19fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjln
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQTlNfN0VsZW1lbnRFUEtOU181UmFuZ2VFUm1T
Nl8KIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aEVQTlNfN0VsZW1lbnRFaWliCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjdhZHZhbmNlRXYK
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yOHN1YnJhbmdlRVBOU181UmFuZ2VFaWkKQEAgLTEx
OTIsNiArMTE5Miw3IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMTVjb3B5VHlwaW4K
IF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMTdpc0luUGFzc3dvcmRGaWVsZEV2CiBfX1pO
SzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE4aXNGb2N1c2VkQW5kQWN0aXZlRXYKIF9fWk5LN1dl
YkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJO
M1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFRUUKK19fWk5LN1dlYkNvcmUxNEZyYW1lU2Vs
ZWN0aW9uMzZyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19aTks3V2Vi
Q29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWIKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJ
dGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTBjb25uZWN0
aW9uRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiA5NzI4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDEyIEBAIEZyYW1lU2VsZWN0aW9uOjpG
cmFtZVNlbGVjdGlvbihGcmFtZSogZnIKICAgICAgICAgbV9zZWxlY3Rpb24uc2V0SXNEaXJlY3Rp
b25hbCh0cnVlKTsKIH0KIAorRWxlbWVudCogRnJhbWVTZWxlY3Rpb246OnJvb3RFZGl0YWJsZUVs
ZW1lbnRPckRvY3VtZW50RWxlbWVudCgpIGNvbnN0Cit7CisgICAgRWxlbWVudCogc2VsZWN0aW9u
Um9vdCA9IG1fc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICByZXR1cm4gc2Vs
ZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKTsKK30KKwogdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmcG9zLCBFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkLCBDdXJzb3JBbGln
bk9uU2Nyb2xsIGFsaWduKQogewogICAgIFNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucyA9IENs
b3NlVHlwaW5nIHwgQ2xlYXJUeXBpbmdTdHlsZSB8IHVzZXJUcmlnZ2VyZWQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiA5NzI4NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MTI2LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBGcmFtZVNlbGVjdGlvbihGcmFtZSogPSAwKTsK
IAogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7IH0KKyAgICBFbGVtZW50KiByb290RWRpdGFi
bGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSBjb25zdDsKICAgICBib29sIGlzQ29udGVudEVk
aXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsg
fQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvbi5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOyB9CiAgICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gOTcyODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
NzYsNyArMjQ3Niw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm8K
ICAgICByZXR1cm4gcmVzdWx0UmFuZ2UucmVsZWFzZSgpOwogfQogCi1ib29sIFRleHRJdGVyYXRv
cjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlLCBzaXplX3Qm
IGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCkKK2Jvb2wgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlv
bkFuZExlbmd0aEZyb21SYW5nZShFbGVtZW50KiBzY29wZSwgY29uc3QgUmFuZ2UqIHJhbmdlLCBz
aXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCkKIHsKICAgICBsb2NhdGlvbiA9IG5vdEZv
dW5kOwogICAgIGxlbmd0aCA9IDA7CkBAIC0yNDg0LDkgKzI0ODQsNiBAQCBib29sIFRleHRJdGVy
YXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tCiAgICAgaWYgKCFyYW5nZS0+c3RhcnRDb250YWlu
ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9v
dCA9IHJhbmdlLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2Vs
ZWN0aW9uUm9vdCA6IHJhbmdlLT5vd25lckRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwot
CiAgICAgLy8gVGhlIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB0aGlzIG9ubHkgZ2V0cyBj
YWxsZWQgd2l0aCByYW5nZXMgdGhhdAogICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJl
YSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24gcm9vdC4gVGhpcyBpcyBkb25lCiAgICAgLy8gYmVj
YXVzZSBvZiB0ZXh0IGZpZWxkcyBhbmQgdGV4dGFyZWFzLiBUaGUgRE9NIGZvciB0aG9zZSBpcyBu
b3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gOTcy
ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgCiAgICAgc3RhdGljIGludCByYW5n
ZUxlbmd0aChjb25zdCBSYW5nZSosIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZh
bHNlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoRWxlbWVudCogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgs
IGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKLSAgICBzdGF0aWMgYm9v
bCBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShjb25zdCBSYW5nZSosIHNpemVfdCYgbG9jYXRp
b24sIHNpemVfdCYgbGVuZ3RoKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0
aEZyb21SYW5nZShFbGVtZW50KiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9u
LCBzaXplX3QmIGxlbmd0aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHN1YnJhbmdl
KFJhbmdlKiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNv
dW50KTsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NzMwNSkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTEwLTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IE1ha2UgdGhlIGludGVyZmFjZSBvZiBsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZSBhbmQgcmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGggY29uc2lzdGVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk5NjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OmNv
bnZlcnRUb1JhbmdlKToKKwogMjAxMS0xMC0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEhhbmcgYmVuZWF0aCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZVBy
b3BlcnR5TGlzdEZpbGUoKSB3aGVuIHVzaW5nIGEgdGhpbiBidWlsZApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2
aXNpb24gOTcyODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IGZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOwogICAgIHNpemVfdCBsb2NhdGlv
blNpemU7CiAgICAgc2l6ZV90IGxlbmd0aFNpemU7Ci0gICAgaWYgKHJhbmdlICYmIFRleHRJdGVy
YXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6
ZSwgbGVuZ3RoU2l6ZSkpIHsKKyAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2Nh
dGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVs
ZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5n
dGhTaXplKSkgewogICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2Nh
dGlvblNpemUpOwogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3Ro
U2l6ZSk7CiAgICAgfQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0
ZWRSYW5nZSh1aW50NjRfdCYKICAgICBzaXplX3QgbG9jYXRpb25TaXplOwogICAgIHNpemVfdCBs
ZW5ndGhTaXplOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkt
PnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKHJhbmdlICYmIFRleHRJdGVyYXRvcjo6bG9j
YXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6ZSwgbGVuZ3Ro
U2l6ZSkpIHsKKyAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkg
ewogICAgICAgICBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2NhdGlvblNpemUp
OwogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoU2l6ZSk7CiAg
ICAgfQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQ
b2ludChJbnQKIAogICAgIHNpemVfdCBsb2NhdGlvbjsKICAgICBzaXplX3QgbGVuZ3RoOwotICAg
IGlmIChUZXh0SXRlcmF0b3I6OmxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlLmdldCgp
LCBsb2NhdGlvbiwgbGVuZ3RoKSkKKyAgICBpZiAoVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRP
ckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb24sIGxlbmd0aCkpCiAgICAg
ICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvY2F0aW9uKTsKIH0KIApAQCAtMzc3
LDkgKzM3Nyw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbnZlcnRUb1JhbmdlKEZyYW1lKiAKICAg
ICAvLyBkaXJlY3RseSBpbiB0aGUgZG9jdW1lbnQgRE9NLCBzbyBzZXJpYWxpemF0aW9uIGlzIHBy
b2JsZW1hdGljLiBPdXIgc29sdXRpb24gaXMKICAgICAvLyB0byB1c2UgdGhlIHJvb3QgZWRpdGFi
bGUgZWxlbWVudCBvZiB0aGUgc2VsZWN0aW9uIHN0YXJ0IGFzIHRoZSBwb3NpdGlvbmFsIGJhc2Uu
CiAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0
LgotICAgIEVsZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBz
ZWxlY3Rpb25Sb290IDogZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAg
IHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBu
c3JhbmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbnNyYW5nZS5sb2NhdGlvbiwgbnNyYW5n
ZS5sZW5ndGgpOwogfQogICAgIAogdm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJDb3JlOjpJbnRSZWN0
JiByZXN1bHRSZWN0KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3
MzA1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBpbnRlcmZhY2Ugb2YgbG9jYXRpb25BbmRMZW5ndGhG
cm9tUmFuZ2UgYW5kIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIGNvbnNpc3RlbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5OTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmNvbXBvc2l0aW9uUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Z2V0U2VsZWN0aW9uT2Zmc2V0c0FuZFRleHRJbkVkaXRhYmxlQ29udGVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjYXJldE9yU2VsZWN0aW9uUmFuZ2UpOgor
ICAgICAgICAqIHNyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3Vic3RyaW5nVXRpbDo6YXR0cmlidXRlZFN1YnN0cmluZ0luUmFuZ2UpOgorCiAyMDExLTEw
LTEyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIEFkZCBhIHNldFNlbGVjdGlvblRvUmFuZ2UoKSBtZXRob2QgdG8gV2ViRnJhbWUuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9u
IDk3Mjg0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEwNiw5ICsxMTA2LDcgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmZp
cnN0UmVjdEZvckNoYXJhY3RlcgogICAgIGlmICgobG9jYXRpb24gKyBsZW5ndGggPCBsb2NhdGlv
bikgJiYgKGxvY2F0aW9uICsgbGVuZ3RoKSkKICAgICAgICAgbGVuZ3RoID0gMDsKIAotICAgIEVs
ZW1lbnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlv
blJvb3QgOiBmcmFtZSgpLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChzY29wZSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUoKS0+c2VsZWN0aW9u
KCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBsb2NhdGlvbiwgbGVu
Z3RoKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSW50UmVj
dCBpbnRSZWN0ID0gZnJhbWUoKS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdl
dCgpKTsKQEAgLTExMzAsNyArMTEyOCw3IEBAIHNpemVfdCBXZWJGcmFtZUltcGw6OmNoYXJhY3Rl
ckluZGV4Rm9yUG8KICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCiAgICAgc2l6ZV90IGxvY2F0
aW9uLCBsZW5ndGg7Ci0gICAgVGV4dEl0ZXJhdG9yOjpsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5n
ZShyYW5nZS5nZXQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgVGV4dEl0ZXJhdG9yOjpnZXRM
b2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZSgpLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRh
YmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHJhbmdlLmdldCgpLCBsb2NhdGlvbiwgbGVu
Z3RoKTsKICAgICByZXR1cm4gbG9jYXRpb247CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDk3Mjg0KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQz
LDcgKzE0NDMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpjb25maXJtQ29tcG9zaXRpb24oY29uCiBi
b29sIFdlYlZpZXdJbXBsOjpjb21wb3NpdGlvblJhbmdlKHNpemVfdCogbG9jYXRpb24sIHNpemVf
dCogbGVuZ3RoKQogewogICAgIEZyYW1lKiBmb2N1c2VkID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgp
OwotICAgIGlmICghZm9jdXNlZCB8fCAhbV9pbWVBY2NlcHRFdmVudHMpCisgICAgaWYgKCFmb2N1
c2VkIHx8ICFmb2N1c2VkLT5zZWxlY3Rpb24oKSB8fCAhbV9pbWVBY2NlcHRFdmVudHMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBFZGl0b3IqIGVkaXRvciA9IGZvY3VzZWQtPmVkaXRvcigp
OwogICAgIGlmICghZWRpdG9yIHx8ICFlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpCkBAIC0xNDUz
LDcgKzE0NTMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpjb21wb3NpdGlvblJhbmdlKHNpemVfCiAg
ICAgaWYgKCFyYW5nZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKFRl
eHRJdGVyYXRvcjo6bG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UocmFuZ2UuZ2V0KCksICpsb2Nh
dGlvbiwgKmxlbmd0aCkpCisgICAgaWYgKFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5n
dGhGcm9tUmFuZ2UoZm9jdXNlZC0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgKmxvY2F0aW9uLCAqbGVuZ3RoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTUxOSw3ICsxNTE5LDcg
QEAgYm9vbCBXZWJWaWV3SW1wbDo6Z2V0U2VsZWN0aW9uT2Zmc2V0c0FuZAogICAgIHNpemVfdCBs
b2NhdGlvbjsKICAgICBzaXplX3QgbGVuZ3RoOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBz
ZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKLSAgICBpZiAoIXJhbmdlIHx8ICFU
ZXh0SXRlcmF0b3I6OmxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJhbmdlLmdldCgpLCBsb2Nh
dGlvbiwgbGVuZ3RoKSkKKyAgICBpZiAoIXJhbmdlIHx8ICFUZXh0SXRlcmF0b3I6OmdldExvY2F0
aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9j
dW1lbnRFbGVtZW50KCksIHJhbmdlLmdldCgpLCBsb2NhdGlvbiwgbGVuZ3RoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuaXNCYXNlRmly
c3QoKSkgewpAQCAtMTYxNSw3ICsxNjE1LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y2FyZXRPclNl
bGVjdGlvblJhbmdlKAogICAgIGlmICghcmFuZ2UuZ2V0KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChUZXh0SXRlcmF0b3I6OmxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHJh
bmdlLmdldCgpLCAqbG9jYXRpb24sICpsZW5ndGgpKQorICAgIGlmIChUZXh0SXRlcmF0b3I6Omdl
dExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxlRWxlbWVu
dE9yRG9jdW1lbnRFbGVtZW50KCksIHJhbmdlLmdldCgpLCAqbG9jYXRpb24sICpsZW5ndGgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbQkocmV2
aXNpb24gOTcyODQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMvV2ViU3Vic3Ry
aW5nVXRpbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDcgQEAgTlNBdHRyaWJ1dGVk
U3RyaW5nKiBXZWJTdWJzdHJpbmdVdGlsOjphdAogICAgIGlmIChmcmFtZS0+dmlldygpLT5uZWVk
c0xheW91dCgpKQogICAgICAgICBmcmFtZS0+dmlldygpLT5sYXlvdXQoKTsKIAotICAgIEVsZW1l
bnQqIHNlbGVjdGlvblJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1l
bnQoKTsKLSAgICBzZWxlY3Rpb25Sb290ID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3Qg
OiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0KLSAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2VsZWN0
aW9uUm9vdCwgbG9jYXRpb24sIGxlbmd0aCkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UoVGV4
dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS0+c2VsZWN0aW9uKCkt
PnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBzZWxlY3Rpb25Sb290LCBs
b2NhdGlvbiwgbGVuZ3RoKSk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IApJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gOTczMDUpCisrKyBTb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMC0x
MiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBp
bnRlcmZhY2Ugb2YgbG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UgYW5kIHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoIGNvbnNpc3RlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY5OTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsu
Y3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSk6CisKIDIwMTEtMDktMjggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdmUgZHJhZy1hbmQtZHJvcCBjb2RlIHdoaWNo
IGNhbiBiZSBzaGFyZWQgd2l0aCBXZWJLaXQyIHRvIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAkocmV2aXNpb24gOTcyODQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MTYsOSArNjE2LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmZpcnN0UmVj
dAogICAgIGlmICghZWRpdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBFbGVtZW50
KiBzZWxlY3Rpb25Sb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50
KCk7Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6
IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwg
bG9jYXRpb24sIGxlbmd0aCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CiAgICAg
aWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA5NzMwNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEwLTEyICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgdGhlIGludGVyZmFjZSBvZiBsb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZSBhbmQgcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggY29uc2lzdGVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk5NjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jb252ZXJ0VG9OU1JhbmdlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBfY29udmVydFRvRE9NUmFuZ2U6XSk6CisKIDIwMTEtMTAt
MTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2UgYSBD
YWNoZWRJbWFnZUNsaWVudCBpbnN0ZWFkIG9mIENhY2hlZFJlc291cmNlQ2xpZW50CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDk3Mjg0KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjY2
LDcgKzY2Niw3IEBAIC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KFJhbmdlICopcmEKIAog
ICAgIHNpemVfdCBsb2NhdGlvbjsKICAgICBzaXplX3QgbGVuZ3RoOwotICAgIGlmICghVGV4dEl0
ZXJhdG9yOjpsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShyYW5nZSwgbG9jYXRpb24sIGxlbmd0
aCkpCisgICAgaWYgKCFUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdl
KF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JE
b2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UsIGxvY2F0aW9uLCBsZW5ndGgpKQogICAgICAgICByZXR1
cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAKICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
bG9jYXRpb24sIGxlbmd0aCk7CkBAIC02ODUsOSArNjg1LDcgQEAgLSAoUGFzc1JlZlB0cjxSYW5n
ZT4pX2NvbnZlcnRUb0RPTVJhbmdlOgogICAgIC8vIGRpcmVjdGx5IGluIHRoZSBkb2N1bWVudCBE
T00sIHNvIHNlcmlhbGl6YXRpb24gaXMgcHJvYmxlbWF0aWMuIE91ciBzb2x1dGlvbiBpcwogICAg
IC8vIHRvIHVzZSB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9mIHRoZSBzZWxlY3Rpb24gc3Rh
cnQgYXMgdGhlIHBvc2l0aW9uYWwgYmFzZS4KICAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQn
cyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCi0gICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9
IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7
Ci0gICAgRWxlbWVudCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IF9w
cml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAgIHJl
dHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBuc3Jh
bmdlLmxvY2F0aW9uLCBuc3JhbmdlLmxlbmd0aCk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9u
KCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBuc3JhbmdlLmxvY2F0
aW9uLCBuc3JhbmdlLmxlbmd0aCk7CiB9CiAKIC0gKERPTVJhbmdlICopY29udmVydE5TUmFuZ2VU
b0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA5
NzMwNSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMTAtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTWFrZSB0aGUgaW50ZXJmYWNlIG9mIGxvY2F0aW9uQW5kTGVuZ3RoRnJvbVJh
bmdlIGFuZCByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBjb25zaXN0ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTk2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKwogMjAxMS0xMC0xMSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGN1c3RvbSBzY3Jv
bGxiYXIgdGhlbWUgZm9yIHVzZSBpbiBEUlQsIHRvIHJlZHVjZSBwaXhlbCBkaWZmcyBiZXR3ZWVu
IHBsYXRmb3JtcwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDk3Mjg0KQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNiw5ICs2MTYsNyBAQCBRVmFyaWFudExpc3QgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpCiAgICAgaWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxv
Y2F0aW9uKSAmJiAobG9jYXRpb24gKyBsZW5ndGgpKQogICAgICAgICBsZW5ndGggPSAwOwogCi0g
ICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRh
YmxlRWxlbWVudCgpOwotICAgIEVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVj
dGlvblJvb3QgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoc2NvcGUsIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLT5zZWxlY3Rpb24o
KS0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIGxvY2F0aW9uLCBsZW5n
dGgpOwogCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFFWYXJpYW50TGlzdCgpOwo=
</data>
<flag name="review"
          id="108358"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>