<?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>109278</bug_id>
          
          <creation_ts>2013-02-08 02:59:40 -0800</creation_ts>
          <short_desc>Factor EventContext and introduces MouseOrFocusEventContext.</short_desc>
          <delta_ts>2013-02-11 20:45:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</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>109156</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>ojan.autocc</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828371</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-08 02:59:40 -0800</bug_when>
    <thetext>This is a separated patch from bug 109156.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828381</commentid>
    <comment_count>1</comment_count>
      <attachid>187277</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-08 03:15:41 -0800</bug_when>
    <thetext>Created attachment 187277
Factor EventContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828392</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 03:25:07 -0800</bug_when>
    <thetext>Attachment 187277 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/dom/EventContext.cpp&apos;, u&apos;Source/WebCore/dom/EventContext.h&apos;, u&apos;Source/WebCore/dom/EventDispatcher.cpp&apos;, u&apos;Source/WebCore/dom/EventDispatcher.h&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInstrumentation.h&apos;]&quot; exit_code: 1
Source/WebCore/dom/EventContext.h:65:  The parameter name &quot;target&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828630</commentid>
    <comment_count>3</comment_count>
      <attachid>187277</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-08 09:26:09 -0800</bug_when>
    <thetext>Comment on attachment 187277
Factor EventContext

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

&gt; Source/WebCore/dom/EventContext.h:61
&gt; +typedef Vector&lt;OwnPtr&lt;EventContext&gt;, 32&gt; EventContextAncestors;

I am having trouble with this name. It seems more like an EventContextList. The word &quot;ancestors&quot; is completely out of place here, though I personally understand where it came from.

