<?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>94957</bug_id>
          
          <creation_ts>2012-08-24 10:59:34 -0700</creation_ts>
          <short_desc>[chromium] Have RenderSurface create and add its own generated RenderPass</short_desc>
          <delta_ts>2012-08-27 13:46:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>95109</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>704248</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-24 10:59:34 -0700</bug_when>
    <thetext>[chromium] Have RenderSurface create and add its own generated RenderPass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704253</commentid>
    <comment_count>1</comment_count>
      <attachid>160455</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-24 11:05:01 -0700</bug_when>
    <thetext>Created attachment 160455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704492</commentid>
    <comment_count>2</comment_count>
      <attachid>160455</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-24 16:12:04 -0700</bug_when>
    <thetext>Comment on attachment 160455
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:287
&gt; +        renderSurfaceLayer-&gt;renderSurface()-&gt;appendRenderPasses(frame);

Aren&apos;t you eventually going to want to call appendRenderPasses on a DelegatingLayer? Maybe this would be better if it initially went through the layer who could then call CCRenderSurface::appendRenderPasses internally.  This would also give you some nice symmetry where if a layer adds a pass, then it is also the one that will get called back later to appendQuads (if the pass isn&apos;t cached).

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:97
&gt; +        // CCRenderPassSink implementation.
&gt; +        virtual void appendRenderPass(PassOwnPtr&lt;CCRenderPass&gt;);

OVERRIDE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704493</commentid>
    <comment_count>3</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-24 16:13:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 160455 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160455&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:287
&gt; &gt; +        renderSurfaceLayer-&gt;renderSurface()-&gt;appendRenderPasses(frame);
&gt; 
&gt; Aren&apos;t you eventually going to want to call appendRenderPasses on a DelegatingLayer? Maybe this would be better if it initially went through the layer who could then call CCRenderSurface::appendRenderPasses internally.  This would also give you some nice symmetry where if a layer adds a pass, then it is also the one that will get called back later to appendQuads (if the pass isn&apos;t cached).

Actually, now that I think about it, it&apos;s more complicated than that.  This is a good refactoring first step, and I can wait to see what the delegating layer will have to change to make it work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704499</commentid>
    <comment_count>4</comment_count>
      <attachid>160455</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-24 16:19:46 -0700</bug_when>
    <thetext>Comment on attachment 160455
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705507</commentid>
    <comment_count>5</comment_count>
      <attachid>160455</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 12:20:09 -0700</bug_when>
    <thetext>Comment on attachment 160455
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:287
&gt;&gt;&gt; +        renderSurfaceLayer-&gt;renderSurface()-&gt;appendRenderPasses(frame);
&gt;&gt; 
&gt;&gt; Aren&apos;t you eventually going to want to call appendRenderPasses on a DelegatingLayer? Maybe this would be better if it initially went through the layer who could then call CCRenderSurface::appendRenderPasses internally.  This would also give you some nice symmetry where if a layer adds a pass, then it is also the one that will get called back later to appendQuads (if the pass isn&apos;t cached).
&gt; 
&gt; Actually, now that I think about it, it&apos;s more complicated than that.  This is a good refactoring first step, and I can wait to see what the delegating layer will have to change to make it work.

Yeh, we only call append on layers that own RenderSurfaces, which the DelgatedRendererLayer does not usually do.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:97
&gt;&gt; +        virtual void appendRenderPass(PassOwnPtr&lt;CCRenderPass&gt;);
&gt; 
&gt; OVERRIDE

Oops thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705510</commentid>
    <comment_count>6</comment_count>
      <attachid>160773</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 12:21:09 -0700</bug_when>
    <thetext>Created attachment 160773
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705623</commentid>
    <comment_count>7</comment_count>
      <attachid>160773</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 13:46:21 -0700</bug_when>
    <thetext>Comment on attachment 160773
Patch for landing

Clearing flags on attachment: 160773

Committed r126790: &lt;http://trac.webkit.org/changeset/126790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705624</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-27 13:46:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160455</attachid>
            <date>2012-08-24 11:05:01 -0700</date>
            <delta_ts>2012-08-27 12:21:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94957-20120824140456.patch</filename>
            <type>text/plain</type>
            <size>16142</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI5YjdiMzA3ZGI5MTY2
ZWNiZTkzYjQ5OWRjNDNhODU2ZGM2YzI0OC4uNzI1MDdkYzk3MmM0Yjk0ZTUwMzhiNWE1YzQzMzQz
ZWVlNzFkOTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTI0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSGF2
ZSBSZW5kZXJTdXJmYWNlIGNyZWF0ZSBhbmQgYWRkIGl0cyBvd24gZ2VuZXJhdGVkIFJlbmRlclBh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBD
Q1JlbmRlclN1cmZhY2UgY3JlYXRlIGFuZCBhZGQgaXRzIFJlbmRlclBhc3MgdG8gdGhlIGFwcHJv
cHJpYXRlCisgICAgICAgIGRhdGEgc3RydWN0dXJlcy4gUHJldmlvdXNseSBDQ0xheWVyVHJlZUhv
c3RJbXBsIGhhZCB0aGlzIHJlc3BvbnNpYmlsaXR5CisgICAgICAgIGJ1dCB0aGlzIGxpbWl0cyB1
cyB0byBhIHNpbmdsZSBSZW5kZXJQYXNzIHBlciBSZW5kZXJTdXJmYWNlLiBJbiB1YmVyY29tcAor
ICAgICAgICB3ZSBoYXZlIGxheWVycyB0aGF0IGdlbmVyYXRlIG1hbnkgUmVuZGVyUGFzc2VzIHRo
YXQgYWxsIGNvbnRyaWJ1dGUgdG8gYQorICAgICAgICBzaW5nbGUgUmVuZGVyU3VyZmFjZS4gVGhp
cyB0YXJnZXQgUmVuZGVyU3VyZmFjZSBjYW4gY3JlYXRlIGFsbCB0aGUgbmVlZGVkCisgICAgICAg
IFJlbmRlclBhc3NlcyBpbiB0aGUgY29ycmVjdCBvcmRlciBmb3IgaXRzZWxmIHdoZW4gYXNrZWQg
dG8gbm93LgorCisgICAgICAgIFdlIGludmVudCBDQ1JlbmRlclBhc3NTaW5rIGFuZCBtYWtlIEZy
YW1lRGF0YSBpbXBsZW1lbnQgaXQsIHNvIHRoYXQgdGhlCisgICAgICAgIFJlbmRlclN1cmZhY2Ug
ZG9lcyBub3QgbmVlZCB0byBrbm93IHRoZSBkZXRhaWxzIG9mIGhvdyB0aGUgUmVuZGVyUGFzc2Vz
CisgICAgICAgIGl0IGdlbmVyYXRlcyB3aWxsIGJlIHN0b3JlZC4KKworICAgICAgICBUZXN0OiBD
Q1JlbmRlclN1cmZhY2VUZXN0LnNhbml0eUNoZWNrU3VyZmFjZUNyZWF0ZXNDb3JyZWN0UmVuZGVy
UGFzcworCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhOjphcHBlbmRSZW5kZXJQYXNzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6
Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChGcmFtZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc1NpbmsuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyUGFzc1NpbmspOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFJlbmRlclBhc3Nl
cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
Q0NSZW5kZXJTdXJmYWNlKToKKwogMjAxMi0wOC0yNCAgSm9zaHVhIE5ldHRlcmZpZWxkICA8am5l
dHRlcmZpZWxkQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEV4dGVuZCBMYXllckZp
bHRlclJlbmRlcmVyIGluIHByZXBhcmF0aW9uIGZvciBDU1MgU2hhZGVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCBjMTRjYjNjNGZhZTFkNzJmZTYzMjYwZmFmMjdmZjliYzdmOGM5Yzg5
Li42Yjk4ZTljMTllYWQzNmYyMTZlNWIwODg4Zjc1ZTQ4N2UxMTNkYjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTI0ICBEYW5hIEphbnNlbnMg
IDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSGF2ZSBSZW5kZXJT
dXJmYWNlIGNyZWF0ZSBhbmQgYWRkIGl0cyBvd24gZ2VuZXJhdGVkIFJlbmRlclBhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTU3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IGEgUmVu
ZGVyU3VyZmFjZSBnZW5lcmF0ZXMgdGhlIFJlbmRlclBhc3MgdGhhdCB3ZSBleHBlY3QuCisKKyAg
ICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKwogMjAxMi0wOC0yNCAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVh
bSBBUEk6IEFkZCByZWFkeVN0YXRlIGZ1bmN0aW9uYWxpdHkgdG8gUlRDUGVlckNvbm5lY3Rpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA1N2FjMjMwZjMxZmJjYWE1N2FmYTUwOGZiYmZjNDNkMzQzZWFm
MjA0Li4xYmUxMTI5YmZmMmI3Yjg5YjA3N2Y4NTEyYmM0OTFlNGM4YWE3Mjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC04NDY0LDYgKzg0NjQsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c1NpbmsuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNjQ3ZGU4OGY3Njg5YTUyMTZkNTMzN2VhYjM3
YTU5ZjA4NTA1MjlmOC4uNTAyNDcxMmFmYTVhNzY1ZWMzMzM3MGQyOGU2MDQ2NjE3MzJmOWZlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI2Niw2ICsyNjYs
MTMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KENDTGF5ZXJMaXN0JiByZW5kZXJTdXIKICAgICB9CiB9CiAKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6RnJhbWVEYXRhOjphcHBlbmRSZW5kZXJQYXNzKFBhc3NPd25QdHI8Q0NSZW5k
ZXJQYXNzPiByZW5kZXJQYXNzKQoreworICAgIENDUmVuZGVyUGFzcyogcGFzcyA9IHJlbmRlclBh
c3MuZ2V0KCk7CisgICAgcmVuZGVyUGFzc2VzLmFwcGVuZChwYXNzKTsKKyAgICByZW5kZXJQYXNz
ZXNCeUlkLnNldChwYXNzLT5pZCgpLCByZW5kZXJQYXNzKTsKK30KKwogYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKIHsKICAg
ICBBU1NFUlQoZnJhbWUucmVuZGVyUGFzc2VzLmlzRW1wdHkoKSk7CkBAIC0yNzUsMjIgKzI4Miw5
IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1l
RGF0YSYgZnJhbWUpCiAgICAgVFJBQ0VfRVZFTlQxKCJjYyIsICJDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMiLCAicmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCki
LCBzdGF0aWNfY2FzdDxsb25nIGxvbmcgdW5zaWduZWQ+KGZyYW1lLnJlbmRlclN1cmZhY2VMYXll
ckxpc3QtPnNpemUoKSkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSByZW5kZXIgcGFzc2VzIGluIGRl
cGVuZGVuY3kgb3JkZXIuCi0gICAgSGFzaE1hcDxDQ1JlbmRlclN1cmZhY2UqLCBDQ1JlbmRlclBh
c3MqPiBzdXJmYWNlUGFzc01hcDsKICAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBmcmFtZS5y
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LT5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0t
c3VyZmFjZUluZGV4KSB7CiAgICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXIg
PSAoKmZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpW3N1cmZhY2VJbmRleF07Ci0gICAgICAg
IENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVu
ZGVyU3VyZmFjZSgpOwotCi0gICAgICAgIGludCByZW5kZXJQYXNzSWQgPSByZW5kZXJTdXJmYWNl
TGF5ZXItPmlkKCk7Ci0gICAgICAgIEludFJlY3Qgb3V0cHV0UmVjdCA9IHJlbmRlclN1cmZhY2Ut
PmNvbnRlbnRSZWN0KCk7Ci0gICAgICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQgPSByZW5kZXJTdXJmYWNlLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpOwotICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpj
cmVhdGUocmVuZGVyUGFzc0lkLCBvdXRwdXRSZWN0LCB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOwot
ICAgICAgICBwYXNzLT5zZXREYW1hZ2VSZWN0KHJlbmRlclN1cmZhY2UtPmRhbWFnZVRyYWNrZXIo
KS0+Y3VycmVudERhbWFnZVJlY3QoKSk7Ci0gICAgICAgIHBhc3MtPnNldEZpbHRlcnMocmVuZGVy
U3VyZmFjZUxheWVyLT5maWx0ZXJzKCkpOwotICAgICAgICBwYXNzLT5zZXRCYWNrZ3JvdW5kRmls
dGVycyhyZW5kZXJTdXJmYWNlTGF5ZXItPmJhY2tncm91bmRGaWx0ZXJzKCkpOwotCi0gICAgICAg
IHN1cmZhY2VQYXNzTWFwLmFkZChyZW5kZXJTdXJmYWNlLCBwYXNzLmdldCgpKTsKLSAgICAgICAg
ZnJhbWUucmVuZGVyUGFzc2VzLmFwcGVuZChwYXNzLmdldCgpKTsKLSAgICAgICAgZnJhbWUucmVu
ZGVyUGFzc2VzQnlJZC5hZGQocmVuZGVyUGFzc0lkLCBwYXNzLnJlbGVhc2UoKSk7CisgICAgICAg
IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5hcHBlbmRSZW5kZXJQYXNzZXMo
ZnJhbWUpOwogICAgIH0KIAogICAgIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lID0gdHJ1ZTsg
Ly8gRklYTUU6IEluIHRoZSBmdXR1cmUsIGRpc2FibGUgdGhpcyB3aGVuIGFib3V0OnRyYWNpbmcg
aXMgb2ZmLgpAQCAtMzEwLDI0ICszMDQsMjUgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
YWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKIAogICAgIENDTGF5ZXJJdGVy
YXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKGZyYW1lLnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJ
dGVyYXRvclR5cGU6OmJlZ2luKGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gaXQu
dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgQ0NS
ZW5kZXJQYXNzKiBwYXNzID0gc3VyZmFjZVBhc3NNYXAuZ2V0KHJlbmRlclN1cmZhY2UpOworICAg
ICAgICBpbnQgdGFyZ2V0UmVuZGVyUGFzc0lkID0gaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVy
KCktPmlkKCk7CisgICAgICAgIENDUmVuZGVyUGFzcyogdGFyZ2V0UmVuZGVyUGFzcyA9IGZyYW1l
LnJlbmRlclBhc3Nlc0J5SWQuZ2V0KHRhcmdldFJlbmRlclBhc3NJZCk7CiAgICAgICAgIGJvb2wg
aGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CiAKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRl
ckxheWVyKGl0KTsKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRl
clN1cmZhY2UoKSkgewotICAgICAgICAgICAgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5k
ZXJQYXNzID0gc3VyZmFjZVBhc3NNYXAuZ2V0KGl0LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAg
ICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoKml0LCBjb250cmli
dXRpbmdSZW5kZXJQYXNzLCAmb2NjbHVzaW9uVHJhY2tlcik7CisgICAgICAgICAgICBpbnQgY29u
dHJpYnV0aW5nUmVuZGVyUGFzc0lkID0gaXQtPmlkKCk7CisgICAgICAgICAgICBDQ1JlbmRlclBh
c3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmdldChj
b250cmlidXRpbmdSZW5kZXJQYXNzSWQpOworICAgICAgICAgICAgdGFyZ2V0UmVuZGVyUGFzcy0+
YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoKml0LCBjb250cmlidXRpbmdSZW5kZXJQ
YXNzLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50
c0l0c2VsZigpICYmICFpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKICAgICAg
ICAgICAgIGlmIChvY2NsdXNpb25UcmFja2VyLm9jY2x1ZGVkKCppdCwgaXQtPnZpc2libGVDb250
ZW50UmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSkgewogICAg
ICAgICAgICAgICAgIGlmIChoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpCi0g
ICAgICAgICAgICAgICAgICAgIHBhc3MtPnNldEhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0
U3VyZmFjZShoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpOworICAgICAgICAg
ICAgICAgICAgICB0YXJnZXRSZW5kZXJQYXNzLT5zZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRh
cmdldFN1cmZhY2UoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSk7CiAgICAgICAgICAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnMuYXBw
ZW5kKCppdCk7Ci0gICAgICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQs
ICZvY2NsdXNpb25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICAgICAgICAgIHRh
cmdldFJlbmRlclBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tl
ciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0zNDQs
NiArMzM5LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNz
ZXMoRnJhbWVEYXRhJiBmcmFtZSkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnJl
bmRlclBhc3Nlcy5zaXplKCk7ICsraSkgewogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IGZyYW1lLnJlbmRlclBhc3Nlc1tpXS0+cXVhZExpc3QoKS5zaXplKCk7ICsraikKICAgICAgICAg
ICAgIEFTU0VSVChmcmFtZS5yZW5kZXJQYXNzZXNbaV0tPnF1YWRMaXN0KClbal0tPnNoYXJlZFF1
YWRTdGF0ZUlkKCkgPj0gMCk7CisgICAgICAgIEFTU0VSVChmcmFtZS5yZW5kZXJQYXNzZXNCeUlk
LmNvbnRhaW5zKGZyYW1lLnJlbmRlclBhc3Nlc1tpXS0+aWQoKSkpOwogICAgIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYmZkYTJiMTI5MjRkZmQy
NjRmN2I1ZTRiYmQ1MmQxMWU0NjMyYjEyZi4uNjk3NTZlYWJmNDE0OWU2M2JiYzRiYWViMjE5NjRh
NjgzN2ZiYzQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkNDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiQ0NMYXll
clNvcnRlci5oIgogI2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgorI2luY2x1ZGUgIkNDUmVuZGVy
UGFzc1NpbmsuaCIKICNpbmNsdWRlICJDQ1JlbmRlcmVyLmgiCiAjaW5jbHVkZSAiU2tDb2xvci5o
IgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZUNsaWVudC5oPgpA
QCAtODUsMTIgKzg2LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlR2Vz
dHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4pIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJSSURFOwogCi0g
ICAgc3RydWN0IEZyYW1lRGF0YSB7CisgICAgc3RydWN0IEZyYW1lRGF0YSA6IHB1YmxpYyBDQ1Jl
bmRlclBhc3NTaW5rIHsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IG9jY2x1ZGluZ1NjcmVlblNw
YWNlUmVjdHM7CiAgICAgICAgIENDUmVuZGVyUGFzc0xpc3QgcmVuZGVyUGFzc2VzOwogICAgICAg
ICBDQ1JlbmRlclBhc3NJZEhhc2hNYXAgcmVuZGVyUGFzc2VzQnlJZDsKICAgICAgICAgQ0NMYXll
ckxpc3QqIHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgICAgIENDTGF5ZXJMaXN0IHdpbGxE
cmF3TGF5ZXJzOworCisgICAgICAgIC8vIENDUmVuZGVyUGFzc1NpbmsgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRSZW5kZXJQYXNzKFBhc3NPd25QdHI8Q0NSZW5k
ZXJQYXNzPik7CiAgICAgfTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3NTaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3NTaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkzYTgwOTA5MjRkOGFlZjlkN2U5NDFl
OWQyYjcxYzZmNGI2OGI2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc1NpbmsuaApAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDQ1JlbmRlclBhc3NTaW5rX2gKKyNkZWZpbmUgQ0NSZW5kZXJQ
YXNzU2lua19oCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIENDUmVuZGVyUGFzczsKKworY2xhc3MgQ0NSZW5kZXJQYXNzU2luayB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFJlbmRlclBhc3MoUGFzc093blB0cjxD
Q1JlbmRlclBhc3M+KSA9IDA7Cit9OworCit9CisjZW5kaWYgLy8gQ0NSZW5kZXJQYXNzU2lua19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA1MDIzNGFjYTNhZjFjYjE5Yzg1
NDdhMWNlMWU4ODg5NTFhY2NkZjUxLi5mMzg5NzQyYTNlYWM2MzQ2ZjRiMTE0YmY2ZmFkNjQ1ODkz
OTA1Y2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTM0LDcgKzM0LDkg
QEAKICNpbmNsdWRlICJDQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDTWF0aFV0aWwuaCIKICNp
bmNsdWRlICJDQ1F1YWRTaW5rLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVk
ZSAiQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJDQ1JlbmRlclBhc3NTaW5rLmgi
CiAjaW5jbHVkZSAiQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC0xNzksNiAr
MTgxLDE1IEBAIHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21wdXRlQ2xpcHBlZFJlY3RJblRhcmdl
dChjb25zdCBDQ0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAgICAgcmV0dXJuIGNsaXBwZWRSZWN0
SW5UYXJnZXQ7CiB9CiAKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRSZW5kZXJQYXNzZXMo
Q0NSZW5kZXJQYXNzU2luayYgcGFzc1NpbmspCit7CisgICAgT3duUHRyPENDUmVuZGVyUGFzcz4g
cGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKG1fb3duaW5nTGF5ZXItPmlkKCksIG1fY29udGVu
dFJlY3QsIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOworICAgIHBhc3MtPnNldERhbWFnZVJlY3Qo
bV9kYW1hZ2VUcmFja2VyLT5jdXJyZW50RGFtYWdlUmVjdCgpKTsKKyAgICBwYXNzLT5zZXRGaWx0
ZXJzKG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKSk7CisgICAgcGFzcy0+c2V0QmFja2dyb3VuZEZp
bHRlcnMobV9vd25pbmdMYXllci0+YmFja2dyb3VuZEZpbHRlcnMoKSk7CisgICAgcGFzc1Npbmsu
YXBwZW5kUmVuZGVyUGFzcyhwYXNzLnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgQ0NSZW5kZXJTdXJm
YWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCBmb3JSZXBsaWNhLCBp
bnQgcmVuZGVyUGFzc0lkKQogewogICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293bmluZ0xh
eWVyLT5oYXNSZXBsaWNhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCBhN2Q2
Mzk1NjJkMWYzNGY4NmVhOWQyZjM0Y2VmNDVmMzA3ZTQzYTYxLi5hYTBlZTAxOGZjYWJlMzg3ZTJm
ZWNiMTE5YjNjOWUxOTQ3ZGFkOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAt
NDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7
CiBjbGFzcyBDQ1F1YWRTaW5rOwogY2xhc3MgQ0NSZW5kZXJQYXNzOworY2xhc3MgQ0NSZW5kZXJQ
YXNzU2luazsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgVGV4dFN0cmVhbTsKIApAQCAtMTAz
LDYgKzEwNCw3IEBAIHB1YmxpYzoKIAogICAgIENDRGFtYWdlVHJhY2tlciogZGFtYWdlVHJhY2tl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGFtYWdlVHJhY2tlci5nZXQoKTsgfQogCisgICAgdm9pZCBh
cHBlbmRSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzU2luayYpOwogICAgIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkU2luayYsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVy
U3VyZmFjZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1
cmZhY2VUZXN0LmNwcAppbmRleCAwNWQ3MTY2NDEzMmNkMDQzM2Q4MzgyYjdiOTM4ZTkwODBlYjZl
NTY1Li4zZjVjNDBiZGJiMTY2OTQ1YmM2NzZmY2QwM2Q2ZjE3MDQxZWJiMTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDQ1JlbmRlclN1cmZhY2UuaCIKIAogI2luY2x1
ZGUgIkNDTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzU2luay5oIgogI2luY2x1
ZGUgIkNDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSAiQ0NTaW5nbGVUaHJlYWRQcm94eS5o
IgogI2luY2x1ZGUgIk1vY2tDQ1F1YWRDdWxsZXIuaCIKQEAgLTEzMyw0ICsxMzQsNDkgQEAgVEVT
VChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFNo
YXJlZFF1YWRTdGF0ZSkKICAgICBFWFBFQ1RfRkFMU0Uoc2hhcmVkUXVhZFN0YXRlLT5vcGFxdWUp
OwogfQogCitjbGFzcyBUZXN0Q0NSZW5kZXJQYXNzU2luayA6IHB1YmxpYyBDQ1JlbmRlclBhc3NT
aW5rIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUmVuZGVyUGFzcyhQYXNzT3du
UHRyPENDUmVuZGVyUGFzcz4gcmVuZGVyUGFzcykgT1ZFUlJJREUgeyBtX3JlbmRlclBhc3Nlcy5h
cHBlbmQocmVuZGVyUGFzcyk7IH0KKworICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8Q0NSZW5kZXJQ
YXNzPiA+JiByZW5kZXJQYXNzZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3NlczsgfQor
Citwcml2YXRlOgorICAgIFZlY3RvcjxPd25QdHI8Q0NSZW5kZXJQYXNzPiA+IG1fcmVuZGVyUGFz
c2VzOworCit9OworCitURVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHNhbml0eUNoZWNrU3VyZmFj
ZUNyZWF0ZXNDb3JyZWN0UmVuZGVyUGFzcykKK3sKKyAgICAvLyBUaGlzIHdpbGwgZmFrZSB0aGF0
IHdlIGFyZSBvbiB0aGUgY29ycmVjdCB0aHJlYWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNldEltcGxUaHJlYWQ7CisKKyAgICBPd25QdHI8Q0NM
YXllckltcGw+IHJvb3RMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IG93bmluZ0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgyKTsKKyAg
ICBvd25pbmdMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIEFTU0VSVF9UUlVFKG93
bmluZ0xheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG93bmluZ0xheWVyLT5zZXRSZW5kZXJU
YXJnZXQob3duaW5nTGF5ZXIuZ2V0KCkpOworICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3Vy
ZmFjZSA9IG93bmluZ0xheWVyLT5yZW5kZXJTdXJmYWNlKCk7CisKKyAgICByb290TGF5ZXItPmFk
ZENoaWxkKG93bmluZ0xheWVyLnJlbGVhc2UoKSk7CisKKyAgICBJbnRSZWN0IGNvbnRlbnRSZWN0
ID0gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBJbnRTaXplKDUwLCA1MCkpOworICAgIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IG9yaWdpbjsKKyAgICBvcmlnaW4udHJhbnNsYXRlKDMwLCA0MCk7
CisKKyAgICByZW5kZXJTdXJmYWNlLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShvcmlnaW4pOwor
ICAgIHJlbmRlclN1cmZhY2UtPnNldENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKKworICAgIFRl
c3RDQ1JlbmRlclBhc3NTaW5rIHBhc3NTaW5rOworCisgICAgcmVuZGVyU3VyZmFjZS0+YXBwZW5k
UmVuZGVyUGFzc2VzKHBhc3NTaW5rKTsKKworICAgIEFTU0VSVF9FUSgxdSwgcGFzc1NpbmsucmVu
ZGVyUGFzc2VzKCkuc2l6ZSgpKTsKKyAgICBDQ1JlbmRlclBhc3MqIHBhc3MgPSBwYXNzU2luay5y
ZW5kZXJQYXNzZXMoKVswXS5nZXQoKTsKKworICAgIEVYUEVDVF9FUSgyLCBwYXNzLT5pZCgpKTsK
KyAgICBFWFBFQ1RfRVEoY29udGVudFJlY3QsIHBhc3MtPm91dHB1dFJlY3QoKSk7CisgICAgRVhQ
RUNUX0VRKG9yaWdpbiwgcGFzcy0+dHJhbnNmb3JtVG9Sb290VGFyZ2V0KCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160773</attachid>
            <date>2012-08-27 12:21:09 -0700</date>
            <delta_ts>2012-08-27 13:46:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-94957-20120827152100.patch</filename>
            <type>text/plain</type>
            <size>16148</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMzNDJmZDA4MzVkZTY3