Another idea: we could use the DOM core terminology of &quot;event path&quot; (http://dom.spec.whatwg.org/#dispatching-events) and instead of EventContextAncestors and ensureEventContextAncestors (neither make good sense), we just say &quot;EventPath&quot; and &quot;ensureEventPath&quot;?

&gt;&gt; Source/WebCore/dom/EventContext.h:65
&gt;&gt; +    MouseOrFocusEventContext(PassRefPtr&lt;Node&gt;, PassRefPtr&lt;EventTarget&gt; currentTarget, PassRefPtr&lt;EventTarget&gt; target);
&gt; 
&gt; The parameter name &quot;target&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

Style elf is mistaken! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830472</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-11 19:24:54 -0800</bug_when>
    <thetext>Thank you for the review. Let me land this after addressing the comment.

(In reply to comment #3)
&gt; (From update of attachment 187277 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187277&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/EventContext.h:61
&gt; &gt; +typedef Vector&lt;OwnPtr&lt;EventContext&gt;, 32&gt; EventContextAncestors;
&gt; 
&gt; I am having trouble with this name. It seems more like an EventContextList. The word &quot;ancestors&quot; is completely out of place here, though I personally understand where it came from.
&gt; 
&gt; Another idea: we could use the DOM core terminology of &quot;event path&quot; (http://dom.spec.whatwg.org/#dispatching-events) and instead of EventContextAncestors and ensureEventContextAncestors (neither make good sense), we just say &quot;EventPath&quot; and &quot;ensureEventPath&quot;?

I like it. Let me use that.
We should use terminology from the spec unless there is a strong reason. We don&apos;t have a strong reason. :)

&gt; 
&gt; &gt;&gt; Source/WebCore/dom/EventContext.h:65
&gt; &gt;&gt; +    MouseOrFocusEventContext(PassRefPtr&lt;Node&gt;, PassRefPtr&lt;EventTarget&gt; currentTarget, PassRefPtr&lt;EventTarget&gt; target);
&gt; &gt; 
&gt; &gt; The parameter name &quot;target&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; Style elf is mistaken! :)

Yeah :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830482</commentid>
    <comment_count>5</comment_count>
      <attachid>187761</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-11 19:51:44 -0800</bug_when>
    <thetext>Created attachment 187761
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830517</commentid>
    <comment_count>6</comment_count>
      <attachid>187761</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 20:45:34 -0800</bug_when>
    <thetext>Comment on attachment 187761
Patch for landing

Clearing flags on attachment: 187761

Committed r142575: &lt;http://trac.webkit.org/changeset/142575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830518</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 20:45:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187277</attachid>
            <date>2013-02-08 03:15:41 -0800</date>
            <delta_ts>2013-02-11 19:51:41 -0800</delta_ts>
            <desc>Factor EventContext</desc>
            <filename>bug-109278-20130208201215.patch</filename>
            <type>text/plain</type>
            <size>21532</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM3N2E3YmZiYjljNGU4
NzE2NmFlMDM5ODExOWRjZWRkNDdjY2I0MS4uMmFhMmQ2YzExYTEzZTQ4ODk1ZjJhNGI1ZjViYTIz
NWFiNDk0MTdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTAyLTA4ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBGYWN0b3IgRXZlbnRDb250
ZXh0IGFuZCBpbnRyb2R1Y2VzIE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTI3OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHN1cG9vcnQgVG91Y2ggZXZl
bnQgcmV0YXJnZXRpbmcgKGJ1ZyAxMDc4MDApLCB3ZSBoYXZlIHRvIGZhY3RvcgorICAgICAgICBl
dmVudCByZXRhcmdldGluZyBjb2RlIHNvIHRoYXQgaXQgY2FuIHN1cHBvcnQgbm90IG9ubHkgTW91
c2VFdmVudCBvciBGb2N1c0V2ZW50LAorICAgICAgICBidXQgYWxzbyBvdGhlciBldmVudHMuCisK
KyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3QgYXR0ZW1wdCB0byByZWZhY3RvciBldmVudCByZXRh
cmdldGluZyBjb2RlLCBhCisgICAgICAgIHNlcGFyYXRlZCBwYXRjaCBmcm9tIGJ1ZyAxMDkxNTYu
ICBFdmVudENvbnRleHQgaXMgbm93IGZhY3RvcmVkIGFuZAorICAgICAgICBNb3VzZU9yRm9jdXNF
dmVudENvbnRleHQgd2FzIGludHJvZHVjZWQgdG8gc3VwcG9ydCBNb3VzZUV2ZW50IG9yCisgICAg
ICAgIEZvY3VzRXZlbnQgc2VwYXJhdGVseS4KKworICAgICAgICBJbiBmb2xsb3dpbmcgcGF0Y2hl
cywgSSdsbCBpbnRyb2R1Y2UgVG91Y2hFdmVudENvbnRleHQgYW5kCisgICAgICAgIFRvdWNoRXZl
bnREaXNwYXRjaE1lZGlhdG9yIHRvIHN1cHBvcnQgVG91Y2ggZXZlbnQgcmV0YXJnZXRpbmcuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICAqIGRvbS9FdmVudENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRDb250
ZXh0OjpFdmVudENvbnRleHQpOiBGYWN0b3IgcmVsYXRlZFRhcmdldCBvdXQgZnJvbSBFdmVudENv
bnRleHQgaW50byBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpF
dmVudENvbnRleHQ6On5FdmVudENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50Q29udGV4dDo6aXNNb3VzZU9yRm9jdXNFdmVudENvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW91c2VPckZvY3VzRXZlbnRDb250ZXh0OjpNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQpOiAgTmV3LiBIYW5kbGVzIE1vdXNlRXZlbnQncyAob3IgRm9jdXNFdmVudCdzKSByZWxh
dGVkVGFyZ2V0IHJldGFyZ2V0aW5nLgorICAgICAgICAoV2ViQ29yZTo6TW91c2VPckZvY3VzRXZl
bnRDb250ZXh0Ojp+TW91c2VPckZvY3VzRXZlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6aGFuZGxlTG9jYWxFdmVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Ojppc01vdXNlT3JGb2N1c0V2ZW50Q29u
dGV4dCk6CisgICAgICAgICogZG9tL0V2ZW50Q29udGV4dC5oOgorICAgICAgICAoRXZlbnRDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Q29udGV4dDo6bm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudENvbnRleHQ6OnRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudENv
bnRleHQ6OmN1cnJlbnRUYXJnZXRTYW1lQXNUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChNb3VzZU9yRm9jdXNFdmVudENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VPckZvY3VzRXZlbnRDb250ZXh0OjpyZWxhdGVkVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6c2V0UmVsYXRlZFRhcmdldCk6CisgICAgICAgICog
ZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlbGF0ZWRU
YXJnZXRBZGp1c3Rlcjo6YWRqdXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hl
cjo6YWRqdXN0UmVsYXRlZFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNo
ZXI6OmVuc3VyZUV2ZW50Q29udGV4dEFuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEV2ZW50QXRDYXB0dXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50QXRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50QXRCdWJibGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnRQb3N0UHJvY2Vzcyk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OnRvcEV2ZW50Q29udGV4dCk6CisgICAgICAgICog
ZG9tL0V2ZW50RGlzcGF0Y2hlci5oOgorICAgICAgICAoRXZlbnRSZWxhdGVkVGFyZ2V0QWRqdXN0
ZXIpOgorICAgICAgICAoRXZlbnREaXNwYXRjaGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXZlbnRIYXNMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEaXNwYXRjaEV2ZW50KToKKwogMjAxMy0wMi0wOCAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTmF0aXZlIE1lbW9y
eSBJbnN0cnVtZW50YXRpb246IGFkanVzdCBjaHVuayB0cmFuc2ZlciBzaXplIGZvciBiZXR0ZXIg
c3BlZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCmluZGV4IDE2M2FlNTg2YjQ0NzRk
NDcxMjk3MDk2NDUxMzg0ZDQ4MjQwOWZlMjAuLjI4OTdjN2Q4OWFjNjgzY2IxZjlkNDM4YTI5ZmNl
YWZlNTFmM2VkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCkBAIC00MCwyMSAr
NDAsNTAgQEAgRXZlbnRDb250ZXh0OjpFdmVudENvbnRleHQoUGFzc1JlZlB0cjxOb2RlPiBub2Rl
LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJyZW4KICAgICA6IG1fbm9kZShub2RlKQogICAg
ICwgbV9jdXJyZW50VGFyZ2V0KGN1cnJlbnRUYXJnZXQpCiAgICAgLCBtX3RhcmdldCh0YXJnZXQp
Ci0gICAgLCBtX3JlbGF0ZWRUYXJnZXQoMCkKIHsKICAgICBBU1NFUlQobV9ub2RlKTsKICAgICBB
U1NFUlQoIWlzVW5yZWFjaGFibGVOb2RlKG1fdGFyZ2V0LmdldCgpKSk7CiB9CiAKK0V2ZW50Q29u
dGV4dDo6fkV2ZW50Q29udGV4dCgpCit7Cit9CisKIHZvaWQgRXZlbnRDb250ZXh0OjpoYW5kbGVM
b2NhbEV2ZW50cyhFdmVudCogZXZlbnQpIGNvbnN0CiB7CiAgICAgZXZlbnQtPnNldFRhcmdldCht
X3RhcmdldC5nZXQoKSk7CiAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQobV9jdXJyZW50VGFy
Z2V0LmdldCgpKTsKKyAgICBtX25vZGUtPmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50KTsKK30KKwor
Ym9vbCBFdmVudENvbnRleHQ6OmlzTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK01vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6TW91c2VP
ckZvY3VzRXZlbnRDb250ZXh0KFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgUGFzc1JlZlB0cjxFdmVu
dFRhcmdldD4gY3VycmVudFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gdGFyZ2V0KQor
ICAgIDogRXZlbnRDb250ZXh0KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCkKKyAgICAsIG1f
cmVsYXRlZFRhcmdldCgwKQoreworfQorCitNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ6On5Nb3Vz
ZU9yRm9jdXNFdmVudENvbnRleHQoKQoreworfQorCit2b2lkIE1vdXNlT3JGb2N1c0V2ZW50Q29u
dGV4dDo6aGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqIGV2ZW50KSBjb25zdAoreworICAgIEFTU0VS
VChldmVudC0+aXNNb3VzZUV2ZW50KCkgfHwgZXZlbnQtPmlzRm9jdXNFdmVudCgpKTsKICAgICBp
ZiAobV9yZWxhdGVkVGFyZ2V0LmdldCgpICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSkKICAgICAg
ICAgdG9Nb3VzZUV2ZW50KGV2ZW50KS0+c2V0UmVsYXRlZFRhcmdldChtX3JlbGF0ZWRUYXJnZXQu
Z2V0KCkpOwogICAgIGVsc2UgaWYgKG1fcmVsYXRlZFRhcmdldC5nZXQoKSAmJiBldmVudC0+aXNG
b2N1c0V2ZW50KCkpCi0gICAgICAgIHRvRm9jdXNFdmVudChldmVudCktPnNldFJlbGF0ZWRUYXJn
ZXQobV9yZWxhdGVkVGFyZ2V0KTsKLSAgICBtX25vZGUtPmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50
KTsKKyAgICAgICAgdG9Gb2N1c0V2ZW50KGV2ZW50KS0+c2V0UmVsYXRlZFRhcmdldChtX3JlbGF0
ZWRUYXJnZXQuZ2V0KCkpOworICAgIEV2ZW50Q29udGV4dDo6aGFuZGxlTG9jYWxFdmVudHMoZXZl
bnQpOworfQorCitib29sIE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6aXNNb3VzZU9yRm9jdXNF
dmVudENvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRDb250ZXh0LmgKaW5kZXggNzhlMzVjMDQ3MmRkZGQ5MTk2YmQ0MjdjMzgxOGQ3YWY0
MTdmZjliMi4uZTE3NmIwMzUxNGEyNmM4ZDQxMTYxODhlMjk3NGJkNTVlYjkxZDQ3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudENvbnRleHQuaApAQCAtNDAsMTUgKzQwLDE1IEBAIGNsYXNzIEV2ZW50Q29u
dGV4dCB7CiBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFVzZSBDb250YWluZXJOb2RlIGluc3RlYWQg
b2YgTm9kZS4KICAgICBFdmVudENvbnRleHQoUGFzc1JlZlB0cjxOb2RlPiwgUGFzc1JlZlB0cjxF
dmVudFRhcmdldD4gY3VycmVudFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gdGFyZ2V0
KTsKKyAgICB2aXJ0dWFsIH5FdmVudENvbnRleHQoKTsKIAotICAgIE5vZGUqIG5vZGUoKSBjb25z
dDsKLSAgICBFdmVudFRhcmdldCogdGFyZ2V0KCkgY29uc3Q7Ci0gICAgRXZlbnRUYXJnZXQqIHJl
bGF0ZWRUYXJnZXQoKSBjb25zdDsKLSAgICBib29sIGN1cnJlbnRUYXJnZXRTYW1lQXNUYXJnZXQo
KSBjb25zdDsKLSAgICB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KikgY29uc3Q7Ci0gICAg
dm9pZCBzZXRSZWxhdGVkVGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+KTsKKyAgICBOb2Rl
KiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLmdldCgpOyB9CisgICAgRXZlbnRUYXJnZXQq
IHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CisgICAgYm9vbCBjdXJy
ZW50VGFyZ2V0U2FtZUFzVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGFyZ2V0Lmdl
dCgpID09IG1fdGFyZ2V0LmdldCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZl
bnRzKEV2ZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTW91c2VPckZvY3VzRXZlbnRD
b250ZXh0KCkgY29uc3Q7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAjaWZuZGVmIE5ERUJVRwog
ICAgIGJvb2wgaXNVbnJlYWNoYWJsZU5vZGUoRXZlbnRUYXJnZXQqKTsKICAgICBib29sIGlzUmVh
Y2hhYmxlKE5vZGUqKTsKQEAgLTU2LDM0ICs1NiwyMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxO
b2RlPiBtX25vZGU7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX2N1cnJlbnRUYXJnZXQ7CiAg
ICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3RhcmdldDsKLSAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+
IG1fcmVsYXRlZFRhcmdldDsKIH07CiAKLWlubGluZSBOb2RlKiBFdmVudENvbnRleHQ6Om5vZGUo
KSBjb25zdAotewotICAgIHJldHVybiBtX25vZGUuZ2V0KCk7Ci19Ci0KLWlubGluZSBFdmVudFRh
cmdldCogRXZlbnRDb250ZXh0Ojp0YXJnZXQoKSBjb25zdAotewotICAgIHJldHVybiBtX3Rhcmdl
dC5nZXQoKTsKLX0KLQotaW5saW5lIGJvb2wgRXZlbnRDb250ZXh0OjpjdXJyZW50VGFyZ2V0U2Ft
ZUFzVGFyZ2V0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jdXJyZW50VGFyZ2V0LmdldCgpID09
IG1fdGFyZ2V0LmdldCgpOwotfQordHlwZWRlZiBWZWN0b3I8T3duUHRyPEV2ZW50Q29udGV4dD4s
IDMyPiBFdmVudENvbnRleHRBbmNlc3RvcnM7CiAKLWlubGluZSBFdmVudFRhcmdldCogRXZlbnRD
b250ZXh0OjpyZWxhdGVkVGFyZ2V0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yZWxhdGVkVGFy
Z2V0LmdldCgpOwotfQorY2xhc3MgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0IDogcHVibGljIEV2
ZW50Q29udGV4dCB7CitwdWJsaWM6CisgICAgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KFBhc3NS
ZWZQdHI8Tm9kZT4sIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGN1cnJlbnRUYXJnZXQsIFBhc3NS
ZWZQdHI8RXZlbnRUYXJnZXQ+IHRhcmdldCk7CisgICAgdmlydHVhbCB+TW91c2VPckZvY3VzRXZl
bnRDb250ZXh0KCk7CisgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQoKSBjb25zdCB7IHJl
dHVybiBtX3JlbGF0ZWRUYXJnZXQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFJlbGF0ZWRUYXJnZXQo
UGFzc1JlZlB0cjxFdmVudFRhcmdldD4pOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVMb2NhbEV2
ZW50cyhFdmVudCopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlT3JG
b2N1c0V2ZW50Q29udGV4dCgpIGNvbnN0IE9WRVJSSURFOwogCi1pbmxpbmUgdm9pZCBFdmVudENv
bnRleHQ6OnNldFJlbGF0ZWRUYXJnZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRh
cmdldCkKLXsKLSAgICBBU1NFUlQoIWlzVW5yZWFjaGFibGVOb2RlKHJlbGF0ZWRUYXJnZXQuZ2V0
KCkpKTsKLSAgICBtX3JlbGF0ZWRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0OwotfQorcHJpdmF0ZToK
KyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fcmVsYXRlZFRhcmdldDsKK307CiAKICNpZm5kZWYg
TkRFQlVHCiBpbmxpbmUgYm9vbCBFdmVudENvbnRleHQ6OmlzVW5yZWFjaGFibGVOb2RlKEV2ZW50
VGFyZ2V0KiB0YXJnZXQpCkBAIC0xMDQsNiArOTIsMTIgQEAgaW5saW5lIGJvb2wgRXZlbnRDb250
ZXh0Ojppc1JlYWNoYWJsZShOb2RlKiB0YXJnZXQpCiB9CiAjZW5kaWYKIAoraW5saW5lIHZvaWQg
TW91c2VPckZvY3VzRXZlbnRDb250ZXh0OjpzZXRSZWxhdGVkVGFyZ2V0KFBhc3NSZWZQdHI8RXZl
bnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQpCit7CisgICAgQVNTRVJUKCFpc1VucmVhY2hhYmxlTm9k
ZShyZWxhdGVkVGFyZ2V0LmdldCgpKSk7CisgICAgbV9yZWxhdGVkVGFyZ2V0ID0gcmVsYXRlZFRh
cmdldDsKK30KKwogfQogCiAjZW5kaWYgLy8gRXZlbnRDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggZDQwOWE4M2I5YzIzYWJmNTMwMjNiMTVhNjQ2Njgw
YTE5ZDM4ODQxNy4uYjUxZjM5YTdmNTFmNTljNTk2Y2QwZmQxMDE0NGMwMzkyYmJmMmQ1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgRXZl
bnRSZWxhdGVkVGFyZ2V0QWRqdXN0ZXI6OkV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyKFBhc3NS
ZWZQdHI8Tm9kZT4gbm9kZSwgUGEKICAgICBBU1NFUlQobV9yZWxhdGVkVGFyZ2V0KTsKIH0KIAot
dm9pZCBFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3Rlcjo6YWRqdXN0KFZlY3RvcjxFdmVudENvbnRl
eHQsIDMyPiYgYW5jZXN0b3JzKQordm9pZCBFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3Rlcjo6YWRq
dXN0KEV2ZW50Q29udGV4dEFuY2VzdG9ycyYgYW5jZXN0b3JzKQogewogICAgIC8vIFN5bnRoZXRp
YyBtb3VzZSBldmVudHMgY2FuIGhhdmUgYSByZWxhdGVkVGFyZ2V0IHdoaWNoIGlzIGlkZW50aWNh
bCB0byB0aGUgdGFyZ2V0LgogICAgIGJvb2wgdGFyZ2V0SXNJZGVudGljYWxUb1RvUmVsYXRlZFRh
cmdldCA9IChtX25vZGUuZ2V0KCkgPT0gbV9yZWxhdGVkVGFyZ2V0LmdldCgpKTsKQEAgLTg2LDIy
ICs4NiwyNCBAQCB2b2lkIEV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyOjphZGp1c3QoVmVjdG9y
PEV2ZW50Q29udGV4dCwgMzI+JiBhbmNlc3RvcnMpCiAKICAgICBsYXN0VHJlZVNjb3BlID0gMDsK
ICAgICBFdmVudFRhcmdldCogYWRqdXN0ZWRSZWxhdGVkVGFyZ2V0ID0gMDsKLSAgICBmb3IgKFZl
Y3RvcjxFdmVudENvbnRleHQsIDMyPjo6aXRlcmF0b3IgaXRlciA9IGFuY2VzdG9ycy5iZWdpbigp
OyBpdGVyIDwgYW5jZXN0b3JzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgVHJlZVNjb3BlKiBz
Y29wZSA9IGl0ZXItPm5vZGUoKS0+dHJlZVNjb3BlKCk7CisgICAgZm9yIChFdmVudENvbnRleHRB
bmNlc3RvcnM6Oml0ZXJhdG9yIGl0ZXIgPSBhbmNlc3RvcnMuYmVnaW4oKTsgaXRlciA8IGFuY2Vz
dG9ycy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5pc01vdXNlT3JG
b2N1c0V2ZW50Q29udGV4dCgpKTsKKyAgICAgICAgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KiBt
b3N1ZU9yRm9jdXNFdmVudENvbnRleHQgPSBzdGF0aWNfY2FzdDxNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQqPihpdGVyLT5nZXQoKSk7CisgICAgICAgIFRyZWVTY29wZSogc2NvcGUgPSBtb3N1ZU9y
Rm9jdXNFdmVudENvbnRleHQtPm5vZGUoKS0+dHJlZVNjb3BlKCk7CiAgICAgICAgIGlmIChzY29w
ZSA9PSBsYXN0VHJlZVNjb3BlKSB7CiAgICAgICAgICAgICAvLyBSZS11c2UgdGhlIHByZXZpb3Vz
IGFkanVzdGVkUmVsYXRlZFRhcmdldCBpZiB0cmVlU2NvcGUgZG9lcyBub3QgY2hhbmdlLiBKdXN0
IGZvciB0aGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLgotICAgICAgICAgICAgaXRlci0+c2V0
UmVsYXRlZFRhcmdldChhZGp1c3RlZFJlbGF0ZWRUYXJnZXQpOworICAgICAgICAgICAgbW9zdWVP
ckZvY3VzRXZlbnRDb250ZXh0LT5zZXRSZWxhdGVkVGFyZ2V0KGFkanVzdGVkUmVsYXRlZFRhcmdl
dCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGp1c3RlZFJlbGF0ZWRUYXJnZXQg
PSBmaW5kUmVsYXRlZFRhcmdldChzY29wZSk7Ci0gICAgICAgICAgICBpdGVyLT5zZXRSZWxhdGVk
VGFyZ2V0KGFkanVzdGVkUmVsYXRlZFRhcmdldCk7CisgICAgICAgICAgICBtb3N1ZU9yRm9jdXNF
dmVudENvbnRleHQtPnNldFJlbGF0ZWRUYXJnZXQoYWRqdXN0ZWRSZWxhdGVkVGFyZ2V0KTsKICAg
ICAgICAgfQogICAgICAgICBsYXN0VHJlZVNjb3BlID0gc2NvcGU7CiAgICAgICAgIGlmICh0YXJn
ZXRJc0lkZW50aWNhbFRvVG9SZWxhdGVkVGFyZ2V0KSB7Ci0gICAgICAgICAgICBpZiAobV9ub2Rl
LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSA9PSBpdGVyLT5ub2RlKCkpIHsKKyAgICAgICAgICAg
IGlmIChtX25vZGUtPnRyZWVTY29wZSgpLT5yb290Tm9kZSgpID09IG1vc3VlT3JGb2N1c0V2ZW50
Q29udGV4dC0+bm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgYW5jZXN0b3JzLnNocmluayhpdGVy
ICsgMSAtIGFuY2VzdG9ycy5iZWdpbigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpdGVyLT50YXJnZXQoKSA9PSBhZGp1c3RlZFJl
bGF0ZWRUYXJnZXQpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtb3N1ZU9yRm9jdXNFdmVudENvbnRl
eHQtPnRhcmdldCgpID09IGFkanVzdGVkUmVsYXRlZFRhcmdldCkgewogICAgICAgICAgICAgLy8g
RXZlbnQgZGlzcGF0Y2hpbmcgc2hvdWxkIGJlIHN0b3BwZWQgaGVyZS4KICAgICAgICAgICAgIGFu
Y2VzdG9ycy5zaHJpbmsoaXRlciAtIGFuY2VzdG9ycy5iZWdpbigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTY5LDcgKzE3MSw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjphZGp1c3RSZWxh
dGVkVGFyZ2V0KEV2ZW50KiBldmVudCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4KICAgICAgICAg
cmV0dXJuOwogICAgIGlmICghbV9ub2RlLmdldCgpKQogICAgICAgICByZXR1cm47Ci0gICAgZW5z
dXJlRXZlbnRBbmNlc3RvcnMoZXZlbnQpOworICAgIGVuc3VyZUV2ZW50Q29udGV4dEFuY2VzdG9y
cyhldmVudCk7CiAgICAgRXZlbnRSZWxhdGVkVGFyZ2V0QWRqdXN0ZXIobV9ub2RlLCByZWxhdGVk
VGFyZ2V0LnJlbGVhc2UoKSkuYWRqdXN0KG1fYW5jZXN0b3JzKTsKIH0KIApAQCAtMTg0LDEzICsx
ODYsMTQgQEAgRXZlbnREaXNwYXRjaGVyOjpFdmVudERpc3BhdGNoZXIoTm9kZSogbm9kZSkKICAg
ICBtX3ZpZXcgPSBub2RlLT5kb2N1bWVudCgpLT52aWV3KCk7CiB9CiAKLXZvaWQgRXZlbnREaXNw
YXRjaGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVudCogZXZlbnQpCit2b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6ZW5zdXJlRXZlbnRDb250ZXh0QW5jZXN0b3JzKEV2ZW50KiBldmVudCkKIHsKICAg
ICBpZiAobV9hbmNlc3RvcnNJbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYW5j
ZXN0b3JzSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIGJvb2wgaW5Eb2N1bWVudCA9IG1fbm9kZS0+
aW5Eb2N1bWVudCgpOwogICAgIGJvb2wgaXNTVkdFbGVtZW50ID0gbV9ub2RlLT5pc1NWR0VsZW1l
bnQoKTsKKyAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnQgPSBldmVudC0+aXNNb3VzZUV2ZW50
KCkgfHwgZXZlbnQtPmlzRm9jdXNFdmVudCgpOwogICAgIFZlY3RvcjxFdmVudFRhcmdldCosIDMy
PiB0YXJnZXRTdGFjazsKICAgICBmb3IgKEFuY2VzdG9yQ2hhaW5XYWxrZXIgd2Fsa2VyKG1fbm9k
ZS5nZXQoKSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBhcmVudCgpKSB7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSB3YWxrZXIuZ2V0KCk7CkBAIC0xOTgsNyArMjAxLDEwIEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB0
YXJnZXRTdGFjay5hcHBlbmQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMobm9kZSkp
OwogICAgICAgICBlbHNlIGlmICh3YWxrZXIuY3Jvc3NpbmdJbnNlcnRpb25Qb2ludCgpKQogICAg
ICAgICAgICAgdGFyZ2V0U3RhY2suYXBwZW5kKHRhcmdldFN0YWNrLmxhc3QoKSk7Ci0gICAgICAg
IG1fYW5jZXN0b3JzLmFwcGVuZChFdmVudENvbnRleHQobm9kZSwgZXZlbnRUYXJnZXRSZXNwZWN0
aW5nVGFyZ2V0UnVsZXMobm9kZSksIHRhcmdldFN0YWNrLmxhc3QoKSkpOworICAgICAgICBpZiAo
aXNNb3VzZU9yRm9jdXNFdmVudCkKKyAgICAgICAgICAgIG1fYW5jZXN0b3JzLmFwcGVuZChhZG9w
dFB0cihuZXcgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KG5vZGUsIGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1RhcmdldFJ1bGVzKG5vZGUpLCB0YXJnZXRTdGFjay5sYXN0KCkpKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fYW5jZXN0b3JzLmFwcGVuZChhZG9wdFB0cihuZXcgRXZlbnRDb250
ZXh0KG5vZGUsIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKG5vZGUpLCB0YXJnZXRT
dGFjay5sYXN0KCkpKSk7CiAgICAgICAgIGlmICghaW5Eb2N1bWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSkKQEAgLTI2MCw3ICsyNjYs
NyBAQCBib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiBwcnBFdmVudCkKICAgICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVu
dERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwogICAg
IEFTU0VSVCghZXZlbnQtPnR5cGUoKS5pc051bGwoKSk7IC8vIEphdmFTY3JpcHQgY29kZSBjYW4g
Y3JlYXRlIGFuIGV2ZW50IHdpdGggYW4gZW1wdHkgbmFtZSwgYnV0IG5vdCBudWxsLgotICAgIGVu
c3VyZUV2ZW50QW5jZXN0b3JzKGV2ZW50LmdldCgpKTsKKyAgICBlbnN1cmVFdmVudENvbnRleHRB
bmNlc3RvcnMoZXZlbnQuZ2V0KCkpOwogICAgIFdpbmRvd0V2ZW50Q29udGV4dCB3aW5kb3dFdmVu
dENvbnRleHQoZXZlbnQuZ2V0KCksIG1fbm9kZS5nZXQoKSwgdG9wRXZlbnRDb250ZXh0KCkpOwog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KG1fbm9kZS0+ZG9jdW1lbnQoKSwgKmV2ZW50
LCB3aW5kb3dFdmVudENvbnRleHQud2luZG93KCksIG1fbm9kZS5nZXQoKSwgbV9hbmNlc3RvcnMp
OwogCkBAIC0yOTYsNyArMzAyLDcgQEAgaW5saW5lIEV2ZW50RGlzcGF0Y2hDb250aW51YXRpb24g
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50QXRDYXB0dXJpbmcoUGFzc1IKICAgICAgICAg
cmV0dXJuIERvbmVEaXNwYXRjaGluZzsKIAogICAgIGZvciAoc2l6ZV90IGkgPSBtX2FuY2VzdG9y
cy5zaXplKCkgLSAxOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgIGNvbnN0IEV2ZW50Q29udGV4dCYg
ZXZlbnRDb250ZXh0ID0gbV9hbmNlc3RvcnNbaV07CisgICAgICAgIGNvbnN0IEV2ZW50Q29udGV4
dCYgZXZlbnRDb250ZXh0ID0gKm1fYW5jZXN0b3JzW2ldOwogICAgICAgICBpZiAoZXZlbnRDb250
ZXh0LmN1cnJlbnRUYXJnZXRTYW1lQXNUYXJnZXQoKSkgewogICAgICAgICAgICAgaWYgKGV2ZW50
LT5idWJibGVzKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zMTQsNyArMzIwLDcg
QEAgaW5saW5lIEV2ZW50RGlzcGF0Y2hDb250aW51YXRpb24gRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEV2ZW50QXRDYXB0dXJpbmcoUGFzc1IKIGlubGluZSBFdmVudERpc3BhdGNoQ29udGludWF0
aW9uIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudEF0VGFyZ2V0KFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50KQogewogICAgIGV2ZW50LT5zZXRFdmVudFBoYXNlKEV2ZW50OjpBVF9UQVJHRVQp
OwotICAgIG1fYW5jZXN0b3JzWzBdLmhhbmRsZUxvY2FsRXZlbnRzKGV2ZW50LmdldCgpKTsKKyAg
ICBtX2FuY2VzdG9yc1swXS0+aGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0KCkpOwogICAgIHJl
dHVybiBldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgPyBEb25lRGlzcGF0Y2hpbmcgOiBDb250
aW51ZURpc3BhdGNoaW5nOwogfQogCkBAIC0zMjYsNyArMzMyLDcgQEAgaW5saW5lIEV2ZW50RGlz
cGF0Y2hDb250aW51YXRpb24gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50QXRCdWJibGlu
ZyhQYXNzUmUKIAogICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fYW5jZXN0b3JzLnNpemUoKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIGNv
bnN0IEV2ZW50Q29udGV4dCYgZXZlbnRDb250ZXh0ID0gbV9hbmNlc3RvcnNbaV07CisgICAgICAg
ICAgICBjb25zdCBFdmVudENvbnRleHQmIGV2ZW50Q29udGV4dCA9ICptX2FuY2VzdG9yc1tpXTsK
ICAgICAgICAgICAgIGlmIChldmVudENvbnRleHQuY3VycmVudFRhcmdldFNhbWVBc1RhcmdldCgp
KQogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXRFdmVudFBoYXNlKEV2ZW50OjpBVF9UQVJHRVQp
OwogICAgICAgICAgICAgZWxzZQpAQCAtMzYzLDcgKzM2OSw3IEBAIGlubGluZSB2b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudFBvc3RQcm9jZXNzKFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50LCB2CiAgICAgICAgIGlmIChldmVudC0+YnViYmxlcygpKSB7CiAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSA9IG1fYW5jZXN0b3JzLnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAxOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgbV9hbmNlc3RvcnNbaV0ubm9k
ZSgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBt
X2FuY2VzdG9yc1tpXS0+bm9kZSgpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMzc0LDcgKzM4MCw3IEBAIGlubGluZSB2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hFdmVudFBvc3RQcm9jZXNzKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCB2
CiAKIGNvbnN0IEV2ZW50Q29udGV4dCogRXZlbnREaXNwYXRjaGVyOjp0b3BFdmVudENvbnRleHQo
KQogewotICAgIHJldHVybiBtX2FuY2VzdG9ycy5pc0VtcHR5KCkgPyAwIDogJm1fYW5jZXN0b3Jz
Lmxhc3QoKTsKKyAgICByZXR1cm4gbV9hbmNlc3RvcnMuaXNFbXB0eSgpID8gMCA6IG1fYW5jZXN0
b3JzLmxhc3QoKS5nZXQoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGluVGhlU2FtZVNjb3Bl
KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnREaXNwYXRjaGVyLmgKaW5kZXggZGFjZjIzZDg0NGIxMmZmMjBiNWE4ZDkyYTUxMzJi
NDZkOGM3NDA0My4uOWE0OGQ0YTAyNTUyMDE4NmQ3NzlkZTg4MDNmNmE4MTYzYjBiNjEyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaApAQCAtNTgsNyArNTgsNyBAQCBlbnVtIEV2
ZW50RGlzcGF0Y2hDb250aW51YXRpb24gewogY2xhc3MgRXZlbnRSZWxhdGVkVGFyZ2V0QWRqdXN0
ZXIgewogcHVibGljOgogICAgIEV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyKFBhc3NSZWZQdHI8
Tm9kZT4sIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCk7Ci0gICAgdm9pZCBhZGp1c3Qo
VmVjdG9yPEV2ZW50Q29udGV4dCwgMzI+Jik7CisgICAgdm9pZCBhZGp1c3QoRXZlbnRDb250ZXh0
QW5jZXN0b3JzJik7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxUcmVlU2NvcGUqLCBF
dmVudFRhcmdldCo+IFJlbGF0ZWRUYXJnZXRNYXA7CiAgICAgRXZlbnRUYXJnZXQqIGZpbmRSZWxh
dGVkVGFyZ2V0KFRyZWVTY29wZSopOwpAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAg
RXZlbnREaXNwYXRjaEJlaGF2aW9yIGRldGVybWluZURpc3BhdGNoQmVoYXZpb3IoRXZlbnQqLCBT
aGFkb3dSb290KiwgRXZlbnRUYXJnZXQqKTsKIAotICAgIHZvaWQgZW5zdXJlRXZlbnRBbmNlc3Rv
cnMoRXZlbnQqKTsKKyAgICB2b2lkIGVuc3VyZUV2ZW50Q29udGV4dEFuY2VzdG9ycyhFdmVudCop
OwogICAgIGNvbnN0IEV2ZW50Q29udGV4dCogdG9wRXZlbnRDb250ZXh0KCk7CiAKICAgICBFdmVu
dERpc3BhdGNoQ29udGludWF0aW9uIGRpc3BhdGNoRXZlbnRQcmVQcm9jZXNzKFBhc3NSZWZQdHI8
RXZlbnQ+LCB2b2lkKiYgcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXJSZXN1bHQpOwpAQCAtOTMsNyAr
OTMsNyBAQCBwcml2YXRlOgogICAgIEV2ZW50RGlzcGF0Y2hDb250aW51YXRpb24gZGlzcGF0Y2hF
dmVudEF0QnViYmxpbmcoUGFzc1JlZlB0cjxFdmVudD4sIFdpbmRvd0V2ZW50Q29udGV4dCYpOwog
ICAgIHZvaWQgZGlzcGF0Y2hFdmVudFBvc3RQcm9jZXNzKFBhc3NSZWZQdHI8RXZlbnQ+LCB2b2lk
KiBwcmVEaXNwYXRjaEV2ZW50SGFuZGxlclJlc3VsdCk7CiAKLSAgICBWZWN0b3I8RXZlbnRDb250
ZXh0LCAzMj4gbV9hbmNlc3RvcnM7CisgICAgRXZlbnRDb250ZXh0QW5jZXN0b3JzIG1fYW5jZXN0
b3JzOwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gbV92
aWV3OwogICAgIGJvb2wgbV9hbmNlc3RvcnNJbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTFm
NTAxZDI0MDU1OGI4Y2ViOGNiMGRlZjEwMDZkYWI1Y2MwODlkNS4uNDJkMzcyODRjNjVkMDY2NDdk
NTQzNWM1Mjk3NWI3MWIwN2Q5ZDY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgc3Rh
dGljIEhhc2hTZXQ8SW5zdHJ1bWVudGluZ0FnZW50cyo+KiBpbnN0cnVtZW50aW5nQWdlbnRzU2V0
ID0gMDsKIAogaW50IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c19mcm9udGVuZENvdW50ZXIg
PSAwOwogCi1zdGF0aWMgYm9vbCBldmVudEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxF
dmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCitzdGF0aWMgYm9vbCBldmVudEhhc0xpc3RlbmVycyhj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5v
ZGUsIGNvbnN0IEV2ZW50Q29udGV4dEFuY2VzdG9ycyYgYW5jZXN0b3JzKQogewogICAgIGlmICh3
aW5kb3cgJiYgd2luZG93LT5oYXNFdmVudExpc3RlbmVycyhldmVudFR5cGUpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgYm9vbCBldmVudEhhc0xpc3Rl
bmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3aW5kb3csCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmNlc3Rv
cnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgTm9kZSogYW5jZXN0b3IgPSBhbmNlc3RvcnNbaV0u
bm9kZSgpOworICAgICAgICBOb2RlKiBhbmNlc3RvciA9IGFuY2VzdG9yc1tpXS0+bm9kZSgpOwog
ICAgICAgICBpZiAoYW5jZXN0b3ItPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50
SW1wbChjb25zdCBJbnMKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlzcGF0Y2hYSFJSZWFk
eVN0YXRlQ2hhbmdlRXZlbnQoKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9N
V2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBh
bmNlc3RvcnMsIERvY3VtZW50KiBkb2N1bWVudCkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBFdmVudCYgZXZlbnQs
IERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBFdmVudENvbnRleHRBbmNlc3Rv
cnMmIGFuY2VzdG9ycywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
MWZhOGRmYjNhMDZkMGMxNmM2YTUzOGY5ZTI1MjAwNjU0M2NkM2QyYS4uMTBhM2M5ZjQ0MTgxOTBj
ZjVhNDdmNzM3ZGZhNWFjMzFkODQwMDgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIkNvbnNvbGVBUElUeXBlcy5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudENvbnRleHQuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBA
IC0xNDMsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlv
bihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFu
Z2VFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0cFJlcXVlc3QqKTsKICAgICBz
dGF0aWMgdm9pZCBkaWREaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiwgY29uc3QgRXZlbnQm
IGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50
Q29udGV4dD4mIGFuY2VzdG9ycyk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCosIGNvbnN0IEV2ZW50JiwgRE9NV2lu
ZG93KiwgTm9kZSosIGNvbnN0IEV2ZW50Q29udGV4dEFuY2VzdG9ycyYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZERpc3BhdGNoRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
Jik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsSGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkSGFuZGxlRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CkBA
IC0zNDcsNyArMzQ4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rp
b25JbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0
ZUNoYW5nZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgWE1MSHR0cFJlcXVlc3QqLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hYSFJS
ZWFkeVN0YXRlQ2hhbmdlRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERp
c3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBFdmVudCYsIERPTVdp
bmRvdyosIE5vZGUqLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzLCBEb2N1
bWVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERp
c3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBFdmVudCYsIERPTVdp
bmRvdyosIE5vZGUqLCBjb25zdCBFdmVudENvbnRleHRBbmNlc3RvcnMmLCBEb2N1bWVudCopOwog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEhhbmRsZUV2ZW50
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRXZlbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRI
YW5kbGVFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJik7CkBAIC04NjQsNyArODY1LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudChj
b25zdAogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUs
IGNvbnN0IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMpCitpbmxpbmUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3Bh
dGNoRXZlbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRv
dyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBFdmVudENvbnRleHRBbmNlc3RvcnMmIGFuY2Vz
dG9ycykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187761</attachid>
            <date>2013-02-11 19:51:44 -0800</date>
            <delta_ts>2013-02-11 20:45:34 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109278-20130212124815.patch</filename>
            <type>text/plain</type>
            <size>24219</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFiYWJlMzFkMWMxNDhm
NDRjZjIwMmVmNjVjOTZhNWM4NGE4OGY1YS4uMWJiNWFhNGEwNWUzZTU3NTE1MjA5ZTkyMjJmZWFm
NGVhNWIyZGM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTAyLTExICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBGYWN0b3IgRXZlbnRDb250
ZXh0IGFuZCBpbnRyb2R1Y2VzIE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTI3OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBUbyBzdXBvb3J0IFRvdWNoIGV2
ZW50IHJldGFyZ2V0aW5nIChidWcgMTA3ODAwKSwgd2UgaGF2ZSB0byBmYWN0b3IKKyAgICAgICAg
ZXZlbnQgcmV0YXJnZXRpbmcgY29kZSBzbyB0aGF0IGl0IGNhbiBzdXBwb3J0IG5vdCBvbmx5IE1v
dXNlRXZlbnQgb3IgRm9jdXNFdmVudCwKKyAgICAgICAgYnV0IGFsc28gb3RoZXIgZXZlbnRzLgor
CisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IGF0dGVtcHQgdG8gcmVmYWN0b3IgZXZlbnQgcmV0
YXJnZXRpbmcgY29kZSwgYQorICAgICAgICBzZXBhcmF0ZWQgcGF0Y2ggZnJvbSBidWcgMTA5MTU2
LiAgRXZlbnRDb250ZXh0IGlzIG5vdyBmYWN0b3JlZCBhbmQKKyAgICAgICAgTW91c2VPckZvY3Vz
RXZlbnRDb250ZXh0IHdhcyBpbnRyb2R1Y2VkIHRvIHN1cHBvcnQgTW91c2VFdmVudCBvcgorICAg
ICAgICBGb2N1c0V2ZW50IHNlcGFyYXRlbHkuCisKKyAgICAgICAgSW4gZm9sbG93aW5nIHBhdGNo
ZXMsIEknbGwgaW50cm9kdWNlIFRvdWNoRXZlbnRDb250ZXh0IGFuZAorICAgICAgICBUb3VjaEV2
ZW50RGlzcGF0Y2hNZWRpYXRvciB0byBzdXBwb3J0IFRvdWNoIGV2ZW50IHJldGFyZ2V0aW5nLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAg
ICAgICAgKiBkb20vRXZlbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Q29u
dGV4dDo6RXZlbnRDb250ZXh0KTogRmFjdG9yIHJlbGF0ZWRUYXJnZXQgb3V0IGZyb20gRXZlbnRD
b250ZXh0IGludG8gTW91c2VPckZvY3VzRXZlbnRDb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRDb250ZXh0Ojp+RXZlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRDb250ZXh0OjpoYW5kbGVMb2NhbEV2ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudENvbnRleHQ6OmlzTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6TW91c2VPckZvY3VzRXZlbnRD
b250ZXh0KTogIE5ldy4gSGFuZGxlcyBNb3VzZUV2ZW50J3MgKG9yIEZvY3VzRXZlbnQncykgcmVs
YXRlZFRhcmdldCByZXRhcmdldGluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlT3JGb2N1c0V2
ZW50Q29udGV4dDo6fk1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6aXNNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQpOgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuaDoKKyAgICAgICAgKEV2ZW50Q29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudENvbnRleHQ6Om5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRDb250ZXh0Ojp0YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRD
b250ZXh0OjpjdXJyZW50VGFyZ2V0U2FtZUFzVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlT3JGb2N1c0V2ZW50Q29udGV4dDo6cmVsYXRlZFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ6OnNldFJlbGF0ZWRUYXJnZXQpOgorICAgICAgICAq
IGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWxhdGVk
VGFyZ2V0QWRqdXN0ZXI6OmFkanVzdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNo
ZXI6OmFkanVzdFJlbGF0ZWRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRj
aGVyOjplbnN1cmVFdmVudFBhdGgpOiAgUmVuYW1hZCBmcm9tIGVuc3VyZUV2ZW50QW5jZXN0b3Jz
LiBVc2UgdGhlIERPTSBDb3JlIHRlcm1pbm9sb2d5LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hFdmVudEF0Q2FwdHVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudEF0VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudEF0QnViYmxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50UG9zdFByb2Nlc3MpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjp0b3BFdmVudENvbnRleHQpOgorICAgICAgICAqIGRv
bS9FdmVudERpc3BhdGNoZXIuaDoKKyAgICAgICAgKEV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVy
KToKKyAgICAgICAgKEV2ZW50RGlzcGF0Y2hlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmV2ZW50SGFzTGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRGlzcGF0Y2hFdmVudCk6CisKIDIwMTMtMDItMTEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gU2NoZWR1bGVkQWN0aW9uOjptX2NvbnRleHQg
Y2FuIGJlIGVtcHR5LCBzbyB3ZSBzaG91bGRuJ3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5j
cHAKaW5kZXggMTYzYWU1ODZiNDQ3NGQ0NzEyOTcwOTY0NTEzODRkNDgyNDA5ZmUyMC4uMjg5N2M3
ZDg5YWM2ODNjYjFmOWQ0MzhhMjlmY2VhZmU1MWYzZWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
Q29udGV4dC5jcHAKQEAgLTQwLDIxICs0MCw1MCBAQCBFdmVudENvbnRleHQ6OkV2ZW50Q29udGV4
dChQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGN1cnJlbgog
ICAgIDogbV9ub2RlKG5vZGUpCiAgICAgLCBtX2N1cnJlbnRUYXJnZXQoY3VycmVudFRhcmdldCkK
ICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKLSAgICAsIG1fcmVsYXRlZFRhcmdldCgwKQogewogICAg
IEFTU0VSVChtX25vZGUpOwogICAgIEFTU0VSVCghaXNVbnJlYWNoYWJsZU5vZGUobV90YXJnZXQu
Z2V0KCkpKTsKIH0KIAorRXZlbnRDb250ZXh0Ojp+RXZlbnRDb250ZXh0KCkKK3sKK30KKwogdm9p
ZCBFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50KiBldmVudCkgY29uc3QKIHsK
ICAgICBldmVudC0+c2V0VGFyZ2V0KG1fdGFyZ2V0LmdldCgpKTsKICAgICBldmVudC0+c2V0Q3Vy
cmVudFRhcmdldChtX2N1cnJlbnRUYXJnZXQuZ2V0KCkpOworICAgIG1fbm9kZS0+aGFuZGxlTG9j
YWxFdmVudHMoZXZlbnQpOworfQorCitib29sIEV2ZW50Q29udGV4dDo6aXNNb3VzZU9yRm9jdXNF
dmVudENvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworTW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0OjpNb3VzZU9yRm9jdXNFdmVudENvbnRleHQoUGFzc1JlZlB0cjxOb2Rl
PiBub2RlLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJyZW50VGFyZ2V0LCBQYXNzUmVmUHRy
PEV2ZW50VGFyZ2V0PiB0YXJnZXQpCisgICAgOiBFdmVudENvbnRleHQobm9kZSwgY3VycmVudFRh
cmdldCwgdGFyZ2V0KQorICAgICwgbV9yZWxhdGVkVGFyZ2V0KDApCit7Cit9CisKK01vdXNlT3JG
b2N1c0V2ZW50Q29udGV4dDo6fk1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCgpCit7Cit9CisKK3Zv
aWQgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0OjpoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCogZXZl
bnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGV2ZW50LT5pc01vdXNlRXZlbnQoKSB8fCBldmVudC0+
aXNGb2N1c0V2ZW50KCkpOwogICAgIGlmIChtX3JlbGF0ZWRUYXJnZXQuZ2V0KCkgJiYgZXZlbnQt
PmlzTW91c2VFdmVudCgpKQogICAgICAgICB0b01vdXNlRXZlbnQoZXZlbnQpLT5zZXRSZWxhdGVk
VGFyZ2V0KG1fcmVsYXRlZFRhcmdldC5nZXQoKSk7CiAgICAgZWxzZSBpZiAobV9yZWxhdGVkVGFy
Z2V0LmdldCgpICYmIGV2ZW50LT5pc0ZvY3VzRXZlbnQoKSkKLSAgICAgICAgdG9Gb2N1c0V2ZW50
KGV2ZW50KS0+c2V0UmVsYXRlZFRhcmdldChtX3JlbGF0ZWRUYXJnZXQpOwotICAgIG1fbm9kZS0+
aGFuZGxlTG9jYWxFdmVudHMoZXZlbnQpOworICAgICAgICB0b0ZvY3VzRXZlbnQoZXZlbnQpLT5z
ZXRSZWxhdGVkVGFyZ2V0KG1fcmVsYXRlZFRhcmdldC5nZXQoKSk7CisgICAgRXZlbnRDb250ZXh0
OjpoYW5kbGVMb2NhbEV2ZW50cyhldmVudCk7Cit9CisKK2Jvb2wgTW91c2VPckZvY3VzRXZlbnRD
b250ZXh0Ojppc01vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaAppbmRleCA3OGUzNWMwNDcy
ZGRkZDkxOTZiZDQyN2MzODE4ZDdhZjQxN2ZmOWIyLi5mZTFjZjAyNTU2NGRlZTM4ZmYxZmVkZGFm
YjM0YzJhMTE3MGI1M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCkBAIC00MCwxNSAr
NDAsMTUgQEAgY2xhc3MgRXZlbnRDb250ZXh0IHsKIHB1YmxpYzoKICAgICAvLyBGSVhNRTogVXNl
IENvbnRhaW5lck5vZGUgaW5zdGVhZCBvZiBOb2RlLgogICAgIEV2ZW50Q29udGV4dChQYXNzUmVm
UHRyPE5vZGU+LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJyZW50VGFyZ2V0LCBQYXNzUmVm
UHRyPEV2ZW50VGFyZ2V0PiB0YXJnZXQpOworICAgIHZpcnR1YWwgfkV2ZW50Q29udGV4dCgpOwog
Ci0gICAgTm9kZSogbm9kZSgpIGNvbnN0OwotICAgIEV2ZW50VGFyZ2V0KiB0YXJnZXQoKSBjb25z
dDsKLSAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCgpIGNvbnN0OwotICAgIGJvb2wgY3Vy
cmVudFRhcmdldFNhbWVBc1RhcmdldCgpIGNvbnN0OwotICAgIHZvaWQgaGFuZGxlTG9jYWxFdmVu
dHMoRXZlbnQqKSBjb25zdDsKLSAgICB2b2lkIHNldFJlbGF0ZWRUYXJnZXQoUGFzc1JlZlB0cjxF
dmVudFRhcmdldD4pOworICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGUuZ2V0
KCk7IH0KKyAgICBFdmVudFRhcmdldCogdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQu
Z2V0KCk7IH0KKyAgICBib29sIGN1cnJlbnRUYXJnZXRTYW1lQXNUYXJnZXQoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRUYXJnZXQuZ2V0KCkgPT0gbV90YXJnZXQuZ2V0KCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNNb3VzZU9yRm9jdXNFdmVudENvbnRleHQoKSBjb25zdDsKIAotcHJpdmF0ZToKK3Byb3Rl
Y3RlZDoKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBpc1VucmVhY2hhYmxlTm9kZShFdmVudFRh
cmdldCopOwogICAgIGJvb2wgaXNSZWFjaGFibGUoTm9kZSopOwpAQCAtNTYsMzQgKzU2LDIyIEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8RXZlbnRUYXJn
ZXQ+IG1fY3VycmVudFRhcmdldDsKICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0Owot
ICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV9yZWxhdGVkVGFyZ2V0OwogfTsKIAotaW5saW5lIE5v
ZGUqIEV2ZW50Q29udGV4dDo6bm9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbm9kZS5nZXQo
KTsKLX0KLQotaW5saW5lIEV2ZW50VGFyZ2V0KiBFdmVudENvbnRleHQ6OnRhcmdldCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOwotfQotCi1pbmxpbmUgYm9vbCBFdmVudENv
bnRleHQ6OmN1cnJlbnRUYXJnZXRTYW1lQXNUYXJnZXQoKSBjb25zdAotewotICAgIHJldHVybiBt
X2N1cnJlbnRUYXJnZXQuZ2V0KCkgPT0gbV90YXJnZXQuZ2V0KCk7Ci19Cit0eXBlZGVmIFZlY3Rv
cjxPd25QdHI8RXZlbnRDb250ZXh0PiwgMzI+IEV2ZW50UGF0aDsKIAotaW5saW5lIEV2ZW50VGFy
Z2V0KiBFdmVudENvbnRleHQ6OnJlbGF0ZWRUYXJnZXQoKSBjb25zdAotewotICAgIHJldHVybiBt
X3JlbGF0ZWRUYXJnZXQuZ2V0KCk7Ci19CitjbGFzcyBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQg
OiBwdWJsaWMgRXZlbnRDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQoUGFzc1JlZlB0cjxOb2RlPiwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gY3VycmVudFRh
cmdldCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gdGFyZ2V0KTsKKyAgICB2aXJ0dWFsIH5Nb3Vz
ZU9yRm9jdXNFdmVudENvbnRleHQoKTsKKyAgICBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRlZFRhcmdldC5nZXQoKTsgfQorICAgIHZvaWQgc2V0UmVs
YXRlZFRhcmdldChQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0Pik7CisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUxvY2FsRXZlbnRzKEV2ZW50KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGlzTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CiAKLWlubGluZSB2
b2lkIEV2ZW50Q29udGV4dDo6c2V0UmVsYXRlZFRhcmdldChQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0
PiByZWxhdGVkVGFyZ2V0KQotewotICAgIEFTU0VSVCghaXNVbnJlYWNoYWJsZU5vZGUocmVsYXRl
ZFRhcmdldC5nZXQoKSkpOwotICAgIG1fcmVsYXRlZFRhcmdldCA9IHJlbGF0ZWRUYXJnZXQ7Ci19
Citwcml2YXRlOgorICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV9yZWxhdGVkVGFyZ2V0OworfTsK
IAogI2lmbmRlZiBOREVCVUcKIGlubGluZSBib29sIEV2ZW50Q29udGV4dDo6aXNVbnJlYWNoYWJs
ZU5vZGUoRXZlbnRUYXJnZXQqIHRhcmdldCkKQEAgLTEwNCw2ICs5MiwxMiBAQCBpbmxpbmUgYm9v
bCBFdmVudENvbnRleHQ6OmlzUmVhY2hhYmxlKE5vZGUqIHRhcmdldCkKIH0KICNlbmRpZgogCitp
bmxpbmUgdm9pZCBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ6OnNldFJlbGF0ZWRUYXJnZXQoUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRhcmdldCkKK3sKKyAgICBBU1NFUlQoIWlzVW5y
ZWFjaGFibGVOb2RlKHJlbGF0ZWRUYXJnZXQuZ2V0KCkpKTsKKyAgICBtX3JlbGF0ZWRUYXJnZXQg
PSByZWxhdGVkVGFyZ2V0OworfQorCiB9CiAKICNlbmRpZiAvLyBFdmVudENvbnRleHRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBkNDA5YTgzYjljMjNhYmY1MzAy
M2IxNWE2NDY2ODBhMTlkMzg4NDE3Li43NjU1YzdjZGU3MGU1ZTgxOWJiMjEwOTVmNjY4MDc0ZWFk
ZDllYmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNjAsNyAr
NjAsNyBAQCBFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3Rlcjo6RXZlbnRSZWxhdGVkVGFyZ2V0QWRq
dXN0ZXIoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBQYQogICAgIEFTU0VSVChtX3JlbGF0ZWRUYXJn
ZXQpOwogfQogCi12b2lkIEV2ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyOjphZGp1c3QoVmVjdG9y
PEV2ZW50Q29udGV4dCwgMzI+JiBhbmNlc3RvcnMpCit2b2lkIEV2ZW50UmVsYXRlZFRhcmdldEFk
anVzdGVyOjphZGp1c3QoRXZlbnRQYXRoJiBldmVudFBhdGgpCiB7CiAgICAgLy8gU3ludGhldGlj
IG1vdXNlIGV2ZW50cyBjYW4gaGF2ZSBhIHJlbGF0ZWRUYXJnZXQgd2hpY2ggaXMgaWRlbnRpY2Fs
IHRvIHRoZSB0YXJnZXQuCiAgICAgYm9vbCB0YXJnZXRJc0lkZW50aWNhbFRvVG9SZWxhdGVkVGFy
Z2V0ID0gKG1fbm9kZS5nZXQoKSA9PSBtX3JlbGF0ZWRUYXJnZXQuZ2V0KCkpOwpAQCAtODYsMjQg
Kzg2LDI2IEBAIHZvaWQgRXZlbnRSZWxhdGVkVGFyZ2V0QWRqdXN0ZXI6OmFkanVzdChWZWN0b3I8
RXZlbnRDb250ZXh0LCAzMj4mIGFuY2VzdG9ycykKIAogICAgIGxhc3RUcmVlU2NvcGUgPSAwOwog
ICAgIEV2ZW50VGFyZ2V0KiBhZGp1c3RlZFJlbGF0ZWRUYXJnZXQgPSAwOwotICAgIGZvciAoVmVj
dG9yPEV2ZW50Q29udGV4dCwgMzI+OjppdGVyYXRvciBpdGVyID0gYW5jZXN0b3JzLmJlZ2luKCk7
IGl0ZXIgPCBhbmNlc3RvcnMuZW5kKCk7ICsraXRlcikgewotICAgICAgICBUcmVlU2NvcGUqIHNj
b3BlID0gaXRlci0+bm9kZSgpLT50cmVlU2NvcGUoKTsKKyAgICBmb3IgKEV2ZW50UGF0aDo6aXRl
cmF0b3IgaXRlciA9IGV2ZW50UGF0aC5iZWdpbigpOyBpdGVyIDwgZXZlbnRQYXRoLmVuZCgpOyAr
K2l0ZXIpIHsKKyAgICAgICAgQVNTRVJUKCgqaXRlciktPmlzTW91c2VPckZvY3VzRXZlbnRDb250
ZXh0KCkpOworICAgICAgICBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQqIG1vc3VlT3JGb2N1c0V2
ZW50Q29udGV4dCA9IHN0YXRpY19jYXN0PE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCo+KGl0ZXIt
PmdldCgpKTsKKyAgICAgICAgVHJlZVNjb3BlKiBzY29wZSA9IG1vc3VlT3JGb2N1c0V2ZW50Q29u
dGV4dC0+bm9kZSgpLT50cmVlU2NvcGUoKTsKICAgICAgICAgaWYgKHNjb3BlID09IGxhc3RUcmVl
U2NvcGUpIHsKICAgICAgICAgICAgIC8vIFJlLXVzZSB0aGUgcHJldmlvdXMgYWRqdXN0ZWRSZWxh
dGVkVGFyZ2V0IGlmIHRyZWVTY29wZSBkb2VzIG5vdCBjaGFuZ2UuIEp1c3QgZm9yIHRoZSBwZXJm
b3JtYW5jZSBvcHRpbWl6YXRpb24uCi0gICAgICAgICAgICBpdGVyLT5zZXRSZWxhdGVkVGFyZ2V0
KGFkanVzdGVkUmVsYXRlZFRhcmdldCk7CisgICAgICAgICAgICBtb3N1ZU9yRm9jdXNFdmVudENv
bnRleHQtPnNldFJlbGF0ZWRUYXJnZXQoYWRqdXN0ZWRSZWxhdGVkVGFyZ2V0KTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGFkanVzdGVkUmVsYXRlZFRhcmdldCA9IGZpbmRSZWxhdGVk
VGFyZ2V0KHNjb3BlKTsKLSAgICAgICAgICAgIGl0ZXItPnNldFJlbGF0ZWRUYXJnZXQoYWRqdXN0
ZWRSZWxhdGVkVGFyZ2V0KTsKKyAgICAgICAgICAgIG1vc3VlT3JGb2N1c0V2ZW50Q29udGV4dC0+
c2V0UmVsYXRlZFRhcmdldChhZGp1c3RlZFJlbGF0ZWRUYXJnZXQpOwogICAgICAgICB9CiAgICAg
ICAgIGxhc3RUcmVlU2NvcGUgPSBzY29wZTsKICAgICAgICAgaWYgKHRhcmdldElzSWRlbnRpY2Fs
VG9Ub1JlbGF0ZWRUYXJnZXQpIHsKLSAgICAgICAgICAgIGlmIChtX25vZGUtPnRyZWVTY29wZSgp
LT5yb290Tm9kZSgpID09IGl0ZXItPm5vZGUoKSkgewotICAgICAgICAgICAgICAgIGFuY2VzdG9y
cy5zaHJpbmsoaXRlciArIDEgLSBhbmNlc3RvcnMuYmVnaW4oKSk7CisgICAgICAgICAgICBpZiAo
bV9ub2RlLT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKSA9PSBtb3N1ZU9yRm9jdXNFdmVudENvbnRl
eHQtPm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGV2ZW50UGF0aC5zaHJpbmsoaXRlciArIDEg
LSBldmVudFBhdGguYmVnaW4oKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXRlci0+dGFyZ2V0KCkgPT0gYWRqdXN0ZWRSZWxhdGVk
VGFyZ2V0KSB7CisgICAgICAgIH0gZWxzZSBpZiAobW9zdWVPckZvY3VzRXZlbnRDb250ZXh0LT50
YXJnZXQoKSA9PSBhZGp1c3RlZFJlbGF0ZWRUYXJnZXQpIHsKICAgICAgICAgICAgIC8vIEV2ZW50
IGRpc3BhdGNoaW5nIHNob3VsZCBiZSBzdG9wcGVkIGhlcmUuCi0gICAgICAgICAgICBhbmNlc3Rv
cnMuc2hyaW5rKGl0ZXIgLSBhbmNlc3RvcnMuYmVnaW4oKSk7CisgICAgICAgICAgICBldmVudFBh
dGguc2hyaW5rKGl0ZXIgLSBldmVudFBhdGguYmVnaW4oKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE2OSwxMyArMTcxLDEzIEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjphZGp1c3RSZWxhdGVkVGFyZ2V0KEV2ZW50KiBldmVudCwgUGFzc1JlZlB0cjxFdmVudFRh
cmdldD4KICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9ub2RlLmdldCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgZW5zdXJlRXZlbnRBbmNlc3RvcnMoZXZlbnQpOwotICAgIEV2ZW50UmVsYXRl
ZFRhcmdldEFkanVzdGVyKG1fbm9kZSwgcmVsYXRlZFRhcmdldC5yZWxlYXNlKCkpLmFkanVzdCht
X2FuY2VzdG9ycyk7CisgICAgZW5zdXJlRXZlbnRQYXRoKGV2ZW50KTsKKyAgICBFdmVudFJlbGF0
ZWRUYXJnZXRBZGp1c3RlcihtX25vZGUsIHJlbGF0ZWRUYXJnZXQucmVsZWFzZSgpKS5hZGp1c3Qo
bV9ldmVudFBhdGgpOwogfQogCiBFdmVudERpc3BhdGNoZXI6OkV2ZW50RGlzcGF0Y2hlcihOb2Rl
KiBub2RlKQogICAgIDogbV9ub2RlKG5vZGUpCi0gICAgLCBtX2FuY2VzdG9yc0luaXRpYWxpemVk
KGZhbHNlKQorICAgICwgbV9ldmVudFBhdGhJbml0aWFsaXplZChmYWxzZSkKICNpZm5kZWYgTkRF
QlVHCiAgICAgLCBtX2V2ZW50RGlzcGF0Y2hlZChmYWxzZSkKICNlbmRpZgpAQCAtMTg0LDEzICsx
ODYsMTQgQEAgRXZlbnREaXNwYXRjaGVyOjpFdmVudERpc3BhdGNoZXIoTm9kZSogbm9kZSkKICAg
ICBtX3ZpZXcgPSBub2RlLT5kb2N1bWVudCgpLT52aWV3KCk7CiB9CiAKLXZvaWQgRXZlbnREaXNw
YXRjaGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVudCogZXZlbnQpCit2b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6ZW5zdXJlRXZlbnRQYXRoKEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAobV9hbmNl
c3RvcnNJbml0aWFsaXplZCkKKyAgICBpZiAobV9ldmVudFBhdGhJbml0aWFsaXplZCkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fYW5jZXN0b3JzSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIG1fZXZl
bnRQYXRoSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIGJvb2wgaW5Eb2N1bWVudCA9IG1fbm9kZS0+
aW5Eb2N1bWVudCgpOwogICAgIGJvb2wgaXNTVkdFbGVtZW50ID0gbV9ub2RlLT5pc1NWR0VsZW1l
bnQoKTsKKyAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnQgPSBldmVudC0+aXNNb3VzZUV2ZW50
KCkgfHwgZXZlbnQtPmlzRm9jdXNFdmVudCgpOwogICAgIFZlY3RvcjxFdmVudFRhcmdldCosIDMy
PiB0YXJnZXRTdGFjazsKICAgICBmb3IgKEFuY2VzdG9yQ2hhaW5XYWxrZXIgd2Fsa2VyKG1fbm9k
ZS5nZXQoKSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBhcmVudCgpKSB7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSB3YWxrZXIuZ2V0KCk7CkBAIC0xOTgsNyArMjAxLDEwIEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB0
YXJnZXRTdGFjay5hcHBlbmQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMobm9kZSkp
OwogICAgICAgICBlbHNlIGlmICh3YWxrZXIuY3Jvc3NpbmdJbnNlcnRpb25Qb2ludCgpKQogICAg
ICAgICAgICAgdGFyZ2V0U3RhY2suYXBwZW5kKHRhcmdldFN0YWNrLmxhc3QoKSk7Ci0gICAgICAg
IG1fYW5jZXN0b3JzLmFwcGVuZChFdmVudENvbnRleHQobm9kZSwgZXZlbnRUYXJnZXRSZXNwZWN0
aW5nVGFyZ2V0UnVsZXMobm9kZSksIHRhcmdldFN0YWNrLmxhc3QoKSkpOworICAgICAgICBpZiAo
aXNNb3VzZU9yRm9jdXNFdmVudCkKKyAgICAgICAgICAgIG1fZXZlbnRQYXRoLmFwcGVuZChhZG9w
dFB0cihuZXcgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KG5vZGUsIGV2ZW50VGFyZ2V0UmVzcGVj
dGluZ1RhcmdldFJ1bGVzKG5vZGUpLCB0YXJnZXRTdGFjay5sYXN0KCkpKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fZXZlbnRQYXRoLmFwcGVuZChhZG9wdFB0cihuZXcgRXZlbnRDb250
ZXh0KG5vZGUsIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKG5vZGUpLCB0YXJnZXRT
dGFjay5sYXN0KCkpKSk7CiAgICAgICAgIGlmICghaW5Eb2N1bWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSkKQEAgLTI2MCw5ICsyNjYs
OSBAQCBib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiBwcnBFdmVudCkKICAgICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVu
dERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkpOwogICAg
IEFTU0VSVCghZXZlbnQtPnR5cGUoKS5pc051bGwoKSk7IC8vIEphdmFTY3JpcHQgY29kZSBjYW4g
Y3JlYXRlIGFuIGV2ZW50IHdpdGggYW4gZW1wdHkgbmFtZSwgYnV0IG5vdCBudWxsLgotICAgIGVu
c3VyZUV2ZW50QW5jZXN0b3JzKGV2ZW50LmdldCgpKTsKKyAgICBlbnN1cmVFdmVudFBhdGgoZXZl
bnQuZ2V0KCkpOwogICAgIFdpbmRvd0V2ZW50Q29udGV4dCB3aW5kb3dFdmVudENvbnRleHQoZXZl
bnQuZ2V0KCksIG1fbm9kZS5nZXQoKSwgdG9wRXZlbnRDb250ZXh0KCkpOwotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEaXNwYXRjaEV2ZW50KG1fbm9kZS0+ZG9jdW1lbnQoKSwgKmV2ZW50LCB3aW5kb3dFdmVu
dENvbnRleHQud2luZG93KCksIG1fbm9kZS5nZXQoKSwgbV9hbmNlc3RvcnMpOworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxEaXNwYXRjaEV2ZW50KG1fbm9kZS0+ZG9jdW1lbnQoKSwgKmV2ZW50LCB3aW5kb3dF
dmVudENvbnRleHQud2luZG93KCksIG1fbm9kZS5nZXQoKSwgbV9ldmVudFBhdGgpOwogCiAgICAg
dm9pZCogcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXJSZXN1bHQ7CiAgICAgaWYgKGRpc3BhdGNoRXZl
bnRQcmVQcm9jZXNzKGV2ZW50LCBwcmVEaXNwYXRjaEV2ZW50SGFuZGxlclJlc3VsdCkgPT0gQ29u
dGludWVEaXNwYXRjaGluZykKQEAgLTI4NCw3ICsyOTAsNyBAQCBpbmxpbmUgRXZlbnREaXNwYXRj
aENvbnRpbnVhdGlvbiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnRQcmVQcm9jZXNzKFBh
c3NSZQogewogICAgIC8vIEdpdmUgdGhlIHRhcmdldCBub2RlIGEgY2hhbmNlIHRvIGRvIHNvbWUg
d29yayBiZWZvcmUgRE9NIGV2ZW50IGhhbmRsZXJzIGdldCBhIGNyYWNrLgogICAgIHByZURpc3Bh
dGNoRXZlbnRIYW5kbGVyUmVzdWx0ID0gbV9ub2RlLT5wcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihl
dmVudC5nZXQoKSk7Ci0gICAgcmV0dXJuIChtX2FuY2VzdG9ycy5pc0VtcHR5KCkgfHwgZXZlbnQt
PnByb3BhZ2F0aW9uU3RvcHBlZCgpKSA/IERvbmVEaXNwYXRjaGluZyA6IENvbnRpbnVlRGlzcGF0
Y2hpbmc7CisgICAgcmV0dXJuIChtX2V2ZW50UGF0aC5pc0VtcHR5KCkgfHwgZXZlbnQtPnByb3Bh
Z2F0aW9uU3RvcHBlZCgpKSA/IERvbmVEaXNwYXRjaGluZyA6IENvbnRpbnVlRGlzcGF0Y2hpbmc7
CiB9CiAKIGlubGluZSBFdmVudERpc3BhdGNoQ29udGludWF0aW9uIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hFdmVudEF0Q2FwdHVyaW5nKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBXaW5kb3dF
dmVudENvbnRleHQmIHdpbmRvd0V2ZW50Q29udGV4dCkKQEAgLTI5NSw4ICszMDEsOCBAQCBpbmxp
bmUgRXZlbnREaXNwYXRjaENvbnRpbnVhdGlvbiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZl
bnRBdENhcHR1cmluZyhQYXNzUgogICAgIGlmICh3aW5kb3dFdmVudENvbnRleHQuaGFuZGxlTG9j
YWxFdmVudHMoZXZlbnQuZ2V0KCkpICYmIGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSkKICAg
ICAgICAgcmV0dXJuIERvbmVEaXNwYXRjaGluZzsKIAotICAgIGZvciAoc2l6ZV90IGkgPSBtX2Fu
Y2VzdG9ycy5zaXplKCkgLSAxOyBpID4gMDsgLS1pKSB7Ci0gICAgICAgIGNvbnN0IEV2ZW50Q29u
dGV4dCYgZXZlbnRDb250ZXh0ID0gbV9hbmNlc3RvcnNbaV07CisgICAgZm9yIChzaXplX3QgaSA9
IG1fZXZlbnRQYXRoLnNpemUoKSAtIDE7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgY29uc3QgRXZl
bnRDb250ZXh0JiBldmVudENvbnRleHQgPSAqbV9ldmVudFBhdGhbaV07CiAgICAgICAgIGlmIChl
dmVudENvbnRleHQuY3VycmVudFRhcmdldFNhbWVBc1RhcmdldCgpKSB7CiAgICAgICAgICAgICBp
ZiAoZXZlbnQtPmJ1YmJsZXMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMxNCw3
ICszMjAsNyBAQCBpbmxpbmUgRXZlbnREaXNwYXRjaENvbnRpbnVhdGlvbiBFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoRXZlbnRBdENhcHR1cmluZyhQYXNzUgogaW5saW5lIEV2ZW50RGlzcGF0Y2hD
b250aW51YXRpb24gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50QXRUYXJnZXQoUGFzc1Jl
ZlB0cjxFdmVudD4gZXZlbnQpCiB7CiAgICAgZXZlbnQtPnNldEV2ZW50UGhhc2UoRXZlbnQ6OkFU
X1RBUkdFVCk7Ci0gICAgbV9hbmNlc3RvcnNbMF0uaGFuZGxlTG9jYWxFdmVudHMoZXZlbnQuZ2V0
KCkpOworICAgIG1fZXZlbnRQYXRoWzBdLT5oYW5kbGVMb2NhbEV2ZW50cyhldmVudC5nZXQoKSk7
CiAgICAgcmV0dXJuIGV2ZW50LT5wcm9wYWdhdGlvblN0b3BwZWQoKSA/IERvbmVEaXNwYXRjaGlu
ZyA6IENvbnRpbnVlRGlzcGF0Y2hpbmc7CiB9CiAKQEAgLTMyNCw5ICszMzAsOSBAQCBpbmxpbmUg
RXZlbnREaXNwYXRjaENvbnRpbnVhdGlvbiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnRB
dEJ1YmJsaW5nKFBhc3NSZQogICAgICAgICAvLyBUcmlnZ2VyIGJ1YmJsaW5nIGV2ZW50IGhhbmRs
ZXJzLCBzdGFydGluZyBhdCB0aGUgYm90dG9tIGFuZCB3b3JraW5nIG91ciB3YXkgdXAuCiAgICAg
ICAgIGV2ZW50LT5zZXRFdmVudFBoYXNlKEV2ZW50OjpCVUJCTElOR19QSEFTRSk7CiAKLSAgICAg
ICAgc2l6ZV90IHNpemUgPSBtX2FuY2VzdG9ycy5zaXplKCk7CisgICAgICAgIHNpemVfdCBzaXpl
ID0gbV9ldmVudFBhdGguc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNp
emU7ICsraSkgewotICAgICAgICAgICAgY29uc3QgRXZlbnRDb250ZXh0JiBldmVudENvbnRleHQg
PSBtX2FuY2VzdG9yc1tpXTsKKyAgICAgICAgICAgIGNvbnN0IEV2ZW50Q29udGV4dCYgZXZlbnRD
b250ZXh0ID0gKm1fZXZlbnRQYXRoW2ldOwogICAgICAgICAgICAgaWYgKGV2ZW50Q29udGV4dC5j
dXJyZW50VGFyZ2V0U2FtZUFzVGFyZ2V0KCkpCiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldEV2
ZW50UGhhc2UoRXZlbnQ6OkFUX1RBUkdFVCk7CiAgICAgICAgICAgICBlbHNlCkBAIC0zNjEsOSAr
MzY3LDkgQEAgaW5saW5lIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50UG9zdFBy
b2Nlc3MoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIHYKICAgICAgICAgLy8gRm9yIGJ1YmJsaW5n
IGV2ZW50cywgY2FsbCBkZWZhdWx0IGV2ZW50IGhhbmRsZXJzIG9uIHRoZSBzYW1lIHRhcmdldHMg
aW4gdGhlCiAgICAgICAgIC8vIHNhbWUgb3JkZXIgYXMgdGhlIGJ1YmJsaW5nIHBoYXNlLgogICAg
ICAgICBpZiAoZXZlbnQtPmJ1YmJsZXMoKSkgewotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBt
X2FuY2VzdG9ycy5zaXplKCk7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fZXZlbnRQYXRo
LnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgbV9hbmNlc3RvcnNbaV0ubm9kZSgpLT5kZWZhdWx0RXZlbnRIYW5k
bGVyKGV2ZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX2V2ZW50UGF0aFtpXS0+bm9kZSgp
LT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkpOwogICAgICAgICAgICAgICAgIGlmIChldmVu
dC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzc0
LDcgKzM4MCw3IEBAIGlubGluZSB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudFBv
c3RQcm9jZXNzKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCB2CiAKIGNvbnN0IEV2ZW50Q29udGV4
dCogRXZlbnREaXNwYXRjaGVyOjp0b3BFdmVudENvbnRleHQoKQogewotICAgIHJldHVybiBtX2Fu
Y2VzdG9ycy5pc0VtcHR5KCkgPyAwIDogJm1fYW5jZXN0b3JzLmxhc3QoKTsKKyAgICByZXR1cm4g
bV9ldmVudFBhdGguaXNFbXB0eSgpID8gMCA6IG1fZXZlbnRQYXRoLmxhc3QoKS5nZXQoKTsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIGluVGhlU2FtZVNjb3BlKFNoYWRvd1Jvb3QqIHNoYWRvd1Jv
b3QsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgK
aW5kZXggZGFjZjIzZDg0NGIxMmZmMjBiNWE4ZDkyYTUxMzJiNDZkOGM3NDA0My4uN2RmNDAxMDdi
MjM0MDAwZWE3NTg3NzczZWY5MzVhZjA5NDQzYmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERp
c3BhdGNoZXIuaApAQCAtNTgsNyArNTgsNyBAQCBlbnVtIEV2ZW50RGlzcGF0Y2hDb250aW51YXRp
b24gewogY2xhc3MgRXZlbnRSZWxhdGVkVGFyZ2V0QWRqdXN0ZXIgewogcHVibGljOgogICAgIEV2
ZW50UmVsYXRlZFRhcmdldEFkanVzdGVyKFBhc3NSZWZQdHI8Tm9kZT4sIFBhc3NSZWZQdHI8Tm9k
ZT4gcmVsYXRlZFRhcmdldCk7Ci0gICAgdm9pZCBhZGp1c3QoVmVjdG9yPEV2ZW50Q29udGV4dCwg
MzI+Jik7CisgICAgdm9pZCBhZGp1c3QoRXZlbnRQYXRoJik7CiBwcml2YXRlOgogICAgIHR5cGVk
ZWYgSGFzaE1hcDxUcmVlU2NvcGUqLCBFdmVudFRhcmdldCo+IFJlbGF0ZWRUYXJnZXRNYXA7CiAg
ICAgRXZlbnRUYXJnZXQqIGZpbmRSZWxhdGVkVGFyZ2V0KFRyZWVTY29wZSopOwpAQCAtODQsNyAr
ODQsNyBAQCBwcml2YXRlOgogCiAgICAgRXZlbnREaXNwYXRjaEJlaGF2aW9yIGRldGVybWluZURp
c3BhdGNoQmVoYXZpb3IoRXZlbnQqLCBTaGFkb3dSb290KiwgRXZlbnRUYXJnZXQqKTsKIAotICAg
IHZvaWQgZW5zdXJlRXZlbnRBbmNlc3RvcnMoRXZlbnQqKTsKKyAgICB2b2lkIGVuc3VyZUV2ZW50
UGF0aChFdmVudCopOwogICAgIGNvbnN0IEV2ZW50Q29udGV4dCogdG9wRXZlbnRDb250ZXh0KCk7
CiAKICAgICBFdmVudERpc3BhdGNoQ29udGludWF0aW9uIGRpc3BhdGNoRXZlbnRQcmVQcm9jZXNz
KFBhc3NSZWZQdHI8RXZlbnQ+LCB2b2lkKiYgcHJlRGlzcGF0Y2hFdmVudEhhbmRsZXJSZXN1bHQp
OwpAQCAtOTMsMTAgKzkzLDEwIEBAIHByaXZhdGU6CiAgICAgRXZlbnREaXNwYXRjaENvbnRpbnVh
dGlvbiBkaXNwYXRjaEV2ZW50QXRCdWJibGluZyhQYXNzUmVmUHRyPEV2ZW50PiwgV2luZG93RXZl
bnRDb250ZXh0Jik7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50UG9zdFByb2Nlc3MoUGFzc1JlZlB0
cjxFdmVudD4sIHZvaWQqIHByZURpc3BhdGNoRXZlbnRIYW5kbGVyUmVzdWx0KTsKIAotICAgIFZl
Y3RvcjxFdmVudENvbnRleHQsIDMyPiBtX2FuY2VzdG9yczsKKyAgICBFdmVudFBhdGggbV9ldmVu
dFBhdGg7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBt
X3ZpZXc7Ci0gICAgYm9vbCBtX2FuY2VzdG9yc0luaXRpYWxpemVkOworICAgIGJvb2wgbV9ldmVu
dFBhdGhJbml0aWFsaXplZDsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2V2ZW50RGlzcGF0
Y2hlZDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhMzBkMTVmMmY2MjMyOGE3ZTM0MzZkMzhiZTdi
MTBmNzdhYWRjMDQwLi4yNjcyZWJkZGQ0OTk4YjM5NGZkMWFlMjQ0YjE5OGUzMDFmMTZmYTVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgSGFzaFNldDxJbnN0cnVtZW50aW5n
QWdlbnRzKj4qIGluc3RydW1lbnRpbmdBZ2VudHNTZXQgPSAwOwogCiBpbnQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzX2Zyb250ZW5kQ291bnRlciA9IDA7CiAKLXN0YXRpYyBib29sIGV2ZW50
SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBET01XaW5kb3cqIHdp
bmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykK
K3N0YXRpYyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgRXZlbnRQYXRoJiBldmVu
dFBhdGgpCiB7CiAgICAgaWYgKHdpbmRvdyAmJiB3aW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2
ZW50VHlwZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAxLDkgKzEwMSw4IEBAIHN0YXRp
YyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBE
T01XaW5kb3cqIHdpbmRvdywKICAgICBpZiAobm9kZS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRU
eXBlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGFuY2VzdG9ycy5zaXplKCk7IGkrKykgewotICAgICAgICBOb2RlKiBhbmNlc3RvciA9IGFuY2Vz
dG9yc1tpXS5ub2RlKCk7Ci0gICAgICAgIGlmIChhbmNlc3Rvci0+aGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnRUeXBlKSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV2ZW50UGF0aC5zaXplKCk7
IGkrKykgeworICAgICAgICBpZiAoZXZlbnRQYXRoW2ldLT5ub2RlKCktPmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50VHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM4
NywxMSArMzg2LDExIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRj
aFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudEltcGwoY29uc3QgSW5zCiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KCk7CiB9CiAKLUluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25z
dCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5jZXN0b3JzLCBEb2N1bWVudCogZG9jdW1lbnQpCitJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwg
Y29uc3QgRXZlbnRQYXRoJiBldmVudFBhdGgsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBp
bnQgdGltZWxpbmVBZ2VudElkID0gMDsKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
OwotICAgIGlmICh0aW1lbGluZUFnZW50ICYmIGV2ZW50SGFzTGlzdGVuZXJzKGV2ZW50LnR5cGUo
KSwgd2luZG93LCBub2RlLCBhbmNlc3RvcnMpKSB7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYg
ZXZlbnRIYXNMaXN0ZW5lcnMoZXZlbnQudHlwZSgpLCB3aW5kb3csIG5vZGUsIGV2ZW50UGF0aCkp
IHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQsIGRvY3Vt
ZW50LT5mcmFtZSgpKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+
aWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMWZhOGRmYjNhMDZkMGMxNmM2YTUzOGY5ZTI1MjAwNjU0
M2NkM2QyYS4uN2RhMzQ1NjgxZGJjYWU5MDc3YmRjMGQ4NzM3OTU5N2U5NWI2ZDZkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNvbnNvbGVBUElUeXBlcy5oIgogI2luY2x1
ZGUgIkNvbnNvbGVUeXBlcy5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVu
dENvbnRleHQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNDMsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxE
aXNwYXRjaFhIUlJlYWR5U3RhdGVDaGFuZ2VFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
WE1MSHR0cFJlcXVlc3QqKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaFhIUlJlYWR5U3Rh
dGVDaGFuZ2VFdmVudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKLSAg
ICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50
KERvY3VtZW50KiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSog
bm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycyk7CisgICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVu
dCosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93KiwgTm9kZSosIGNvbnN0IEV2ZW50UGF0aCYpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAgICAg
c3RhdGljIHZvaWQgZGlkSGFuZGxlRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJik7CkBAIC0zNDcsNyArMzQ4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBk
aWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYp
OwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNo
WEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgWE1MSHR0
cFJlcXVlc3QqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgZGlk
RGlzcGF0Y2hYSFJSZWFkeVN0YXRlQ2hhbmdlRXZlbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBF
dmVudCYsIERPTVdpbmRvdyosIE5vZGUqLCBjb25zdCBWZWN0b3I8RXZlbnRDb250ZXh0PiYgYW5j
ZXN0b3JzLCBEb2N1bWVudCopOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBF
dmVudCYsIERPTVdpbmRvdyosIE5vZGUqLCBjb25zdCBFdmVudFBhdGgmLCBEb2N1bWVudCopOwog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEhhbmRsZUV2ZW50
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRXZlbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRI
YW5kbGVFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJik7CkBAIC04NjQsMTIgKzg2NSwxMiBAQCBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50
KGNvbnN0CiAjZW5kaWYKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9k
ZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKK2lubGluZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlz
cGF0Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2lu
ZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IEV2ZW50UGF0aCYgZXZlbnRQYXRoKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVu
dChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudEltcGwoaW5zdHJ1
bWVudGluZ0FnZW50cywgZXZlbnQsIHdpbmRvdywgbm9kZSwgYW5jZXN0b3JzLCBkb2N1bWVudCk7
CisgICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudEltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgZXZlbnQsIHdpbmRvdywgbm9kZSwgZXZlbnRQYXRoLCBkb2N1bWVudCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>