MzU3MmNiNWU5Y2I1NDdhZWFkMjEzNzJmYS4uZmIzODAzMmEzZDEyMmYxMzczOTQwNzMwMmRmYzZk
N2YwOGE4NDMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA4LTI0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSGF2
ZSBSZW5kZXJTdXJmYWNlIGNyZWF0ZSBhbmQgYWRkIGl0cyBvd24gZ2VuZXJhdGVkIFJlbmRlclBh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0OTU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIEhhdmUg
Q0NSZW5kZXJTdXJmYWNlIGNyZWF0ZSBhbmQgYWRkIGl0cyBSZW5kZXJQYXNzIHRvIHRoZSBhcHBy
b3ByaWF0ZQorICAgICAgICBkYXRhIHN0cnVjdHVyZXMuIFByZXZpb3VzbHkgQ0NMYXllclRyZWVI
b3N0SW1wbCBoYWQgdGhpcyByZXNwb25zaWJpbGl0eQorICAgICAgICBidXQgdGhpcyBsaW1pdHMg
dXMgdG8gYSBzaW5nbGUgUmVuZGVyUGFzcyBwZXIgUmVuZGVyU3VyZmFjZS4gSW4gdWJlcmNvbXAK
KyAgICAgICAgd2UgaGF2ZSBsYXllcnMgdGhhdCBnZW5lcmF0ZSBtYW55IFJlbmRlclBhc3NlcyB0
aGF0IGFsbCBjb250cmlidXRlIHRvIGEKKyAgICAgICAgc2luZ2xlIFJlbmRlclN1cmZhY2UuIFRo
aXMgdGFyZ2V0IFJlbmRlclN1cmZhY2UgY2FuIGNyZWF0ZSBhbGwgdGhlIG5lZWRlZAorICAgICAg
ICBSZW5kZXJQYXNzZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgZm9yIGl0c2VsZiB3aGVuIGFza2Vk
IHRvIG5vdy4KKworICAgICAgICBXZSBpbnZlbnQgQ0NSZW5kZXJQYXNzU2luayBhbmQgbWFrZSBG
cmFtZURhdGEgaW1wbGVtZW50IGl0LCBzbyB0aGF0IHRoZQorICAgICAgICBSZW5kZXJTdXJmYWNl
IGRvZXMgbm90IG5lZWQgdG8ga25vdyB0aGUgZGV0YWlscyBvZiBob3cgdGhlIFJlbmRlclBhc3Nl
cworICAgICAgICBpdCBnZW5lcmF0ZXMgd2lsbCBiZSBzdG9yZWQuCisKKyAgICAgICAgVGVzdDog
Q0NSZW5kZXJTdXJmYWNlVGVzdC5zYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFJlbmRl
clBhc3MKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YTo6YXBwZW5kUmVuZGVyUGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoRnJhbWVEYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NTaW5rLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlclBhc3NTaW5rKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRSZW5kZXJQYXNz
ZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENDUmVuZGVyU3VyZmFjZSk6CisKIDIwMTItMDgtMjcgIEtldmluIEZ1bmsgIDxrZXZpbi5mdW5r
QGtkYWIuY29tPgogCiAgICAgICAgIEZpeCBjb21waWxhdGlvbiB3aGVuIGJvdGggT1MoV0lOQ0Up
IGFuZCBQTEFURk9STShRVCkgYXJlIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YjdlNGQ1MDNhMDQyYTc2MGJiMDgzOTMzZTYzYTA0MmVlM2FiMzYxMi4uMzUxYjEwNjNkNzE2MzYw
NzNmMjNmNDY5NDRlNzhiNzg2ZWQwNGJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wOC0yNCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEhhdmUgUmVuZGVyU3VyZmFjZSBjcmVhdGUgYW5k
IGFkZCBpdHMgb3duIGdlbmVyYXRlZCBSZW5kZXJQYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDk1NworCisgICAgICAgIFJldmlld2VkIGJ5IEFk
cmllbm5lIFdhbGtlci4KKworICAgICAgICBUZXN0IHRoYXQgYSBSZW5kZXJTdXJmYWNlIGdlbmVy
YXRlcyB0aGUgUmVuZGVyUGFzcyB0aGF0IHdlIGV4cGVjdC4KKworICAgICAgICAqIHRlc3RzL0ND
UmVuZGVyU3VyZmFjZVRlc3QuY3BwOgorCiAyMDEyLTA4LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1
bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEltcGxlbWVudGluZyBhIGds
b2JhbCBsaW1pdCBvbiBtZW1vcnkgY29uc3VtZWQgYnkgZGVmZXJyZWQgMkQgY2FudmFzZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBiNTA5MjZmNjVkNjM5N2NhMTZhM2FkM2M5ZTRlNzRlMjIzNWJmN2M3
Li42OTI5NWVkYzk4NzAxMDYyYWIzMzI4MWY3MTEzYTE5OTA0MzdjNDUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC04NDc1LDYgKzg0NzUsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc1Np
bmsuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNzAxMDU1MGIzMmY4ZWU4NjcyNmQwMGM0ZmFlMzBi
OThlM2YyZDc3NS4uZWQwNzlmNzgyOWFjMTA0ZjY3OGI2Nzk1NTI3YzQyMWE3NGViMTUyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI2Niw2ICsyNjYsMTMg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KENDTGF5ZXJMaXN0JiByZW5kZXJTdXIKICAgICB9CiB9CiAKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6RnJhbWVEYXRhOjphcHBlbmRSZW5kZXJQYXNzKFBhc3NPd25QdHI8Q0NSZW5kZXJQ
YXNzPiByZW5kZXJQYXNzKQoreworICAgIENDUmVuZGVyUGFzcyogcGFzcyA9IHJlbmRlclBhc3Mu
Z2V0KCk7CisgICAgcmVuZGVyUGFzc2VzLmFwcGVuZChwYXNzKTsKKyAgICByZW5kZXJQYXNzZXNC
eUlkLnNldChwYXNzLT5pZCgpLCByZW5kZXJQYXNzKTsKK30KKwogYm9vbCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKIHsKICAgICBB
U1NFUlQoZnJhbWUucmVuZGVyUGFzc2VzLmlzRW1wdHkoKSk7CkBAIC0yNzUsMjIgKzI4Miw5IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0
YSYgZnJhbWUpCiAgICAgVFJBQ0VfRVZFTlQxKCJjYyIsICJDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
YWxjdWxhdGVSZW5kZXJQYXNzZXMiLCAicmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkiLCBz
dGF0aWNfY2FzdDxsb25nIGxvbmcgdW5zaWduZWQ+KGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxp
c3QtPnNpemUoKSkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSByZW5kZXIgcGFzc2VzIGluIGRlcGVu
ZGVuY3kgb3JkZXIuCi0gICAgSGFzaE1hcDxDQ1JlbmRlclN1cmZhY2UqLCBDQ1JlbmRlclBhc3Mq
PiBzdXJmYWNlUGFzc01hcDsKICAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBmcmFtZS5yZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LT5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3Vy
ZmFjZUluZGV4KSB7CiAgICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSAo
KmZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpW3N1cmZhY2VJbmRleF07Ci0gICAgICAgIEND
UmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVy
U3VyZmFjZSgpOwotCi0gICAgICAgIGludCByZW5kZXJQYXNzSWQgPSByZW5kZXJTdXJmYWNlTGF5
ZXItPmlkKCk7Ci0gICAgICAgIEludFJlY3Qgb3V0cHV0UmVjdCA9IHJlbmRlclN1cmZhY2UtPmNv
bnRlbnRSZWN0KCk7Ci0gICAgICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm1Ub1Jvb3RUYXJnZXQgPSByZW5kZXJTdXJmYWNlLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgp
OwotICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVh
dGUocmVuZGVyUGFzc0lkLCBvdXRwdXRSZWN0LCB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOwotICAg
ICAgICBwYXNzLT5zZXREYW1hZ2VSZWN0KHJlbmRlclN1cmZhY2UtPmRhbWFnZVRyYWNrZXIoKS0+
Y3VycmVudERhbWFnZVJlY3QoKSk7Ci0gICAgICAgIHBhc3MtPnNldEZpbHRlcnMocmVuZGVyU3Vy
ZmFjZUxheWVyLT5maWx0ZXJzKCkpOwotICAgICAgICBwYXNzLT5zZXRCYWNrZ3JvdW5kRmlsdGVy
cyhyZW5kZXJTdXJmYWNlTGF5ZXItPmJhY2tncm91bmRGaWx0ZXJzKCkpOwotCi0gICAgICAgIHN1
cmZhY2VQYXNzTWFwLmFkZChyZW5kZXJTdXJmYWNlLCBwYXNzLmdldCgpKTsKLSAgICAgICAgZnJh
bWUucmVuZGVyUGFzc2VzLmFwcGVuZChwYXNzLmdldCgpKTsKLSAgICAgICAgZnJhbWUucmVuZGVy
UGFzc2VzQnlJZC5hZGQocmVuZGVyUGFzc0lkLCBwYXNzLnJlbGVhc2UoKSk7CisgICAgICAgIHJl
bmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5hcHBlbmRSZW5kZXJQYXNzZXMoZnJh
bWUpOwogICAgIH0KIAogICAgIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lID0gdHJ1ZTsgLy8g
RklYTUU6IEluIHRoZSBmdXR1cmUsIGRpc2FibGUgdGhpcyB3aGVuIGFib3V0OnRyYWNpbmcgaXMg
b2ZmLgpAQCAtMzEwLDI0ICszMDQsMjUgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxj
dWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKIAogICAgIENDTGF5ZXJJdGVyYXRv
clR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKGZyYW1lLnJlbmRlclN1cmZhY2VM
YXllckxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVy
YXRvclR5cGU6OmJlZ2luKGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gaXQudGFy
Z2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgQ0NSZW5k
ZXJQYXNzKiBwYXNzID0gc3VyZmFjZVBhc3NNYXAuZ2V0KHJlbmRlclN1cmZhY2UpOworICAgICAg
ICBpbnQgdGFyZ2V0UmVuZGVyUGFzc0lkID0gaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkt
PmlkKCk7CisgICAgICAgIENDUmVuZGVyUGFzcyogdGFyZ2V0UmVuZGVyUGFzcyA9IGZyYW1lLnJl
bmRlclBhc3Nlc0J5SWQuZ2V0KHRhcmdldFJlbmRlclBhc3NJZCk7CiAgICAgICAgIGJvb2wgaGFk
TWlzc2luZ1RpbGVzID0gZmFsc2U7CiAKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlckxh
eWVyKGl0KTsKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1
cmZhY2UoKSkgewotICAgICAgICAgICAgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQ
YXNzID0gc3VyZmFjZVBhc3NNYXAuZ2V0KGl0LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAg
ICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoKml0LCBjb250cmlidXRp
bmdSZW5kZXJQYXNzLCAmb2NjbHVzaW9uVHJhY2tlcik7CisgICAgICAgICAgICBpbnQgY29udHJp
YnV0aW5nUmVuZGVyUGFzc0lkID0gaXQtPmlkKCk7CisgICAgICAgICAgICBDQ1JlbmRlclBhc3Mq
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmdldChjb250
cmlidXRpbmdSZW5kZXJQYXNzSWQpOworICAgICAgICAgICAgdGFyZ2V0UmVuZGVyUGFzcy0+YXBw
ZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoKml0LCBjb250cmlidXRpbmdSZW5kZXJQYXNz
LCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0
c2VsZigpICYmICFpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKICAgICAgICAg
ICAgIGlmIChvY2NsdXNpb25UcmFja2VyLm9jY2x1ZGVkKCppdCwgaXQtPnZpc2libGVDb250ZW50
UmVjdCgpLCAmaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSkgewogICAgICAg
ICAgICAgICAgIGlmIChoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpCi0gICAg
ICAgICAgICAgICAgICAgIHBhc3MtPnNldEhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3Vy
ZmFjZShoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpOworICAgICAgICAgICAg
ICAgICAgICB0YXJnZXRSZW5kZXJQYXNzLT5zZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2UoaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSk7CiAgICAgICAgICAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnMuYXBwZW5k
KCppdCk7Ci0gICAgICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZv
Y2NsdXNpb25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICAgICAgICAgIHRhcmdl
dFJlbmRlclBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwg
aGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0zNDQsNiAr
MzM5LDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMo
RnJhbWVEYXRhJiBmcmFtZSkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnJlbmRl
clBhc3Nlcy5zaXplKCk7ICsraSkgewogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGZy
YW1lLnJlbmRlclBhc3Nlc1tpXS0+cXVhZExpc3QoKS5zaXplKCk7ICsraikKICAgICAgICAgICAg
IEFTU0VSVChmcmFtZS5yZW5kZXJQYXNzZXNbaV0tPnF1YWRMaXN0KClbal0tPnNoYXJlZFF1YWRT
dGF0ZUlkKCkgPj0gMCk7CisgICAgICAgIEFTU0VSVChmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmNv
bnRhaW5zKGZyYW1lLnJlbmRlclBhc3Nlc1tpXS0+aWQoKSkpOwogICAgIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggYmZkYTJiMTI5MjRkZmQyNjRm
N2I1ZTRiYmQ1MmQxMWU0NjMyYjEyZi4uYjNkMDdhYzI5YzBhODA3OGYwMTdjOGUxODkzMGJhMDA3
MjkwNjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkNDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiQ0NMYXllclNv
cnRlci5oIgogI2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFz
c1NpbmsuaCIKICNpbmNsdWRlICJDQ1JlbmRlcmVyLmgiCiAjaW5jbHVkZSAiU2tDb2xvci5oIgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZUNsaWVudC5oPgpAQCAt
ODUsMTIgKzg2LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlR2VzdHVy
ZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbj4pIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJSSURFOwogCi0gICAg
c3RydWN0IEZyYW1lRGF0YSB7CisgICAgc3RydWN0IEZyYW1lRGF0YSA6IHB1YmxpYyBDQ1JlbmRl
clBhc3NTaW5rIHsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IG9jY2x1ZGluZ1NjcmVlblNwYWNl
UmVjdHM7CiAgICAgICAgIENDUmVuZGVyUGFzc0xpc3QgcmVuZGVyUGFzc2VzOwogICAgICAgICBD
Q1JlbmRlclBhc3NJZEhhc2hNYXAgcmVuZGVyUGFzc2VzQnlJZDsKICAgICAgICAgQ0NMYXllckxp
c3QqIHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgICAgIENDTGF5ZXJMaXN0IHdpbGxEcmF3
TGF5ZXJzOworCisgICAgICAgIC8vIENDUmVuZGVyUGFzc1NpbmsgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRSZW5kZXJQYXNzKFBhc3NPd25QdHI8Q0NSZW5kZXJQ
YXNzPikgT1ZFUlJJREU7CiAgICAgfTsKIAogICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NTaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3NTaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkzYTgwOTA5MjRkOGFlZjlk
N2U5NDFlOWQyYjcxYzZmNGI2OGI2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc1NpbmsuaApAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1JlbmRlclBhc3NTaW5rX2gKKyNkZWZpbmUgQ0NS
ZW5kZXJQYXNzU2lua19oCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENDUmVuZGVyUGFzczsKKworY2xhc3MgQ0NSZW5kZXJQYXNz
U2luayB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFJlbmRlclBhc3MoUGFzc093
blB0cjxDQ1JlbmRlclBhc3M+KSA9IDA7Cit9OworCit9CisjZW5kaWYgLy8gQ0NSZW5kZXJQYXNz
U2lua19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA1MDIzNGFjYTNhZjFj
YjE5Yzg1NDdhMWNlMWU4ODg5NTFhY2NkZjUxLi5mMzg5NzQyYTNlYWM2MzQ2ZjRiMTE0YmY2ZmFk
NjQ1ODkzOTA1Y2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTM0LDcg
KzM0LDkgQEAKICNpbmNsdWRlICJDQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDTWF0aFV0aWwu
aCIKICNpbmNsdWRlICJDQ1F1YWRTaW5rLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAj
aW5jbHVkZSAiQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJDQ1JlbmRlclBhc3NT
aW5rLmgiCiAjaW5jbHVkZSAiQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlICJUZXh0U3Ry
ZWFtLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC0x
NzksNiArMTgxLDE1IEBAIHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21wdXRlQ2xpcHBlZFJlY3RJ
blRhcmdldChjb25zdCBDQ0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAgICAgcmV0dXJuIGNsaXBw
ZWRSZWN0SW5UYXJnZXQ7CiB9CiAKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRSZW5kZXJQ
YXNzZXMoQ0NSZW5kZXJQYXNzU2luayYgcGFzc1NpbmspCit7CisgICAgT3duUHRyPENDUmVuZGVy
UGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKG1fb3duaW5nTGF5ZXItPmlkKCksIG1f
Y29udGVudFJlY3QsIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOworICAgIHBhc3MtPnNldERhbWFn
ZVJlY3QobV9kYW1hZ2VUcmFja2VyLT5jdXJyZW50RGFtYWdlUmVjdCgpKTsKKyAgICBwYXNzLT5z
ZXRGaWx0ZXJzKG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKSk7CisgICAgcGFzcy0+c2V0QmFja2dy
b3VuZEZpbHRlcnMobV9vd25pbmdMYXllci0+YmFja2dyb3VuZEZpbHRlcnMoKSk7CisgICAgcGFz
c1NpbmsuYXBwZW5kUmVuZGVyUGFzcyhwYXNzLnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKQogewogICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293
bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRl
eCBhN2Q2Mzk1NjJkMWYzNGY4NmVhOWQyZjM0Y2VmNDVmMzA3ZTQzYTYxLi5hYTBlZTAxOGZjYWJl
Mzg3ZTJmZWNiMTE5YjNjOWUxOTQ3ZGFkOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2Uu
aApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0RhbWFnZVRy
YWNrZXI7CiBjbGFzcyBDQ1F1YWRTaW5rOwogY2xhc3MgQ0NSZW5kZXJQYXNzOworY2xhc3MgQ0NS
ZW5kZXJQYXNzU2luazsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgVGV4dFN0cmVhbTsKIApA
QCAtMTAzLDYgKzEwNCw3IEBAIHB1YmxpYzoKIAogICAgIENDRGFtYWdlVHJhY2tlciogZGFtYWdl
VHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGFtYWdlVHJhY2tlci5nZXQoKTsgfQogCisgICAg
dm9pZCBhcHBlbmRSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzU2luayYpOwogICAgIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UmVuZGVyU3VyZmFjZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jl
bmRlclN1cmZhY2VUZXN0LmNwcAppbmRleCAwNWQ3MTY2NDEzMmNkMDQzM2Q4MzgyYjdiOTM4ZTkw
ODBlYjZlNTY1Li4zZjVjNDBiZGJiMTY2OTQ1YmM2NzZmY2QwM2Q2ZjE3MDQxZWJiMTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVz
dC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDQ1JlbmRlclN1cmZhY2UuaCIKIAog
I2luY2x1ZGUgIkNDTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzU2luay5oIgog
I2luY2x1ZGUgIkNDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSAiQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oIgogI2luY2x1ZGUgIk1vY2tDQ1F1YWRDdWxsZXIuaCIKQEAgLTEzMyw0ICsxMzQsNDkg
QEAgVEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29y
cmVjdFNoYXJlZFF1YWRTdGF0ZSkKICAgICBFWFBFQ1RfRkFMU0Uoc2hhcmVkUXVhZFN0YXRlLT5v
cGFxdWUpOwogfQogCitjbGFzcyBUZXN0Q0NSZW5kZXJQYXNzU2luayA6IHB1YmxpYyBDQ1JlbmRl
clBhc3NTaW5rIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUmVuZGVyUGFzcyhQ
YXNzT3duUHRyPENDUmVuZGVyUGFzcz4gcmVuZGVyUGFzcykgT1ZFUlJJREUgeyBtX3JlbmRlclBh
c3Nlcy5hcHBlbmQocmVuZGVyUGFzcyk7IH0KKworICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8Q0NS
ZW5kZXJQYXNzPiA+JiByZW5kZXJQYXNzZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3Nl
czsgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxPd25QdHI8Q0NSZW5kZXJQYXNzPiA+IG1fcmVu
ZGVyUGFzc2VzOworCit9OworCitURVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHNhbml0eUNoZWNr
U3VyZmFjZUNyZWF0ZXNDb3JyZWN0UmVuZGVyUGFzcykKK3sKKyAgICAvLyBUaGlzIHdpbGwgZmFr
ZSB0aGF0IHdlIGFyZSBvbiB0aGUgY29ycmVjdCB0aHJlYWQgZm9yIHRlc3RpbmcgcHVycG9zZXMu
CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNldEltcGxUaHJlYWQ7CisKKyAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3RMYXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IG93bmluZ0xheWVyID0gQ0NMYXllckltcGw6OmNyZWF0ZSgy
KTsKKyAgICBvd25pbmdMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIEFTU0VSVF9U
UlVFKG93bmluZ0xheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG93bmluZ0xheWVyLT5zZXRS
ZW5kZXJUYXJnZXQob3duaW5nTGF5ZXIuZ2V0KCkpOworICAgIENDUmVuZGVyU3VyZmFjZSogcmVu
ZGVyU3VyZmFjZSA9IG93bmluZ0xheWVyLT5yZW5kZXJTdXJmYWNlKCk7CisKKyAgICByb290TGF5
ZXItPmFkZENoaWxkKG93bmluZ0xheWVyLnJlbGVhc2UoKSk7CisKKyAgICBJbnRSZWN0IGNvbnRl
bnRSZWN0ID0gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBJbnRTaXplKDUwLCA1MCkpOworICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG9yaWdpbjsKKyAgICBvcmlnaW4udHJhbnNsYXRlKDMw
LCA0MCk7CisKKyAgICByZW5kZXJTdXJmYWNlLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShvcmln
aW4pOworICAgIHJlbmRlclN1cmZhY2UtPnNldENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKKwor
ICAgIFRlc3RDQ1JlbmRlclBhc3NTaW5rIHBhc3NTaW5rOworCisgICAgcmVuZGVyU3VyZmFjZS0+
YXBwZW5kUmVuZGVyUGFzc2VzKHBhc3NTaW5rKTsKKworICAgIEFTU0VSVF9FUSgxdSwgcGFzc1Np
bmsucmVuZGVyUGFzc2VzKCkuc2l6ZSgpKTsKKyAgICBDQ1JlbmRlclBhc3MqIHBhc3MgPSBwYXNz
U2luay5yZW5kZXJQYXNzZXMoKVswXS5nZXQoKTsKKworICAgIEVYUEVDVF9FUSgyLCBwYXNzLT5p
ZCgpKTsKKyAgICBFWFBFQ1RfRVEoY29udGVudFJlY3QsIHBhc3MtPm91dHB1dFJlY3QoKSk7Cisg
ICAgRVhQRUNUX0VRKG9yaWdpbiwgcGFzcy0+dHJhbnNmb3JtVG9Sb290VGFyZ2V0KCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>